Close
0%
0%

914 PCBOT Restoration

Modern implementation of ROS2 on a legacy 914 PCBOT platform

Similar projects worth following
The 914 PCBOT was released in 2006. This platform became the successor to the HERO robot after a partnership between Heathkit and WhiteBox Robotics. Time to dust off this nearly 20 year old platform and see what we can do with it.

In 2006 I preordered a robotics platform form a new and upcoming company WhiteBox Robotics.  I became part of the “The gang of five” that received the first 5 robots off the line.  My platform (SN #4) was lovingly dubbed 'Odin' and enjoyed for years. 

This platform utilized the precursor to the modern robotics operating system (ROS) called Player/Stage.  

My documentation and various parts were lost over the years and the WhiteBox Robotics web site hosting the majority of the information has long since been removed.  I was able to locate some information on this website that was extremely helpful.  

After reviewing the base platform I decided to attempt to restore and repurpose this robot.  As an electrical engineer by trade and robotic hobbyist I decided to utilize a distributed set of low cost microcontrollers to perform all the basic functions and be controlled from a central, remote node.  My goal was to avoid the complexity of an operating system and give reliable, low level control.  (spoiler:  I failed)

Continued research lead me to this project that was close to my goal.  I was very excited and at first was bound to just replicate his approach.  After disassembling the platform and replacing the SLA batteries I was ready to start controlling motors.  That is when I went off the rails....

The M3 motor controller in the PCBOT is core to the original design and I just could not bring myself to removing it.

Custom USB device with DIO, AD's, high current outputs, IO expansion box, along with motor controllers made it a hard sell in my mind to remove and replicate.  Locating the datasheet for the main motor controller IC's convinced me that I needed to find a way to reuse the M3 module.

Lots of time and effort was spent attempting to utilize a uP to connect to the M3.  ESP32's, PICO 2W, etc were all attempted to be utilized with corresponding microROS utilities.  I do believe it is possible using a uP with a USB host to connect but the uP's I selected did not support host mode in microROS and my skill in SW development was not up to the task.  Combine that with the fact that custom baud rates are used to communicate with the MC3410 and I finally came to the conclusion that utilizing an OS may be prudent.

Additional research lead me to this documentation and repository.  This is the mother load!  This individual was able to archive the original Player/Stage driver for the M3 module.   

  • Need some software

    marc.miller.iowa09/19/2024 at 14:30 0 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.

    • IrdataGet
    • DioGet
    • DioSet

  • Step 1 in restoration - Power

    marc.miller.iowa09/17/2024 at 22:09 0 comments

    Dusting off the old PCBOT I was happily surprised to find that when external power was applied the old machine started up.  It was very nostalgic to see the OS and apps on an external display although I did have difficulty finding an old VGA cable.  Active fans, rotating media and windows XP with a 2 min boot time was not something I found highly useful.  Time to upgrade.  The mini ITX Core 2 duo board was removed. This will leave a large enclosed space for future electronics.

    On the other side of the bot the enclosure housed the dual mini ITX power supplies.  These were removed and replaced with 12V to 5V DC converters.

    The main ITX board was replace with a Raspberry Pi 4 Model B (2GB).  This allowed me to eliminate many power hungry devices

    • CD ROM
    • Hard drive
    • Cooling Fan
    • USB wireless adapter

    Final step was the replacement of the Qty 2 12V 9ah SLA batteries in the base.  Now the platform is ready for some software work.

View all 2 project logs

Enjoy this project?

Share

Discussions

davedarko wrote 09/17/2024 at 10:44 point

what a beauty

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates