# 松灵 AgileX PiPER 机械臂与 SCOUT / LIMO 移动底盘二次开发与主从遥操作指南

> 原文链接：https://robotics.hellobike.com/wiki/agilex-piper-scout-teleop-dev-guide
> 频道：wiki | 更新日期：2026-10-21 | 标签：松灵, PiPER, SCOUT, LIMO, 遥操作, LeRobot, 移动操作
> 核心摘要：详解松灵 PiPER 六轴机械臂 CAN 通信协议、主从同构遥操作（Leader-Follower）配置、LeRobot 数据集录制及与移动底盘复合集成方法。

# 松灵 AgileX PiPER 机械臂与 SCOUT / LIMO 移动底盘二次开发与主从遥操作指南

## 1. 硬件架构与核心参数

松灵 PiPER 是具身智能社区广泛采用的轻量化 6 自由度开源机械臂（自重仅 **4.2 kg**，额定有效负载 **1.5 kg**，工作半径 **626 mm**），常作为单臂桌面平台、ALOHA 风格双臂遥操作台，或搭载在 **SCOUT 2.0 / RANGER MINI** 移动底盘与升降立柱上构成复合移动操作机器人（Mobile Manipulator）。

| 关节序号 | 运动范围 (deg) | 运动范围 (rad) | 驱动方式 | 通信协议 |
| :--- | :--- | :--- | :--- | :--- |
| **J1 (腰部旋转)** | ±154° | ±2.687 rad | 达妙/自研准直驱关节模组 | CAN 2.0B @ 1Mbps |
| **J2 (肩部俯仰)** | 0° ~ 195° | 0 ~ 3.403 rad | 准直驱关节模组 | CAN 2.0B @ 1Mbps |
| **J3 (肘部俯仰)** | -175° ~ 0° | -3.054 ~ 0 rad | 准直驱关节模组 | CAN 2.0B @ 1Mbps |
| **J4 (小臂旋转)** | ±106° | ±1.850 rad | 准直驱关节模组 | CAN 2.0B @ 1Mbps |
| **J5 (手腕俯仰)** | ±75° | ±1.309 rad | 准直驱关节模组 | CAN 2.0B @ 1Mbps |
| **J6 (手腕旋转)** | ±100° | ±1.745 rad | 准直驱关节模组 | CAN 2.0B @ 1Mbps |
| **Gripper (二指夹爪)** | 0 ~ 70 mm | 0 ~ 0.07 m | 丝杆力位混合控制 | CAN 2.0B @ 1Mbps |

---

## 2. SocketCAN 多臂独立绑定与 `piper_sdk` 快速控制

当一台 Ubuntu 主机同时连接双臂（左从臂 `can_left`、右从臂 `can_right`）或多路 USB-to-CAN 适配器时，必须通过硬件 USB 端口号固定绑定 CAN 接口名称，防止重启后左右手互换：

```bash
# 1. 使用松灵官方脚本按 USB 物理端口绑定 CAN 名称并设置 1Mbps 波特率
git clone https://github.com/agilexrobotics/piper_sdk.git
cd piper_sdk
pip3 install -e .
bash find_all_can_port.sh
sudo bash can_activate.sh can_left 1000000 "1-2:1.0"
sudo bash can_activate.sh can_right 1000000 "1-3:1.0"
```

### Python 最小闭环控制示例（读取状态 + 关节角下发）

```python
import time
from piper_sdk import C_PiperInterface_V2

piper = C_PiperInterface_V2("can_left")
piper.ConnectPort()

# 切换至 CAN 指令控制模式 (0x01) + MOVE J 关节空间模式 (0x01)，速度 30%
piper.MotionCtrl_2(0x01, 0x01, 30, 0x00)
piper.EnableArm(7)
time.sleep(0.5)

# 读取当前 6 轴关节角（原始单位为 0.001 度）
joint_state = piper.GetArmJointMsgs()
print("Current joints (0.001 deg):", joint_state.joint_state)

# 下发安全初始位姿（全部归零，夹爪张开 50mm，力矩 1.0 N·m）
piper.JointCtrl(0, 0, 0, 0, 0, 0)
piper.GripperCtrl(50000, 1000, 0x01, 0)
```

---

## 3. 结合 LeRobot 开展双臂遥操作数据采集与 ACT / π0 训练

1. **硬件连接**：主臂（Leader）与从臂（Follower）可通过硬件 CAN 线直连实现零延迟主从映射，上位机从同一条 CAN 总线监听主臂目标角（作为 `action`）与从臂实际反馈角（作为 `observation.state`），同时接入手腕 RealSense D405 与全局 D435i 相机。
2. **仿真先行验证**：在未连接真机时，可直接加载 DeepMind `mujoco_menagerie/agilex_piper/piper.xml` 或官方 `piper_ros` / `piper_isaac_sim` 进行轨迹碰撞检查与策略预评估。

## 原始参考来源 (Sources)

- [GitHub agilexrobotics/piper_sdk](https://github.com/agilexrobotics/piper_sdk)
- [GitHub agilexrobotics/piper_ros](https://github.com/agilexrobotics/piper_ros)
- [GitHub agilexrobotics/ugv_sdk](https://github.com/agilexrobotics/ugv_sdk)