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