chip updates: preliminary experiments with weight/CoG motion analysis [updates]
stage one: some preliminary experiments
(1) Measure the CoG of the robot at different theta positions (from the front of the robot or something) and make a chart of it and do some analysis. (like is it linear/etc, I think it won't be)
(2) Measure the weight of the robot (in full) which allows us to determine how much gravitational force is acting on the CoG
(3) ^ Using the above, we can create two models. One on where the robot needs to put its feet and second the free body diagram of the robot
measuring the weight of the robot:
Yes so today, we're going to measure the robot's WEIGHT and the robot's CoG at different leg positions. We're going to start with the robot's WEIGHT with everything in it.
Like good little scientists we took three readings and averaged them:
Reading One: 24.9 kgs +/- 0.05 kgs Reading Two: 24.9 kgs +/- 0.05 kgs Reading Three: 24.7 kgs +/- 0.05 kgs Average Mass: 24.8 kgs +/- 0.1 kgs
So now we have the total mass of the robot, ~24.8 kgs. Now we want to measure the center of gravity of the robot at different positions.
measuring the CoG of the robot: experiment one, magnitude of change
For measuring the CoG of the robot, we're going to conduct two experiments. The first, will be to, while the robot is off, move the legs from one extreme to the other to measure how much the CoG changes. The reason for that experiment is to see how much of an effect the position has on the CoG. If that has a large effect, we'll move onto the second experiment which is determining the CoG at different leg positions.
For all of the CoG experiments, we need to find some blocks to put the robot on so we can move the legs, and get the strap under the robot, without them hitting the ground.
So yea, special thanks to Apple for the wonderfully strong boxes to support a robot like chip. Now that we know chip weighs a lovely 24.8 kgs! So here's what we're going to do, exactly what we described above, measure the CoG in the x-direction at different leg positions. We'll use the strap for now. Were going to need a common measurement location, we're choosing the front-left corner (the metal under it, we'll feel for the hard-stop).
Yea so here we go! We're going to move the legs into certain positions (theta for reference) and then measure the CoG.
NOTE: theta3, and theta2 = 0 for all experiments.
theta ~= 0.0, CoG ~= 33 cm theta ~= 90.0 (pi/2), CoG ~= 28 cm ~= 5 cm difference in CoG across half the range of motion (RoM)
That does seem to make it fairly clear that further experimentation is needed to determine what the CoG is at different positions of theta1. My guess is the following. The CoG follows a cosine curve reaching its max at 0 (33cm), it's min at pi (estimate 23cm), and its middle value around 28cm at pi/2 or -pi/2. So the function would look something like this:
f(theta) = (5 cm) * cos(theta) + (28 cm)
Something like that would be for all four legs in motion. Which means one leg in motion would be...
f(theta) = (5/4 cm) * cos(theta) + (28 cm)
So there we go, we have a rough model that will help us determine the CoG of the robot at any given time. But what we could also do, is knowing this, instead of calculating the CoG, calculate the fluctuation in CoG and move the legs to counter that. So if one leg moves forward a certain number of degrees, all we need to do is move the others back together but less than the amount we moved the one leg forward.
This would involve some predictive, feed-forward control with the equations above, but now we know, essentially, how to model the CoG. The z-CoG we just have to measure and we'll assume it's in the middle...
And we tested it like this image above, just used a thin piece of wood and picked up the robot exactly in the middle, and it balanced on that. So we know the CoG has to be close to the middle of the robot (which makes sense).
Word of warning/point to note: we are NOT trying to determine where the CoG of the robot is exactly, we ARE trying to get the best estimate of the CoG empirically, one that is good enough for control of the platform. The goal is to see how simply can we do robotics, not how complicated can we make the system.
So, then, let's note the important points we uncovered from this very small/lightweight experimental procedure to determine CoG motion of the platform:
conclusions: from experiment one and two on CoG and weight
experiment one conclusions:
The conclusion of experiment one, is that we have successfully measured the weight of the chip two robot platform within 0.1 kgs of accuracy to be:
average mass: 24.8 kgs +/- 0.1 kgs
This is the mass we will use, 24.8 kgs, in our calculations going forward. That means we can estimate the gravitational force on the entire robot to be ~248N.
experiment two conclusions:
The conclusions of experiment two are a little longer and they rely on certain assumptions that we must start by stating. At the end of these conclusions, we'll propose a control strategy.
assumptions: (1). the lower leg of the robot is too light-weight for its motion to result in significant motion of the CoG of the entire robot platform. therefore we assume that the motion of the lower leg will not change the CoG of the platform. (2). the robot's hinge joint will not move more than a few degrees in either direction, too small a motion in a sinusoidal model (as we have found out the CoG model can be modeled as sinusoidal) results in barely any movement of the CoG. essentially, the z-component of the CoG remains constant. (3). we assume the z-component of the CoG to be located at the center of the platform in its respective direction. and according to assumption 2, we assume the CoG does not move in the z-direction. (4). therefore all movement of the CoG is solely in the x-direction and originates solely from the movement of the upper leg in the x-direction, and therefore, can be directly linked to the motion of the shoulder joint (theta one in the global leg model). (5). assume all of the legs of the robot have equal and identical effects on the CoG of the robot due to their symmetrical design and construction. (6). assume no other components of the robot create any motion in the CoG.
If we assume the above, we can develop a very simple model for the motion of the center of gravity of the robot.
The experiment found the following data from the procedure for determining the motion of the CoG in the x-direction. That the CoG in the x-direction followed the following motion:
~= 5 cm difference in CoG across half the range of motion (RoM) meaning that as the legs moved from position 1 to position 2 in the diagram above, the CoG moved forward ~5 cm.
Knowing this information and following the above assumptions, we extrapolated/inferred the following information from the data to generate the model we will explain.
if from position 1 to 2 we saw a forward motion of ~5 cm in the CoG, then if we move all four of the legs from position 2 to position 3 (depicted below) we should see the CoG move forward another 5 cm.
This can be extrapolated due to the symmetry in movement from 1-->2 as compared to 3-->4. Now this conclusion above is for the motion along the 1, 2, 3 position route. The intermediate conclusion is a little different.
For the motion of the CoG in the intermediate points in-between 1 and 2, or 2 and 3, we can make another following modeling conclusion based on the fact that the upper leg is performing circular motion around joint one (the shoulder).
the motion of the CoG as all four legs move from 1-->3 can be modeled as a sinusoid where the center of the wave is at position 2 for all the legs, the maximum is at position 1 for all the legs, and the minimum is at position 3 for all the legs. the amplitude of this waveform is ~5 cm according to the data above, and we can assume it is centered at 28 cm from the front of the robot according to the data above.
Now based on assumptions (5). we can make one final conclusion about the motion of the CoG now if only one leg is moving (or two legs are moving and etc.) instead of all four legs.
if only one leg is moving instead of all four, and all the legs are identically constructed and designed and therefore have identical effects on the CoG's motion, then one leg will have exactly 1/4th the effect on the CoG as all four legs meaning if the CoG's motion has an amplitude of ~5 cm when all four legs are moving, then the CoG's motion has an amplitude of ~5/4 cm when only one leg is moving.
So we can now propose a new and alternate control strategy to state-space modeling or to more complex forms of control (remember the goal is to come up with a much lighter control framework, and that is CoG Motion Analysis (CMA).
CoG Motion Analysis or (CMA): is a technique that combines the idea of "centering" (like gravity compensation and such), and simple analysis of the motion of the CoG compared to different states of the system to then be able to send commands that can counter that motion of the CoG to keep the platform theoretically balanced, and use IMU correction through simpler PID-based methods for the rest.
So CoG Motion Analysis is an extremely simplified method of controlling a four-legged robot that has high moments of inertia on its legs without using techniques such as state-space control which require too much modeling of the parameters of the robot. CoG Motion Analysis takes into account empirical data from the robot platform, and counters motions in the Center of Gravity.
So what we're basically saying is, if we move one leg from position 2 to position 3, we know the CoG has moved forward 5/4 cm right? So to counter that, while it's moving forward, we move the other three legs backward from position 2 towards position 1 but ~1/3 of the way so they each individually move the CoG back ~5/4/3 cm each, so the CoG ends up staying in the same place (if that's the desired effect). Of course we can now, knowing the affect of any leg on the CoG individually, we can determine how to move the legs to achieve a desired effect on the platform. That's the whole idea behind CoG motion analysis, get a general idea of how the CoG moves and use that as a model in the platform to achieve desired affects. We'll write a ROS node for this individually I think. And if this works, we can make this a focus of the end-of-summer paper.
Final note on what problem CoG Motion Analysis actually solves:
So with legged robots that haven't been precisely machined to a CAD (prototype robots and etc), it's very difficult to know where the CoG is and more importantly be able to control the location of the CoG using modeling techniques. For legged robots, and for dynamic legged robots that employ state-space control or even simple PID, knowing the location of the CoG is essential in developing those models. With CoG Motion Analysis, we empirically measure the CoG and how different configurations of the platform change that CoG with different assumptions about different parts of the platform. Then by doing that we can assume a start location for the CoG, and model how it moves as we move the legs, and then use an IMU to counter any errors in modeling. You figure out the balance point in one configuration/the starting configuration, and then you know the balance point moves as the configuration of the platform changes.
Anyways, that's the experiment and the conclusions we can draw from it.