Skip to content

Architecture

Jordan Albury edited this page Apr 24, 2020 · 15 revisions

Goals

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.

Overview

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.

images/ARCHITECTURE_DIAGRAM.png

Components

Hardware Component

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.

Communication Component

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.

Simulation Component

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.

Controllers Component

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.

Autonomy Component

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).

Clone this wiki locally