Skip to content

Joint Analysis

On this page information and knowledge about the robots are gathered, how they behave in different motion tasks.

Different Stiffness Values

Following are graphs for a simple stiffness test. The request for a joint was changed in one frame by a lot, which was repeated for different stiffness values. One graph each shows the joint positions and the other the change in position.

Positions Changes per Frame
Hip Pitch Position Hip Pitch Change
Hip Pitch Position Hip Pitch Change
Hip Pitch Position Hip Pitch Change
Hip Pitch Position Hip Pitch Change
Hip Pitch Position Hip Pitch Change
Hip Pitch Position Hip Pitch Change

The position change for the hip, knee and ankle pitches for the time windows from frame 90 to 110 are shown below:

Hip Pitch Change Knee Pitch Change Ankle Pitch Change

Joint Play

As the robots get older and have been used more, the joints will gain more and more play. As far as we know, the position sensors can detect most of this play. But this does not help to let the joints execute the request perfectly. Following two examples are shown of joint play while walking for joints of the supporting foot. The dotted lines show the most expected position for the joint. We assume, that a joint can always hold its position, and if it has enough strength to move, it will follow the request. This means, that a measured position can differ by a huge amount relativ to the requested position, yet has actually no joint play. But if it moves too far or in the opposite direction, then it is moving in its joint play.

Knee Pitch Play

Here the knee is in the beginning part of the swing foot until about frame 12. Afterwards the foot becomes the support foot and the joint gets stuck. Interestingly at about frame 33 the request changes in direction of the measured position, which causes the joint to move by about the same amount, but shifted. The robot itself is in an state of being tilted a lot backwards. Here the knee is unable to move positive, because this would tilt the robot forward and therefore would need to work against the weight of the robot. But moving negativ tilts the robot even more backwards which the joint can easily do. The shift itself is assumed to be a result of the controllers of the motors. This effect can be reproduced on a new robot too, but less extreme because of the missing joint play.

Ankle Pitch Play

Here the ankle pitch becomes part of the support foot at the beginning. The robot is in a far forward tilted state. The request goes more negativ and the joint executes the movement change, but once again shifted by the already existing difference between the request and measured position. This effect can also be reproduced on a new robot, but also less extreme.

Note that this robot used for the grafics has about 5 degrees of play in the shown knee and about 4 degrees of play in the shown ankle. The differences of the positions and requests are mostly caused by this play, but also to some part because of the overall state of the robot, e.g. being tilted far back or forward. A robot with such high play is just a lot more likely to get into such state.

Semi Automatic Joint Play Analysis

To get mostly accurate values in degree for the joint play for each joint, one just moves a joint by hand while it is in a stiff position. Wriggling the joint at a high enough frequency by hand is enough to subtract the measured minimum and maximum position of a given joint to determine the joint play.

To save time for this process, you can bring the robot into a standing position with the chest button and then connect to the robot with the simulator and execute the following command

call Calibrators/JointPlayAnalyzer

The robot is supposed to be hold upright in the air. The energy saving mode is deactivates, therefore the robot will heat up fast if simply placed on the ground. After executing the command the robot will move into a standing position.

To now get the joint play values, open a view of the representation JointPlayData (found in the Scene Graph data.motion.representation.JointPlayData). After the robot finished moving and is hold in the air execute the following command, to reset the detected play

dr module:JointPlayAnalyzer:reset

Now you can just wriggle on each joint by hand and the detected joint play is writting into the representation. For leg joints even new robots will have a very small amount of play of up to 0.3 degree for pitch joints. The hip pitches and rolls can reach up to 1 degree. The arms will have a lot more base joint play as well as the head pitch. An example of the procedure is shown below:


The robot will not sit down after touching the head sensors. Also the joints will have a high stiffness, therefore be carefull to not break something. To sit down the robot, you can deploy again, restart bhuman or shutdown the robot.

Last update: April 21, 2024