For the robot to have an immediate response to the
live video data, multiple software applications are running
simultaneous to this point cloud collection, utilizing the
full power of the i.MX6 quad core CPU. Using a a 3D
visualization environment called RViz, we can analyze the
point cloud data being received.
RViz plots the image in near real time to points assigned
with a color scale according to depth. Simultaneously, a
background Python script catches the points and references
them to a movement pattern. The calculated movement
instructions are sent over serial to the Roomba base allowing
the robot to move and avoid objects. The sensors on the
Roomba will also be used by the SBC as feedback.
There are IR distance
sensors on the front, along
with bump sensors to tell if it
hits an object unexpectedly.
The SBC gathers this data
from the Roomba sensors
and uses it in calculating the
This feedback loop allows
the robot to work in unison
with all its components;
essentially giving it a sense of
touch and sight and location.
All this information being
procedurally generated on
the TS-7970 is compiled into
a map of the environment
using the ROS libraries. These
maps (shown in Figure 3) are
saved in the onboard eMMC
At any time, this map can be opened and edited or
labeled. The robot can also reference this map to know its
current location, or to find different parts of the building it’s
located in. For example, you can label a mapped section as
“kitchen,” and with the ROS voice packages installed, tell
the robot to “Go to the kitchen.” The robot can also use the
map to maneuver its way to different waypoints on the map.
The ROS software stack is highly customizable and can be
implemented with several different sensors.
For example, a reverse camera and sonar sensor could
be included to allow an added degree of sensory control.
With enough sensors and the addition of arms, the ROS
object detection systems could make your robot
smart enough to grab you a soda.
Next, we’ll explain how to set up your own
SBC based robot.
Building the Robot:
In brainstorming an example application
for ROS, we came up with the idea to create a
Roomba-based robot that will follow a person
around a room using a depth-sensing camera.
The first step is to gather the components we’ll
need to get everything hooked up and powered
on. This includes a USB to serial cable with a six-pin
mini-DIN connector, a capable battery ( 12 VDC
with 2 Ah at the minimum), and an Xbox 360
Kinect (Figure 4).
The USB cable will need to be modified to
allow regulated 12 VDC power; for our robot, we
52 SERVO 09/10.2018
To post comments on this article and find any associated files and/or downloads, go to www.