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

The motor count for the base module is currently at 46 motors. All the motors are in, and the brackets are 75% done. Both tables are developed and will be fairly easy to assemble. I go on vacation next week so I'm shooting for fully assembled <mechanical> base by the end of April.

A proto-type motor-driver board has been tested and works fairly well. There is, however, some start-up interference between motors that I will have to work on, I'll probably try bigger caps.

For the modules that control the legs, I've decided to modularize them. This is more expensive and more time consuming, but motor modules allow me a lot of configuration flexibility, and if I design part of the circuit incorrectly I minimize how much I have to scrap.

I've had to make a few compromises as far as the parts I want to use, but the project is moving along smoothly.

All right, I've thought about it A3I2 is probably more than I can handle right now, and it's producing stress as a change my building methods to accommodate the March 1st deadline. I really want to go, but I have got to give this robot my best effort - even if that means I don't make A3I2.

I'm sort of in one of those funks that builders get in when they tackle large projects. This project is pretty big and it is not without its share of problems. I've been building the first table (remember I call them tables because that's what they look like - fat tables), and one thing I've noticed is that it's heavy! As in ``try and keep the robot under 80 lbs.'' heavy. In fact this table weights around 40 lbs., but I'm also trying to include all the batteries in this table so the center of gravity stays low. During testing I managed to split one of the nylon gears in my protoleg - NOT a good sign.

I'm having a hard time isolating parts of the project. The right thing to do would be to build a leg, test it, build a table, test it, add legs. Etc. What's really happening is I'm starting to build the entire robot. I've almost completed the first table, and soon I'll be building the second table. But maybe this isn't so bad since the tables are fairly unsophisticated.

At the same time I have yet to get a motor running, and that's bad. Part of this problem is I don't have any experience with strain gages/current sensing. Also instead of testing the different elements I just threw together the main board (minus amplifiers) and now it looks kind of daunting. Another problem is, because my memory is so poor, every time I sit down to program I have to relearn everything, language, how to hook the emulator up, everything. Luckily I keep notes, if only I can remember where I put them...

Yet another item that will make my life difficult in the near future - I haven't figured out how to test the base module in an incremental mode. In other words, the best thing that could happen is I set the beast on the floor, tell it to walk, and it walks. What's really going to happen is a series of balance problems, problems figuring out how to make the robot take steps, etc. At this stage if I mess up too bad, I break gears/motors and there are no replacements because my motor source dried up.

What you are witnessing is a project with the potential to spiral out of control.

So I came up with this plan.

First thing I need to address - I need control over my electronics... I need to get my boards working. But I don't have to get an entire board working, just a subset. So I'll put a motor controller on one and learn to work with it. On another board I'll add a strain gage with amplifiers. Right now it's all about the baby steps to raise my confidence and keep me focused, so I'm going to keep the challenges bite-size.

Because of the way life has allocated my free time, I need to finish this table and start building the next one - without going into detail it's just a lot more efficient. Table bodies are nice modules so I'll just concentrate on that and worry about adding the legs later. This will occur simultaneously with the control board development.

Lastly, in the background, I need to be questioning how I'm going to test the base module adequately without destroying it. This might be the most difficult problem of all.

Something I've been thinking about lately -

AAAI-2002 Mobile Robot Competition and Exhibition 28 July - 1 August 2002 Edmonton, Alberta http://www.cs.uml.edu/aaairobot/

I brought my partially functional biped to AAAI-1998 in Rhode Island. I had a great time, met some great people, and got a lot of love for my robot even though it couldn't repeat the same first step twice.

So I ask myself -

Can I complete Predecessor to the point I can take it to A3I2 for exhibition? It hardly seems possible, there is so much left to do...

Alright, the deadline for registration is May 1st. Lets see, thats less than 2 months and I've got to run off and get married for a couple weeks somewhere in that time (thats a good thing :-D ). I would have an additional 2 months before I had to actually appear, but I need to go take a couple summer classes too.

What would be the best situation to show up to A3I2? A fully functional robot of course. What would be the minimum I would require? The base module finished with an rf communication link and some demo functions. Don't forget the manditory blinky-LEDs (every project needs at least a few).

OK, in order to consider going to A3I2, I need to finish (or at least be real close to finished) the minimum to participate in A3I2 exhibition. And I need to have this done by the end of April. This is the first hurdle.

Right now I still haven't gotten a leg completely together.

I had better start building!

In order to fully understand what a leg is going to be able to do, I've started working on what I call the lower ``table'', the base body that will manage 4 of the legs - when all 4 legs are on the ground it looks like a table. I've had a rough idea of what the rest of the base would look like beyond the legs, but I'm only now starting to sit down and understand all that needs to be done. Placing 4 leg-segment in the space I've allocated won't be easy, but I've pushed out the width dimension which should help.

I have a sega game pad hooked up to a transceiver which I plan to use to control the base module. What I really need is a hack for the 802.11A ethernet PCMCIA cards so I can interface my robot directly to a home network. I've been talking to my robotics group and doing a lot of research, but I'm just not finding a decent hacks/products/docs on wireless ethernet using the 802.11 standard. I don't know if I want to put forth the effort to make a WLAN happen, but man it would be cool.

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.

1 older entry...

X
Share this page