Tracked Bot (Droid Puller)
Date: March 2019
After watching a few youtube videos, I decided that I “need” a multi-purposed, functional bot. It needs to do three things:
- Pull my droids
- Pull my beach cart
- Possibly, if I can get it to work, push an auger and thrower for snow
- Have tracks
After watching the original Battlebots about 20 years ago, and after watching numerous youtube videos, I finally decided to go back into mechanical builds. There was a video where someone in Minnesota built a 3D printed snow blower. It was a great idea and functional, but I didn’t think the chassis would survive a New England winter. Plus building it out of metal was much more sturdy and easier than printing parts for 3 months and not having the confidence that it would work.
In case you were wondering, here are some of the videos I’ve been watching:
These are the main videos that inspired me, but there are more located in this playlist.
Tracks: 5/24 Craftsman snowblower tracks
1 inch Aluminum square tube: Grainger pt #6ALR3
80/20 Corner and T connectors
Aluminum diamond plate: 2 ft x 4 ft
Motors: I was going to put my old NPC wheel chair motors in it, but they were way too big and heavy for this bot. I decided to get 250W scooter motors with a gear 9.1:1 drive. These would get me about 300 rpm on a 9 tooth sprocket for a #410 chain.
Shaft mounts: The drive shaft for the tracks requires a 3/4 inch shaft, while the idler wheels require a 5/8 inch shaft. I was able to get pillow blocks for each of the shaft on Amazon and decided to mount them directly on the lower portion of the frame.
Shaft: The original tracks came with shafts pre-installed, but because the profile of the snowblower was only about 12 inches, my decision to extend the frame required me to buy new shafts. I bought a 24 inch 5/8 shaft for the rear, that I may cut. I also bought a 3 foot, 3/4 inch, keyed shaft for the drive wheels. (It was cheaper than the 24 inch shaft.) I cut two 11 inch segments to attach to the front wheels.
Chain: The motors came with a #410 sprocket attached, however, #410 sprockets are not readily available to mount on 3/4 inch shaft. I read on a go-cart forum, that you can use #41 chain (1/4 inch roller width) on a #410 sprocket (1/8 inch width), so I bought #41 chain and #41 sprockets for the drive shaft. The #410 sprockets on the motors are slightly thinner than the #41 sprockets, so there will be some lateral movement. Hopefully it doesn’t cause any issues.
Rear axle tensioners – National Hardware N245-118 3260BC Eye Bolt
Bolts / Screws:
- M5 x 1.25 inch hex head for mounting the diamond plate to the frame
- 3/8″ x 2 inch hex head for mounting the forward pillow blocks
- 1/4″ x 3 inch hex head for mounting the motor mounts and rear pillow blocks to the frame
- M5 flat head hex screws for mounting the motors to the motor mounts
- 6 x 5/8″ 2 piece shaft collars
- 4 x 3/4 2 piece shaft collars
So to get this party started, I first bought a set of 5/24 tracks from a Craftsman snowblower on eBay. It was more expensive that I’d like to admit, but I didn’t have to disassemble an old snowblower and have parts lying around my house for months that I would never get rid of.
The tracks were smaller than I thought from the eBay pictures, but oh well..live and learn. In some senses I’m glad they are smaller. I didn’t need another giant bot taking up space in my basement. This will be a good mid-sized bot that can fit through doors.
Rather than mocking this up in Fusion 360 or Blender, I just build a temporary frame out of 1 inch extruded aluminum and 80/20 corners (Grainger). I wanted this to be a fun build, not entirely precise, just something that I put together. The frame was built to be 15 inches wide and 15 inches long. Combined with the 4 inch wide tracks the total width would be about 24 inches, small enough to fit through a 27-28 inch doorway. I had to get all of the parts in this frame width.
Because the pillow blocks need to be securely mounted to the frame, each pillow block required it’s own cross bar. I made another frame bottom to allow the mounts to be screwed into the aluminum frame. The drive wheels will be mounted directly, while the idler wheels need to have sliding mounts to create tension on the tracks. The motors and drive chain will be mounted on aluminum angle rod, and also need to slide to allow the chain to have tension. I had to increase the length of the frame to 16 inches to allow room for the 5/8 pillow blocks to slide.
Dry fit of the components
I started mounting the pillow blocks for the front drive wheels as they need to be perfectly aligned. Not shown, but I used a single, straight shaft to position all of the pillow blocks in the correct location and drilled the holes in the frame for the bolts. After mounting the pillow blocks, I added the shafts and sprockets to get get a general understanding of how everything would fit together.
Then I soft mounted the other components to ensure fit. It was tighter than I expected but there is still room for the battery, and electronics. Since this is a pretty basic build.
The motor mounts were built using 1 inch aluminum L bar. I was originally going to span the whole width of the frame, but because each motor required a different offset to ensure the chain was tight, I created 2 separate mounts. By slotting the mounts, I could slide the motors backward to ensure the chain was tight. I also needed to cut a corner out of each of the rear mounts because they were interfering with the rear pillow blocks. They aren’t the most accurate cuts, but they get the job done. Parts were cut with a metal blade on a band saw and a drill.
Once I mounted the motors, I needed to pull them backward to tighten the chain. I used popsicle sticks between the front motor mount and the pillow blocks to create the proper distance. The left motor required 1 popsicle stick and the right one required 6. The chain lengths are different requiring a different amount of sticks on each. Currently the front sprocket has 15 teeth with a 3/4 inch keyed bore. If I do not get the correct speed, I will need to replace those sprockets with smaller or larger sprockets depending on which direction I go in. Once the chain tension was correct, I mounted the motors to the frame by drilling holes and bolting them down with lock nuts.
Theoretical speed calculation
Motor RPM at 24V = 300 rpm
Diameter of wheel = approx 7 inches
Circumference of wheel = 22 inches
Sprocket ratio = 9 teeth (motor) / 15 teeth (shaft) = 0.6
Speed at 24 volts = (300 rpm) x (22 inches) x 0.6 = 3690 inches per minute = 3.5 mph
It seems at right about the correct speed, because an average person walks at about 3.1 mph. However, I was only planning on running this at 14.4-16 volts, which would further reduce the speed by 60% or 2.2 mph. We’ll see. If it is running too slow, I will have to purchase new gears and tighten up the chain again.
The 3/4 inch shaft driving the front wheels is keyed so that the sprockets won’t slip when resistance is applied. However the wheels that came with the tracks were mounted using a cotter pin. The hubs of the wheels have a hole for the cotter pin to slide through the hub and the shaft. I have never successfully made these before on other robots, but after watching Youtube video tutorials, I realized I could use the old shaft as a “template” to line up the drill press to the new shaft. Basically, I put a center punch 30 mm away from the end of the shaft, and then placed the old shaft on top of it with the pre-drilled centered hole directly on top of where I wanted the new hole to be drilled. Both shafts were placed in a vice to align the parts vertically and horizontally. Once aligned, I started drilling. I was successfully for the first time ever able to drill a center hole in a shaft.
So now the frame’s hard parts are basically installed. I’m waiting for some eye bolts to come in with a 5/8th diameter. These eye bolts will be used on the rear shaft to apply tension to the rubber tracks.
Rear Axle and Pillow Blocks
The axle is a 5/8 inch shaft with the wheels spinning freely on them. The wheels are held in the correct location using shaft collars on each side of the wheel. There are also shaft collars on the inside of each pillow block so that the shaft does not move from side to side. I chose to use 2 piece shaft collars so I could remove them without removing the whole shaft. (I’ve made that mistake before.)
The rear pillow blocks are a different kind than the front pillow blocks so the height of the center was not equivalent. I 3D printed spacers to lift the pillow blocks so that the centers were at the same height as the forward pillow blocks.
<<Still need to add shaft tensioners and eye bolts>>
I used the same electronics in this bot as I’ve used in R5 and Chopper, so it was quite familiar to me. The instructions below were modified from a wiki page in astromech.net, specifically for this. The setup is called “PADAWAN SHADOW” and it’s what droids use to control R2-D2.
Sony Playstation 3 – Move Navigation Controller
Arduino MEGA ADK R3
Class 1 CSR 4.0 USB Bluetooth Dongle (Note: Class 1 is important for range!)
Sabertooth dual 32A motor driver dimensionengineering.com or Sabertooth dual 25A motor driver
Arduino IDE 1.5.5 or newer is recommended if using the MEGA ADK – it prevents the need to modify the library.
Arduino Libraries for SyRen/Sabertooth
SHADOW Code: https://gitlab.com/darren-blum/SHADOW
- Open boxes and lay out parts.
- Upload – Upload the Shadow.ino sketch to the Arduino Mega.
- Pair Controller
You will need to use an Arduino Mega ADK.
1.) Connect the USB Bluetooth Dongle to the USB Host Shield
2.) Connect the Arduino to your computer
3.) Optional (but Recommended): Enable serial debugging. Change ENABLE_UHS_DEBUGGING to 1 in settings.h
- define ENABLE_UHS_DEBUGGING 1
4.) Upload the SHADOW Sketch to your Arduino board (Don’t forget to set your board type and Com Port)
5.) Open your Serial Monitor (Ctrl+Shift+M), and set your baud rate to 115200.
6.) After initialization, if Debugging is enabled, the Serial Monitor should display the following:
7.) Unplug the Bluetooth Dongle and connect your PS3 Controller via mini-USB cable. (THis is a HOT SWAP, while the board is ON)
8.) Look for the following on the Serial Monitor:
9.) Copy the BT Address of the controller, and paste it into the sketch here: (Make sure you are pasting it into the “primary” string variable, not a comment.
Upload the updated sketch to the Arduino.
10.) Unplug your PS3 Controller and reconnect the Bluetooth Dongle. You should see:
11.) Press “PS” Button to turn on the Controller. It should take about 5 sec The LED on your controller should turn solid red You should see the following in your Serial Monitor window:
12.) To turn off your remote, either hold the PS button down for 15 seconds or press the combination: PS + L3
NOTE: You may have to repeat this if the BT address is not setup correctly. It took me 2-3 times to get the correct BT address.
Connect up Drive
Change the dipswitches on the Sabertooth. Sabertooth 2×25 / 2×12 dip switches should 1 & 2 OFF and all others ON if using a regular SLA battery. If you’re using Lithium-Ion batteries (you oddball!) set switch #3 off also.
People often seem to get stuck here once they power everything up and find that they push forward on the stick and it drives to left, stick to the left drives drives backwards, etc. Don’t fret, motors can be wired positive/negative. It doesn’t matter. Start flipping the motor connections to the Sabertooth. First flip M1A and M1B. If that doesn’t fix it, flip it back and try the other. If it still isn’t right, then try flipping both sets. R2 is driven like a tank. Spin the right motor forward to go left, left motor forward to go right. Both motors forward, drive forward. Keep that in mind as you troubleshoot.
Please use a maximum of 12 Gauge for the wires going to the Sabertooth and motors/power.
Q: The right analog stick is centered but it still drives (turns, drives forward, drives reverse, etc)!
A: You need to just adjust the deadzone const byte DRIVEDEADZONERANGE = 20; Increase this number until you can let the stick go neutral and nothing moves. The code has some more info on that above that line.
<<< DON’T FORGET THAT THERE ARE A LOT OF COMMENTS IN THE CODE. IF YOU HAVE ISSUES, READ THE CODE. >>>
Here’s a video of my first time testing out the system.
This is a video explaining all of the connections I made.
I worked on the rear axle this weekend. It is a single 5/8th shaft that holds the two free wheeling track wheels. The mounts are pillow blocks elevated to ensure the center is at the same height as the forward pillow blocks. The pillow blocks are slotted so that they can be pulled back and forth to tighten the rear wheel and maintain track tension. (If the tracks are too loose, they will slip off.) The tension is achieved using 2 eye bolts that are mounted to the shaft and to the rear of the frame. These are 4 inch marine eye bolts used for sailing, although other eye bolts can be used. They do not need to have bearings because the rear shaft is not meant to rotate like the forward shaft. Once the tracks are mounted, tension is applied to the eyebolts to pull the axle toward the rear, which tightens the track. Once a good amount of tension is applied, then the pillow blocks are tightened down.
First Test Run
After assembling all of the components and getting the tracks in place, I jerry-rigged the electronics and tested the bot. It worked well, except for the fact that the motors were going the wrong way when receiving input from the joystick. Here’s a video of the first test.
After switching the wiring around, I was able to get the robot running correctly. The correct wiring diagram is like this:
From Left to Right: The first 2 wires go to the right motor, the middle 2 wires are for the battery, and the last 2 wires go to the left motor.
After fixing the motor wiring, I also built a temporary bottom out of sintra to secure the electronics a little bit more. I didn’t want the electronics to slide and roll into the chain/sprocket.
Once I had a successful test run, I had to create a real bottom for it. I purchased some aluminum diamond plate (1/16th of an inch) to use for the robot’s skins. I stripped all of the components from bot so I could properly cut and template the correct dimensions for the bolt locations. I basically just cut a piece of aluminum plate out, fit it the bottom, taped it on, and re-drilled the holes so that it pierced the diamond plate. I initially tried cutting the diamond plate with a jig saw, but it took way too long and the cuts were not straight. I saw on youtube that you could use an aluminum cutting blade on a circular saw. So I purchased one and started cutting. The cuts were much straighter and easier to manage vs. the jig saw.
After drilling the holes, I widened them a little bit more just to ensure that the bolts would properly fit. Whenever I do something like this, I can never get the holes perfectly lined up so I just made them a little bit wider to accommodate any small shifts. The close-up shows how the holes don’t perfectly align.
When I originally drilled the holes for the outer-most front pillow blocks, I noticed that they stuck out over the edge of the aluminum bar by about a quarter of an inch. To properly mount the diamond plate over them, I either had to cut out holes in the diamond plate or grind down the pillow blocks. The pillow blocks were made to hold material much heavier than this, so I decided to shave them down. Plus, it would give the bot a cleaner look. Each pillow block took about 30 minutes to grind using a diamond bit cutting blade on a 4 inch grinder. (Remember to wear ear plugs next time.) I also had to grind the front because on the original build, I had mounted the pillow blocks without accommodating the distance required for the forward upright bars. Once I installed those upright bars, the pillow blocks wouldn’t fit. Doh!
I remounted all of the components. For my own purposes the following order is the way you do it.
- Mount the forward pillow blocks with the 3/4 inch shaft in the bearings to ensure a straight mount.
- Tighten the pillow blocks
- Loosely fit the motors & mounts. Do not tighten the lock nuts. These should be finger tight.
- Remove long 3/4 inch shaft and replace with the left and right shafts. Remember to use the markings on the shaft to ensure correct placement.
- Tighten the set screws on the bearings.
- Install the sprocket, chain and key on both shafts. Remember to add fit the spacer bearing to ensure a straight mount. (NOTE: The spacer bearing is a 2 inch donut like thing that has a 3/4 inch bore. I 3D printed this and am using this as an indicator if the shafts get misaligned. If it breaks or gets too tight, then the shafts got misaligned.)
- fit the motor spacers between the pillow blocks and the motor mount (This is also a 3D printed piece that should be tightly fit.
- Tilt the motors up to install the chain on the motor sprocket. (That’s why you didn’t tighten it on step 3.)
- Now tighten the motor mounts ensuring the brackets are aligned with the cross bar.
- Check the sprocket alignment by running the motor. Too much noise, move the sprocket over a bit.
I cut the rest of the skins out over the weekend and installed them this week (3/18/2019). I initially tried using a jigsaw, but it cut too slow and crooked. Watching a few video tutorials on youtube, I ended up buying a non-ferrous blade for my circular saw. It cut much better. Straight lines and no drifting.
To mount the plates to the frame, I’m would first clamp the plates on to get the proper alignment. Then I would mark the position and then drill the hole using a jig that i 3d printed to get the hole at 1/2 inch from the top of the frame. Then I’d screw on the M5 x 1.25″ bolts with 2 washers on either side and a lock washer & locktite whenever possible. Sometimes it wasn’t possible because their wasn’t enough room. For the rear, I had to also cut out the tension screw eyebolt openings. Almost got it perfect, but whatever.. This whole operation took much longer than I thought. Probably about 2 hours for each side.
The sides were kind of a pain. I originally made a template out of foam board to line up the shaft holes with the edges of the frame, but it didn’t come out right. Plus the openings for the skins needed more clearance, so I just dremelled square holes to ensure the fit.
I also printed up some holders for the electronics. For now they will be mounted across a support bar at the rear of the bot.
So I made alot of progress this weekend (3/23/19).
- Installed the top plate
- Finished up the electronics and switches
- Printed and installed the battery
- Test drive
To install the top plate, I taped the top plate on and drilled 8 holes through the top plate and frame to accommodate a 1/4-20 x 1.5 inch bolt. I used bolt retainers to hold the bolts in place so they didn’t fall down. I didn’t realize that bolt retainers held the bolt in place AND stopped them from turning. I needed that functionality so I could install thumb screws to get the top plate off for maintenance. I already had a bunch of these little white thumb screws for my droids, which were threaded to 1/4-20, so I used those, but eventually, I will switch to aluminum. The white just sticks out too much.
I also finalized the electronics. I was originally going to use a USB switch that is used to turn a raspberry pie on and off, but I ended up screwing up the back plate and punched a hole in the wrong location, so I had to improvise and use a larger switch that fit in that hole. (Note to self, make sure you are looking at the right side of the plate when you decide to mount stuff.) I ended up cutting the USB AB cable for the Arduino to get access to the red (power) wire. I spliced in two larger wires that would route to either side of a switch. I crimped on terminal ends and mounted them to a rocker switch. This would allow me to run the Arduino from a separate power supply to get clean power. In this case, I’m just using a USB charger that is velcroed to the inner wall.
The USB switch is on the left.
I also added a 30 amp circuit breaker and am using it as a switch for the main power from the battery to the sabertooth. This is a typical marine circuit breaker that operates at 12 volts. In this case, I’m running it at 14.4v using the 4S lipo. No issues so far. I also used this setup Chopper. Both the arduino and the sabertooth are mounted using a flat 1inch bar that spans across the back of the frame. The flat bar is notched so I can easily remove it.
The switch on the right is the main power switch protected by a lift up cover.
For the battery holder, I decided to vertically mount the battery in the center of the frame. I would give it more clearance from the chains and other moving parts. I printed up a box with slots on the sides so I could hold the battery down using velcro strips (typical for drone building and mounting lipo batteries). I designed the box so I could mount the bottoms directly to the bottom plate.
This is the final layout of all of the electronics. Wires are still a little messy, but I will clean that up later.
Test Drive Outdoors
The weather was nice enough for a test drive so I took it out. It ran pretty well, but if I had to do it over, I would give it a little bit more ground clearance. I know I’ll never intentionally run up platforms and through bushes, but it would feel nice to be able to go through those.