RPB-202, a beginner's robot based on Romi chassis and Raspberry Pi

Hello Jon, thank you for the feedback!

So far I like the Romi chassis a lot. Assembly has been very easy, the molding quality and the fit of the components are excellent with very little play. The only thing I would recommend is to assemble the wheels on the motor shafts prior installing the motors on the chassis (instead of after as per the instructions). As the fit of the wheels on the shafts is very tight (good once installed), this allows to react the installation force on the opposite end of the shaft rather than on the gearbox bushings.

I will add the optional front ball caster to maintain a better balance. When doing object tracking with the camera, sudden changes in speed can make the front of the chassis pitch down which makes it more difficult to maintain accurate object tracking. I adjusted the gains of the motor PID controllers to avoid this from happening but had to trade some responsiveness in doing so. The front ball caster will certainly help to limit the “pitch” forward displacements.

The holes around the rim makes it easy to install sharp distance sensors. Note that some spacers (I used 1/4in stand-offs) are required to mount the smaller proximity sensors to avoid the pins protuding on the back of the carrier to touch the chassis.

I will also be adding a small servo controlled gimbal for the camera. I plan on controlling the servos directly from the Raspberry Pi’s GPIOs. I like the size of the Romi chassis as it provides enough space for such additional equipment while keeping a nice looking stable platform.

I now have the encoders working (thanks to @AmandaS’s helpful guidance in this thread). Interfacing through I2C was finally much easier than I thought. With the python Struct documentation, I have been able to understand how the example file provided with the rpi-slave library worked, and from there to modify it and the Arduino sketch to add the encoders data.

I am now working on rewriting my Motors class on the Raspberry Pi side to control the motors on the basis on speed rather than command. I use a PID controller with feedback from the encoders on each motor. I am also developing an Odometer class and a MotionController class to allow more advanced high level motion control methods such as “Go to Goal”, “Follow Path”, etc.

I will also install and interface with the MinIMU-9 v5 IMU and see how I can use the compass and gyro to supplement the encoders for better Odometer accuracy.

To be continued…

2 Likes