WSL2 环境中校准遥操作 SO-101 机械臂

📅 2026/7/13 2:33:14
WSL2 环境中校准遥操作 SO-101 机械臂
windows串口映射到WSL2枚举windows中的USB设备$(lerobot)PS D:\projects\lerobotusbipd list Connected: BUSID VID:PID DEVICE STATE2-4 04f3:0c82 ELAN WBF Fingerprint Sensor Not shared2-5 04f2:b7e9 HP 5MP Camera, HP IR Camera, Camera DFU Device Not shared2-65843:7884 Web Camera Not shared2-9 046d:c52b Logitech USB Input Device, USB 输入设备 Not shared2-108087:0037 英特尔(R)无线 Bluetooth(R)Not shared3-2 1a86:55d3 USB-Enhanced-SERIAL CH343(COM7)Not shared3-3 1a86:55d3 USB-Enhanced-SERIAL CH343(COM4)Shared4-1 0b95:1790 ASIX USB to Gigabit Ethernet Family Adapter Not shared共享串口(lerobot)PS D:\projects\lerobotusbipdbind--busid3-2(lerobot)PS D:\projects\lerobotusbipdbind--busid3-3 usbipd: info: Device with busid3-3was already shared.(lerobot)PS D:\projects\lerobotusbipd attach--wsl--busid3-2 usbipd: info: Using WSL distributionUbuntu-22.04to attach;the device will be availableinall WSL2distributions. usbipd: info: Detected networking modemirrored.usbipd: info: Using IP address127.0.0.1 to reach the host.(lerobot)PS D:\projects\lerobotusbipd attach--wsl--busid3-3 usbipd: info: Using WSL distributionUbuntu-22.04to attach;the device will be availableinall WSL2distributions. usbipd: info: Detected networking modemirrored.usbipd: info: Using IP address127.0.0.1 to reach the host.(lerobot)PS D:\projects\lerobotusbipd list Connected: BUSID VID:PID DEVICE STATE2-4 04f3:0c82 ELAN WBF Fingerprint Sensor Not shared2-5 04f2:b7e9 HP 5MP Camera, HP IR Camera, Camera DFU Device Not shared2-6 0000:0002 未知 USB 设备(设备描述符请求失败)Not shared2-9 046d:c52b Logitech USB Input Device, USB 输入设备 Not shared2-108087:0037 英特尔(R)无线 Bluetooth(R)Not shared3-2 1a86:55d3 USB-Enhanced-SERIAL CH343(COM7)Attached3-3 1a86:55d3 USB-Enhanced-SERIAL CH343(COM4)Attached4-1 0b95:1790 ASIX USB to Gigabit Ethernet Family Adapter Not shared在WSL2中查看串口已映射$(lerobot)hughHUGH:~/lerobot$ls/dev/ttyACM* /dev/ttyACM0 /dev/ttyACM1SerailSO-101 ARMttyACM0hugh_follower_armttyACM1hugh_leader_arm校准leader arm$ lerobot-calibrate--teleop.typeso101_leader--teleop.port/dev/ttyACM1--teleop.idhugh_leader_arm校准follower arm$ lerobot-calibrate--teleop.typeso101_leader--teleop.port/dev/ttyACM0--teleop.idhugh_follower_arm遥操作$ lerobot-teleoperate--robot.typeso101_follower--robot.port/dev/ttyACM0--robot.idhugh_follower_arm--teleop.typeso101_leader--teleop.port/dev/ttyACM1--teleop.idhugh_leader_arm遥操作架构数据流数据集存储格式my_dataset/ ├── meta/ │ ├── info.json# fps30, 任务描述, 特征定义│ ├── stats.json# 各通道 mean/std (用于归一化)│ ├── episodes/ │ │ └── chunk-000/ │ │ └── file-000.parquet# 每条 episode 的起止帧索引│ └── tasks.parquet# 任务文本描述├── data/ │ └── chunk-000/ │ └── file-000.parquet# 时序数据 (每行一帧):│# timestamp, frame_index, episode_index,│# observation.state[6], action[6]└── videos/ ├── observation.images.wrist/ │ └── chunk-000/ │ └── file-000.mp4# 腕部视频 (H.264, 640×48030fps)└── observation.images.top/ └── chunk-000/ └── file-000.mp4# 俯拍视频 (H.264, 640×48030fps)电机通信协议┌────────────────────────────────────────────────┐ │ Feetech STS3215 │ │ │ │ 控制表(Control Table): │ │ ┌──────────────────┬──────┬────────┐ │ │ │ 寄存器 │ 地址 │ 大小 │ │ │ ├──────────────────┼──────┼────────┤ │ │ │ Model_Number │3│ 2B(R)│ │ │ │ ID │5│ 1B │ │ │ │ Baud_Rate │6│ 1B │ │ │ │ Min_Position │9│ 2B │ │ │ │ Max_Position │11│ 2B │ │ │ │ Max_Torque │16│ 2B │ │ │ │ Homing_Offset │31│ 2B │ │ │ │ Torque_Enable │40│ 1B │ │ │ │ Goal_Position │42│ 2B(W)│ │ │ │ Present_Position │56│ 2B(R)│ │ │ │ Present_Load │60│ 2B(R)│ │ │ └──────────────────┴──────┴────────┘ │ │ │ │ 参数: 分辨率4096, 波特率 1Mbps, 协议 v0 │ └────────────────────────────────┘控制循环时序时间 → 帧0 帧1 帧2 帧3 │ │ │ │ ├─ 读取从手位置 ├─ 读取从手位置 ├─ 读取从手位置 ├─ 读取从手位置 ├─ 读取主手位置 ├─ 读取主手位置 ├─ 读取主手位置 ├─ 读取主手位置 ├─ 采集腕部图像 ├─ 采集腕部图像 ├─ 采集腕部图像 ├─ 采集腕部图像 ├─ 采集俯拍图像 ├─ 采集俯拍图像 ├─ 采集俯拍图像 ├─ 采集俯拍图像 ├─ 写入 parquet ├─ 写入 parquet ├─ 写入 parquet ├─ 写入 parquet ├─ 推入视频帧 ├─ 推入视频帧 ├─ 推入视频帧 ├─ 推入视频帧 │ │ │ │ ← 33ms → ← 33ms → ← 33ms → ← 33ms →(30FPS)usbipd 命令详解usbipd是 Windows 上的 USB/IP 工具用于将 Windows 主机上的 USB 设备共享给 WSL2Windows Subsystem for Linux 2使用。下面详细介绍三个核心命令。1. usbipd listusbipd list命令用于列出 Windows 主机上所有可用的 USB 设备及其状态。命令语法usbipd list输出说明执行后输出类似以下格式Connected: BUSID VID:PID DEVICE STATE2-4 04f3:0c82 ELAN WBF Fingerprint Sensor Not shared3-2 1a86:55d3 USB-Enhanced-SERIAL CH343(COM7)Not shared3-3 1a86:55d3 USB-Enhanced-SERIAL CH343(COM4)Shared各列含义BUSIDUSB 总线标识符格式为总线号-设备号如3-2用于唯一标识设备在系统中的位置。VID:PID供应商ID:产品ID用于标识设备类型如1a86:55d3表示 CH343 串口芯片。DEVICE设备名称或描述。STATE设备共享状态Not shared设备未共享仅 Windows 可用。Shared设备已共享给 WSL2但 WSL2 尚未连接。Attached设备已共享且 WSL2 已连接。使用场景查看所有 USB 设备列表。确认目标设备的 BUSID用于后续bind和attach命令。检查设备当前共享状态。2. usbipd bind --busid 3-2usbipd bind命令用于将指定的 USB 设备从 Windows 主机共享绑定给 WSL2。命令语法usbipdbind--busidBUSID示例usbipdbind--busid3-2参数说明--busid BUSID必需参数指定要绑定的 USB 设备的 BUSID通过usbipd list获取。命令作用驱动切换在 Windows 端卸载该设备的原生驱动程序加载 USB/IP 虚拟总线驱动。网络暴露通过 TCP/IP 网络将设备暴露给 WSL2使 WSL2 能够通过网络访问该设备。状态变更设备状态从Not shared变为Shared。注意事项需要管理员权限运行在管理员 PowerShell 或命令提示符中执行。执行前确保设备未被 Windows 应用程序占用。绑定后设备在 Windows 端将不可用直到解除绑定。若要撤销绑定使用usbipd unbind --busid BUSID。3. usbipd attach --wsl --busid 3-2usbipd attach命令用于在 WSL2 内部连接挂载已由 Windows 共享的 USB 设备。命令语法usbipd attach--wsl--busidBUSID示例usbipd attach--wsl--busid3-2参数说明--wsl指定目标为 WSL2 环境默认使用默认的 WSL2 发行版。--busid BUSID必需参数指定要连接的设备的 BUSID。命令作用建立连接在 WSL2 内部通过 USB/IP 客户端连接到 Windows 主机上已共享的设备。创建设备节点在 WSL2 的/dev目录下创建对应的设备文件如串口设备通常为/dev/ttyUSB*或/dev/ttyACM*。状态变更设备状态从Shared变为Attached。输出示例usbipd: info: Using WSL distributionUbuntu-22.04to attach;the device will be availableinall WSL2distributions. usbipd: info: Detected networking modemirrored.usbipd: info: Using IP address127.0.0.1 to reach the host.注意事项该命令在WSL2 内部的 Linux 终端中执行不是在 Windows PowerShell 中。需要确保 Windows 端已通过usbipd bind共享了该设备。连接成功后即可在 WSL2 中像使用本地 USB 设备一样使用该设备。完整工作流程示例以共享串口设备 COM7BUSID: 3-2为例查看设备列表Windows PowerShellusbipd list绑定设备Windows PowerShell管理员权限usbipdbind--busid3-2连接设备WSL2 终端usbipd attach--wsl--busid3-2在 WSL2 中验证ls/dev/ttyUSB*# 或 /dev/ttyACM*通过这三个命令的配合即可实现 Windows USB 设备到 WSL2 的完整映射。