Overview
This project is an agricultural robotics solution designed to automate weeding operations. Developed by a team of students from Makerere University, the system consists of a 4-wheel drive rover equipped with a 6-degree-of-freedom robotic arm, all controlled via a custom-built Flutter mobile application.
The goal was to create a precise, safe, and user-friendly interface for agricultural automation that integrates real-time video monitoring and collision avoidance.
Project Site Link
Gallery

The Development Team
- Wangoda Francis
- Mujuni Innocent
- Namuli Angel Rebecca
- Bwanika Robert
- Nalugo Linda
Key Features
Precision Control
The core of the project is the ability to switch seamlessly between driving the rover and manipulating the arm.
- 4WD Movement: Tank-drive steering with variable speed control.
- 6-DOF Arm: Inverse kinematics (simplified) for precise gripper placement.
- Dual Modes: An intuitive UI that switches context between "Drive Mode" and "Arm Mode."
Safety Systems
Safety is critical in autonomous robotics. We implemented a multi-layered safety protocol:
- Collision Avoidance: Ultrasonic sensors override user commands if an obstacle is detected within 15cm.
- Emergency Stop: A hardware-interrupt based kill switch immediately halts all motors.
- Connection Monitoring: The robot automatically stops if the Bluetooth link is lost.
System Architecture
The system follows a Master-Slave architecture where the Mobile App acts as the central command unit.
1. The Frontend (Flutter)
I built the mobile app using Flutter to ensure cross-platform compatibility. It handles:
- Bluetooth Serial Communication: Sending byte-packets to the robot.
- Video Streaming: Rendering MJPEG streams from the onboard Raspberry Pi camera.
- State Management: Tracking sensor data and arm position in real-time.
2. The Firmware (Arduino C++)
The robot runs on an Arduino Mega 2560. We used C++ to write code for:
- Pulse Width Modulation (PWM): Controlling the speed of the 4 DC motors via L298N drivers.
- Servo Management: Synchronizing the movement of 6 MG996R servos.
- Memory Optimization: We implemented custom buffer handling to prevent stack overflow on the limited microcontroller memory.
- Custom API: This was used to send data remotely via bluetooth to the custom built app
Future Improvements
We are currently working on integrating Computer Vision (OpenCV) to allow the robot to autonomously identify weeds versus crops, removing the need for manual remote control.
Machine Learning Model Analysis

View the Full Source Code on GitHub