Autonomy Software C++ 24.5.1
Welcome to the Autonomy Software repository of the Mars Rover Design Team (MRDT) at Missouri University of Science and Technology (Missouri S&T)! API reference contains the source code and other resources for the development of the autonomy software for our Mars rover. The Autonomy Software project aims to compete in the University Rover Challenge (URC) by demonstrating advanced autonomous capabilities and robust navigation algorithms.
|
Welcome to the Autonomy Software repository of the Mars Rover Design Team (MRDT) at Missouri University of Science and Technology (Missouri S&T)! This repository contains the source code, documentation, and other resources for developing autonomy software for our Mars Rover. We aim to compete in the University Rover Challenge (URC) by showcasing advanced autonomous capabilities and robust navigation algorithms.
Here's the overall layout of the Autonomy Software codebase:
algorithms/
: Implements core autonomous navigation and perception logic.drivers/
: Interfaces with the Rover’s hardware systems such as the drive board and navigation board.handlers/
: Manages various functional components such as camera, object detection, and waypoint handling.interfaces/
: Manages communication with external hardware components.states/
: Defines state machine behavior for efficient task execution.util/
: Utility scripts and helper functions for development and debugging.vision/
: Processes visual data for navigation and object recognition.tests/
: Ensures code correctness and reliability.tools/
: Miscellaneous development tools and utilities.external/
: External libraries and dependencies.examples/
: Sample code demonstrating specific functionalities.docs/
: Comprehensive documentation for developers and contributors.data/
: Contains various datasets and configurations for testing and analysis.Our documentation is automatically generated via Doxygen on each commit to the development
branch. Ensure you use the correct documentation templates to keep the documentation consistent.
đź“š Click here for full API documentation.
Before diving into the installation, ensure that your system meets the following prerequisites.
To build and run the Autonomy Software, you can either set up the necessary dependencies manually on your local system or use our pre-configured Docker environment where everything is preinstalled.
The easiest way to get started is by using our Docker environment. This environment comes with all the required software and dependencies preinstalled, including:
This Docker environment is designed to work seamlessly with NVIDIA GPUs and supports both AMD64 and ARM64 architectures.
If you prefer to set up the environment manually, make sure your system has the following hardware and software dependencies installed:
Now that your system is set up, you can proceed with the installation and build instructions provided in the INSTALL.md file.
The Autonomy Software project includes various build modes to cater to different development, testing, and deployment needs.
When using VSCode's CMake integration, you can customize the number of parallel jobs used during the build process through the devcontainer.json
file. This allows you to control how many jobs run concurrently during the build, optimizing performance.
We recommend setting the number of parallel jobs to no more than half the number of cores available on your system to avoid overloading resources.
To configure this, edit the devcontainer.json
file as follows:
In this example, the "cmake.parallelJobs"
setting is set to 8, which is suitable for a system with 16 cores. Adjust this value based on your hardware, ensuring that you stay within half your system’s core count for optimal performance.
Simulation mode enables the software to be compiled with simulation-specific features. This mode is disabled by default and is currently configured for integration in the Webots Robot Simulator.
To enable Simulation Mode:
Code coverage mode compiles the software with flags that enable coverage reporting. This mode is disabled by default.
To enable Code Coverage Mode:
Verbose mode provides detailed output during the build process, useful for debugging build issues. This mode is disabled by default.
To enable Verbose Makefile Mode:
Install mode enables the packaging of the executable for installation. This mode is disabled by default.
To enable Install Mode and package the executable:
Tests mode enables the compilation and execution of unit and integration tests. This mode is disabled by default.
To enable Tests Mode and run the tests:
If tests are available, they will be compiled into separate executables for unit and integration tests. These tests can be run individually or using CTest.
This project makes use of several open-source libraries and tools that help us achieve our autonomy goals. We would like to acknowledge and thank the developers of the following libraries:
This project also uses the following submodules, which are included as part of the repository:
The success of the Mars Rover Design Team's Autonomy Software wouldn’t be possible without the dedication, passion, and hard work of our amazing contributors. Every commit, every idea, and every effort brings us one step closer to reaching new heights in the University Rover Challenge.
Thank you to:
We also extend our gratitude to the countless alumni, mentors, and supporters who have provided invaluable guidance and resources over the years.
Every contributor, from newcomers to veterans, plays a critical role in the continued success of the team. Your hard work is what makes Mars Rover Design Team the exceptional organization that it is today.
Let’s keep roving hard! 🚀