Skip to content

So100 follower's 2nd motor moves the opposite direction of the leader #930

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
paszea opened this issue Apr 2, 2025 · 8 comments
Open
Labels
bug Something isn’t working correctly robots Issues concerning robots HW interfaces

Comments

@paszea
Copy link

paszea commented Apr 2, 2025

Hi, I'm an experienced software engineer but new to robotics. I found LeRobot project quite fascinating and am trying to get my hands dirty by building the so100 arms.

After calibration was done I found the 2nd motor of the follower moved the opposite direction of the leader during teleoperate. Because there was no room to move at that direction at resting position, it got stuck with blinking red light.

I can confirm that the motors themselves work as expected. E.g. if I directly set the follower's 2nd motor to rotate +200, and compare it with the readings from leader's 2nd motor moving the same direction, they matched: the leader's motor also increased by ~+200. So this must be a problem with the calibration.

My follower calibration file has the following:
{"homing_offset": [-2145, 4, -1401, -3126, 2970, -1769], "drive_mode": [0, 1, 0, 0, 1, 0], "start_pos": [2085, 56, 1285, 3237 , 3080, 1983], "end_pos": [3169, 1020, 2425, 4150, -1946, 2793], "calib_mode": ["DEGREE", "DEGREE", "DEGREE", "DEGREE", "DEGREE", "LINEAR"], "motor_names": ["shoulder_pan", "shoulder_lift", "elbow_flex", "wrist_flex", "wrist_roll", "gripper"]}

And leader's:
{"homing_offset": [-2062, 3126, -105, -2098, 2881, -1532], "drive_mode": [0, 1, 0, 0, 1, 0], "start_pos": [2083, 3025, 266, 2 079, 2891, 1515], "end_pos": [3086, -2102, 1129, 3122, -1857, 2556], "calib_mode": ["DEGREE", "DEGREE", "DEGREE", "DEGREE", "DEGREE", "LINEAR"], "motor_names": ["shoulder_pan", "shoulder_lift", "elbow_flex", "wrist_flex", "wrist_roll", "gripper"]}

I tried to manually change drive_mode of either follower or leader or both's drive_mode from [0, 1, 0, 0, 1, 0] to [0, 0, 0, 0, 1, 0]. None of the combinations worked.

As of course, I tried to calibrate many times but every time I got the same.

And here is one more interesting data point: at one time I took out the 2nd motor of both follower and leader, and re-configured them as in step C (after putting back the gear we took out for the leader.) After assembling them back the calibration worked correctly - the 2nd follower motor moved in sync with leader's! However it didn't last for long, at one point some error occurred during teleoperate and I had to re-calibrate the arms. After that, the problem re-appeared.

I'm currently stuck. Any help/advices on how to go debug this problem is appreciated.

@Katehuuh
Copy link

Katehuuh commented Apr 2, 2025

Had this issue for the gripper rotation and fix it by just recalibrate one arm with opposite rotation:

python lerobot/scripts/control_robot.py --robot.type=so100 --control.type=calibrate --control.arms=[\"main_leader\"]

Than teleoperate again to verify:

python lerobot/scripts/control_robot.py --robot.type=so100 --control.type=teleoperate

@paszea
Copy link
Author

paszea commented Apr 2, 2025

Not sure how can I calibrate the 2nd motor (shoulder_lift) with opposite rotation? From rest position it moves only upwards.

@imstevenpmwork
Copy link
Collaborator

Hi @paszea ,

It looks like you’re running into a common issue we’ve seen with the current calibration method for these arms. We’re actively working on improvements to address this.

In the meantime, here’s a tip that might help: Even if the arm moves in the wrong direction at first, try moving the leader arm through a wide range of motions. Often, after a few adjustments, the follower arm will catch on and respond correctly.

@imstevenpmwork imstevenpmwork added bug Something isn’t working correctly robots Issues concerning robots HW interfaces labels Apr 3, 2025
@paszea
Copy link
Author

paszea commented Apr 3, 2025

@imstevenpmwork thanks for confirming. The issue does look somewhat random. For the moment I swapped the leader's 2nd motor with the 4th and the recalibration worked fine so far. Looking forward to the improvement in case the problem happens again.

@ondrejbiza
Copy link

I have a similar problem with the calibration offsets. The third joint is off by 180 degrees when starting teleop. It fixes itself when I move the leader through its full range of motion.
https://photos.app.goo.gl/UBitNv98t4N1JJnQ7

@felixboelter
Copy link

felixboelter commented Apr 7, 2025

Hi @paszea , the way I solved this was to change the steps for calibrating from the normal 1, 2, 3 (extended, rotated, rest) positions to 3, 2, 1 (rest, rotated, extended) positions for the follower and leader arms, this causes it to start in the rest position. Let me know if this helps :)

@paszea
Copy link
Author

paszea commented Apr 7, 2025

Hi @paszea , the way I solved this was to change the steps for calibrating from the normal 1, 2, 3 (extended, rotated, rest) positions to 3, 2, 1 (rest, rotated, extended) positions for the follower and leader arms, this causes it to start in the rest position. Let me know if this helps :)

@felixboelter this approach actually worked for me. Thanks!

@wjxjmj
Copy link

wjxjmj commented Apr 10, 2025

I solved this issue by swapping the leader's 2nd motor with the 3th moter. After a new calibration it works fine.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn’t working correctly robots Issues concerning robots HW interfaces
Projects
None yet
Development

No branches or pull requests

6 participants