Arm Yaw motor problem

Hello everyone

Recently, we started experimenting with our new Reachy robot.
We did however find out that one of our motors in the arm, namely the Right Arm Yaw motor, does not reach far enough.
The range of the motor goes from [-90, 90] according to the documentation of the code.
We did however find out that our motor only goes as far as -20.

Did anyone else notice this problem?
Any solutions?

With kind regards,
Nathan Segers, from the Howest University College in Flanders (Belgium)

During further testing, we noticed a Red Led starting to flicker on the Right Arm Yaw motor. What can we do to prevent these red lights?

Hi @NathanSegers,

Sorry that you encounter an issue.
Can you move it freely further than -20 degree by hand (with the compliance set to True) ?

The red lights indicate that the motor is forcing and turn itself off as a safety. Both issues are most likely linked.

Hi @pierre

When we turn off the Reachy robot, we can freely move the arm.
During compliance as well.

When we record a Trajectory (i.e. Turning it compliant and moving the arm) and replay it, it will not replay correctly. Probably also related.

Good news, if you don’t feel any resistance at all that means it’s only a software issue!

My guess would be that we made a mistake while configuring your motor. They all have internal motor limits and we must have set them incorrectly.

To set the good limit position you can run the following code.


from reachy import Reachy, parts

reachy = Reachy(
    right_arm=parts.RightArm(io='/dev/ttyUSB*', hand='force_gripper'),
)

motor = reachy.right_arm.arm_yaw._motor
motor.rot_position_limit = [-90, 90]

Then, turn the robot off and on again to make sure that your new configuration is taken into consideration.

Let me know if it solves your issue!

We will try it tomorrow, thanks already!

Good morning Pierre

We have fixed the problem, as you described!
Somehow, the motors limits were set to [None, None].
For the reachy.left_arm.arm_yaw._motor the rot_position_limit was also set to [None, None], however that one did not give us any issues.

Is there a way where we can provide checks during initial setup? Can that be included in the sourcecode / documentation?

Merci beaucoup!

1 Like

Great!

The None value is due to the fact that this is a write only register.
I’ll write a simple program to write all limits at once to avoid this kind of problem in the future.

Avec plaisir :grinning: