-
Notifications
You must be signed in to change notification settings - Fork 350
SO-101 Support #1171
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
base: main
Are you sure you want to change the base?
SO-101 Support #1171
Conversation
@@ -337,11 +337,11 @@ | |||
|
|||
<!-- Joint from gripper to moving_jaw_so101_v1 --> | |||
<joint name="gripper" type="revolute"> | |||
<origin xyz="0.0202 0.0188 -0.0234" rpy="1.5708 -0.909 -1.41553e-15"/> | |||
<origin xyz="0.0202 0.0188 -0.0234" rpy="1.5708 -5.24284e-08 -1.41553e-15"/> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this e-08 value should just be 0?
<parent link="gripper_link"/> | ||
<child link="moving_jaw_so101_v1_link"/> | ||
<axis xyz="0 0 1"/> | ||
<limit effort="0" velocity="10" lower="-1.13778" upper="1.16081"/> | ||
<limit effort="10" velocity="10" lower="-0.174533" upper="2.0944"/> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we don't use effort but just checking these values of 10 are copied from the original so101 urdf, the new calibrated one here right https://github.com/TheRobotStudio/SO-ARM100/blob/main/Simulation/SO101/so101_new_calib.urdf
@@ -398,7 +398,7 @@ | |||
<!-- Joint from upper_arm to lower_arm --> | |||
<!-- Note: 5-degree calibration offset applied to joint limits --> | |||
<joint name="elbow_flex" type="revolute"> | |||
<origin xyz="-0.11257 -0.028 1.73763e-16" rpy="-3.63608e-16 0.03 1.5708"/> | |||
<origin xyz="-0.11257 -0.028 1.73763e-16" rpy="-3.63608e-16 8.74301e-16 1.4408"/> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
e-16 should just be 0
@@ -438,7 +438,7 @@ | |||
|
|||
<!-- Joint from base to shoulder --> | |||
<joint name="shoulder_pan" type="revolute"> | |||
<origin xyz="0.0388353 -8.97657e-09 0.0624" rpy="3.14159 4.18253e-17 -3.14159"/> | |||
<origin xyz="0.0388353 -8.97657e-09 0.0624" rpy="3.14159 4.18253e-17 -3.20159"/> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
e-17 should be 0.
I noticed the official urdfs from the robotstudio used the e-17 values, but we should use 0 (and I'll tell them they should use 0 as well).
from lerobot.common.motors.motors_bus import MotorNormMode | ||
from lerobot.common.robots.robot import Robot | ||
from lerobot.common.utils.robot_utils import busy_wait | ||
from cameras.camera import Camera |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this seems like a wrong import
@@ -58,6 +58,8 @@ def set_target_qpos(self, qpos: Array): | |||
# NOTE (stao): It seems the calibration from LeRobot has some offsets in some joints. We fix reading them here to match the expected behavior | |||
if self.real_robot.name == "so100_follower": | |||
qpos["elbow_flex.pos"] = qpos["elbow_flex.pos"] + 6.8 | |||
elif self.real_robot.name == "so101_follower": |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is not needed the elif. In another PR we will also remove the SO100 one.
@@ -113,6 +115,8 @@ def get_qpos(self): | |||
# NOTE (stao): It seems the calibration from LeRobot has some offsets in some joints. We fix reading them here to match the expected behavior | |||
if self.real_robot.name == "so100_follower": | |||
qpos_deg["elbow_flex"] = qpos_deg["elbow_flex"] - 6.8 | |||
elif self.real_robot.name == "so101_follower": |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this elif is also not needed
<?xml version="1.0" ?> | ||
<robot name="so101"> | ||
|
||
<!-- TODO: Check if this is correct --> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can you verify this? Basically run the demo robot code in cpu sim, and open the contact tab and check there aren't any impossible self collisions being detected or considered
@Viswesh-N looking at the PR again. The collision meshes are still too off. For the moving jaw you may need two stl files to describe it and add both of them into the urdf, we load these both individually to form a non convex shape. SO100 modelling does this as well. SRDF also needs updating. wrist_link and the moving_jaw_so101_v1_link are marked as potentially colliding when they can't actually collide. |
One more thing, some of the values that should be 0 are really just those smaller than 1e-16 (at that precision it was probably a typo it was that small). Other values (like inertias which often are 1e-5 to 1e-8 range) should be kept the same. |
No description provided.