Tbot: The Self-Balancing Transformer Robot
The Tbot project at IHMC was funded by the US Military (DARPA) to test different types of robot soldiers that could replace human US soldiers in Iraq and Afghanistan, where large tanks are too bulky to fight in the inner city buildings. So the heads of DARPA liked the Yobotics! dynamic simulations by Tim Hutcheson and Jerry Pratt of a potentially tall robot that can balance on 2-wheels (therefore fit in tight urban spaces) while carrying a camera or gun at roughly eye-level of a human.
These are difficult tasks to obtain from a traditional 4-wheeled robot, and since 2-legged bipedal walking robots were too complex, balancing on 2-wheels was a good option. There was also interest in the balancing robot driving over rugged terrain and obstacles, handling large falls and possibly climbing stairs, so that it could potentially drive anywhere in a typical urban house, including staircases. There was also the possibility of using the arms to help drive over obstacles much larger than a 4-wheeled vehicle could handle. And allowing the balancing robot to reconfigure itself into a low-lying 4-wheeled car was also desirable for the military since it would be more difficult to see or hit the robot, while allowing it to drive fast like a car. So the Tbot was born!
Jerry Pratt (MIT), Tim Hutcheson and Peter Neuhaus (UCB) quickly built an initial robot “Tbot 0.1” to see how practical it would be to drive a self-balancing robot across grass and rugged terrain. Then 3 students joined the team in mid-2006 to build the larger Tbot 0.2 and Tbot 1.0 robots:
- Victor Ragusila (UT Canada) designed the complete Mechanical system for Tbot 1.0 including active suspensions.
- Shervin Emami (USyd Australia) designed the computer and control system.
- John Rebula (MIT) helped with the control system.
- Tim Hutcheson designed the electrical system of the robots.
- Jerry Pratt and Peter Neuhaus oversaw the project, while mainly working on the LittleDog robot competition and designing their new bipedal walking robot.
- We also had some help from John Carff, Ryan Chilton and Chris Wilmer.
It turned out relatively easy to allow the Tbot 0.2 robot to balance by itself, but there were many other difficulties that were eventually solved, such as making sure the robot stays in the same position (using an intelligent PID controller and a Kalman filter), making sure it doesn’t behave dangerously when it looses balance, etc.
Shervin and John spent several months just getting the Tbot 0.2 to climb 3 stairs nicely, as it turned out much more difficult than expected! After trying various dynamic models in the Yobotics Simulation Construction Set, we could get the robot to climb stairs smoothly sometimes, but if one of the wheels happened to be slightly ahead of the other, the wheel would spin at max speed and the robot would go flying dangerously at a random direction! Eventually we designed a control system that worked quite reliably whether it was fast or slow. The final control system was also applied on the larger Tbot 1.0, which could climb the stairs much easier since it has larger tires.
One of our major hurdles was electrical noise interference caused by the powerful motors. We used an R/C radio controller to drive the robot, but often the interference caused the robot to drive differently, and when the robot behaved erratically, the remote safety kill switch usually didn’t work because of the interference.
Besides the self balancing system, the robot didn’t have any intelligence so it was basically an industrial-grade radio-controlled toy rather than a robot, but it featured several advanced technologies:
The robot’s onboard computer had a early demo model motherboard that was the first embedded motherboard in America that supported dual-core Intel CPUs. We were also in discussions with Sun Microsystems and James Gosling (the inventor of the Java programming language) to use Sun’s RTSJ hard-realtime java platform before it was released to the public. As a result, the entire robot control software was programmed purely in Java, including the low-level device drivers, and yet was able to balance the robot at a consistent 100 Hz (10ms per control cycle). We also put an additional Panasonic Toughbook 19 laptop on the Tbot 0.2 to communicate wirelessly with other software for the Coordinated Ops project.
The Tbot 1.0’s motors used “Harmonic Drive” gearboxes to obtain much higher torque than would be available in the same size from traditional motor drives, and provide reduced gear backlash, that was essential for smooth balancing on 2-wheels. The 2 main drive wheels have large commercial ATV tires, with custom wheel mounts.
The 2 large active suspension systems saved a lot of size and weight compared to massive spring suspensions, since the 300 pound (140kg) robot was supposed to withstand a 3ft (1m) fall whilst balancing. The active suspension system used a motor control system to rapidly adjust the robot height by force instead of passively using traditional springs for suspension.
We considered building the Tbot 1.0 body frame from Titanium alloy to reduce weight, but after learning how difficult it would be to machine the parts, we stuck with Aluminium alloy.
We used large Lithium Polymer batteries to power the robots, with the Tbot 1.0 needed the equivalent to roughly 40 laptop batteries. So when we found out that some laptops were bursting into flames due to their LiPo batteries being very sensitive to physical or electrical damage, we had to add many safety precautions of the robot’s batteries, to make sure they didn’t burst into flames if the robot lost balance! The early tests with the Tbot 1.0 were performed with power cables instead of batteries and a physical support harness to make sure it cant fall, but these were removed in later tests.
- ARM’s 64-bit mode (AArch64) ARMv8)
- Changing domain IP address without modifying DNS
- Hardware Platforms for Embedded Computer Vision, Image Processing and Deep Learning
- Script to check available diskspace in C#/.net
- Fiddling with Fiddler
- Dynamic DNS update from .C# and .net
- RAID 1 vs RAID 5
- Using HTTPWebRequest & HTTPWebResponse to automate web browsing
- To RAID or not to RAID
- Who is WHOIS?