Advertisement

Robots movement

Started by January 06, 2024 03:39 PM
7 comments, last by Calin 11 months, 2 weeks ago

I‘ve noticed robots in a car factory move fast when they have plenty of clearance and slow when there is little clearance or two surfaces are about to hit one against the other. Atlas from Boston Dynamics on the other hand moves fast all the time. My guess is in the first case robots move slow to avoid a jump backwards effect when two surfaces hit each other. When Atlas walks his feet strike the ground at high speed however the impact is probably absorbed by springs or some kind shock absorbing device hence the upper part of the body doesn’t get damaged as a result. What are your thoughts, am I way off?

My project`s facebook page is “DreamLand Page”

Assuming a car production line is optimized for performance, maybe they don't need to move faster (other stations on the line are slower). Another (probably more likely) possibility is that the robot must perform precise positioning, which is simpler if the robot is not moving fast. Perhaps the parts are very heavy, and can cause damage if they touch in the wrong way.

Advertisement

Calin said:
Atlas from Boston Dynamics on the other hand moves fast all the time.

It looks like Atlas agility is very close to what's physically possible.
To understand what is physically possible, imagine to stand straight.
Then move forwards as fast as possible. Pay attention to feel the center of pressure, which is below your heel.
Then move backwards as fast as possible. The pressure is below your toe.
Eventually keep swinging forth and back. If pressure jumps between heel and toe, you move as fast as possible.
If you try to move faster, say forwards, then to stop the fall, you would need to move the pressure more forwards too, beyond your toe.
But your foot is too short. So you will loose balance, and the only way to prevent the fall is to make a step forwards with the other foot, which is cheating.

So the speed of how fast Atlus can move is constrained by the contact area of his feet, and how a force applied within that area can accelerate the center of mass of the whole robot, which is much higher than the support area. The result of that constraint is that Atlus remains balanced.

But notice i do talk about the max speed while both feet must stay on the ground. It's not allowed to make steps.
The problem is typically solved using an inverted pendulum model. So it's a math problem primarily, not so much about AI.

If we allow to make steps, we can make the support area much larger by doing the step.
This way we can achieve a state of constantly falling forwards, by constantly moving the support area forwards with stepping.
Then we talk about the speed of walking or running.

It's much easier to find related research on this second problem, mainly about planning the next step.
This is a good talk for example, also covering Atlus:

If you remember my video with the one legged hopping robot simulation, i have used his discussed ICP method there to plan the steps.

Calin said:
My guess is in the first case robots move slow to avoid a jump backwards effect when two surfaces hit each other.

Yeah sure. You may plan an optimized trajectory avoiding unwanted collisions.
But likely you want some contact, e.g. when grabbing something from the conveyor belt.
And a contact usually means zero relative velocity between the object, so a typical formulation to the control problem becomes:
Move the grabber to point X, so it moves as fast as possible but has zero velocity at X.

What ‘as fast as possible’ here precisely means depends on the physical motors. Some can move at a constant velocity, some can move at constant acceleration, some can vary acceleration they apply, but maybe just a bit.

And maybe ‘as fast as possible’ is not our only goal. We may also want to be power efficient.

And ofc. we might want to move only the shortest paths needed, which adds another objective.

That's quite some math and optimization problems. Likely you will precompute this offline, and then the robot always repeats this optimized trajectory, only needing small adjustments to compensate measured divergence.

That said, it's likely that both robots are very well optimized, Atlus and the simple grabber in the factory.
So both are ‘fast’, but you are just more impressed from Atlus, which is the expected psychological effect.

And that's why we here should be interested in robotics, i think >: )

Alberth: the robot must perform precise positioning, which is simpler if the robot is not moving fast

what I read is that precise positioning at high speeds is possible too, I never thought of that.

JoeJ interesting read. Is that what running is constant falling?

My project`s facebook page is “DreamLand Page”

Calin said:
JoeJ interesting read. Is that what running is constant falling?

Not really, but walking is. Walking works similar to the swinging forth and back example a i gave. If you put the pressure on the heel, you ‘fall’ forwards, and vice versa. I call this ‘falling’ because there is nothing you can do to swing faster. Schwarzenegger has more muscels, but it does not help him to achieve faster balancing from applying larger forces. This is because applying more force simply is not physically possible without loosing balance due to the small support area, which is as small for him as for us.

Though, Arnies larger mass would help him i guess. If increase gravity in my simulations, the character can swing faster. So higher gravity makes balancing easier. And thus larger mass should help too, if i think correctly.

Walking is basically the same than this swinging motion.
Let's replace the term 'support area' with the widely used ‘support polygon’. That's the convex hull from the feet projected to the ground. We can apply force to any point in this polygon, which is mostly done by the ankle joints and the muscles / motors which can move the ankle. We can also apply force to a virtual point between both feet. Although there is no contact, the sum of forces from both feet has the same effect as using a real contact from a third middle foot at this point would have.

To make a walking controller, we can do this trick: We plan the step and lift the left foot, starting to move towards this target.
While we move our weight forwards, it is clear that our pressure point will be on the heel of the right foot, because we move as fast as possible. This way we can assume a larger support polygon by including the left step, even if we know we will get contact only later in the future. But we must make sure the contact is established at the point in time where we need to decelerate our forwards motion, which moves the pressure from the right leg to the left leg. It's the same problem as before, where we moved pressure form heel to toe while swinging forwards with both feet in place. But because the support polygon is much larger, we can apply larger forces while still keeping balanced.
Walking is usually a underdetermined problem, meaning there are many different ways to walk.
But using the trick of including future steps to the support polygon, in can turn it into a well defined problem, which has just one optimal solution. That's easier to work with.

Running takes the idea a step further again. But we no longer restrict ourselves to just 'falling'.
While running, we apply force which is so high that we defeat gravity, and we jump upwards.
We are out of balance at this point, and both feet are in the air for some time.
Arnie will benefit from his muscles here. He can run faster than we can.
The objective to keep upright still exists, but our strategy to achieve it changes. Instead optimizing for an ideal trajectory using a passive falling motion, we now need to plan the next step properly so we keep upright while following the forwards trajectory over longer periods of time. That's called ‘unstable balance’, if i'm right.

Calin said:
what I read is that precise positioning at high speeds is possible too, I never thought of that.

The thing you need to understand is the relationship of:

position,

velocity (the rate of change of position, or the first derivative of position),

acceleration (the rate of change of velocity, or the second derivative of position).

(I hope that's said correctly - no math expert)

If you just naively think about ‘motion’ or ‘speed’ you tend to miss some principles.
For example, in the real world you can not set velocity directly to some target value.
So PacMan can't exist in the real world, because it uses constant velocity controls.
You can only apply a force, which generates acceleration, and the acceleration then increases the velocity smoothly over time.
So Super Mario can exist in the real world, because the player controls affect acceleration.

It's initially not super intuitive to work with acceleration, and it requires some practice to become used to the concept.
And there is no way around some basic calculus here, which usually is harder than the linear algebra stuff we do much more often in games.

Interesting how the human mind senses when the body is about to tumble forward or backwards. When you loose balance you know you’re going to thumble over if you don’t make that step. Thanks for the primer JoeJ.

My project`s facebook page is “DreamLand Page”

Advertisement

Calin said:
Interesting how the human mind senses when the body is about to tumble forward or backwards.

Yeah, i wonder about that too.
In school we've learned there are 5 senses, and one is the sense of touch with our skin.
That's good to feel pressure distribution to the ground, and we could estimate acceleration from that in theory.
But there is also this feeling in the belly, if we drive a car accelerating very quickly.
That's definitively a sense for acceleration, and i assume we can do that with the whole body, maybe certain or all cells can do this.
But i really don't know.

But even more interesting to us: Even if we have a perfect sense for acceleration, this alone is not enough to keep in balance.
It is just the sensor data describing the current situation, or the physical state of the moment.
But we must plan ahead in time to keep balanced, and our brain surely can not solve the complex equation required for an exact controller - this equation is something like 100 lines of code, each filled with math functions such as pow, log, exp, and trig. iirc.
A simple error feedback controller could not do the job either - we would move as slowly as that Honda Robot.
In theory i could remove the complex math, and replace it with a multidimensional look up table. We could store such table in our brains memory too, after having learned the right values from toddlers experience.
But no. I could not fit such table in RAM. It's too many dimensions. So i doubt our brain could hold the massive data.

Now i've heard machine learning works well to approximate such multi dimensional functions. It learns from trial and error but gets a reward for success, and this way probably the final network only stores the relevant data which is needed the most in the learned practice.
And because ML is inspired by how the brain works, i guess we humans do it indeed similar to the ML approach.

Our ability to balance is very impressive. The support polygon is small, and our center of mass is very high above it.
To move as quickly as we can do, high accuracy is required, and the problem is just very difficult.
But we all can do this so easily and without any conscious thinking effort.

Maybe that's like playing guitar. If you practice a sequence long enough, the fingers kind of move automatically. It's called muscle memory, but i guess it's still controlled by the brain, just not the part which has consciousness.

I enjoyed reading your post (especially what wrote about ML ) JoeJ but I have nothing to add or comment ATM.

My project`s facebook page is “DreamLand Page”

This topic is closed to new replies.

Advertisement