Exploring Tekkotsu Programming on Mobile Robots:
Robot Safety
Chiaras are not indestructable. The two principal dangers people need
to be wary of are: (1) uncommanded motion, and (2) joint wear.
Uncommanded motion means the robot moved when you weren't
expecting it to, or in a manner you didn't expect. For example, if
the robot is sitting next to your keyboard, and you use the
ControllerGUI to activate the "Chase Ball" behavior, the obot will
happily run right off the edge of the table, and probably sustain serious
damage. To prevent this, it's a good idea to keep the robot mounted on
a stand like the one shown at right, so that its legs cannot touch the
table, until such time as you actually want the robot to walk. If
you're not working on locomotion, keep the legs off the ground.
When you do want the robot to walk, place it on the floor so it can't
fall. And monitor its motion so that it doesn't walk face-first into
a wall or get trapped under a chair caster. Continuous motion against
an obstacle (like trying to walk through a wall) puts unnecessary
strain on the servos.
If you would prefer to work with the robot at tabletop level, it's a
good idea to do so using a robot-safe "playpen" so it cannot get into
trouble. The photos show a playpen constructed from an inflatable
kiddie pool with the bottom cut out. The two black objects sitting in
the playpen are stands on which robots can be placed to keep their
legs off the floor.
Tekkotsu's "Emergency Stop" mode can be used to stop the robot if it
is heading for trouble. Either click on the Stop/Go icon in the
ControllerGUI window or double click on the robot's back switch to
toggle the Emergency Stop mode.
Joint wear is inevitable in mechanical systems, but it can be
minimized by avoiding actions that cause stress on the components.
Keep your robot on a carpeted surface, as walking on concrete or tile
causes increased shock to the legs. We use indoor/outdoor carpeting
with a thick carpet pad underneath.
When programming motion commands that move the robot's head or legs,
do not make rapid or jerky motions, as the sudden acceleration and
deceleration increases stress on the joints. There are hardware and
software speed limits on joint movement, but the limits are fairly
liberal; it's up to you not to abuse them. You can find the limits
in, e.g., ChiaraInfo::MaxOutputSpeed, expressed in radians/second.
To control the speed of motion in a MotionSequence motion command, use
setPlayTime(). To control it in a HeadPointer motion command, use
setMaxSpeed().
Also avoid excessive repetitive motion. Making the robot bob its head
up and down is cute; having it bob repeatedly for thousands of cycles,
until the battery runs down, is not a good idea.
Last modified: Sun Jan 17 01:31:01 EST 2010