Purpose:
This is to allow me to work on the algorithms that are used to control the rather complex leg geometry. My leg design unfortunately has an extra degree of freedom that most hexapod robots don't have. Because of this, it will be much more difficult to determine a solution to place the foot at any given XYZ location.Method of Achieving:
Servo motion library routines. Servo motion libraries are done in multiple levels.
- The lowest is the raw servo driver. It is in charge of setting the next movement parameter to the servo specified.
- Sort the servo output stream by the radial distance the servos have to move. This way the greatest distance ones get their info first, allowing them more time to complete their move sooner. Compute the time it will take the one that has to move the greatest distance to move, and delay sending the next set till that time has elapsed. It likely should work along these lines. Sort the servo outputs. Take the time. Send the servo codes. Compute the time for the longest to move. Compare current time to saved time plus delay, delay or go on.
- The second layer is the complex one that takes real space coordinates and decides the placement of the servos to place the foot at X location. Translation from real numbers to the servo angle bytes. This layer deals with finding a foot placement location close to the desired spot in real space, and informs the next layer up of the actual spot located. If it isn't able to figure out a spot to place the foot, it generates a foot placement error. Foot placement errors my be due to the ground not being reachable, like trying to step over the edge of the table. It may also be due to elevation differences that may be correctable by reorienting the body.
- Foot motion layer. Takes care of moving the foot through the desired motion.
- Relative motion layer, decides the relative motion of each foot in relationship to each other to create the desired motion of the body. It deals with foot placement differences reported by lower levels. It also deals with foot placement errors. Inputs are a list of vectors for a point in relationship to the body to follow. The vectors will include acceleration, desired average speed, body orientation, etc.
- Application Layer
Purpose:
This is to provide a base for further studies.Method of Achieving:
Building body chassis, and the final legs. Sub assemblies:
- Chassis.
- 6 Leg assemblies.
- Controller
- Controller Mount. - Palm Pilot Cradle or similar with hold down strap.
- Servo Controller boards. 4 Scott Edward's Electronics Mini SSC II Servo Controller boards. Two at base address 0 and two at base address 16. Serial jumper cable with 4-2 contact plugs spaced on suitably long centers to allow placement between the servo banks. Serial cable to hook first servo controller up to the Palm Pilot. Buy a Palm Pilot laptop hookup cable, remove the DB9 connector, and attach a Telephone jack with the appropriate wires hooked to the appropriate contacts.
- Servo Controller Mount - Appropriately spaced standoffs to hold the 4 servo controller boards. Due to the lengths of the leads on the servos, it may be necessary to mount the servo control boards in close proximity to the servos they control. This will effect the lengths between connects on the Mini SSC serial connection cable.
- Power Supply
- Power Supply Mount
- Charging Circuitry
- Charging Circuitry Mount
- Charging Plug - a 2.1 mm DC Power Plug.
- Battery Pack.
- Battery Pack Mount.
- Charging Base.
Chassis
- Build out of plate AL and thick walled AL tubing. The use of AL is so it can be anodised and colored easily.
- For bending the brass tubing, fill it with bismuth metal, let solidify, bend, melt the bismuth metal again and drain.
- Three support ribs one between each set of servos to support the rails that hold the servos. Place the servos so they press against the AL on both sides, thus providing dimensional stability.
- Mounting points for the Servo Controllers, Palm Pilot Controller, Power Supply, Charging Circuitry, Power Switches, and Battery Pack need to be designed in.
- Use dad's press drill for drilling the holes. Hand tap them.
- Shape Notes
- The tubes that make up the bottom servo servo rails will be bent around a 2.25" ID radius curve in front and 1" ID radiuses in back. In back they will meet straight on. To help make theses pieces, cut a block of hardwood to shape, and route a 1/2 circle grove around it's edge for the tube to be bent in. A small tube or bar will be inserrted to hold the tube ends in alignment. It will then have two screws drilled and taped through it to set it. Hide the screws on the inside.
- The tubes that make up the top servo servo rails will be bent around an ID radius that is 1/2 the length of the servo body in both the front and back. The joining seam will be hidden under a servo's mounts. Note: determine the offset this will be from front to back. A small tube or bar will be inserrted to hold the tube ends in alignment. It will then have two screws drilled and taped through it to set it. Hide the screws on the inside.
- The Mini-SSC servo controlers will be mounted on the servo bulkhead between the servos they control. For the front bulkhead it will be on the back side, and on the middle and back bulkheads they will be on the front side. The front bulkhead will have mountings for a second Mini SSC that will be used for controling manipulator arm servos, etc. The middle bulkhead will have the power distribution board attached to it's back side. Over all the Mini SSCs and the power distribution board will be perferated AL sheet to provide cooling, and EMI reduction.
- The middle bulkhead will have the power good lights, etc attached to it, possibly peaking through the perferations of the EMI sheild. It would be nice to allign the LEDs so they poke through.
- The battery pack and power supply will be mounted on opposite sides of a 1/4" AL plate sized to fit the Power Supply. Determine if the Power supply will have it's long dimension horizontal or verticle. Horizontal seams the most advantagous. The AL plate will have tabs so it can be screwed to the lower servo servo rails.
- Build Steps
- Bend tubes
- Mark, drill and tap holes.
Leg assemblies
- Determine the lengths of the rods from ball center to ball center and the angles the ball ends have to be in relation to each other.
- Cut the tubing to the appropriate lengths.
- Remove the burs from the tube ends.
- Make the crimp notches in the appropriate places on the Ball ends.
- Slip the ball ends into the tubes, and set them at the desired length and angle offsets.
- Crimp the ends.
- Drill and tap the hole for the retaining bolt.
- Install the retaining bolt with locktite on it's threads (Note: verify that locktite doesn't break down the plastic used in the ball ends).
- Install lock nut.
- Cut the Leg Posts to the appropriate lengths.
- Drill and tap the holes.
- Insert the threaded rods.
- Assemble the spacers, and rods in the appropriate order on both top and bottom threaded rods.
- Attach the other ends of the rods to the appropriate servo horns, and chassis mounting points.
Foot Sensors
- Use compressible RTV compound to sense how much pressure the foot is exerting in which direction.
- Metal cup will serve as the supply for the conductive RTV compound.
- 4 Sensors around the leg, with one on the end.
Servo Leg Feedback Circuitry
- Use a PIC CPU with UART to form a multi A/D converter board. Whenever it receives a string of three 0XFF bytes it sends the values of the latest conversion results for all it's A/D channels.
- Use an 3.3 VDC to RS-232 translator IC for serial send and receive lines.
- Use multiple 8 Circuit A/D converter chips.
- Up to Eight chips can be controlled and read simultaneously with sequencing on a port and a couple of control lines.
- Power the board with 3.3 VDC supply.
- Use a 2.5 V Linear regulator to provide the supply for the leg sensors.
- Each leg will use 5 A/D lines. For a total of 30 which should fit on 4 chips, with two free lines.
- Use .05 Ohm or so resistors to sense the current draw of each servo. Select so a 3 Amp current is approximately 1 VDC.
- There will be 24 current sense lines.
- Use a 1 volt reference for current sensing. This will help provide greater resolution.
- Current sensing will be done on the ground side to allow the 3.3 VDC circuit to work with the 5 VDC servos.
- Some sort of harness will need to be made for current sensing the servos. Use a twisted pair with shield. Possibly solder a resistor into the servo ground wire, and run the twisted pair and shield back to the board.
- Fine 2 wire microphone cable should work for the shielded cable.
- 7 out of the 8 possible chips are spoken for. Possibly the last chip should be setup as a current sense for use with things like manipulators, etc.
- Possibly use an extra output line to turn on / off the 5 VDC servo power supply.
Controller
- Palm Pilot Professional Model.
- Write the code so it can be placed in FLASH ROM so it will survive a total power failure. This will be helpful once it is debugged, and I have the memory card from TRG.
- Operations that should be supported are simple movement commands, programed sequences, "Bee Dance", forwards, sideways, and combination walking. spinning around a point. Writing a simple self description. Writing text that has been entered into the palm pilot.
- Have a power supply circuit to provide power for the Palm Pilot while it is on the robot. It should have two sources of power. The 3.3 Volt supply, and a 2 AA cell battery pack. There should be a switch to switch between the two. The two AA cell battery pack is for powering the pilot when the robot's battery pack is being switched, and checked.
Power Supply
- Maxim MAX1630EVKIT power supply, 3A @ 3.3 VDC, 3A @ 5 VDC, 120 mA @ 12 VDC, and 25 mA @ 5 VDC keep alive.
- Have a power distribution board that has connectors for all the sub assemblies to plug into. It should have busses for each of the power supplies outputs.
- Place it in a well protected place which has easy access.
- Make a battery faking connector so the 3.3 VDC output can be used to power the Palm Pilot through the battery area.
- Power the servos from the 5 VDC output. The power supply is designed to handle large surges in draw so it should be able to handle the servos. As no non servo logic is being power by the 5 VDC line, it should work.
- Power the 4 Mini SSC IIs from the 12 VDC supply.
- Use the 0.1" Headers and Terminal Housings.
- Each Mini SSC should take about 10 mA.
- Use a switch to turn on and off the 3.3 VDC power supply.
- Have it so the 5 VDC supply can be controlled by the controller, possibly use one of the RS-232 port pins to do the control. If not possible, then have a switch to turn it on and off.
- Mount the Battery Charger hookup and Thermister connectors through the power supply bulkhead with their grounds in contact with the AL plate. Use different plugs for Power and thermister. Use an axial power plug for charger current, and a micro phono plug for the thermister.
- If the person dosen't hook up ther termister, the battery charger should register it as infinate resistance, thus treat it as a cold battery pack and only charge at the slow charge rate. Experimentally verify this.
Battery Pack
- Take the two 1700 mA Hour packs from the meeting, and build a 12 cell pack with the same geometry that the final NIMH pack would have. Use it till I can purchase the NiMH pack.
- Check the thermister in it to see if it is compatible with what is needed by the charging circuit. If so use it, else use the one supplied by Maxim.
- Look into large capacity NiMH battery packs to replace the NiCd battery pack. Note I think NiMH battery packs can be charged at a maximal rate of about 1C. A charge circuit would need to be designed and made to charge it at the 1C rate.
Battery Pack Mount
- Locate at the bottom of the robot as far back as reasonable, but with the ability to be moved forward/aft for balancing. This is so it can help counter balance sensor devices placed on the front end of the robot.
- Allow for replacement of the battery pack.
- Have wide U shaped cutouts in the bottoms of the aft two of the three three Servo Mount Bulkheads.
- Use short bungi cord loops to secure the battery pack in place.
- Use two more of the Spring Clips on a block to act as the contacts for the battery pack. Fashion the block out of plastic or wood. Mount it on the back side of the forward Servo mount Bulkhead. Place a screw on the bottom edge of that bulkhead to hold the strap that keeps the battery pack pushed against the spring contacts.
Charging Base
- Build Steps
- Layout where the components will go in the AL Case. The Charger PCB will likely be attached to the under side of the AL box's lid.
- Make hole in the AL case for the Power Plug.
- Make hole in the AL case for the Power Switch.
- Make holes for the incoming cooling air.
- Make holes for the outgoing warm air.
- Make hole for Charger Lead.
- Drill and Tap holes for mounting the fan.
- Drill and Tap holes for Power Supply PCB standoffs.
- Drill and Tap holes for Battery Charger board.
- Spray Paint box to desired color. Make sure that the lid seal isn't painted, or that holes are filled in.
- Make input power harness. The one from Power Plug to the Power Switch.
- Make Switch Power Harness. The one from the Switch to the Power Supply.
- Make Charger Power Harness. The one from the Power Supply to the Battery Charger board. Remember to attach the fan leads to it.
- Make Battery Harness. Use heavy gauge multi-stranded wire. Use a sheildedtwisted pair cable for the thermister leads.
- Install Fan
- Install Power Plug.
- Install Power Switch.
- Install Battery Contacts Block.
- Install Power supply board.
- Install Battery Charger board. Run the thermister to the foam block.
- Install power Harnesses.
- Install Fuse into Power Plug.
- Check all connections, etc.
Charging Circuitry
- Maxim MAX2003AEVKIT.
- Setup the charger for charging a 9 cell 1700 mA NiCd battery pack. The pack should be capable of being charged at 2 Amps without problems. It will just charge a little faster than the 1C rate.
- Use the one passed out at the meeting.
- Use thermal rise detection for ending charging.
- Mount the thermister on a foam mount so it is pressed against the battery pack when it's on the charger base.
- Shield the thermister so it doesn't have air flowing over it to cool it.
Purpose:
Allow for finer control of the robot. Dedicated controller. The Palm Pilot used in the first prototype is only being used because it is available and portable.Method of Achieving:
<TBD>
Issues:
This is placed after the controller upgrade because I don't know a way to get both analog and serial data into the Palm Pilot easily. I possibly could use a basic stamp with A/D.
Purpose:
To allow the robot to know when it's feet have contacted the ground, or it's body has contacted something.Method of Achieving:
Body Touch Sensors
Simple micro switches with bumpers attached.
- Spring wire bumpers connected to very low force micro switches.
Foot Contact Sensors
My current plans are to have electrical 4 contacts equally spaced around the leg post with a fifth contact on the end. A metal cap will be placed over the end of the leg post with a conductive RTV type compound to act as a compressible material. As it is compressed, the resistance will change, thus allowing crude pressure sensing.IR Whiskers
Modulated IR Sensors at a few different frequencies so multiples can be operated at one time.Sonar range finders
For longer range sensing. On the 6' to 20' scale. Possible mount on a pan and tilt servo base. This will give it the ability to look up at features overhead.
Purpose:
To allow the robot to see where it is going. To allow the robot to see the maze it needs to solve, or see the area where it needs to generate a maze.Method of Achieving:
<To Be Determined>
Ideas include:
- Dual Digital cameras setup as stereoscopic eyes.
- Single camera and IR laser to determine ranging.
- Pan and tilt base. Use RC servos for motion.
| Code | Part Number | Description | # | Price | Per | Ext. Cost | Use |
| DB | 2161 | 2 - 4-40 Ball Links with Hardware | 36 | 1 | Leg | ||
| Mou | PCB Standoffs, (Counts for Mini SSCs, EVKITS), Likely 1/4" long, insulated. | 24 | Elec | ||||
| 2 Spring Contacts from cheep Radio Shack 4AA Cell Battery holder. Use the two that have lead wires already attached to them. | 2 | BCH | |||||
| Electronic Parts | |||||||
| 3CM | Palm Pilot | Palm Pilot with Cross development kit. | $250.00 | Con | |||
| 3CM | Palm Pilot Laptop HotSync Cable | $20.00 | Con | ||||
| FMA | S600 Retract Servo | 24 | $24.95 | 1 | $598.80 | Leg | |
| KNR | HR-4/3AUS | Sanyo 4/3A NiMH Rechargeable Battery Cell, 2.64" Long, 0.67" Dia, 1.59 oz, 3500 mAHr. 2.75 Lbs total. Built into a 2x6 cell pack, for a final size of 1.35" wide, 4.05" long, and 1.64" high. Price is questionable. | 12 | $6.50 | 1 | $78.00 | PS |
| INV | MM74HC04N | HCMOS Hex Inverter, 14 pin dip. | 1 | PS | |||
| Code | Name and Contact information |
| SPI | Small Parts Inc. 1-800-220-4242, Fax 1-800-423-9009, http://www.smallparts.com, 13980 N.W. 58th Court, P.O. Box 4650, Miami Lakes, FL 33014-0650. |
| SSE | Scott Edward's Electronics, http://www.seetron.com |
| Max | Maxim Inc., http://www.maxim-ic.com |
| Mou | Mouser Electronics 800-346-6873, http://www.mouser.com |
| 3CM | 3COM http://www.3com.com |
| FMA | FMA Direct, 1-301-831-8980, Fax 1-301-831-8987, http://www.fmadirect.com |
| KNR | KNR Technical. Suppliers of the Sanyo batteries. |
| Jam | Jameco, 1-800-831-4242, Fax: 1-800-237-6984, http://www.jameco.com/ |
| MMC | McMaster-Carr Supply Company, P.O.Box 4355, Chicago, Illinois 60126-2081, (708) 833-0300, Fax: (708) 834-9427, |
Maxim MAX2003AEVKIT Board
NiCd / NiMH Battery Fast Charge Controller Evaluation Board. Look for a charger with evaluation kit that can be used as a supply too. This one will do for now. I possibly should set this up as a separate charger base with it's own base, etc.2, 3, 4, 5, 6, 8, 9,12 Cell capacity without modification. 2A charge current as setup. 90 Minute charge cutoff. Thermal Rise end detection with supplied theremister. 2.8" Long 2.65" Wide 4 Mounting Holes, one each corner, in 0.15" from board edges. 0.5" circuit clearance needed above (measured from board bottom). 0.2" circuit clearance needed blow (measured from board bottom). Battery ground and circuit/power input ground are different by a 0.14 Ohm resistor. NOTE: Don't ground board or Power input connector to the robot chassis. Robot chassis will be at battery ground, or isolated. Isolated would be best. Use insulating standoffs to mount board on box lid. Power connector selected should have an insulated shell. For initial design, setup the charger on it's own base separate from the robot. This will allow greater flexibility. Design the charger base so the battery pack can easily be placed in it without having to worry about polarity, etc. Have the thermister located on the base above a foam pad that presses it against the battery pack. When I switch to the NiMH cells, rewire the board so it charges at a 1/2C rate so the battery pack can get fully charged when there is a small draw on it. The current 2 Amp charge rate is 2/3rds of the recommended .9C maximum charge rate. Maxim MAX1630EVKIT Board
Multi-Output, Low Noise Power Supply Controller for Notebook Computers Evaluation board.
- +5 VDC @ 3A
- +3.3 VDC @ 3A
- +12 VDC @ 120 mA
- +5 VDC Keep Alive Supply at 25 mA
- 3.75" Long
- 3.4" Wide
- 4 Mounting Holes, one each corner, in 0.2" from board edges.
- 0.5" circuit clearance needed above (measured from board bottom).
- 0.2" circuit clearance needed blow (measured from board bottom).
- There are components on the bottom of the board.
- All grounds are common.
- Build a perforated metal enclosure around the board to cut down Electromagnetic Interference (EMI). Small Parts sells perforated AL and Stainless Steel sheets that would work. Isolate cage from Ground.
- Use switches to independently turn on both the 3.3 VDC and 5 VDC main supplies. This makes it so the power good monitoring circuitry only looks at the 3.3 VDC supply. I expect that I will be hitting the 5 VDC supply hard via the RC Servos. This may cause it to be out of spec low quite often, and possibly for long periods.
Power Distribution Board
Home made.
- Radio Shack General Purpose IC PC Board
- 2.85" Long,
- 1.85" Wide,
- 4 Mounting Holes, one Each Corner, in 0.125" from board edges.
- Use center rails as ground.
- Various voltages on the 3x1 pads
- Make labels for what plugs in where.
- Power on indicators, possibly remotely located.
- HC CMOS Inverter Logic IC. Used for driving LED indicators.
- Reset activated indicator LED (Will need Inverter Logic IC to drive.)
- Remotely locatable Power switch to enable/disable +5 VDC Servo supply and +3.3 VDC Logic Supply.
- Run the signals through the Inverter IC.
- Use 0.1" SIP Molex Locking headers for power connections..
- +12 VDC @ 20 mA * 4 for Logic Power on Mini SSCs
- +3.3 VDC @ 70 mA for Palm Pilot
- +5 VDC @ ?A * 4 for Servo Power on Mini SSCs. Use 2 pins Ground, and 2 pins +5 VDC for each Mini SSC. Ground on the center two pins, and +5 VDC on the outer two pins.
Battery Voltage Monitoring Circuit Board
- Make a voltage monitor, possibly with one of the 10 segment bar graph driver chips. Determine the way to bias it so it is fully around the upper range of the battery pack.
- Use three colors of LEDs. Green for OK, Yellow for between 1.0 and 1.1 Volts per cell, and Red for 1.0 volts per cell and under.
- 2 red, 3 yellow, and 5 green LEDs.
- Have a switch to turn on and off the monitoring circuit.
Scott Edward's Electronics Mini SSC II Serial Servo Controller
Serial Servo controller.
- 2.1" Long,
- 1.4" Wide,
- 0.6" clearance needed above.
- 0.1" clearance needed below.
- Holes on 1.675" x 1.15" centers, rectangle located one in each corner.
- 20 mA at 7 VDC to 15 VDC
- Use 2 at base address 0 and two at base address 16.
- 4 position 2 conductor cable to hookup serial/ground link between boards.
- Unsolder the power connector, and replace with one to hookup to the Power Distribution Board. This is because the supplied one won't be long enough for all situations. Also I will be using 4 wires for power hookup instead of two.
- Place a 16 V 10,000 uF Electrolytic Capacitor as close as possible to the servo power input leads. This is to provide some decoupling of the startup surges from the servos.
Bending Metal Tubes Without Crimping
ProcessEquipment needed
- Cut tube a little longer than desired length
- Melt enough bismuth metal to fill tube.
- Fill tube with Bismuth metal and let cool to room temp.
- Bend tube to desired shape.
- Heat tube to melt Bismuth metal in it. Let it flow out into it's container.
- Stove with large pot of boiling water for melting Bismuth metal in.
- Funnel able to handle boiling water temps.
- Plug to plug one end of tube
- Metal can to hold Bismuth metal when being melted, and to collect it when done.
Marking Drilling and Taping holes
ProcessEquipment needed
- Determine measurements
- Measure where holes are to be placed, marking with crossed metal scribe strokes.
- Use the metal punch and hammer to gently tap an indentation at the center of the hole.
- Use the press drill to drill the hole. Is it a through hole or blind hole?
- Clean out the hole.
- Use the tap to generate the threads in the hole. Use tapping lubricants to lessen the likelihood of tap breakage.
- Clean out the hole.
- Metal scribe
- T-square
- Metal Punch
- Small Hammer
- Press drill
- Drill bit
- Tap
- Tap wrench.