The IMU we use also needs a serial port. To get the Pi
working with all the sensors required three USB-to-serial
converters and a USB hub. This was a wiring nightmare.
The Pi is a wonderful device for experimenting with Linux,
but it was just not the right one for controlling Watson.
A friend suggested looking at the BeagleBone Black (BBB).
Like the Pi, it runs Debian Linux. It also has at least four
usable serial ports.
Converting from the Pi to the BBB was not without
some headaches. Watson needs a wireless Internet
connection. I bought a USB Wi-Fi adapter from Adafruit
that was advertised to run with the BBB. After spending a
weekend trying different drivers and multiple
configurations, I finally got it working. However, it only
worked within 10 feet of the router. Unfortunately, Adafruit
has tech support via email only. While they sent me out a
replacement, it too only worked when close to the router.
So, I purchased another Wi-Fi adapter from Logic
Supply. It also advertised that it worked with the BBB. This
time when it didn’t work, I called their tech support. It took
a few calls but they actually called me back and worked
with me until I was satisfied.
The BBB does have a limitation that I don’t like.
Standard peripheral interfaces like serial, I2C, SPI, and GPIO
are only 3. 3 volt tolerant. To overcome this, I had to add a
“cape” expansion board and hand-wire level shifter boards
to deal with the five volts of the load cell interfaces, the
minimum five volt level of the PWM signal of the servos,
and the five volt serial IMU. There are plenty of MCUs that
run at 3. 3 and yet are five volt tolerant. Many Microchip
parts can. They also have the ability to software-control
which pins have which peripherals. This makes
customization of a development board very easy. Maybe
someday someone will design a Linux board for people that
A lot of roboticists are using ROS because of its many
mature modules every robot should include in their system.
We needed data logging and 3D visualization. The list of
ROS features is actually extensive. ROS runs best on a Linux
system, so I bought a used laptop for under $200 and
downloaded Ubuntu 14.04. It is amazing how well Linux
I tried loading Linux on a laptop back in 2002 and was
very disappointed. This time, I was thrilled. Every piece of
hardware in the laptop worked. I had all the additional apps
I needed for the Web, email, and remote control to
I followed the ROS installation for Ubuntu 14.04 and
again, everything just worked.
I downloaded the Gazebo simulator and loaded it with
our simulation and it worked too. Huh ... this never
Working as One
The software team is now working in the same
environment. We can all work simultaneously and upload to
Watson independently. One thing I was unaware of before I
embraced ROS was that you don’t need to run ROS on the
robot in order to publish and subscribe to data in a ROS
system. There are libraries you can link to via C, C++, or
Python if you want to keep the device lightweight and (for
embedded firmware purests) fast to boot up.
We scheduled a work-a-thon in order to pull the new
hardware and software together. Girts converted Watson’s
model description file used in RVIZ (ROS visualizer) to the
new design. Chris and I merged his animation functions
into Watson’s control program.
Now that Watson subscribes to the ROS topic
“joint_positions,” we can control every joint position
graphically. This new added feature will enable us to quickly
add frames to our animation database.
Next on our task list is perfecting the self-balancing
walk using our animation blender that melds the feedback
from the load cells and the IMU into a dynamic gait. ROS’
data logging and 3D visualizer gives us the information we
need to fix things when they go horribly wrong. That’s
something every robot builder needs! SV
40 SERVO 09.2014