A mobile robot system using Raspberry Pi 2 as MPU(Main Processing Unit), Raspberry Pi pico as Slave motion controller, MPU6050 for motion tracking and PCA9685 for PWM motor control.
test_vid.mov
The Raspberry PI(MPU) communicates with the Rp2040(Slave) over SPI using the following 4 Byte Protocol where each message and response is made up of the following data:
Command | Direction | Speed | Runetime
The rp2040 will echo back each message coming from the MPU which is used as confirmation.
The main controller task on the raspberry pi exposes an cli interface which allows the user to control the robot by sending direction, speed and runetime(how long to move) parameters. These commands are send to the rp2040 over spi interface. The rp2040 in turn sends the neccary commands to the motors via PWM controller.
Below is a system overview of all the different components and how they interact.
TODO:
- Update the MPU6050 IMU drivers
- Add localisation functionalities leverage the IMU.
- Integration time of flight sensors to detect obstacles
- Introduce a camera, implement assocated drivers, and integrate it into existing app.
- Implement autonomous driving system library that avoids collisions and detects objects of interest.