A student-built, ROS2-powered lunar rover competing at the Australian Rover Challenge 2026.
Deakin Rover doing the construction task (Image Source: ARCh 2026 Day 3 Livestream)
- Project Overview
- System Architecture
- Features
- Awards & Recognition
- Getting Started
- Team & Acknowledgements
- License
The Deakin Rover is designed and built by the Deakin Competitive Robotics Club for the Australian Rover Challenge (ARC), Australia's premier university rover competition. Teams design, build, and operate rovers through a series of field tasks including terrain traversal, equipment servicing, autonomous navigation, and science sample retrieval.
This repository contains the full software stack of Deakin Rover Borealis for the 2026 competition entry: onboard Jetson Nano software, base station ROS2 workspace, and the web-based operator dashboard built with Next.js β all containerised with Docker.
The rover runs a self-contained ROS2 stack on an NVIDIA Jetson Nano. The operator connects via a Next.js web GUI over Wi-Fi with no ROS2 installation required on the operator's PC.
Note on
dcr_base_station/base_station_ws/anddcr_base_station/.devcontainer/: These exist solely for local development and GUI testing. They allow a developer without access to the physical rover to spin up an Ubuntu + ROS2 Jazzy container running the same nodes as the Jetson, so the GUI can be validated end-to-end on a laptop. They are not part of the competition architecture and are not deployed on-site.
Rover (NVIDIA Jetson Nano β dcr_rover/):
Drivetrain:
flowchart LR
d1[USB Joystick] --> d2["/joy topic"] --> d3[dcr_joy_to_motor] --> d4[MotorMovementCommand.srv] --> d5["BLD-305s (RS485/Modbus RTU)"] --> d6[6-wheel drivetrain]
Robotic Arm:
flowchart LR
a1[USB Joystick] --> a2["/arm/joy topic"] --> a3["motor_node (IKPy FK/IK)"] --> a4[nobleo_socketcan_bridge] --> a5[CAN bus] --> a6[6-DOF arm motors]
Camera Streaming:
flowchart LR
c1[3x USB Cameras] --> c2[mjpg_streamer] --> c3["HTTP :8080 / :8090 / :8091"]
Antenna and LEDs:
flowchart LR
an1[rover_antenna] --> an2["/dev/ttyACM1"] --> an3[ESP32] --> an4[Antenna deploy + RGB LED array]
Operator Comms:
flowchart LR
o1["Next.js GUI (operator PC)"] -- WebSocket --> o2["rosbridge_server :9090"]
o1 -- MJPEG --> o3["mjpg streams :8080 / :8090 / :8091"]
Development tool β Foxglove Studio +
foxglove_bridge(:8765): During development and field testing, Foxglove Studio connected to the rover viafoxglove_bridgeto visualise the robotic arm URDF in real time, giving the team a live digital twin of the arm. This was used to verify joint positions and ensure no arm segment was colliding with the chassis or other parts of the rover during operation. Foxglove is not required to run the system in competition.
Operator PC (dcr_base_station/gui/ only):
flowchart LR
gui["Next.js GUI\nlocalhost:3000"]
gui -- "roslib.js WebSocket" --> rb["rover IP:9090\nrosbridge_server"]
gui -- "MJPEG HTTP" --> cam["rover IP:8080 / :8090 / :8091\nmjpg_streamer"]
The Jetson Docker container (dustynv/ros:jazzy-desktop-r36.4.0-cu128-24.04, CUDA 12.8-optimised) is the only containerised ROS2 environment used in competition.
| Feature | Details |
|---|---|
| ROS2 Jazzy middleware | rosbridge WebSocket server (:9090) for GUI communication |
| Full Docker containerisation | Dev containers for both Jetson and operator PC; reproducible builds with zero host dependency conflicts |
| Operator dashboard | Next.js 16 / React 19 / MUI 7 web GUI β camera feeds, arm control, antenna/LED panel, joystick status |
| Joystick teleoperation | USB gamepad β /joy β dcr_joy_to_motor at 3 Hz with 500 ms watchdog timeout |
| 6-DOF arm kinematics | motor_node implements forward & inverse kinematics via IKPy from a URDF model |
| Multi-camera streaming | 3Γ USB cameras (640Γ480, 15 fps, MJPEG) via mjpg_streamer on ports 8080/8090/8091 |
| Deployable antenna | Custom deployment code + ESP32 firmware; RGB LED control via serial at 115200 baud |
| SocketCAN bridge | nobleo_socketcan_bridge (C++20) at 1 Mbps β exposes CAN bus as /socketcan_bridge/rx and /socketcan_bridge/tx ROS2 topics |
| Custom ROS2 interfaces | dcr_interfaces (motor commands, LED commands), arm_interfaces (motor move/status messages) |
| Subsystem | Details |
|---|---|
| 6-wheel drivetrain | BLD-305s brushless motor controllers via RS485/Modbus RTU; up to 3500 RPM; address-based direction control |
| 6-DOF robotic arm | CAN-bus actuated; position control and speed control modes; laser-equipped end effector |
| Multi-camera rig | 3Γ USB cameras |
| Deployable antenna | ESP32-controlled deployment mechanism with addressable RGB LED array |
6-DOF robotic arm picking rocks during the construction task (Image Source: ARCh 2026 Day 3 Livestream.)
| Award | Category |
|---|---|
| Best Team Culture | Team Culture |
Team Deakin receiving the Best Team Culture Award at the Australian Rover Challenge 2026. (Watch on Livestream: Link)
Setup involves several prerequisite steps β installing the PEAK CAN driver, patching the Linux kernel for multi-camera USB support, connecting and configuring cameras, installing Docker, VS Code, and the Dev Containers extension β before the ROS2 workspace can be built and launched.
Operator dashboard: live camera feeds, arm control panel, antenna control, and joystick status. (Image Source: ARCh 2026 Day 3 Livestream.)
- Lachlan Carboon
β co-founded the Deakin Competitive Robotics Club and started the rover project at Deakin University. He signed the team up for the Australian Rover Challenge, introduced it to Deakin students, built the first team, and submitted the first competition documents in 2025 β without him, none of this exists.
- Matt Davison
β designed the original rover from the ground up in 2025, enabling Deakin's first-ever entry at the Australian Rover Challenge. The full mechanical design β chassis, suspension, and wheels β was his work, and the 2026 build is built directly on top of it.
- Jatan Vadgama
(Mechanical Team Lead, ARC 2025) β took Matt's design, made key modifications, and assembled the complete rover for the 2025 competition. His mechanical engineering and creativity were instrumental in the 2025 build cycle. The 2026 team used the chassis and suspension he assembled and redesigned only the wheels.
- Nathan
β the drivetrain motor control system is built on top of the electrical design and codebase Nathan developed for the 2025 competition. His work on RS485 motor interfacing and the Linux kernel patch for multi-camera USB support laid the foundation for this year's software.
- mjpg-streamer β open source MJPEG streaming used for all three camera feeds.
- nobleo/nobleo_socketcan_bridge β C++20 SocketCAN β ROS2 bridge used for CAN bus communication with arm motors.
Team Deakin at the Australian Rover Challenge 2026.
This project is licensed under the Apache License 2.0 β see the LICENSE file for details.
