points that the
over the kitchen
it was looking
FIGURE 5. A kneeling person seen in a PointCloud
from PR2Lite's tilting LiDAR. The person has been
highlighted in blue in post-editing to be more
obvious in the picture, but is actually very easy to
see in the 3D model created by the PointCloud.
PC to transmit packages over the RS-485 bus. All the
microcontrollers will withhold from transmitting packages
when the PC is talking.
This method reduces packet collisions between
microcontrollers and the PC, and still allows the
microcontrollers to send out frequent position updates from
the linear actuators and wheels.
The four wheels of the PR2Lite are driven by four
motors with four wheel controllers, and must start and stop
at the same time. A cable connecting the four wheel
controllers was added to function as a synchronization
signaling bus to ensure that all four wheels will move at the
For example, if for any reason one wheel controller fails
to receive a move command from the PC, the other three
wheel controllers will not start. By monitoring the status of
all the wheel controllers, the PC can decide to retransmit
the move command or to cancel the move command. This
mechanism ensures that PR2Lite will not crash due to
communication errors with the wheels.
sensor for SLAM. Like with PR2, the LiDAR was positioned
horizontally on the base of PR2Lite, and the motherboard
was placed on a shelf within the torso. We replaced the
original motherboard’s instantaneous “ON” switch with an
LED so that the LiDAR will turn on whenever the ROS node
We kept the whole motherboard for ease of
development. At some time in the future, we may also use
the Neato’s sonar and edge detection sensors. The batteries
must be attached for the motherboard to boot, even
though we have the AC recharger permanently attached to
the motherboard. The AC recharger can be powered by a
battery through a DC to AC converter.
The Neato is also used by SLAM. PR2Lite’s SLAM has
been configured to use a new CH Robotics IMU and the
latest revised PID. The CH Robotics IMU was chosen
because it already has an ROS-compatible driver and
Figure 6 is picture of our kitchen with the LiDAR
output superimposed. Soon, similar low-end LiDARs are
expected to be for sale — without requiring purchase of a
PR2Lite has a Hokuyo URG laser distance center that
can be tilted by a Dynamixel AX- 12+ servo. Like PR2’s tilting
LiDAR, ours is located on the neck below the 3D camera.
We modified the University of Arizona (UofA) Wubble2
code to set tilting speeds separately and to publish
transforms. The UA demo program also assembles scans
and publishes a point_cloud. The current assembler doesn’t
self-filter or shadow-filter.
Eventually, we’ll convert the PointCloud to PointCloud2,
and then use the PCL library. In addition, the LiDAR will also
be statically tilted for obstacle avoidance in SLAM. Figure 5
shows the LiDAR’s PointCloud of a chair and kneeling
Our work on the PR2Lite arm navigation is built upon
the non-PR2 ROS pioneers, specifically Pi Robot (Patrick
Goebel), Maxwell (Michael Ferguson), Turtlebot (Willow
Garage), and Wubble (Anton Rebgun) — all of whom
configured ROS to handle Dynamixel-based arms.
Unfortunately, there was no perfect precedence for us:
• The Turtlebot and Maxwell use the simple arm driver
• Wubble uses OpenRave for the trajectory planning
and wrote a custom wubble_follow_joint
• Pi Robot uses OpenRave for the trajectory planning
We disassembled a used Neato and extracted its
motherboard and LiDAR. The Neato LiDAR is the main
36 SERVO 08.2013
The issues that are different for PR2Lite include:
• A passive joint formed by a parallelogram for the
upper arm that kept the elbow pan joint level with
the ground as it is raised or lowered. ROS does not
have built-in support for URDFs with joints that are
• Having two complex arms.
• Having a linear actuator to lift the upper arm. The
linear actuator is part of the closed-loop kinematic
joint chain not supported by ROS Electric arm
• Using the ROS Electric arm trajectory planning code,
along with a USB2Dynamixel.