2.4 单臂遥操系统校准、测试
下面的流程、代码、工具等只适用于单臂遥操作系统,双臂遥操作系统请查看下一篇。
1. 遥操作系统校准
1.1 环境配置
-
Ubuntu 电脑:我的版本是 20.04.6 LTS,其他版本,尤其是更高版本,可能有些驱动装不了
-
使用 Anaconda 创建虚拟环境:
conda create -y -n lerobot python=3.10 -
激活环境:
conda activate lerobot -
下载修改后的
lerobot代码:git clone https://github.com/enpeizhao/lerobot_single_student不要使用 lerobot 官方代码,因为有代码改动(官方的代码不支持我的机械臂)
-
解压,进入目录
cd lerobot -
安装
lerobot,使用:pip install -e . -i https://mirrors.huaweicloud.com/repository/pypi/simple -
安装飞特舵机支持,使用:
pip install 'lerobot[feetech]' -
我的环境依赖参考在根目录的
lerobot_env.txt
1.2 中位校准遥操主臂
-
将遥操主臂的电源和数据线插上,数据线另一头连接电脑
-
运行指令:
ls /dev/ttyACM*,检查驱动板在 Ubuntu 下的端口,比如我的是:/dev/ttyACM0 -
运行:
python -m lerobot.set_middle --port=/dev/ttyACM0,进入校准程序,应该会输出这样的界面:INFO 2025-09-10 17:19:06 t_middle.py:117 {'motor_range': (1, 7), 'port': '/dev/ttyACM0'} Connected to Feetech motors on port /dev/ttyACM0 已解锁所有电机(扭矩禁用) 开始持续监控位置。电机范围: 1-7。按 Ctrl+C 停止。 您可以在监控时手动移动机械臂。 按 'r' 重置中位位置。 按 'l' 切换电机锁定状态(启用/禁用扭矩)。 原始位置: 电机 1: [2911], 电机 2: [1678], 电机 3: [3691], 电机 4: [2200], 电机 5: [1357], 电机 6: [1903], 电机 7: [2062] -
转动遥操主臂各个关节,你会看到电机位置数值变化
飞特总线舵机编码器的分辨率是 4096,即你会看到位置在(0~4096)范围内
-
切换英文输入法,按
r,会提示:请手动移动机械臂到新的中位位置,然后按回车...如果没有响应,可以先按一下回车键
-
将遥操主臂各个关节转到它的中间位置(编码器 2048 的位置),大概如下:
- 不必要求特别精准,大概在中位就行了
- 需要注意夹爪支架的方向,不然校准后不顺手
- 需要注意夹爪手指环的要尽量在中位,不然可能遥操作的执行的主臂夹爪抓不紧
- 当然,校准不是一次性的,如果不满意,随时可以重新校准
侧视图 后视图 正视图 


-
保持遥操主臂静止,按回车键,你会看到输出的电机角度全部校准为了 2048
-
退出中位校准程序,保持遥操主臂通电、数据线连接电脑。
1.3 机械臂遥操作测试
操作时,注意安全!!!
操作时,注意安全!!!
操作时,注意安全!!!
第一次最好找一个助手协助,如果执行的从臂异常运动,可以及时断电(注意用手托住关节)
-
修改 Episode1 机械臂(注意,不是遥操主臂)六个驱动板的参数,将
Response改为None,如果不会修改,请查看这里 -
Episode1 机械臂插上夹爪控制盒,夹爪先不用装在机械臂末端(还没有安装相机)
-
下载最新版上位机(V0.9.8 以上)
-
Episode1 机械臂上电,用上位机归零、回到默认位置
-
上位机关闭”启用日志“、”启用状态刷新“ 复选框
-
提前以下列姿态手握一下遥操主臂
- 遥操作测试脚本运行的时候,机械臂会先运转到下面的姿态(机械臂遥操作准备状态)
- 为了让主臂、从臂初始姿态尽量一致,建议以图二姿态握住遥操主臂
机械臂遥操作准备状态 建议遥操主臂初始握住姿态 

-
运行指令:
操作时,注意安全!!!
下面是低速模式的配置,请不要改动
robot.ip_address、robot.port和teleop.port外其他参数,以免发生危险!python -m lerobot.teleoperate \ --robot.ip_address="localhost" \ --robot.port=12345 \ --robot.type=enpei_follower \ --robot.id=enpei_follower \ --robot.cameras="{ }" \ --teleop.type=enpei_leader \ --teleop.port=/dev/ttyACM0 \ --teleop.id=enpei_leader \ --fps=30\ --display_data=false \ --enpei_speed_mode=recordrobot 表示从臂执行臂相关参数,telep 表示遥操主臂相关参数,在测试时,你只需要修改
robot.ip_address、robot.port和teleop.port参数 是否需要修改 解释 robot.ip_address="localhost"✅ 是 上位机 API 的 IP 地址 robot.port=12345✅ 是 上位机 API 的端口 robot.type=enpei_follower否 从臂类别,方便框架识别 robot.id=enpei_follower否 从臂 ID,方便框架识别 robot.cameras="{ }"否 相机参数,测试时暂不需要填写,实际采集数据的时候需要 teleop.type=enpei_leader否 主臂类别,方便框架识别 teleop.port=/dev/ttyACM0✅ 是 主臂端驱动板端口,可通过 ls /dev/ttyACM*查询teleop.id=enpei_leader否 主臂 ID,方便框架识别 fps=30否 控制频率,范围 0~100,越大,遥操作响应越快 display_data=false否 rerun.io可视化enpei_speed_mode=record否 速度模式 -
一切正常的话,程序启动后,便可以用遥操主臂操作从臂了,请检查:
-
分别转动主臂前 6 个关节,看看从臂能否跟着转动
-
看看夹爪能否控制
-
终端应该有类似如下输出:
-
-
自己遥操作熟练一下,如果需要退出,在终端按
Ctrl+C退出程序 -
高速模式:
操作时,注意安全!!!
操作时,注意安全!!!
操作时,注意安全!!!
python -m lerobot.teleoperate \ --robot.ip_address="localhost" \ --robot.port=12345 \ --robot.type=enpei_follower \ --robot.id=enpei_follower \ --robot.cameras="{}" \ --teleop.type=enpei_leader \ --teleop.port=/dev/ttyACM0 \ --teleop.id=enpei_leader \ --fps=100\ --display_data=false \ --enpei_speed_mode=teleop
2. 安装测试相机
-
运行:
python -m lerobot.episode_default_position [--ip=IP地址] [--port=端口号],让从臂运行到遥操默认位置,方便安装相机和夹爪 -
先安装腕部相机,再安装夹爪
- 相机尽量在正前方,这样可以拍到夹爪
- 可以用魔术贴扎带将线固定好
位置 1 位置 2 

-
将固定位相机也摆好:
-
两个相机的 USB 线插入电脑 USB 口,最好是 USB3 口
- 如果线不够长,需要自购一根 USB3 延长线
- 如果电脑没有多余的 USB3 接口,需要自购 USB3 扩展坞
-
运行:
python -m lerobot.find_cameras opencv,应该输出类似信息:--- Detected Cameras --- Camera #0: Name: OpenCV Camera @ /dev/video0 Type: OpenCV Id: /dev/video0 Backend api: V4L2 Default stream profile: Format: 16.0 Width: 640 Height: 480 Fps: 30.0 -------------------- Camera #1: Name: OpenCV Camera @ /dev/video2 Type: OpenCV Id: /dev/video2 Backend api: V4L2 Default stream profile: Format: 16.0 Width: 640 Height: 480 Fps: 30.0 -------------------- Finalizing image saving... Image capture finished. Images saved to outputs/captured_images-
必须有 2 个相机(分割线分割),如果数量不对,请检查连线
-
FPS 必须都要达到 30
-
确定 ID,去
outputs/captured_images下保存的图片查看- 结合文件名和拍摄内容,可以看到腕部相机 ID 是 2,固定位是 0
- 腕部相机必须要能看到柔性夹爪的手指(下方蓝色手指),否则需要调整你的相机位置
opencv__dev_video0.png opencv__dev_video2.png 

-
-
结合相机,再次遥操作:
- 注意到
handeye用的index_or_path是 2,fixed用的是 0 display_data=true表示打开rerun.io可视化(要在 Ubuntu 本机,不能是 SSH 远程)
python -m lerobot.teleoperate \ --robot.ip_address="localhost" \ --robot.port=12345 \ --robot.type=enpei_follower \ --robot.id=enpei_follower \ --robot.cameras="{ handeye: {type: opencv, index_or_path: 2, width: 320, height: 240, fps: 30}, fixed: {type: opencv, index_or_path: 0, width: 320, height: 240, fps: 30}}" \ --teleop.type=enpei_leader \ --teleop.port=/dev/ttyACM0 \ --teleop.id=enpei_leader \ --fps=30\ --display_data=true \ --enpei_speed_mode=record一切正常的话,理应打开下图窗口:

- 注意到