Software Architecture 2025
General
Ubuntu 22.04 Jammy
ROS2 Humble
Subsystems
Drivetrain
Rover:
CAN Wrapper
Hardware Interface
User Contol:
Xbox Contol
Arcade Drive
Speed Ramping
Close loop control (PID speed controlling, Encoder feedback loop)
Arm
New hardware interface
for ROS2 Control
CAN Wrapper
Likely will be the same as the drivetrain
Inverse Kinematics
move it 2
Closed Loop feedback for motor positioning correction
move it
End effector Control
move it
Camera Feed
Gimble (
Swivel control
Camera
Panorama image creation
Science (if possible)
Motor Control for collection → CAN
Read test results → low priority
Comms (possible to upgrade)
Ros2 Msg Transmission Jetson <---> Base Station Computer
RWM Implementation Selection
Jetson <---> Microcontroller Communication
CAN
Autonomy
Obstacle Avoidance (depth camera → cost map creation)
Object Detection (cameras)
YOLO (v5-v8) fine-tuning on specific images
size of model
might need something more lightweight
Abort Objective & Autonomusly return to the previous waypoint.
Mission Status
LED Control
Conformation to the base station
ARUCO Tag reading
used for pose estimation
detect they are there and understand what to do if they see more than one
GNSS Waypoint Path Planning
navigate to pose behaviour tree
GUI
Idea to start
camera feed
where we have gone
Robot Information:
Multiple camera feeds of the rover
start with one
Velocity information
cmd vel
can get encoder info from HW interface
need to publish this to a topic if want to use
GNSS coordinate of robot
vector nav
IMU info for orientation of the robot
Google Maps-like interface to view robot location in space (use open maps)
Science Information:
Soil test results
Panoramic Image view
User Inputs:
General:
Switching between Autonomy, Teleoperation (drivetrain + arm)
ROS2 service → state control
state machine that controls state of the rover
vs behaviour tree
Path Planning:
Waypoint Inputs
Next waypoint selection
Autonomy:
Abort Objective
Go to the previous waypoint
Science:
Collect soil sample
Soil testing
Sensors
Vector Nav (IMU + GPS positioning)
possible differential GNSS
two antennae both connected to vector nav
RTK look into
Cameras/Depth Cameras
look at sim for FOV
start with one then iterate
Gimble Camera
AUX
LED matrix control
Fan control
ROS2 Command → Microcontroller running PWM