This repo contains the Autonomy software stack for the current iteration of the Mars Rover Design Team's Rover designed to compete at the University Rover Challenge. The software is developed to run on a Jetson Xavier NX development board.
There are a couple of simple steps in order to get started writing software for the Autonomy system.
git clone --recurse-submodules -j8 https://github.com/MissouriMRDT/Autonomy_Software_Python.git
pip install pipenv
pipenv install -d
pipenv run <file you want to run>
or the preffered option which will spawn a shell subprocess with which you can start running commands within the environment:
pipenv shell
pytest --cov # unit tests and coverage
flake8 # linter used for code quality
These packages will be run by default for any push to dev/master and any pull request into dev/master to ensure the code quality matches our standards.
python run.py --file <file to run (you can ignore this if you want to run main autonomy)> --vision <change this to WEBCAM or NONE if you are running this on personal computer>
Any of the ZED (our chosen Stereo Cam) specific code will require the ZED SDK, though you won't be able to run most code without an NVIDIA GPU. So use the --vision parameter if you don't have a camera or are using a webcam.
While there are lots of options for your development environment, it is recommended that you use one listed below.
If using Visual Studio code it is also recommended that you use the settings.json located in .vscode/settings.json. If not using VSCode it is recommended mimic some settings (the linting/formatting will help greatly!)
Just like development environments there are lots of options for version control, it is recommended that you use one listed below.
The architecture is broken up into four categories:
To learn more about contributing to Autonomy view contributing.md.
Dev serves as the development branch throughout the school year. So if you want to start developing a feature or improvement create a branch based off of dev:
git pull
git checkout dev
git branch -b feature/<your feature name>
Every branch should contain the naming pattern feature/
Once ready to test multiple new features together create a pull request from dev to release/testing. When the software package for the year is complete create a pull request from release/testing into release/competition.
Pull requests will not be accepted if they cause unit tests to break or have syntactical errors. If you are adding a new algorithm, make sure to add a corresponding unit test, or it will most likely not be accepted.