[From Bill Powers (970918.0946 MDT)]

I'm starting a project called Build-A-Bug. The motivation is dual: first,

I've had no response at all, nor have I found any comprehensible resource

materials, relating to my project Build-A-Man. Second, I've seen a number

of bug models all of which are so glaringly non-physical that they're

useless, and I think there's some chance of coming up with a useful one.

Basically what I'm looking for is a model of a bug that will move

realistically when torques are applied at the two joints of each of its six

legs. I think that neglecting the mass of the limb segments, and looking

only at the effects of forces and moments on the rigid mass of the body,

will not lead to significant errors -- a bug's legs are pretty skinny.

This, by the way, is why I picked a bug. The masses of a person's limbs are

not negligible.

I've been working on the physics of this model for a couple of weeks, and am

at the point where I think I can put the first version together in a few

more days of work (perhaps a week of elapsed time). However, I'm working at

the very outer limits of my ability to handle mechanics problems, and some

help from other brains would really make a difference. So, if there are any

takers, I want to start a separate list, not on a server but just through

e-mail by constructing a list of recipients which every recipient will have

to use also in replying. Send me a message saying you want to participate,

and I'll eventually post a reply with all the participants' e-mail addresses.

When I'm ready, I'll distribute an explanation of the model as it exists to

date, and source code to show the working parts of it. I'm looking for two

kinds of help. First, are my mathematical operations right, and can they be

simplified? Second, what kinds of control systems can we use to give us a

basic workable bug as a test bed for higher levels of control? This means

just basically standing up, tilting forward/back and left/right, and

twisting to the left or right in direction.

The basic idea is fairly simple.

1. From the position of the tip of the outer leg segment, compute the

position of the elbow/knee.

2. From the torques at the joints (two shoulder, one elbow/leg as in the

Little Man), compute the x,y,z forces and x,y,z moments operating on the

mass of the body.

3. From the forces and moments, compute the velocities and angles or

positions (translation and rotation) at the center of the body's mass,

using the appropriate masses and moments of inertia around each axis, for

the next iteration.

4. From the new positions of the body and mountings for each leg, go to

step 1.

The basic rules are these:

When the tip of a leg is in contact with the ground and the negative y

force is positive, it remains fixed. Movements of the body change the

distance between the shoulder and the tip of the leg, from which we compute

the new elbow position and the new forces due to torques. Given the new

forces, we compute the next position and angle of the body, and so on.

We will avoid extremes of joint angles so we don't have to worry about

boundary conditions. The legs will never be allowed to straighten out

completely or fold up completely.

When the y force on the tip of a leg goes to zero, the control system will

switch from velocity or force control to position control. I think this

will come naturally out of using the same muscle model as in LM version 2,

with the addition of tactile feedback from the foot pad. But before we get

to that, we can just force an arbitrary switch in control mode. This will

allow higher systems to lift the leg and take a step while the legs in

contact with the ground hold the weight.

I have discovered a really neat fact. The torque operating at the

elbow/knee joint creates a force on the line between shoulder and foot, and

that is all! It's just as if a straight thrust were being generated. Maybe

everyone else knew that, but I didn't.

## ยทยทยท

--------------------------------------

In deference to my limited mathematical abilities, I've gone back to the

real basic-basics, as described in about four pages of Machinery's

Handbook. You start with torques (couples) and forces, applied at arbitrary

angles to solid objects and linkages. You calculate resultants, and add up

all the x, y, and z forces. The reaction forces on the body are directed

oppositely to the forces at the tip of the leg. I don't use vector notation

because I immediately get lost when I try to do it. I just do it the hard

way, which for me is the easiest way.

The programs I will distribute (you will need Turbo Pascal version 3 or

higher) will include routines for drawing the bug in perspective on the

screen, so you can see the effects of trial programs. I use the x and y

outputs of the mouse for making variables vary, to see their effects while

testing to see if I got the signs right, etc..

Let me know if you want to take part in this project.

Best,

Bill P.