Project: Mars Explorer - Autonomous Rover with Real-Time Command and Control
This project involves the development of an autonomous Mars rover prototype using Arduino and Wi-Fi communication. The rover autonomously navigates using ArUco codes, retrieves items, and travels to specific locations based on real-time commands. This system was designed to be robust in harsh environments like Mars, providing safety assistance for astronauts in emergencies.
Project Description
The aim was to create a fully autonomous rover in a clear plastic ball that navigates by scanning ArUco codes to determine its position. The robot operates within a protective sphere to shield critical components from Mars-like conditions, and can travel to required depots, avoid harzardous locations and avoid moving martian boulders. The system communicates over Wi-Fi, integrating embedded systems, control algorithms, and real-time decision-making.
Motors were directly connected to the wheels via machined inserts, optimised for swift rotation and obstacle avoidance. A key aspect of this project was managing the low center of gravity for stability, while implementing a precise PID control for motor driving using a custom-designed strip-board circuit.
Key Features
- Autonomous Navigation using ArUco Codes: The rover utilises an on-board Raspberry Pi 3, in communication with an MQTT broker, in order to recieve signals from a satellite that scans ArUco codes, triangulating its position and calculating optimal path navigation to send back to the rover.
- Wi-Fi Communication: The rover receives real-time commands via Wi-Fi from the satellite, ensuring autonomous task execution.
- Homography: Used various methods for standardising coordinates into a singular reference frame for consistent and reliable commands.
- Optical flow: Estimated angle of attack of a moving green ball on the fly by comparing ball coordinates in 2 consecutive frames to find the vector between them.
- PID Control System: Implemented PID for stable motor control, ensuring smooth and precise movement across difficult terrain.
- Compact Strip-Board Circuit Design: Electronics were carefully placed on a single layer of strip-board to fit within the spherical robot’s constraints.
- Travelling Salesman Problem: Implemented modified versions of this algorithm in order to determine ideal order of depots whilst avoiding environmental hazards.
Technologies Used
The following technologies were utilised for this project:
- Python: Used for all image processing software along with MQTT communication, satellite-side.
- Simulink (MATLAB): Used to design and simulate the PID controller for motor control.
- OpenCV: For implamentation of the ArUco code scanning software due to the variety of in-built computer vision libraries and support.
- ArUco Codes: Enabled object detection and navigation by triangulating the robot’s position.
- I2C Bus: Used for communication with the accelerometer to provide real-time feedback for motor control.
Project Gallery
These images showcase the completed rover and vision system:
Project Demonstration
Footage of fully functional rover in operation with randomised targets (red) and danger zones (blue).
Full Technical Report
Below is the full technical report for the image processing subsystem:
Full Code (GitHub)
View the raw code from this project on GitHub: