Finaly a workable mobile robot platform!
Hello, I’m back working on “Pico Smart Car DIY” again. With the help of ChatGPT and reading even more articles on the internet, the complete software architecture of the robot is changed!
It’s finally possible to send waypoint by remote PC and leave the movements to the robot:

The RPi Pico has 2 cores, let’s use them:
- RPi Pico-W: core 0:
- Is looping a robot class, which is managing:
- Differential drive train class (which is basically a real time controller):
- PID on wheel speed.
- P-control on target pose or position or heading.
- Onboard LED-driver class:
- Enabling some basic feed back of the robot.
- Executes optional commands from a list.
- Prepaired for staring/stopping missions.
(Potential missions: line following (need additional sensors); ..) - Prepaired for adding more real time controllers (RTC’s), for gripper arm or what ever.
- Differential drive train class (which is basically a real time controller):
- Is looping a robot class, which is managing:
- RPi Pico-W: core 1:
- Is looping a communication class over LAN, using UPD messages.
- PC software:
- Python GUI (using tkinter):
- able to communicate with the robot.
- able to log.
- Python GUI (using tkinter):
It’s great having somewhat working onboard odometry. It’s still drifting a bit, but good enough for now.
PC-GUI:
Also the pc GUI is very usefull and was a nice first Python-Tkinter encounter:

Auto-execute list:
At robot level, additional “commands” could be added manual to an auto-execute list. The list could also be: cleared, started or stopped. The message added are having the same message protocol, like all other messages.
Using this mechanism, it is very straight forward programming a robot with ‘scalable drive patterns’:
- Moving a square: distance, ‘CCW’ or ‘CW’, speed.
Very usefull for calibrations. - Roborama challenge ‘Heen & Weer’: distance, speed.
- Roborama challenge ‘T-tijd’: distance, speed.
First steps…
Some first insights about robot behaviour. I’m already impressed by it’s capabilities.
Potential improvements:
- Drive: Add acceleration/deacceleration, reducing slip. (important)
- Drive: Improve ‘move_to’ algoritme, find best implementation:
- 1st orientation, then positioning?
- mix, best approach?
- Drive: Current code is not optimized for CPU speed. Even the microPython code could be ‘smarter’, using mainly integers instead of floats…
What next…
Basically my innitial goals are reached, so what is next?
This platform should serve multiple use cases:
- Followup with improvements?
- Anticipating with robotica.hcc.nl (Amersfoort, NL) roborama challenges?
- Roborama challenge ‘Heen & weer’ should be achivable now…
- Since some people want to start simular projects at hahaho-makers.nl, this might be a start for a simple generic robot platform & improve?
- Join via MakeyMonday meetup event (Utrecht, NL).
- Or update that waveshare PicoGo (v1) robot with encoders?
It’s having some sensors, display onboard, battery & charger onboard.
Except for the encoders, all necessary electronics are done already. - Then there is also an unfinished mecanum drive laying around..
(Should be a dropin? Writing driver.py for: Motor 2040: Quad Motor + Encoder Controller?) - Beside onboard odometry, it’s still very interesting, increasing robot awareness of its enviroment, using a CAM…
Dreaming further about potential upgrades:

To be continued…
Github
Latest & greatest updates: RPi-Pico-Robot-Platform.





