# How do I calculate load per leg?

I would like to calculate the load for every leg of my hexapod at any given time.
So far, I have the center of gravity and the total weight of the robot
in a 2D ground plane. I also have a list of total points of contact in the same plane.
How can I get from these values to calculating the weight distribution on each of those contact points?
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>

Er... That is a lot of math... The load depends on the length and angle of the appendages. It is, after all, a lever function. So, you can google lever math to find formulas. It would seem to me, with a normal gait in a 2D enviroment, the weight would be 1/3 the weight of the bot (for a hex) - provided the center of gravity is actually in the center and the bot is going in a straight line on a flat plane.
If the COG is not in the center, you can make a rough guess by figuring percentages.
If you haven't already seen it, take a look at videos for Robopet. Seems to have good visuals of some linkage for what appears to be reasonably simple but functional legs on a quadruped.
In realtime, you can measure the stress on a motor by measuring the back EMF through an ADC that is usually available on most microcontrollers.
Bart
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
As Mr Matthias said above the maths required to do that could get tricky.
In order to avoid that i would suggest you keep the robot parallel to the ground. That way, if i am not mistaken, all you will need to calculate is the distance of the leg from the center of weight, times the weight. Percentages will have to be taken in consideration since u got six legs.
So if we where to say the robots stands in parallel to the ground (center of the earth), it has the weight on each leg will be:
Weight on leg = Total weight * distance from COG / Amounts of legs (6 in our case)
Correct me if i am mistaken
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Sorry, i have mistaken the names i ment, as Bart said above..
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
S. Fox Polymenis wrote:

Hi guys, thanks for the suggestions. I am not looking for the stres on the motors, though. All I want to know is how is the weight ditributed to the contact points(*).
Does anyone have an idea?
Lemme try some ACII graphics (seen from above):
o = center of gravity x = contact point
x
o x
x
So the above drawing makes a pretty good triangle just above the center. If the robot weight 1000g, then each leg needs to lift 333g, right?
Now if I have this:
x o x x
then the distance to the center is still pretty much the same, but I am sure (intuitively), that the left two legs carry much less weight each than the right one.
And as a lats example, these legs have IMHO the same load as the image above, right?
x o x x
Oh, one more, because I think it is relevant. This robot would fall over. The weight on the bottom leg would be negative. But how can I calculate this????
o x x x
*: the stress per joint is a much more complicated matter, particularly with bipeds that have twelve joints from one foot to the other. I'll get to the problem later, much later. Then again, if I can compare my calculated values to actual power consumption, I can find out if my robot fell or hit a rock, etc.
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
If i am not mistaken, all u need to take in consideration in finding how the weight is distributed is the distance of the each leg from the COG. Now the location of the leg only matters when u want to see if the robot will be stable, or it will crash to the ground..
So.. its simple math from now on..
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
S. Fox Polymenis wrote:

Thanks
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>

He he :-) If o > x(bottom), o wins...

Blind driving a robot is about as risky as it gets... Personally, I think you are focusing in the wrong direction and possibly making it more confusing than it needs to be.. A hexapod is quite stable for a walking bot. If you have the money, perhaps you might consider experimenting with small gyro stuff. That way your bot will do its own calcs. After all - that's what robots are best at... Just suck the info out of the sensors, stuff them into a software equation, and poof...
For a dumb robot, you can find out if it is having terrain problems with much simpler methods - such as whiskers and other forms of micro switch sensors.
Bart
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>

Absolutely. So I would like to avoid just that.
All these calculations are done before the robot moves. They are to veryfy that the robot won;t fall and that the motors won't overload. Once it is moving, I verify my finding by measuring.
This is for legged robots in general, including a biped which has to be very careful about balance and motor load. Navigation, including whiskers and IR distance sensors, is a whole other story ;-)
Thanks,
Matt
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Matthias Melcher wrote:

If you only have three legs on the ground, just drop a perpendicular from the CG to the floor, compute the distance from the intersection of that perpendicular to the floor to each leg contact point, and use those three numbers as relative weights. Ignore any legs not solidly in contact with the ground. This is a good first approximation, provided that the CG is inside the leg contact triangle.
If you want a full-scale 3D dynamic simulation with accurate force measurements, that's going to be a big job. There are some rather expensive packages that can do it, including our old Falling Bodies product.
If you're building a legged machine, go to the trouble to get force information back from the motors. Otherwise you'll never get anything better than wind-up toy motion.
John Nagle                 Animats
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
John Nagle wrote:

Thanks.
ODE library is a pretty good start here, although I did get some funny results. But that may be related to my libraries as well. I am sure that you know much more about this than I do ;-)
http://www.ode.org /

True. I am actually using a live motion capture system on a human. I need these calculations to transform the joint setup, physics and dynamics from the human into robot world, so that the bot won't fall, no matter what the human player does. I hope that this will get me far beyond the wind-up toy.
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>

Looks interesting - now if I could only figure out how to get started with it... Some of the links don't work and the instructions are confusing.
By the way there is a program that seems like it might be something you would be interested in:
http://ezphysics.org /
Bart
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Bart wrote:

Hah, funny. It is actually based on ODE.
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Matthias Melcher wrote:

ODE is an impulse-constraint physics engine. It won't give you valid force results for statically indeterminate problems. Whenever you have more than three legs on the ground, and the system above the legs is rigid, the system is "statically indeterminate" - there is no unique rigid body solution.
What's actually going on is the mathematical equivalent of a table with four legs on a hard surface. A slight difference in the leg length will cause the table to wobble. The forces in the legs change drastically with a tiny change in the leg length.
If you have a spring in the legs, so that there's some compliance, now you can get meaningful force solutions. I'm not sure how good ODE is at this, but at least it can work in theory.
In the real world, surface contacts always have some compliance, and we actually simulated that in Falling Bodies. That's needed if you really care about foot/ground contact forces.
John Nagle                 Animats
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
John Nagle wrote:

Hi John,
I am cracking this as we speak in my own reduced system. I had my simulated robot sliding (and after a while jerking) all over the place. The spring is a great idea, plus I am checking a lot more for reasonable tolerances now.
Thanks for the help,
Matthias
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>

## Site Timeline

• ### Human Robot Following Using Parco UWB RFID Tags and Obstacle Detection

• - next thread in General Robotics Forum
• ### Servo drive signals for HP 7978 tape drive controller

• - last updated thread in General Robotics Forum

Polytechforum.com is a website by engineers for engineers. It is not affiliated with any of manufacturers or vendors discussed here. All logos and trade names are the property of their respective owners.