Monday, September 25, 2017
Home » Projects » MythBusters – Grant Imahara Discusses The VEX “PackBot” Project

MythBusters – Grant Imahara Discusses The VEX “PackBot” Project

Robotics Design System

Photos by Cris Rocha & Grant Imahara


The following one minute clips are available

in Windows Media Video format

 Day One Test

Project Overview


To explore the capabilities of the VEX Robotics System, we chose to build our simplified version of iRobot’s PackBot (see The goal was for the robot to be able to climb stairs and small piles of debris using only VEX components. Sounds like a tall order, right? You bet. Fortunately, our friends at Radio Shack were kind enough to allow us to preview some of the exciting accessories planned for the VEX system, including tank treads, a programming kit, ultrasonic rangefinder sensors, and optical shaft encoders. ROBOT magazine provided us with a wireless remote camera distributed by Shulman Aviation to complete our PackBot’s control package.


Although the basic VEX kit contains several different wheels, the PackBot is a tracked vehicle, which gave us a great opportunity to try out the new VEX tank tread kit. The kit consists of two long tracks comprised of snap-together pieces. These plastic pieces allow the builder to make the track longer or shorter simply by adding or removing links. Also included are two pairs of custom toothed rollers that can be used as idlers, or to transmit drive power from a motor to the track via the familiar square shafts used in the rest of the system. The rollers are positioned at the front and back of each side, and a tensioner (also included) goes somewhere in the middle to pick up the slack.

The first step in our build was to construct the tracks and connect them in pairs. We needed two pairs of tracks- one for the front (equivalent to the real PackBot’s “flipper”) and one for the back, or base of our PackBot. We dutifully followed the assembly instructions, opting for the longest tread we could make. One of the toothed rollers was connected to a motor, while the other was allowed to spin freely.

Figure 1 shows a close-up of the toothed roller and chain. We quickly assembled one pair for the front tracks, and another pair for the rear tracks. A completed side is pictured in Figure 2.

Figure 1. A close-up of the toothed roller and track during assembly
Figure 2. A completed tank tread assembly with drive motor attached

A light framework connected the left and right sides of each pair of tracks. Performing a brief bench test, we confirmed that moving the control stick forward made both treads roll forward, while backward caused them to roll back. During turns, one tread rolls forward while the other rolls backward, allowing the robot to turn on a center point.


We knew that the iRobot PackBot’s front and back tracks were joined together with a common pivot, which was something we would also have to duplicate. The PackBot has the ability to lift its front tracks in order to climb over obstacles and debris. Our PackBot had to perform the same duties, so we immediately decided to use servos for their ability to hold a commanded position, which would be helpful in keeping a track elevated.

We installed four servos to try and lift the front tracks, which had become somewhat heavy by this point. Two servos were fastened to the front tracks, while two more were fastened to the back half. By having the two front-track servos mounted on the inside pointing out, and the two back-half servos mounted outside pointing in (as shown in Figure 3), we could capture the shafts coupling them as well as double the travel of a single servo alone.

Figure 3. Completed front and rear tracks with servos forming the common center joint.

The servos and drive motors were plugged into the controller and programmed appropriately, although we could have really used some long extension cords for the front drive motors. We made our own by cutting the VEX connectors and soldering them to long servo leads.This idea required cutting down the square-drive shafts to a custom size, which is easy to accomplish with a small abrasive chop saw or a hacksaw. Though this mounting system seemed a bit loose, we continued with it for proof of concept.

Figure 4. Grant replaces the servos with a motor and gear system.

The drive system used a single stick “arcade style” drive configuration, while the servos had to be ganged together with Y-adapters to get enough signal channels. Using the programmable mixing included in the radio, we were able to get one channel mixed into another with inverted polarity, since two servos were facing forward, and two backward.


Everything was looking pretty good until our first drive test. First of all, we noted that the tracks worked great in the straight forwards or backwards situations, but as soon as we attempted to turn, they stopped. Our first fear was that there was too much tuning friction, since the robot employed tracks with a large surface area instead of wheels, and the overall length was much more than the width. However, we noticed that the robot seemed to have ample turning power at random times, and sometimes the front tracks would stop turning, and sometimes the back. Upon closer inspection, we found that the single-supported square-drive shafts were slipping out of the clutches in the drive motors. Though we followed the assembly instructions exactly, we discovered that without a secondary support, the tension of the track along with the additional sideslip force during turning caused the shafts to flex and pull out of their sockets. Easily enough, we added another rail running on the outside of each track, thus making all axes double-supported, and preventing any further slipping problems.

Next, we tried to lift the front tracks and found that the servos were fighting each other, and only turning each other’s shafts, without lifting the robot. By fixing one problem and adding the necessary support rails, we created another one by making the tracks heavier. If we helped the front track and pushed it up a little, the servos were able to limp the heavy track up, but with nowhere near the power that we needed. At this point, we decided to replace the servos with gears and a motor, as shown in Figure 4.

We also noticed a major problem with the pivot axis. Originally, we created two identical tracks of equal width: one for the front, and one for the back, with a pivot in the middle. When we attempted our first lift, we found that there was ample clearance to lift the front track, as shown in Figure 5, but when it was lowered (as in the case of climbing down off of a debris pile), the front and rear tracks crashed into each other (see Figure 6), which was a major design flaw. Well, it’s back to the drawing board with a few changes. Fortunately, with the VEX system, major system changes like this only took an hour or two.

Figure 5. Our PackBot has ample clearance lifting the front tracks up.


Figure 6. The tracks crash in the first prototype when the front tracks are lowered.



In order to remedy the crashing problem with our tracks, we decided to make the front tracks skinnier, so that they could fit within the rear tracks. That way, all the clearance issues were resolved, since the tracks were no longer directly inline, as shown in Figure 7.

Figure 7. A thinner profile on the front tracks allows them to ride inside the rear tracks.

In playing with this new configuration, we found that by making the pivot axis shared between the drive axles, we could get the maximum flexing clearance. Unfortunately, this brought with it another design challenge: the left and right sides needed the ability to run forward or backward independently to allow the robot to turn. This meant that the tracks couldn’t just share the same axle going through both sides, which would have been the most straightforward way to solve the mechanical problem. Also, the front and rear axles had to be independent so that the robot could raise or lower the track without having to run the drive motors, and the center area needed to remain clear so that the track could swing through any angle. A robust mounting system using multiple pillow blocks was installed to join the two tracks without interfering with the drive system, as shown in Figure 8.

Figure 8. Multiple pillow blocks were installed at the common joint.

This joint allowed the tracks full range of movement (see Figures 9-12) and solved the crashing problem. With the crashing difficulty resolved, we moved on to gearing the motor for lifting the front track.

Figures 9. – 12. The new joint allowed the tracks full range of movement and solved the crashing problem.

The immediate solution would have been to use the largest gear in the additional gear kit. Unfortunately, this huge 84-tooth gear had too large of a diameter, and would have dramatically reduced our ground clearance. Adequate ground clearance was essential in this area, since the central pivot joint (and whatever gear is attached to it) almost touches the debris pile during a climbing sequence. In order to get enough clearance, we opted for the 60-tooth gear on the front track. This was driven by a 36-tooth gear on the rear track to get the correct spacing (pitch diameter) between the gears, as shown in Figure 13. Two motors were used to drive a common shaft, which effectively increased the available horsepower. We were careful to ensure that the polarity of one of the motors was reversed in the programmable mixing on the radio before doing a full power test. Since the motors were facing each other and turning the same shaft, if both of them had the same polarity, they would fight each other and possibly cause damage to themselves or the rest of the system.

Figure 13. Initial version of the motor and gear system for raising the tracks.

As is common in the early prototyping stages, the first test of the new gearing was by no means a hands-down winner. For one thing, the double-motor system with a 1.7:1 ratio wasn’t strong enough to lift the front track on its own, which had grown much heavier. Even more troubling was the fact that the gears made a horrible stuttering noise when we tried to lift the tracks. We first thought the machine-gun noise was due to the pivot joint failing. Temporarily removing the drive motor, we tried the joint and it seemed rock-solid. Upon closer examination of the meshing of the gears, we saw that the axles were flexing under load, causing the gears to slip out of mesh.

The quick fix for this problem was to add a bar with two bearing blocks set at the exact pitch distance of the two gears, joining their axles for a perfect mesh. In the VEX world, this is quite easy, since the gears have been carefully chosen to work at the exact distances of the holes in all of the rails. Adding this bar immediately cleared up the gear skipping problem, but we would have to add additional gearing to get more torque.

Another great benefit of this prototyping system is that a gear change takes only a matter of minutes. If we had to perform a similar operation on a real-world robot, it would take literally hours to try the next ratio. This would involve making calculations, setting up a mill, boring holes, pressing bearings, putting everything back together. With the VEX system, we just moved the motor down to the next set of holes and put a 12-tooth gear on the shaft. As shown in Figure 14, we kept the 36-tooth gear as an idler, which simply transmitted the torque without changing it, so that we wouldn’t have to change the spacing near the joint. This modification made the torque higher with a 5:1 ratio, but still not quite optimal.

Figure 14. Next version of the track-raising gear system with idler.

After a test of the lifting capability, we found that the front track lifted pretty well, but sank back down when power was lost. Unlike a servo, the motor/gear combo doesn’t automatically try to hold a commanded position, so we needed another minor adjustment. There was still plenty of speed to burn, which meant that we were able to add a second stage to the gear system, shown in Figure 15, which not only increased the torque, but also slowed down the movement of the tracks.

Figure 15. Final version of the track-raising gear system with two stages.

As a side benefit, the greater ratio would also help hold the tracks in place when power was removed. The output of the first stage would transfer power by driving the same shaft as the input to the second stage. We used a 12-tooth gear to drive a 60-tooth gear for a 5:1 ratio on the first stage, and then went back to driving the 36-tooth gear for the second stage, which in turn meshed with a 60-tooth gear for a 1.7:1 ratio. This made our overall ratio a comfortable 8.5:1, yielding a good balance of speed and torque for the lifting. As the first day drew to a close we were finally ready for the big test.


For the final step of day one, we took our PackBot to the main staircase at our headquarters, M5 Industries. We raised the tracks in anticipation of the first step, and the motors lifted them beautifully. As we advanced towards the step, we changed the angle of the front tracks to give us more leverage, which worked great for getting up onto the first step, as shown in Figure 16.

Figure 16. Our PackBot attempting to climb its first steps.

To get to the second step, however, we had to flex the body almost straight, which caused the plastic tracks to slip on the smooth front edges of the stairs. Quite a bummer, but we realized that the relative smoothness of the tracks gave almost no traction on the equally smooth step corners.

In a moderate debris pile test (i.e. driving over Jamie’s legs—see the video clip), our PackBot performed well and had plenty of climbing power, as the front track provided leverage for the back track. While the stair climbing was a failure, the debris pile was a complete success, given only a single day’s work.


Programming the robot to read the ultrasonic sensor and raise the front tracks was a snap using the VEX EasyC environment. Building from the included sample routines, we were able to quickly write a program to test the ultrasonic sensors and download it to the microcontroller. Though the optical encoder had not yet been installed, we went ahead and tested the program. When a hand was placed in front of the ultrasonic sensor to simulate an approaching barrier, the robot responded by raising the tracks as expected. We used a short “WAIT” statement to run the lifting motors for a brief period of time, so that the tracks wouldn’t slam into the body and strip the gears.

Unfortunately, we didn’t count on the robot interpreting multiple triggers, and the tracks continued to rise, slamming into the body and stripping the 60-tooth gear on the first stage, which is a situation we had hoped to avoid. Upon removal, we found that the square hole in the gear had failed, allowing the gear to spin freely, as shown in Figure 17. Just goes to show that even experienced builders need to be careful. Deciding that this was indeed an excellent situation for a limit switch, we wasted no time in installing one as well as the shaft encoder, so the robot would know exactly where its front track was at all times.

Figure 17. Failure of the square hole in the gear with shaft.

The limit switch (see Figure 18) was mounted on the front track, and had a corresponding rail mounted on the rear track to bump into and trigger the switch. When the limit switch is activated, the robot knows to stop the motors, thus preventing damage to the system.

Figure 18. Here the limit switch on the front track is activated by contact with a flat bar mounted to the rear track.

The optical shaft encoder required a bit more work to install because the case was so large, and ended up needing another 60-tooth gear to mesh with the 12-tooth gear on the motor shaft (see Figure 19). Unfortunately, since this represents a gear change, we lose resolution on the optical shaft encoder that’s proportional to the gear ratio. Given more time, we could have come up with a system of idlers, but this resolution seems to work fine for the application.

Figure 19. Optical shaft encoder mounting system.

The next test with the shaft encoder and limit switch caused the 60-tooth gear to fail again. This time, we realized that the hub of a single gear wasn’t enough to transfer all the torque required to lift the tracks. Due to space constraints, the first stage had only a single gear, while the next stage had double gears. No problem. We extended the space between mounting rails and added a second 60-tooth gear, as shown in Figure 20. Another 10 minutes later, and we were able to perform another test. This time, the new system didn’t fail.

Figure 20. Gears were doubled on the first stage of the track-raising mechanism to provide more strength.

As a side note, the VEX system also offers another solution in the form of a nifty black plastic plate that has a square hole made for the square shafts. The mounting holes in the plate will line up perfectly with the holes in a gear, and by joining the plate and gear with a few standoffs, you can couple the gear to the shaft in a very robust way.

Figure 21. Obstacle-climbing sequence.


Future refinements have been planned, including modifications to the tracks to improve their traction on stairs, and the addition of more drive motors for increased climbing power. Once we have the traction to climb stairs manually, we also plan to add a routine in the program to deal with autonomously climbing stairs, which requires a different sequence of events than climbing over a single obstacle. Finally, a pan/tilt system for the camera built with VEX servos will expand our ability to assess our PackBot’s immediate surroundings. The best part is that with the VEX system, modifications can be completed easily, and numerous versions can be quickly tested until the best configuration is found. The pieces are well designed and their ease of use promotes creativity in the problem solving process. We’ve found the system to be highly adaptable and accessible for the robotics enthusiast from beginners to advanced builders and look forward to seeing what the rest of you can do with this versatile system.

Words by Grant Imahara