Files
lerobot/lerobot_robot_ax_arm/README.md
T
CarolinePascal ec66ca42bb feat(ax-arm): add AX-series arm robot package
Add the lerobot_robot_ax_arm package with the AXArm robot,
its config, URDF joint mapping, an end-effector keyboard
teleop example, and packaging metadata.
2026-07-08 12:22:00 +02:00

50 lines
1.4 KiB
Markdown

# lerobot_robot_ax_arm
A third-party [LeRobot](https://github.com/huggingface/lerobot) robot: a 4-DoF arm driven by Dynamixel
AX-series servos (e.g. AX-12A) over **Protocol 1.0**.
| Motor ID | Joint | Normalization |
| -------- | --------------- | ------------- |
| 1 | `shoulder_pan` | [-100, 100] |
| 2 | `shoulder_lift` | [-100, 100] |
| 3 | `elbow_flex` | [-100, 100] |
| 4 | `gripper` | [0, 100] |
## Protocol 1.0 notes
AX-series motors differ from the X-series (Protocol 2.0) used elsewhere in LeRobot:
- **No Sync Read** — positions are read sequentially (`get_observation` / calibration). Sync Write is still
used for `Goal_Position`.
- **No `Operating_Mode` / PID registers** — `configure()` only lowers the return delay time.
- **No homing offset register** — calibration records the range of motion only (`homing_offset = 0`) and is
stored via the CW/CCW angle limits.
## Install
```bash
pip install -e .
```
This is discovered automatically by LeRobot thanks to the `lerobot_robot_` package prefix.
## Usage
```bash
lerobot-record \
--robot.type=ax_arm \
--robot.port=/dev/tty.usbserial-AL02L1E0 \
# ... other arguments
```
Or from Python:
```python
from lerobot_robot_ax_arm import AXArm, AXArmConfig
robot = AXArm(AXArmConfig(port="/dev/tty.usbserial-AL02L1E0"))
robot.connect()
obs = robot.get_observation()
robot.disconnect()
```