Skip to content

System Diagram

Najman Husaini edited this page Jan 17, 2024 · 4 revisions

lunabot

Legend

  1. Clouds - Ideas that have not been thoroughly designed due to lack of direction or strong dependence on information that will appear some time in the future.
  2. Hexagons - References/Connections to physical components where a direct software representation does not exist. There is an actual camera node but there is not a wheels node. We use a generic serial node to communicate with the wheels, so that component is a hexagon.
  3. Dashed line - A wireless connection. Label indicates communication protocol.
  4. (Transformed) - An diagram-only attribute for published messages that indicate that the actual message published has been transformed into the type displayed on the diagram. Apriltag Detectors actually output a PoseObservation struct that is transformed into just an Isometry before being fed to Localizer.
  5. [type] - An array of some type. [Point3] is an array of 3-dimensional points.

Explanation

Lunabot is the launch file, which carries special meaning in ROS but here it is just a Rust program that initializes and runs all the nodes in main. No nodes are initialized by other nodes.
Care was taken to use the actual Rust type for each published message. If the actual Rust type lacks meaning on its own (ie. f32), the conceptual name is used. The Arm Angle is published from the arm-driver to telemetry, but in actuality it is just an f32, and not a custom type with that name. The conceptual name is also used when concrete types do not exist yet, such as the Commands sent from telemetry to the AI. The only exception to this is the costmap message. It is actually a Matrix<usize, Dyn, Dyn, ...> (ie. a dynamically sized 2D matrix of non-negative integers). The actual concrete type is too verbose to write, so IntMatrix is used instead.

Clone this wiki locally