Older blog entries for ROB.T. (starting at number 6)

My thoughts are still coming together for my robot. I've decided I want my robot to be able to climb stairs at the very least. Naturally this means I need more motors. I really need some sort of rapid turning screw for linear motion to extend the legs, but it looks like I'm stuck with worm gear motors. What I plan to do is dedicate two motors to the linear motion of each leg, bringing the total number of motors per leg to 4. This is actually working out well - I will need 7 of 8 ADCs from the microcontroller and I will build the entire leg and leg-control board as one sweet unit. I'm also going to try and place the batteries into the base module of the robot (into the tables). The advantage is that the system is more compact, the disadvantage is that I won't be able to us the batteries as counter weights, like a tail. This design might change after I build the first prototype. I might need to purchase new, thinner batteries.

Speaking of prototypes, I'm still working on the first leg. All the mechanics are done for two joints, now I have to incorporate the design changes and add two new motors. The slop in the two joints I built is definitely going to be a factor, but I am still confident I can program around it.

The total number of motors for the base module is now up to 34. I keep track of this number because it gives me an indication of how heavy my robot is going to be. Rough estimates put the robot weight at around 60 pound. I've got a feel for what the power consumption is going to beand it looks like more batteries = good power, bad weight ratio.

For the casual reader -

I know these journal entries look pretty cryptic without the actual components to reference them to - I'm working with Jeff Sampson to get some pictures on my page.

My crude use cases uncovered the need for an IR sensor on each leg. By making some of the proximity sensing local, it seems I actually simplify the decision making process.

Who knew.

I need to add cables, a strain gage, and the pots, and the mechanics for the first leg will be complete. A potential problem is that the leg cannot obtain absolute rigidity. This is a common issue and I've had it before, I will simply plan for it during the programming phase. Once again the leg when complete will have 2 motors, two pots for motor positions, and a strain gage for the toe (which I need to test). I have the leg suspended from a clamp so I can raise or lower it depending on the experiment.

The prototype leg controller-board is also almost done, I need to add a 24V power-supply and look for shorts. Right now it's a kludge on a copper-clad bread board - I'm trying to get away from this method or prototyping, maybe someday when I find time. I've added 4 LEDs to observe L298 position, an LED for 5V power, and an LED to ensure the processor is working. I have current sense resistors, though I still need to get the amplifiers for them and the strain gage. I don't think I need to journal errors at this level so the programming for the leg module should be fairly easy (famous last words?).

Hopefully this weekend I will have figured out what the command set for the leg module and maybe even the encompassing base module. What would be the coolest would be to figure how to program the robot so that it will learn how to move all by itself. I better make some use cases.

16 Feb 2002 (updated 16 Feb 2002 at 21:49 UTC) »

I've finished a rough-draft model (UML) of the base module, and guess what? I'll be using one microcontroller, the Atmel AT90S8535 for each leg. The definitive factor was the number of ADCs required - 5 per leg - to gather all the leg information. I've also decided to build one complete leg and use my Atmel emulator to test the concept.

After laying it all down on paper, it looks like the base module - which is basically the 8 legs and battery pack - is going to have 12 processors. The disadvantages of this approach - money and battery power. The advantage is I can break the tasks into small hardware/software components that are a lot easier to handle. Also I shouldn't have the timing headache I might encounter trying to get everything to work on one big processor with a lot of I/O. Lastly this leaves room for future expansion like more sensors on the legs.

The motor controller I've decided to use is the L298. The LMD18200 looked real good, but since my processors can perform all the functions that the `200 provides with the exception of temperature handling, I opted for the much cheaper motor controller with 2 H-bridges in it. This is an important decision since I want to order chips this Monday.

For the CAD part of the robot, I've gotten the individual axis components drawn out in 3D, but have yet to put the stuff together.

As a side note I want to include logging, error checking, and testing in all modules. I still want all of the intricacies of getting a leg moving to be transparent to the robot system with most functions stored for the base module, at the base module. If all goes well, the base module promises to be very robust or at the very least helpful at troubleshooting itself.

I've finally completed an axis prototype - and everything is working great (1 down, 22 to go...). I ended up using some aluminum rectangular tube-stock, and I found some channel stock which I will use to mount the Pot to the side of the axis - I'll call joint - for position sensing. I have to tighten some things up but so far so good.

I plan to CAD parts using TrueSpace 5.1 so I can head off physical problems before they occur. I'm also thinking about taking pictures of the project at various stages - but where to post this stuff? I've never learned how to put a web page together, and at this point I would rather build Predecessor. Maybe I'll ask one of my TCRobots buddies to help me out, or maybe I'll just save it for my book ... ;-)

I asked Jeff Sampson, one of our resident guru's, what motor driver I should use. He's recommending the LMD18200. I was going to try another more complicated controller from Allegro, but I don't think it delivers enough power.

I anticipate having the legs done in about a month, the motor controllers within 3 months.

Other concerns -

I want to have some current sensing ability for each motor.

Each leg needs some sort of foot sensor, probably a strain gage derivative.

Do I include a rudimentary form of direction at this level? Probably not. Should I have one controller a leg? Seems like a waste. I'll try for one controller a plate, maybe a third controller for the extra motors, maybe balance or part of the balance, and to handle the interface with the rest of the system.

My ideal would be this component , the base (most gearheads would call it a platform) , should only accept higher level commands from the robot system, and this is where the integration of these systems gets tricky. If I include stuff like direction and body orientation in relation to gravity, then the robot system can simply send the base commands like `get up' or `walk over there'. But then where does it end, after all it wouldn't be too much of a leap to add clinometers, GPS, and accelerometers at this level. At some point the base would need some sort of rudimentary decision software just to deal with relative position in the real world.

Of course this is all on the premise that the controllers will be configured like a tree. What if the controllers communicate more like peers instead of Master/slaves?

Anyway, these are some of the problems I'm struggling with. Luckily I can model (as in UML) these systems out and come up with a better solution - probably along the lines of KISS. I should also work on getting a solid definition of what I'm trying to accomplish before I risk scope creep.

Slight change of plans -

I've done some more analyzing as I get closer to building. I no longer believe I need 4 joints per leg, I think I can get by with 2. This would eliminate 16 motors from my robot and make it considerably lighter. New motor total = 26.

This was a painful decision - honestly I was in love with the 4-axis-leg idea, but hey I can always add extra leg segments later. At this point it is important to get the design complete.

Dear diary - ;-)

This is great, a public record to motivate me into working on my robot. Sweet! It's going to take a looonnngggg time to get this project built because this thing called 'life' keeps getting in the way. Hopefully, using this diary, I can make some good gains over the next year or two.

My current project is an 8-legged robot named Predecessor. I've done some modeling and made some initial determinations.

4 motors per leg,8 legs = 32 motors. 4 legs per plate, 2 plates, each plate has an additional 3 motors. Battery pack - pending on design 1 to 3 motors, lets say 3. Extra motor for the top plate brings the total motors to 42.

The motors I'm using are 19 volt - naturally I'm running them at 24VDC - worm gear 24 lbs/in max torque at 1.3 Amps. Batteries are 12V 5A each, I figure I'll start out with 4 and work my way up to 8 batteries. total weight is approximately 30 - 40 lbs. Sounds heavy. Obviously I'm going need to use a few tricks to get the thing to walk properly, this should be a good time.

Each motor will have a potentiometer to signal position, and each leg will have a strain gage or a pressure sensor to determine contact. Groups of motors will be controlled using an Atmel controller. The Atmels will be linked to a parent controller, probably in m-tree fashion. The controllers will talk to each using a SPI interface. I would like to incorporate a small LCD with the base, maybe some LEDs.

Getting the above working will essentially complete the base module. Additional modules such as navigation, ethernet communication, sensing, and action-planning will be added later. One thing at a time!

Alright, my first task is to properly mount the motors. It appears that the best method would be to use the actual motor body as part of the leg-frame since there are mounting screw-holes on each end of the motor. I can't find the channel-stock aluminum I want to use, but I found some straight aluminum stock that will make due though I'll have to bend them. Since I need to make good contact between the gears, I'm going to put in a mounting plate and a slotted gear cradle(?) so I can vary the distance between the gears.

Step 1. - make legs. Construction starts 2/11/02.

X
Share this page