CURRENT ISSUE
Contests
FEATURE ARTICLE
|
|
Issue #224 March 2009
Vision-Guided Robotics
A Next-Generation Balancing Robot
by Hanno Sander
Start | Parallax Propeller | ViewPort | The DanceBot | Frame Grabber | Real-Time Tracking | Line Following With A Camera | Track A Pattern | Find A Beer Bottle | Wrap Up | Sources & PDF
THE DANCEBOT
After watching friends demonstrate their iRobot Roomba robotic vacuum cleaners at a party, I wondered if I could build a balancing robot that could dance—not just with me, but with anyone in any environment. I wanted to build a robot that could dance with people and seem almost human.
Balancing robots make a great platform for mobile robots. They are highly maneuverable, have great traction, and move more smoothly and naturally than other designs. They can turn on a dime, navigate precisely, and are a pleasure to watch while they keep their balance. Unfortunately, building a robot that balances and maintains position robustly in any environment is not easy.
The first lesson I learned was that unlike the inverted pendulum problem, a true balancing robot requires two control loops: one control loop to keep the robot from falling and another to keep the robot from losing its position. This combination also lets you move it programmatically. A significant milestone for building a balancing robot involves taking a simple step, accelerating to a set speed, travelling, and then decelerating to a stop. The DanceBot uses what’s known as a “hybrid fuzzy logic cascading PID controller” to precisely carry out this and other advanced maneuvers. In the algorithm, the inputs to the PID controllers are first processed by a fuzzy logic engine to make the control algorithm more robust and easier to tune. The PID controllers, which correct the error between a measured variable and its setpoint by calculating a corrective action, are arranged in a cascade with the output of one used as the setpoint in the second.
Second, while it’s possible to determine tilt by optically measuring the distance to the floor, this technique isn’t robust. The DanceBot measures rate of turn using a ceramic gyroscope and integrates this signal to calculate tilt. Fusing the calculated tilt value with measurements from an accelerometer with a Kalman filter yields an accurate tilt reading with no drift. This combination lets the DanceBot stay balanced in any environment.
The DanceBot is controlled like a car: it requires two channels of information (see Figure 1). Channel 1, speed, controls how fast the robot should travel. Channel 2, turn rate, controls how quickly the robot should turn about its own axis. The DanceBot manages the speeds of its two motors to stay balanced and to achieve the position orientation and velocity goals given by its higher level planner. Unlike a car, the robot is capable of turning in place. At first, I controlled my robot with a remote control, but I quickly realized that it would be much more fun if it could interact with others as well—just by watching what they were doing. The first step to guide the robot with vision was to build a frame grabber.
![]() |
| Figure 1—The DanceBot gets information from its environment through its sensors: a camera, a quadrature encoder, a gyroscope, and an accelerometer. It processes this data to find its dance partner, current position, and tilt. Fuzzy logic is used to balance and to maintain a set distance from its partner by driving the wheel motors. |
Previous | Next *| Subscription Deals |*
|
