Note: This repository is a personal showcase of my work. It contains the code I contributed to a larger, private, collaborative project for the International Rover Challenge 2026.
This repository showcases my personal contributions to the Orbitron Rover, developed by Team QBotix Rover for the International Rover Challenge (IRC) 2026. While the complete rover was a collaborative team effort, this repository highlights the subsystems and code I personally developed and integrated. We are a debut team competing in IRC 2026, a prestigious annual space robotics competition organized by the Space Robotics Society (SPROS). The event challenges university students to design, build, and operate next-generation rovers, pushing teams to develop innovative solutions in engineering, robotics, and remote operation.
The Orbitron Rover is designed to compete in a series of mission-oriented tasks on a simulated Martian terrain. These tasks include:
- Astrobiology Expedition (ABEX): Searching for signs of life by collecting and analyzing soil and atmospheric samples.
- Reconnaissance and Autonomous Delivery Operation (RADO): Autonomously navigating terrain to locate, retrieve, and deliver objects.
- Instrument Deployment and Maintenance Operation (IDMO): Performing dexterous operations on a mock instrument panel using the robotic arm.
This repository contains the source code for key parts of the rover's vision and control systems that I was responsible for.
As a member of the AI & Vision subsystem, I focused on developing robust systems for remote operation and contributing to the rover's autonomous capabilities. The projects detailed in this repository are systems that I designed and implemented from the ground up.
Beyond the work showcased here, I was also deeply involved in the rover's core autonomous systems. I played a key role in the Reconnaissance and Autonomous Delivery Operation (RADO) mission by guiding junior team members in the development and training of object detection models (YOLOv8) for cone detection and classification. My responsibilities also included researching and integrating various hardware components, from optimal camera solutions to 3D-printing custom mounts to ensure our vision systems operated effectively under diverse conditions.
The main projects I developed are detailed below: the Astrobiology Expedition (ABEX) GUI and the Robotic Arm Feed.
The ABEX GUI is a comprehensive, multi-platform solution I developed to transform the rover into a remote mobile science laboratory. It allows base station operators to conduct the Astrobiology Expedition mission efficiently.
Features:
- Real-time, Multi-Stream Video: Utilizes WebRTC to stream low-latency video from three separate Arducam USB cameras simultaneously.
- Diverse Sensor Integration: Provides a unified dashboard displaying real-time data from a suite of on-board sensors, processed by a Raspberry Pi 5 and NVIDIA Jetson AGX. This includes:
- Atmospheric: DFRobot O2 Sensor & Bosch BME688 Air Quality Sensor.
- Soil: A 7-in-1 sensor (NPK, pH, temp, moisture, EC) connected via Modbus.
- Positional: High-precision data from an Emlid Reach M2/RS+ RTK GNSS and a Pixhawk IMU, processed through a dedicated ROS2 node on the Jetson AGX.
- Automated Panorama Generation: A single-click action in the GUI triggers a fully automated sequence on the rover: a servo rotates a camera, captures multiple images, and the backend stitches and annotates the final panoramic image with GPS and IMU data.
- Automated Mission Reporting: At the end of the mission, a complete
.docxreport is automatically generated, populated with all captured sensor data, images, and site information, fulfilling a key competition requirement.
Architecture: The system I designed uses a distributed architecture:
- Base Station: A web-based GUI (
abex_gui.html) and a Python Flask server (report_generation.py) for creating the final report. - Raspberry Pi (On-Rover): The primary server (
abexgui.py) usingaiohttpandaiortc. It interfaces directly with cameras and sensors and receives data from the Jetson AGX. - Jetson AGX (On-Rover): A secondary processor running ROS2 to handle the high-precision RTK GNSS and IMU data, which is then sent to the Raspberry Pi.
For more technical details, see the ABEX_GUI README.
I developed the Arm Feed subsystem to provide operators with the crucial visual feedback needed for precise robotic arm manipulation.
Features:
- Dual Camera Streaming: Transmits two simultaneous, low-latency video feeds from cameras mounted on the rover's arm.
- Web-Based Client: The viewer is a simple HTML page, requiring no special software on the base station.
- Robust & Asynchronous: Built with Python's
asyncio, the failure or disconnection of one camera does not interrupt the stream from the other.
Architecture:
- Server (Raspberry Pi): A Python script (
sender_armfeed.py) using OpenCV to capture video andaiortcto host a WebRTC server. - Client (Base Station): A simple HTML page (
armfeed.html) that connects to the server and renders the two video streams.
For more technical details, see the ARM_FEED README.
This project utilizes a wide range of technologies to achieve its goals. The components I worked on specifically used:
- Languages: Python, JavaScript, HTML5, CSS3
- Frameworks & Libraries:
- Python: Flask, aiohttp, aiortc, OpenCV, python-docx, Pillow, pymodbus, RPi.GPIO
- JavaScript: Native WebRTC APIs (
RTCPeerConnection) - ROS2: Used on the Jetson AGX for processing GNSS and IMU data.
- Hardware:
- Processors: NVIDIA Jetson AGX, Raspberry Pi 5
- Cameras: Arducam USB Cameras
- Sensors:
- GNSS/IMU: Emlid Reach M3/RS+ (RTK), Pixhawk (IMU)
- Atmospheric: Bosch BME688, DFRobot O2 Sensor
- Soil: 7-in-1 Soil Sensor (RS485/Modbus)
- Protocols: WebRTC, TCP/IP, I2C, Modbus
This work would not have been possible without the incredible effort and collaboration of the entire Team Qbotix Rover and the support of the iQube Innovation Centre at Kumaraguru College of Technology.
All rights reserved. This repository is provided solely for portfolio demonstration. No license is granted for the reproduction, modification, or distribution of this codebase.