-
Notifications
You must be signed in to change notification settings - Fork 19
Architecture
This project's initial requirements are summarized below:
- develop manual and autonomous controls for a rover (gamepad, mobile application, and autonomous loop)
- create a simulation environment and simulated rover that can be manipulated by the same controls
- make an open-source software platform that enables iterative development for future teams
- ensure that everything is easy to install and operate
This list of requirements makes it clear that our software suite needs to be modular, standardized, well-documented, and easily reproducible. We have achieved all of these adjectives with our architecture.
Our architecture splits the projects into several components, namely:
- hardware
- communication
- simulation
- controllers
- autonomy
Each of these components is fully independent which means that:
- components can operate alongside any combination of other components and
- components can communicate with and be used by any combination of other components.
An example of this is the the ezrassor_topic_switch which is configured to listen to any two topics, and publish to any output topic. It is intentionally generalized, and all of our packages mirror this intention (to varying degrees).
Our architecture is illustrated below. Each component is color-coded, and the arrows represent the flow of information through the system. Please see each individual package's wiki page to find details on actual inputs and outputs for every node in the system.
The hardware component of the EZ-RASSOR includes all nodes that control physical hardware, as well as all nodes that monitor physical hardware. Currently, these nodes are protected and restricted by NASA, but we are actively working to migrate them into this open-source project.
The communication component of the EZ-RASSOR takes messages from controllers (whether a mobile application, gamepad, or autonomous controller) and routes the messages to the simulation and/or hardware. The communication component is in charge of parsing signals from the mobile application, reading button presses on a gamepad, and also toggling autonomy on and off based on commands from the user.
The simulation component of the EZ-RASSOR runs and manages a simulated environment and simulated models of the EZ-RASSOR. It provides nodes that translate hardware messages into messages that the simulation software (Gazebo) can interpret. It also contains all model data and simulated world data, such as landscapes and physics parameters.
The controllers component of the EZ-RASSOR contains the mobile controller application. This program enable end users to interact with our system in a user-friendly way. Specifically, the mobile application allows users to directly control the robot in the simulation or in real life.
The autonomy component of the EZ-RASSOR enables our robot to control itself without human interaction, both in the simulation and in real life. This component gives the robot the ability to perform a complete autonomous loop, where it travels to a target location, digs some regolith, returns home, dumps the regolith, and repeats. The robot can observe its environment during this loop and make changes to its plans with the help of an on-board depth camera and obstacle detection software. The robot can also perform smaller autonomous routines while being manually operated (such as auto-dig or auto-dump).
Home
Architecture
Technologies
Blender Modeling Tips
ROS Actions
Privacy Policy
Non-ROS Software
└ EZ-RASSOR Controller
Communication Packages
├ ezrassor_controller_server
├ ezrassor_joy_translator
├ ezrassor_topic_switch
├ ezrassor_teleop_actions
└ ezrassor_keyboard_controller
Simulation Packages
├ ezrassor_sim_control
├ ezrassor_sim_description
└ ezrassor_sim_gazebo
Autonomy Packages
├ ezrassor_autonomous_control
└ ezrassor_swarm_control
Extra Packages
└ ezrassor_launcher