Analysis and documentation of motors used in pib

Currently, there are 2 motors in pib; MG996R for weaker joints and DS3225MG for stronger joints.

MG996R

MG996Rs are used to actuate fingers and central rotators. Below is the datasheet for MG996R.

The speed provided by MG996R is very sufficient for the education version providing 40% of finger closing speed of average human which is a very good safety factor.

For torque, given that the length of pib’s finger from base to end of fingertip is 8.85cm with weight of 35gm. 0.5 x stall torque = The rated torque
0.5 x 11 = 5.5 kg.cm
Remaining ability to lift weight effortlessly = 5.5/8.85 - 0.035 = 0.6 kg

pib’s finger being able to lift 0.6 kg effortlessly is very close to 50% of human ability, which is very acceptable safety factor wise.

Conclusion:

Ever since the implementation of MG996Rs motors in pib, it is extremely rare that one fails or breaks under normal working conditions. Thus, from usage experience we can conclude that MG996Rs in the used joints are very capable and performing greatly.

From torque and strength side, it is not very common to use pib to lift a weight with one finger, the strength will be more used in gripping parts and shaking hands, in which from user experience “pib has a strong hand grip”. Since gripping in the educational version is more towards dealing with users, we can conclude that torque and strength for MG996R are performing greatly.

From speed side, the main metric would be human perception of such speed if its sufficient or not, and user feedback mentions that pib’s fingers are “fast”.

To conclude, MG996Rs are perfect for the current use case.

DS3225MG

DS3225MG is used in shoulder and elbow. Below is the datasheet for the motor.

Speed

The speed provided by DS3225MG is high for the education version in shoulder and elbow safety wise. As a result we reduce the speed in the motor control scripts. However this provides a serious issue. In Pulse Width Modulation control, you reduce the speed by reducing the duty cycle, which means instead of giving continuous power it provides on time and off time, which reduces power delivery to motors.

image-20240113-140847.png

This leads to motor receiving less voltage and puts a lesser cap on current to be drawn, which reduces speed but also reduces Torque. Where we already face some problems for the arms needing more powerful motors, so reducing speed with PWM, reduces torque which in turn makes the already not sufficient motor less sufficient.

Torque calculations

For torque, given that the length of pib’s elbow till fingertip is 44cm with weight of 0.5kg.

0.5 x stall torque = The rated torque
0.5 x 30 (stall torque at 7.3V) = 15 kg.cm
Remaining ability to lift weight effortlessly = 44 x 0.5 = 22 kg.cm
This means that elbow will be able to move, specially with the aiding spring but not very efficiently which is true by our experience that after long usage time it burns.

For shoulder joint, horizontal rotation will be equal to total weight of arm multiplied by length of horn
(1kg + 0.3kg(shoulderBase+motors)) x 2.6cm = 33.8kg.cm.

DS3225MG shouldn’t be able to move shoulder horizontally according to this calculations. However since weight is not calculated accurately and this movement does not happen continuously, the motor is able to work briefly before stopping, add to this that we reduce speed with PWM which reduces torque this makes DS3225MG not fit for that joint at all.

For shoulder vertical motion, we make an assumption for safety that the weight at the middle of the upper arm is place at the end point of the upper arm and at the starting point of elbow, which needs a torque of:
20.5cm x 0.5kg = 11.25 kg.cm
For the second half of the arm we make a similar assumption that weight is not distributed equally but at the end point at the finger tip, which needs a torque of:
43.7 x 0.5kg = 21.85 kg.cm

Since we use 2 motors with each rated torque being 15kg.cm this means that the total rated torque of 30kg.cm is a little bit less than 33 kg.cm, however with the aid of 2 springs, motors being able to lift much more than rated torque and our calculation accounting for much higher needed torque than the actual one by putting distributed weight at the end of arm. This means that these motors do not burn due to not being able to lift strong enough, and there are other reasons aside from also reducing speed with PWM which reduces torque. However, even putting that into account, then it is not logical that the motor in elbow has much longer life than motors in shoulders since it has more stress on it.

Problem of using 2 motors

After thorough experimentation, we have reached the conclusion that motors burn in shoulder vertical due to usage of 2 motors together. Below is a video that shows that even though 2 motors recieving same signal with same zero position they look like they are in sync. But if you look closely at the starting position, you will find a difference of 1-2 degrees between them. This is due to the motors not being manufactured very precisely due to their cheap price. So, the electronic control chip in motors do not have the same zero position and the output geared shaft is not placed exactly the same in all motors.

This means that the motors act against each other's in some situations, with one motors trying to move from 0 to 15deg in its own calculation and the other moves from 0 to 15deg in its own calculation, however since there is 1-2 degrees difference, if we take the first motor as reference, the second motor is actually trying to move from 1-2 to 16-17deg. This causes 1 motor to stall after reaching end position and forcing the other motor to push back and at the constant position as soon as motors are enabled they work against each other and only together when in some state of moving.

 

image-20240113-150124.png

Experiments:

During experimentation, motor was stalled with 40kg.cm and did not heat up at all and only stopped working and after removing the weight, it was back to normal performance.

The only case where the motor started heating up was after 30 seconds of forcing back drivability, meaning that while motor wants to maintain a specific position, we pushed down with a heavy weight then removed it to back drive the motor. This is the exact state of the shoulder vertical joint, where motors force back drivability on each other.

Solutions and critique:

  1. Using only one motor and printing a gear reduction system
    After disassembling the servo, it was found that the core DC motor us so small, the same as used in MG996R and the reduction gear system is not very strong with really small teeth. One if the gears usually break under high pressure. Attaching a reduction drive on DS3225MG will put very high strain on such gears and the control circuitry.

  2. Syncing motors using software
    Accounting for the difference in position in software is very maintainable by giving 1 motor 15deg target position and the other 16deg target position. This needs very thorough experimentation to document the exact difference which can be non-accurate with other motors. Additionally, controlling PWM is not that accurate and has a low step size which is an issue if the difference is too low

  3. Using different servo motor
    This solution is highly recommended. We should use 1 servo motor with torque rating equal to or more than the combined torque of both motors. The servo should have a bigger and more powerful core DC motor so that its not just a higher reduction ratio like the first point.

  4. Using safety script to stop motors of shoulder and elbow as soon as camera notices something in trajectory instead of reducing speed for safety
    This is a supportive solution that most certainly should be used instead of decreasing speed.