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.
|
Files | |
AutonomyThread.hpp | |
BasicCamera.hpp | |
Defines and implements the BasicCamera interface class. | |
Camera.hpp | |
Defines the Camera base interface class. | |
State.hpp | |
Abstract State Implementation for Autonomy State Machine. | |
TensorflowTPU.hpp | |
This interface defines the base classes for loading a model onto the Coral EdgeTPU and running inference. | |
ZEDCamera.hpp | |
Defines and implements the ZEDCamera interface class. | |
The Interfaces directory within the src directory is dedicated to storing C++ abstract classes or interfaces that define the contract for other classes in the Rover project. This directory focuses on providing a set of common methods and properties that classes can inherit and implement for the sake of organization and consistency.
The Interfaces directory stores C++ files representing the abstract classes or interfaces that define the contract for specific functionalities or modules within the project. Each file within this directory corresponds to a specific interface or abstract class.
Here's a general guideline for organizing files within the Interfaces directory:
For example, if there is an abstract class defining the common behavior for threads in the Threads directory, create a file named AutonomyThread.h
within the interfaces directory. Similarly, if there is an interface defining the contract for state classes, name the file as State.h
.
Make sure to update this README file whenever new interface or abstract class files are added to the Interfaces directory, providing a brief summary of each interface's purpose and the classes that inherit from it.
Remember to have the classes within other directories inherit these interfaces or abstract classes to enforce adherence to the defined contract and ensure a consistent and structured implementation across the project.
When working with interfaces and abstract classes, keep the following considerations in mind:
By utilizing interfaces and abstract classes, you can establish a consistent structure, encourage code modularity, and facilitate the implementation of specific functionalities across the rover project.
Happy coding and designing interfaces!