Close

Need some software

A project log for 914 PCBOT Restoration

Modern implementation of ROS2 on a legacy 914 PCBOT platform

marcmilleriowamarc.miller.iowa 09/19/2024 at 14:300 Comments

ROS2 (Robotic Operating System) was the SW of choice for the restored platform.

After reviewing the various distributions the Humble Hawksbill distro was selected as the baseline for this restoration.  This distro is the latest with long term support and has an anticipated end of life date of May 2027.

The primary supported platform is Ubuntu 22.04 (Jammy) so I now have a focus for my OS.  Installation of the OS and ROS was fairly simple utilizing the ROS2 install guide.  This gives me a headless Ubuntu server on my RPI4.

To talk to the robotics platform and develop I decided to set up a Ubuntu install in a virtual machine using Oracle VirtualBox and then setting up the same ROS2 distro listed above.  The only issue I recall was needing to make sure to share the network interface with the virtual machine in order to expose the VM to the same network as the robot platform.  

Visual Code Studio Remote development is highly recommended.  I found this to be highly valuable and allowed me to develop on the robot platform remotely from various machines.  This made my job a LOT easier.  No matter if I was sitting with my laptop watching a Netflix episode or on my primary development desktop I was able to connect flawlessly to the robot platform.  Everything was hosted in its final location.  If you don't know what I am referring to I recommend you spend the time to figure it out.  It will be worth it.

My first task was to establish a baseline by replicating the great work done here.  This is a ROS2 node for driving the wheel servo's vai the M3 controller.  The basic structure is show below.  The velocity_cmd topic is used to send command for movement.  A simple test utility is included to demonstrate its usage.  Note:  that wbr914 expects to get commands continually, sending command only once will not move it.  

No matter how bold and prevalent that warning was place on the developers page my mind refused to register it until I took a few days of hard lessons to learn it for myself.  :( 

Basic movement is now established but the structure is not one that I believe I will use long term.  The reason being is that the wbr914_node is structured for continuous use of the velocity_cmd topic and in my structure the node will be hosted on the robotics platform with command and control intended to be remote via wireless connection.  This is a lot of network traffic to maintain basic functionality and I would desire to send higher level goals tot he platform and let the local platform service the details.  Once more capability is established I will rearchitect an efficient control scheme.

I decided to create fork and see if I can add a few more features.  My current working branch is here.  This branch is intended to add the additional functionality of the M3 control board to the ROS2 node.  So far I have been able to port the player/stage code for IR sensor reads, digital input status and digital output control.  The new services added are listed below.

Discussions