# Power Model for humanoids

I am in the process of creating a Power Prediction Model for the Hubo Robot. The Robot has 38 Degrees of Freedom and has a computer some sensors and motor boards. The motors are powered through Motor Boards. All these boards are powered through a main power board that exists at the robots chest.

My model should be able to predict the power for any trajectory of the robot. Say for instance if the robot raises its hand from 0 degrees to 180 degrees my model should be able to predict the power.

Heres an idea I came across. My idea was to equate the electrical torque to the mechanical torque of each joint.

For instance if the Right arm pitch moves from 0 to 180 degrees I can do as follows ? $mgsin(\theta)= Kt*I$

However, I am not getting a proper prediction and the current value is way off than what we can read from a software installed in the robot. I know there are losses but even then its off. I was wondering if there are any other approaches or a fault in my approach.

And after I do this I can add all the joint currents for a specific trajectory and then give a estimate for total power consumption.

## 2 Answers

To compare trajectories a metric is usually the energy. Indeed this is the integral of the power over the trajectory.

There is usually two parts to compute it.

The first one is to consider the full model of the robot that is provided by the corresponding URDF file. Using the Recursive Newton-Euler algorithm that you can find on the Pinocchio library or RBDL, you can compute the torque $$\tau$$ for each joint for a given trajectory. The input are the joint position, the joint speed and the joint acceleration. Once you have the torque you can compute the mechanical energy.

The second part implies that you know some specific information from your motors and your power electronics. You need the motor resistances and the electric motor torque constant to approximate the electric energy. The energy used by the power electronics can be either neglected or computed from the current that has to be delivered to the motor.

You can find a paper on benchmarking here and with a specific example on a humanoid robot more here.

What you want to do is figure out what are the motor torque requirements to move the robot in the desired trajectory. The torques required will then translate to current draw required by motors. I suggest you look at the jacobian matrix of each serial arm to calculate from the Force+Torque of the tip into the motor torques at each joint. This is a humanoid, however, so you will have to be careful how you define the jacobian matrices of the legs and the arms.