Robs Stupid Booby Robot Land
This is Robs Stupid Booby Robot Page. Of course It is Stupid.
Aug 27, 2011 A friend of mine gave me an old broken electric wheelchair, and I decided to make a robot out of it. Its gonna be kinda large for an indoor robot, (my house is small and cluttered), but I decided to make it humanoidish like my other robot boner
Boner has been hanging out at our house for awhile, and has been getting lonely, so I have to make him a girlfriend :). Since his name is boner, it only makes sense than his girlfriend would be named booby. Of course booby needs to have the right shape!!
Ok, that is actually pretty far from the most important part, but it is a good start
Boobys main job will be to get me beer when my wife is too busy, out of earshot, or off the grid. I tried to talk boner into getting me beer a few times, but he keeps insisting he is an artist and is above doing manual labor of any kind. (That and his legs are full of old tshirts).
The new robot wont/cant be one of those woosy robots with servos for arm motors. I dont think a servo arm could even lift a beer, but Booby will probably have to move barstools to get to the fridge to get me a beer. That means being able to lift dozens of pounds!!
She will have to have about 7 real motors in each arm to be dexterious enough to do meaningful tasks. Luckily, I have a bunch of windshield wiper motors and power window motors from some of my car projects, so each controller will need to supply up to 30amps! The robot will start out with only a single arm, but 7 motors for the arm and 2 for the wheels would be around $900 just for the motor controllers for a single arm! That would put me over the budget for the whole robot!
I came up with a pretty good design for a simple PWM speed controller that can handle 30 amps. It runs the windshield wiper motors at 24v no problem. The wheelchair wheel motors are a different story though!
I let out all the smoke!
Turns out the wheel motors need about 50amps just to start turning with no load! The controller I built limits the current to 30amps, so wheels would even start turning and chip fried pretty quick with no heat sink. Im gonna have to buy a controller for the wheels, but still plan on using my design for the rest of the motors
This robot will have 2 main brains just like boner. A QNAP box running Linux with a WiFi dongle, talking to an Arduino Mega over USB. The QNAP box will contain the highest level control functions, and will communicate high level commands to the Arduino and request sensor inputs from the Arduino. The Arduino will translate the command and to talk to the appropriate AVR sub-controller to achieve the desired effect.
The Arduino will talk to a sub-controller for each pair of motors, and probably several others for environment monitoring. This may seem like overkill, but the AVR microcontrollers only cost about $2 and I have found it is much easier to separate functions between microcontrollers. One of my other robots had as many as 12 microcontrollers to do fairly simple tasks.
For instance, each motor controller will have an AVR4313 cpu on board. The motor conroller will control the ramp speed, monitor encoder outputs, and translate high level commands like move motor forward 8 inches and respond to Arduino board when complete. Other controllers will control sensors like IR, sonar, and possibly a laser scanner, allowing the Arduino to simply ask for range data from each sensor and integrate it into the map it reports to the QNAP box.
This leaves resources on the Arduino board to do smarter functions and isolates the low level hardware interface from the control logic, which makes it simpler to troubleshoot and provides a layer of checks and balances. Imagine that the robot is supposed to move to a certain position and report when it gets there. The Arduino board will have a rough idea of how long it should take, and if it seems to be taking too long, can ping the subcontroller and kill power if something goes wrong
After buying a $150 controller to run the wheelchair motors, I was able to at least kinda control the wheels!! The right wheel ran fairly normal, while the left wheel stuttered and jumped around. WTH! Letting the wheels run for more than a few seconds made the main 50 Amp circuit breaker pop! Something is definitely wrong.
Sabretooth 2x25 amp motor controller
Sep 29, 2011 After thinking about it for a bit, I realized that there must be brakes holding the wheels from turning. When I first examined the wheelchair, I only saw 2 wires to each motor. Taking a closer look, there was 4 wires. Narfff!! Hooking 24 Volts to the extra 2 wires released the brakes with an audible click. Turning the motor controller back on made the wheels spin relatively effortlessly!! Only problem was that the joystick I had connected to the controller didnt seem to affect the motor speed anymore. I HOPE I didnt fry the controller.
Oct 4, 2011 After thinking about it for a bit, it doesnt make sense to have the thickest part of her torso at the widest part, so I had to narrow her torso a bit so the protrusions are more centered. While I was at it, I got the shaft that supports her right arm axle mounted.
Starting to take shape
The super ginormous sprocket is needed for the super amounts of torque that is required to be able to lift heavy objects. I wanted to make 1 arm really strong and slow, and the other relatively fast and weak. By strong, I mean able to lift around 100lbs! with arm stretched completely out. If the arm is 3 feet long, 100lbs takes 300 ftlbs of torque at the shoulder. Thats alot of torque, which requires crazy bearings and stuff.
I planned on having 2 stages of gear reduction between the windshield wiper motor and the shoulder axis. With approximately 27ftlbs of torque from the motor, a 12 tooth sprocket going to a 60 tooth sprocket on a jackshaft, with a 9 tooth sprocket going to a 60 tooth sprocket on the shoulder joint, makes for 33.3:1 reduction, which turns the 27 ftlbs into 900ft lbs!!! This would be too much torque to be useful, since it would just pop the tires or tip the robot over, and would make the shoulder joint too slow.
If the motor runs 90rpm, 33.3:1 reduction means the shoulder joint would take 1/3 of a minute (or nearly 20 seconds) to make a full rotation. If I had a 20 tooth sprocket on the jackshaft instead of the 60 tooth, it would make for a 11.1:1 reduction, and the required 300ftlbs of torque, and about 7 seconds to do a full rotation.
Nov 29, 2011 I have been working on the robot, but progress keeps getting interrupted, and I havent managed to stay very focused. I finally decided to concentrate on getting booby to be able to wander around first, because it doesnt matter how cool her arm is if she cant get to the fridge!
I just realized I havent posted any pics of the wheelchair base I will be using. Maybe I figured peeps have seen electric wheelchairs before, and wouldnt be very interesting until it was modified more. Oh well, here it is.
Stupid mostly stock wheelchair base
It is completely stock, albeit stripped down, except for the plexiglass plate that the wheel motor controller is kinda mounted to. The loose brown wire is for releasing the brakes.
I have been messing with trying to get feedback from the wheels, to determine exactly how far the robot has moved. This is very important for proper navigation. You cant tell the robot to go forward 14inches if it doesnt know how far that is
I wanted to get at least 1/10th of an inch resolution, so I made an encoder that has 430 segments and stuck it to the wheel. (wheel is approximately 43 inches in circumference).
Paper encoder taped to tire as a test
This didnt work at all, the segments were too close together to get anything except what was probably just random noise. I tried making one that had about 100 segments, but that didnt work 100%. Turns out the black was reflecting nearly as much as the white, and I was just using a digital circuit.
Turns out I could point the sensor at the tread of the tire and get really accurate readings without having to build a comparator circuit. In the picture above, you can kinda see the plexiglass bracket holding the sensor next to the upper left of the tire. This worked really well, but only gave me about 1/2inch resolution.
1/2 inch resolution probably sounds good, but what if the robot needs to go from point A to point B, and has to rotate 90 degrees to get pointed in the right direction. If the wheels are 22inches apart, spinning in place, each tire would make a 69.11inch circle for one rotation or 360 degrees. So to turn 90 degrees, we need to turn each wheel 17.27inches.
We cant tell the wheels to move 17.27inches if we only have 1/2inch resolution. If we round this off to 17inches, we will be off by almost a degree and a half. This may not sound like much, but the robot would miss a destination 10ft away by several inches. This isnt a big deal, but after a dozen manuevers, the bot may be off by a foot or more, and there arent too many places in my house that has a foot of leeway before hitting a wall!
I kept this in mind while I was making the mapping program, and was about to try to compensate for this by making path corrections at the appropriate place in mid path. Meanwhile a friend of mine was talking about the brakes, and how he saw how to disconnect them on his wheelchair. After thinking for a bit, I realized it would be way better to kill the brakes on mine and hook the wheel encoder to the place on the motor where the brakes were attached instead of the wheel.
The motor spins several times faster than the wheel, so getting half a dozen pulses per turn of the motor would probably be better than the 86 from the wheel I am getting now. Time to tear into the brakes!
Brakes are hidden under cap on end of the motor
View under the cap
The brakes work by the 2 shiny circles mounted to the motor squishing the dark disk with a spring. Giving power to the brakes pulls the left side circle thing to the left, relieving pressure on the disk, allowing it to spin freely.
I just cut the 3 standoffs that hold the end plate since I didnt have the right size allen wrench. The motor spins much more freely without the brakes released now, but there is still quite a bit of friction between the nut that turns and the remaining plate. Energizing the brake release makes them turn even easier though. The brake plate only moves a fraction of an inch when energized.
End plate and disk removed
Being the redneck that I am, I wouldve just welded the brake plate in the released position, but my welder was too far away, so I just put some washers on the bolts that hold the brake assembly to the motor and now its happy easy spin!!
Washers keep the brakes released now
The motor spins 3/4 of a turn for every half inch of wheel travel. If I can rig up the encoder to give a pulse for each of the flat parts of the nut on the motor shaft, my resolution will have increased 4.5 times to .1111111 inches (1/9th of an inch). This should be plenty of resolution, but there is a bit of slop between the motor and the wheel, which I can probably compensate for.
In the meantime, I made a quick and dirty test app that shows all the permanent obstacles in boobys world and demonstrates the ability to manuever from any point A to any point B. Below is the path it picked to go from its garage to the beer fridge
Booby can figure how to go anywhere now!!
Instead of trying to calculate that booby is 24inches wide, and the hallway is 34inches wide, it is much easier to shrink the map by half the robots size, then its obvious where it is able to travel. Notice that the there are several areas that the robot just wont fit.
For instance, notice that the corridor to the beer fridge is very narrow. There are only a couple inches of extra space to get to the beer, so if boobys navigation is off by 2 inches, she will probably spill my beer!!
Dec 15, 2011 I think I mentioned it before, but Boobys main brain is a QNAP box that was born to be a file server. It is basically a desktop computer without the monitor. It has onboard SATA drive, Gb network, external SATA connector, and several USB ports. It has a 32bit processor running at about 1.2GHz and 512MB of memory if I remember right.
I loaded Debian Linux on the hard drive and added a USB network adapter. It talks to the Arduino board over 1 of the USB ports, which leaves at least 1 USB port open. The other USB port(s) will support a webcam.
This is actually boners brain until I can fix boobys brain. I thought I could just clone boners hard drive onto another drive, since the QNAP boxes are the same, but apparently I setup the partitions different between the 2 and now it wont boot off the hard drive
Ive been working on the navigation, and trying to figure how to compensate for the slop of several inches between the motor and the wheels. There really isnt any good way that I can think of, so the idea of the encoder on the motor will not be practical.
After thinking about it for a bit, I decided to try using optical mice pointed at the tires to determine how far it has gone. The optical mice default to 4ticks per mm, which equates to about 100 ticks per inch! This sounds perfect, PS2 optical mice are way cheap, and PS2 interface is quite simple. Gotta at least try it.
Arduino board wired to 2 PS2 connectors
Even though the mice are just hanging by a piece of scotch tape, and kinda bounce off the tire as it rotates, it seems to work just fine. The accelerate/cruise/decelerate routines are a bit jumpy as the mouse misses several pulses as it bouces around, and speeds up and slows down the wheel several times trying to maintain a constant speed, but looks promising enough to warrant building some brackets to mount the mice.
You can probably tell from some of the pics, that I have boobys wheels off the ground. This is to test the wheel movements. It is still way too dangerous to let her drive around when she doesnt know exactly where she is.
I dont expect booby to be able to wander around all day with just keeping track of how far the wheels move. Even if I had 1/1000000th inch of resolution and 0 slop in the wheel measurements, the tires slide a bit when turning and introduce errors that would eventually accumulate and end up making booby smack into a wall or something expensive.
To help keep her from bumping into stuff, Booby will have a digital compass, several IR range sensors, at least 1 ultrasonic distance sensor, and proabably a kinect sensor eventually. The hard part will be integrating all the measurements and doing position correction.
Some of the sensors
The IR and Sonar sensors are mounted on servos to enable scanning an area and returning a series of range measurements over part of a circle. The servos will continuosly scan back and forth, delivering data as fast as the next level computer can handle it.
I made a circuit board that will control up to 6 servos with sensors. It is only wired for 3 so far. Each of the sensors will be controlled by its own AVR CPU. Im sure that I could have made 1 CPU do all 6, but this allows for much more flexibility.
Circuit board and lots more parts to hook up
In the pic above, there are a a couple DC-DC converters, and LOTS of 5 Volt regulators. One of the DC-DC converters will supply 12 volts at up to 3 amps to the QNAP box. The other is a spare for now. There will be several 5 volt regulators in the system. Each can supply up to 1 amp. Each group of 3 servos will have its own supply, and each group of 3 sensors will also have its own. The sensors wont need anywhere near that much power, but separation will keep the power to them a bit cleaner for better measurements
So the next step is to build a super power supply board with a 12 volt and at least 4, 5 volt outputs. The 12V output needs to have a minimum of 16V input, so it has to be supplied with 24 volts. It would be simpler to have the 5 volt regulators also supplied with 24 volts, but 19V is alot of wasted power for a linear regulator. I think it would be best to run the 5 volt ones from a single battery, then Im only wasting about 7 volts.
I managed to fit 7 5V regulators on the board with the 12V regulator. Then I made a cable to connect the 12V to boobys brain. Boobys brain loves running off batteries now. At least one part of this project turned out simple.
Boobys brain running off new power supply board
Ok, enough about the power, already! Lets talk about the brains. I found a real brain laying around, and thought that booby could use a real brain!!! HarHarHarHarrrrrr (evil laugh)
Should I use a real brain?
After watching the movie A.I., I am having second thoughts about giving it a real brain. I want my robot to listen and behave, and giving it a real brain will probably prevent that (I know, Ive got kids). I will probably still use the brain as decoration, mounting it on the top of her head right above her camera eyes.
I got the bracket made for the right wheel, and I am getting roughly 15000 counts per wheel rotation!! It accelerates smoothly, cruises at a fairly constant speed, but it isnt exactly repeatable. 15000 counts gives me nearly exactly 1 revolution 1 time, then a little more the next time, then a little less the next time. It is randomly off by about 1/8 of a turn. Ive tried adjusting the position of the mouse, a few different ways, but still cant get repeatable measurements. This makes me VERY sad!
Bracket to hold mouse to next to the wheel
Dec 16, 2011 I bit the bullet and bought some really nice rotary encoders. I really didnt want to spend that much just to tell how far the wheels move, but everything else has failed. The encoders are quadrature type, and are rated at 200 pulses per revolution. I think it means it is 200 counts on each phase, giving 800 pulses per revolution. Very nice. There isnt a good way to hook the encoder to the wheel shaft directly, and Im not fond of friction drive for the encoder, which would introduce error, so I got some sprockets and a couple of toothed belts.
The sprocket for the wheel has 48 teeth, and the sprocket for the encoder has 12 teeth. This will make the encoder spin exactly 4 times per tire rotation for quadrature pulses per rotation. This is only about a fifth of the resolution of the mouse, but had better be exactly repeatable!!
Ive got sprockets encoders and belts
For some reason, I was thinking the sprockets for the wheels would of been larger diameter. I knew their exact diameter because I had to know in order to order the belts. I also didnt think they would be as thick. Its gonna be fun to drill a 3/4 inch hole through 1/2 inch metal. I'll probably have to cut the hub off the sprocket too, depending on how much room I have between the motor and wheel hub. Mounting the encoders should actually be the easy part.
I may even be able to let booby wander around on her own before the weekend is over!
Turns out, I didnt have a 3/4 inch drill bit, so I decided to drill it out to 1 3/8 so it would fit over the wheel hub instead of being sandwiched between the wheel and motor. This is proabably a much better idea anyway.
Cut a hole in wheel sprockets
Gears glued to wheel hub
Dec 26, 2012 I wanted to tell booby where whe was, give her a destination and see if she could find her way, but I still had some programming to do, and was having some issues with network connectivity through the USB network dongle. She doesnt have to have constant network connection to function, since once I send her a command, she can theoretically figure out how to get there. Only problem is if something goes wrong, I want to be able to hit a button remotely and make her stop, which wont happen if she is off the network, and I havent installed a hardware kill switch yet. If she gets lost, or goes crazy, there isnt a simple way to stop her!
The WiFi router is at the other end of the house by the ceiling of the floor above where booby lives, and I cant just move it right now, (it is also acting as a hub/switch for other connections). Instead of dealing with the connectivity right now, I switched gears and decided to mount her eyeballs. Her eyes are IR sensors mounted on servos. She moves the eye to a certain degree, takes a distance reading, then moves some more. This gives an array of range data, much like radar.
Booby can see!!!
You can kinda see her eyeballs duct taped to convenient places on the frame. I was running one of the sensors at a time, since I was afraid that they would interfere with each other. Since they are mounted 14 inches apart, there isnt any problem with seeing each others spots.
I added the distance data to the radar reading in the controller program really quick and didnt really like what I saw. Besides being quite a bit off on the range data, it was quite noisy! In the pic below, the green lines are what it should see, the blue is what it sees with the left eye, and the red is what it sees with the right eye.
Really noisy data (red and blue dots)
The sensors are ALOT noisier than I would have thought, where the analog output fluctuates around 100mV holding still looking at a stationary object! At close range, 100mV equates to an inch or so, but farther away, it is nearly useless.
I started thinking that the sensors were getting noise from each other and/or the servos, so I disconnected everything except one sensor, and pointed the sensor at a stationary, white object. This cut quite a bit of noise from the power at the sensor, but the noisyness of the sensor output didnt get any better. I added a 1uF capacitor right to the power terminals of the sensor, which didnt seem to change anything either. Arrrgghhh!
Ive read on the internet about people adding a filter cap to the output terminal of the sensor, but that doesnt sound like a good idea to me, since it would probably dramatically increase power consumption, and severely decrease sampling speed. Im probably gonna have to try and filter the signal in software.
Jan 02,2012 In the meantime, I made a test program where booby would move about 4 inches, scan her surroundings, then move forward another 4 inches until she found something in her way. This worked quite well, as long as she wasnt trying to do absolute measurements. Eventually, her eyeballs will be used for position correction, where she will compare what she sees to what she should see, and calculate a new position. The accuracy and repeatability of her eyeballs are a long way from being able to do that now, but at least her eyes can serve to detect before she runs into something.
Ive been getting REALLY anxious to let booby try and move from point A to point B, but to enable her to drive while scanning her surroundings is considerably more difficult than move, scan, move. Also, since the accuracy of her eyeballs has a very narrow range right now, the move distance is limited to about 4 inches at a time. Stopping to scan every 4 inches would take so long that my beer would be warm before she got back!
Feb 15,2012 Ive been really busy with the holidays and house projects, and not had much time to mess with booby. In between getting real stuff done, I have messed with her a bit. Mostly just to get her to go straight. I made a 3 CPU test that had 2 cpus to control the speed really quick, and a third to try and synchronize the 2. Problem is that the communication between the 3 processors was taking to long to be close enough to be called perfect.
She would go straight enough to make it down the hallway without hitting anything, but angled back and forth enough that she was off by over an inch after going 12 feet. ARRRGGGGHH!!
This was starting to irritate me enough that I was having a hard time sleeping. I just happened to be working on an unrelated project that was using stepper motors, (but not for driving), when I realized that if I used stepper motors for the wheel action, making her go straight would be SO much simpler.
Regular DC motors spin an relatively constant speed when you supply a constant voltage, but as load increases, the speed decreases, which requires encoders to determine how fast it is rotating, then you can adjust the voltage applied to get it to spin the desired speed. Getting a single motor to accelerate smoothly, cruise at a constant speed, and stop smoothly is a fairly simple task. Making 2 motors do the same thing, at EXACTLY the same speed at all times is nearly impossible!!
I wasnt thinking that they had to go exactly the same speed at the same time, but just being 1% different over the course of several feet makes you miss you destination by several inches. You cant do that very many times before you are completely lost!
Imagine that you tell each wheel to travel 100 inches. If both wheels go exactly the same Speed, and exactly the same distance, you will end up 100 inches in front of where you were. If 1 wheel gets 1 inch ahead of the other half way through, the last 50 inches will be at an angle and will completely miss your destination. Here is a pic to show what I mean:
Stepper motors work completely different than regular motors. Instead of applying a voltage and hoping it spins at a certain speed, you actually tell it to move a percentage of a turn at a time. They are much more complicated to get to move than a regular motor, but it is much easier to tell a stepper motor to rotate exactly 20 turns than it is for a regular motor.
Usually, stepper motors dont even require encoders to determine position, since you control the position directly. I will still be using encoders, just to make sure.
I thought about replacing the regular motors in the wheels with the stepper motors and reusing the gears, but if I make my own gear reduction for the stepper motors, then I can use the wheel motors for the shoulder power. Reducing the stepper motors with sprockets and chain would mean modifying the wheelchair frame quite a bit, and I wanted to make it narrower to make navigation easier through smaller spaces anyway, so I decided to start with a new frame, instead of trying to modify the existing one.
After a bunch of measuring and scribbling, I came up with what I think is a pretty good design. Boobys new frame will be about 4 inches narrower and about 3 inches shorter, with her wheels placed a bit closer to center to keep from having to do too much jogging on the tight turns. It would be nice to have her drive wheels exactly in the center for a more or less square/round base, but then she would tip too easy and/or possibly get stuck moving on uneven terrain, and severely limit her lifting ability.
Super High Tech Design document
This is actually the 3rd revision of the new frame setup, since I would draw what I wanted, then check on parts, and find the ones I needed were backordered, then change the design to match what was available now, then check the other parts, rinse, repeat. Changing the design a little each time.
Feb 21, 2012 The new frame allows for 2 stages of sprockets, which will easily allow between 1:9 and 1:16 reduction between the motors and the wheels. I plan on starting with 1:12 reduction which will produce 75lb/ft of torque at the wheels (1200oz/in * 12). This will give her about 128lbs of thrust with 14inch wheels. Her top speed will be about 10mph at a tire speed of 250rpm (3000/12), which should be more than enough outside and way overkill for inside.
Even though her new frame is quite a bit smaller, it uses the space much more efficiently to allow room for an additional 12V, 35AH battery while retaining the onboard charger. I am starting to get excited again.
The sad part is she has gotten so expensive that my wife has started calling her my 'High Maintenance B!#@%'
I went a little crazy getting parts. The strange collection of stuff means I had to order stuff from 5 different sources. 1 for most of the sprockets, another for the stepper motor sprockets, a third for bigger sprockets, axles, and chain, a fourth for the stepper motors and drivers, and a fifth for the jackshaft bearings! Now I just gotta wait for parts to get here :(
First shipment of parts! (jackshaft bearings)
Third shipment of parts! (monstrous stepper motors)
Feb 29, 2012 The stepper motors are mostly what determines how wide boobys frame has to be, and now that I have the motors, I can go ahead and start making the frame. 26 pieces of 1inch tubing later, I have most of the frame pieces ready to weld together, but it is too dark out to weld tonight anyway. I learned a painful lesson welding when it is dark out.
I decided to make the lower frame a couple inches taller and move the stepper motors lower and back under the smaller battery shelf, and I still havent decided how the jackshaft and stuff will be mounted, but should be able to get the main parts of the frame welded up tonight, then Ill be ready when the axle parts and other sprockets get here.
Mar 01, 2012 I got the last 2 parts deliveries yesterday. I was too excited to take pics of the parts. I just started welding stuff together. My little welder finally crapped out. I was so frustrated that it quit working again, when the wife said, ok, lets go get another one, I hopped in the car and went to the store. I probably couldve fixed it, but was in a hurry to work on booby. After a whole day of welding, heres what I got. (You can kinda see the old and new welders in the background)
Frame mostly done
Frame mostly done
You may also be able to see that the axle and jackshaft are still 1 piece each, and will get separated after I drill the holes and bolt up the jackshaft bearing brackets. Its much easier to keep the shafts aligned if they are 1 piece.
I planned on using 40 tooth sprockets with 1 inch bore for the axle, but they were backordered, so I am gonna try to use what I have on hand. I have a few different sprockets for 35 chain, but none with a 1 inch bore. I have a couple sprockets for 40 series chain with 1 inch bore, but planned on using them for her shoulders, and dont have any 40 series sprockets for the 1/2 inch jackshafts. This means I would have to bore out a couple sprockets from 3/4 to 1 inch.
Drilling a 1 inch hole through 1 inch thick steel doesnt sound like fun to me. and the wheels are approximately 3/4 inch bore, so I may just replace the 1 inch axle with a 3/4 inch one and shim up the bearings to make life a bit easier. A 1 inch shaft is probably overkill anyway. The only other option is to bore out the wheels too, or try to lathe down 4 inches or so of each of the axle ends. That would be really tough too, considering I dont own a lathe.
Thinking about different sprockets and gearing made me think about the robots power and speed. Earlier when I calculated that she would have 128lbs of thrust, I didnt realize that is 128 for each wheel. With a 12:1 ratio, she will have 256lbs of thrust, and its starting to look like Im gonna be gearing her more than 12:1. If I use a 60 tooth sprocket on her axle, it would be 18:1 overall ratio, which will make about 384lbs of thrust, but will lower her top speed to about 7mph.
Decided to replace 1 inch axle with 3/4 inch one, partially because the hole in the wheels are slightly under 3/4 inch, but have a removable hub. If I make a hub for the wheels, then I can use the hub with the wheel motors for the shoulders. Shouldnt be too hard to turn a pulley for a 3/4 inch shaft into a new hub for the wheels. So I made some 1 inch OD sleeves to fit on the 3/4inch axles where they contact the bearings.
Pulley to be made into hub
Chains all made
Mar 03, 2012 Looks like Im almost ready for wheels. NOPE. I completely disregarded my drawing when mounting the jackshaft bearings. The sprockets will be in the way of the batteries. Now I gotta move the jackshaft to the other side of the frame member that they are mounted to and make new chains the right length
Also, I was thinking that I could adjust the motor to jackshaft chain tension independently from the jackshaft to axle chain. Unfortunately, since the jackshafts are so short, they end up at a wierd angle, which would cause the chains to bind and/or jump off the sprockets. So I also gotta make an adjustable mount for the motors to adjust the chain tension.
Jackshafts moved and new chains made
Now... All I need to do is make adjustable mounts for the motors, and turn the pulleys into hubs for the wheels and booby will be able to scrape around. Mounting the caster assembly should be pretty easy. Thennn, Ill start moving parts from her old frame to the new one.
You can probably tell from the pic above that booby is in the living room. I know that is against one of my main rules that robots are NOT allowed into living quarters that have access to where we sleep. (Dont want robot sneaking up on me in my sleep). I suppose it is ok for now, because she doesnt have wheels (or batteries or brain), and its too cold in the garage right now, and its alot easier to clean metal shavings from the hardwood than the carpet.
Mar 08,2012 I made one of the stepper motor chains a bit longer and turns out that I wont need to make adjustable motor mounts for now. The motors bolted right up, and chains tensioned without making the jackshafts be at a wierd angle
Motors all bolted up with straight jackshafts
Woohoo, time to make the wheel hubs! The wheels have 8 threaded holes for bolting the hubs to. The original hubs only used 4 of the holes. I figure it is safe to use the other 4 for lugnut type studs, so I drilled them out smooth
4 bolt holes drilled out
After cutting the excess off the pulleys, I centered the hub over the wheel holes, drilled out the new hub, and bolted it together.
Hub bolted to wheel
Wheel kinda mounted
This turned out pretty well, so now just gotta weld the center part to the bolted on part, tack the bolts, and weld the assembly to the sprocket and booby will have a powertrain! There are a few minor things like trimming the ends of the axles and jackshafts, but Im getting excited!
Was busy of the weekend, so didnt get much done. Managed to get boobys old frame stripped, and a few welds on the new axles and frame. A couple more frame pieces and she will be ready to mount the other wheels. May be able to get that done tonight, then Ill be ready to install batteries, computers, and wiring.
Mar 12,2012 Got the front wheels and supporting frame all done!! It fits through doorways much easier now.It rolls!
Batteries fit too!
It didnt take very long to get the batteries and power system installed, and stepper motor controllers wired up. Changing boobys arduino code to control the stepper motors quickly revealed that one of the controllers was not functional :( <-- Yes, thats a sad face!
While Im waiting for stepper motor driver to be replaced, I decided to start working on her charging system and torso. The gray box is her charger, and the plug below it is her power input. After I mounted the charger, I noticed that it kinda looks like a butt cheek. Hmmm. The blue cat5 wire and the single red wire hanging by the battery would go to the stepper controller for her right wheel. (yes, she finally got a 3rd battery)
Charger and charging port
Boobys torso came together so quick that I didnt even have time to take pics. I had to narrow her torso another couple inches so it matched the frame, and left room for her shoulders to make it through doorways.
A motor all chained up
Shoulders separated and both motors installed
If you look close, you can kinda see a black box on the bottom right under the shoulder motor. It is a wireless network range extender. It works like a bridge for the wireless. Its like a backwards wireless router, where it allows you to connect several computers to a wireless network. It works perfectly, (unlike the USB wireless network dongle). Now I can talk to her and she can talk to me all the time without interruptions. It also allows me to connect up to 3 more wired network devices later, if I need to.
Mar 20,2012 Even though I dont have the shoulder motor tensioners installed yet, I decided to evaluate her performance. The motor controller has speeds between -127 and +127, with 0 being stopped and bigger numbers being faster in either direction. The motors dont start turning until about 5. The motors arent aligned with the shoulder sprocket very well, but they run fairly smooth all the way to full speed in either direction. At full speed, her shoulder rotates 10 times in 16 seconds, which equates to about 37.5 rpm, which is about perfect. Slower would be better for more control, but faster would look cooler.
I just happened to have a 6-7 foot long piece of 1 inch square, 1/8 wall tubing laying around, so I jammed it in her right arms bearing holders to see if she could lift it. Starting at 0 speed and gradually increasing the speed, she lifted it fairly gradually at a speed of 19. I had to stop it really quick before the end of the tubing hit the ceiling. I was pretty impressed that she could lift such a thing at less than 1/6th power.
Google says 1 inch tubing with .120 wall weighs 1.4359 lbs/ft. If 6 inches of 6.5ft was behind the pivot point, it equates to 6 ft (8.6154lbs) sticking out in front, with a counter balance of 6 inches sticking out backwards (0.71795lbs), to net 7.89745lbs starting 6 inches from the pivot point.
This probably isnt the right way to calculate this, but... between 0.5ft and 1.5ft, we have 1.4359lbs and average of 1ft away, so 1.4359 lb/ft, and between 1.5ft and 2.5ft, there is another 1.4lbs an average of 2 ft away, so 2.8718 more lbft, then 2.5-3.5, there is 4.3077lbs, 3.5-4.5 is 5.7436 more, and 4.5-5.5 is 7.1795 more, and 5.5-6.5 is 8.6159 more, for a total of 30.1539 lb/ft of torque at less than 1/6th power. Assuming the power is linear, which is probably isnt, this would mean that she would only have about 200 lb/ft of torque at full power, which means she could only lift about 65lbs at the end of a 3 ft arm. This would probably be plenty to lift a barstool with 1 arm, but Im betting she will be able to do alot more.
I also happened to have some bricks laying around, so I decided to put a brick on the end of the tubing to make it more difficult. Since she had a little trouble lifting the tubing without anything on the end at 19, I figured Id start at 20 speed. BAD IDEA! I so shouldve had the video camera rolling.
She launched the brick into the ceiling, and the end of the tubing stuck into the upper part of the door frame!! I was so busy trying to type stuff on the keyboard trying to make her stop that I didnt realize that I hit caps lock, which made her not recognize that I was trying to make her stop! In the second or so that I was fumbling, she almost tipped herself over exerting so much force so far out in front of her. Good thing the end of the tubing was embedded in the door frame enough to keep her from face planting.
Mar 25, 2012 Booby has a new stepper motor driver and she can move again!! I had to tweak her code quite a bit to get her to drive with the stepper motors, but now she drives perfectly straight without having to have super computer resources to compensate.
I had to adjust some of her world measurements. The house mustve shrunk a little since I mapped out her world several years ago. LOL. Really, when I created the map it was just to draw a semi accurate picture of the house, to show which lights were on. Inches didnt really matter for that application, but now 1 inch could be the difference between having to spackle or not.
Had to tweak some of her path plan code too, but she still has a brainfart every once in awhile when she plans her path, like adding a segment of 0 length in between otherwise valid segments. She would end up in the same place, but silly to have to turn to move nowhere, and could be dangerous if she tries to turn while in a confined space, like behind the bar. For now, I separated her path plan from the drive path code. This way I have a chance to see what she plans to do before she wanders off.
Graphic depiction of the planned path
She can drive to the fridge now, mostly unassisted. The stepper motor code is almost perfect, but she always goes exactly 1 inch less than I tell her to, and seems to vary a bit, depending on what speed she is cruising at. As a quick fix, I just told her to do an extra inch for each route segment and is very close to perfect. The other issue is her chains keep coming loose, which makes for an inch or so of slack. It makes changing directions a little unpredictable, since there isnt anything to compensate for movement of the motor that doesnt translate into tire movement. Once I install the wheel encoders, this wont be an issue, but for now, it is really close!
I decided to make a video of booby driving to the fridge anyway. I had to adjust her angle a bit towards the end, but she is very close to perfect. The video is pretty crappy cause its from my phone, which doesnt do close up things very well, and didnt have enough lights on at the time.
Booby drives nerself to the beer fridge! (Click to open YouTube page)
The tape on the carpet are her waypoint markers, but they arent for her, they are for me. It helps me to make sure her path plan lines up with her actual waypoints. I will have to have some method for her to adjust and/or reassure her of her position every once in awhile, but not decided how to do that just yet.
Time to install encoders so she can drive better. Shouldnt be too hard. Instead of making a bracket and looking for super tiny probably metric screws that I dont have, I decided to just mount them using wire from a chain link fence. The challenging part is that the axle shaft is mostly 3/4 inch, but the encoder wheel inside diameter is 1 3/8inch. Seems like the collar that keeps the bearing from sliding off the shaft woud be a good place to mount the encoder wheel.
Encoder Wheel gorilla glued to bearing collar
JB Weld to reinforce glue
Encoder wheel installed
Finally got encoders installed on new frame. Some reason they arent counting right. Oh well, time to work on the arms more. A large part of her arms will be 3/4inch rod, so its time to see how strong her arms will be. I happened to have some weights for her to play with. I started at 28.6lbs and worked up to 75 lbs. I made 6 videos of her lifting weights. Here is a link to the first one.
Booby lifting weights literally (Click to open YouTube page)
More arm parts
Apr 02, 2012 After several days, she doesnt look much different, but she has new shoulder motor mounts and tensioners. She should be able to lift well over 100lbs now, without her chains slipping.
She has new motor mounts and funky chain tensioners
About the only visible difference is that she got elbow joints. I have spent a bit of time working on various parts of her programs to control her arms a bit easier. She still doesnt have shoulder encoders of any kind, so she only knows speed, and not position. For her arms to be useful, she has to be able to know position, so I can tell her to move a shoulder joint to a certain position, and she control the power to hold it steady.
She has elbow joints!!
It is awesome that she can move her arms to all kinds of crazy positions, but its gonna be awhile until she has motors on all the axes. To make things more manageable, I put a bolt to immobilize one of her joints until she can control other parts.
Bolted joint to immobilize it
Finally got her forearms made. I did a booboo when I made elbow joint, which would have prevented her hand from coming anywhere near her shoulder, but my wife suggested cutting a groove in the plate that the elbow joint is mounted to. Seems to work great.
She can bend elbow quite a bit
I meant to put stoppers in her elbow joints to prevent her elbows from extending more than straight, but I just forgot until after I got them all put together. It would be better if there was a a solid stop when arm was completely straight, to relieve the motor from stress when doing maximum lift, but oh well for now.
Elbows go a bit too far the other way
Even with one joint bolted, she has quite a range of movement in her arms. Her elbow twist joint will get the range limited when it gets a motor connected to it, but for now, she can move to some strange positions.
Looks a little odd
Her arms are quite long for her height, but since she cant bend over, her arms need to be long enough for her to reach the ground so she can pick up stuff from the floor.
I havent decided whether to finish her arms, or work on her arm muscles. I will probably do the forearms and hands before the muscles.
While I was deciding what to do next, I came up the idea that she could try to pull up on the bottom of a bathroom scale wedged under her frame. I made a loop of rope from her arms at about 30 inches, that looped under the scale, like a jump rope. It barely registered at 10 power, since it takes about 9 to raise her arms now that they are so heavy, but registered about 40lbs on 20 speed. On 30 speed, it said 120lbs, and started to current limit at 40 speed, so much that I couldnt read what the scale said, but it seemed to be bouncing between about 100 and 160. I let her rest for a second, then went right to 60 speed. Her left arm slipped and made a loud noise. Suddenly, I remembered the I only tacked her left shoulder outer bearing holder.
I didnt get to see how much the scale said, but it doesnt work anymore. I think she bent it. It says 190lbs when I stand on it, which isnt even in the right ballpark. Bummer. I get to reweld her shoulder, and I still dont know how much she can lift.
Got scale straightened out where it reads right again. Just happened to have one of her arms off for something, and decided to weigh it. Just under 20 lbs.
Almost 20lb arm so far
Tell me how stupid my booby robot is