You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
|`crank_4310`| Zero-linkage crank gripper, optimized for minimizing gripper width. |
53
53
|`linear_3507`| Linear gripper with smaller DM3507 motor. Lightweight, but requires calibration or starting with the gripper in the closed configuration. |
54
+
|`linear_4310`| Linear gripper with the standard DM4310 motor (not shown on photo above). Slightly heavier but can provide a bit more gripping force. |
54
55
|`yam_teaching_handle`| Used for the leader arm setup. Includes a trigger to control the gripper and two customizable buttons that can be mapped to different functions. |
55
56
56
57
The linear gripper requires an additional calibration step because its motor must rotate more than 2π radians to complete the full stroke.
@@ -69,7 +70,7 @@ Default timeout is enabled for YAM motors. Please refer to [YAM configuration](#
69
70
from i2rt.robots.motor_chain_robot import get_yam_robot
After moving the timeout, you can initialize the YAM arm with the same following command.
161
162
```python
162
163
from i2rt.robots.motor_chain_robot import get_yam_robot
163
-
164
164
# Get a robot instance
165
165
robot = get_yam_robot(channel="can0")
166
166
```
167
167
168
+
One important way to reduce the risk of the arm going out of control is to avoid entering zero-gravity mode.
169
+
170
+
By default, the arm initializes in zero-gravity mode. As mentioned earlier, if the arm does not have a timeout but the gravity compensation loop fails, the motor controller will continue applying a constant torque. This can lead to unexpected and potentially unsafe behavior.
171
+
172
+
To prevent this, you should always set a PD target. With a PD target, the motor controller ensures the arm reaches a stable state rather than drifting under uncontrolled torque.
173
+
174
+
You can disable the default zero-gravity initialization like this:
raiseRuntimeError(f"{self}: Joint limit violation detected: {violation_msg}, the root reason should be zero position offset. possible solution: 1. move the arm to zero position and power cycle the robot. 2. Recalibrate the motor zero position.")
f"Unknown gripper type: {name}, gripper has to be one of the following: {cls.CRANK_4310}, {cls.LINEAR_3507}, {cls.YAM_TEACHING_HANDLE}"
40
+
f"Unknown gripper type: {name}, gripper has to be one of the following: {cls.CRANK_4310.value}, {cls.LINEAR_3507.value}, {cls.LINEAR_4310.value}, {cls.YAM_TEACHING_HANDLE.value}"
0 commit comments