【免费下载链接】trlc-dk1

TRLC's Developer Kit 1

项目地址: https://gitcode.com/gh_mirrors/tr/trlc-dk1
点击查看 免费下载

TRLC-DK1 是 The Robot Learning Company 开源的 AI 机器人开发套件(Developer Kit 1),它由一对 3D 打印的主从机械臂组成:人手握"主臂"(Leader)演示动作,"从臂"(Follower)通过 LeRobot 框架实时跟随,从而完成遥操作(Teleoperation)并录制训练 AI 策略所需的数据。本指南将带你从 0 开始,完成环境安装、串口识别,直到跑通单臂遥操作、双臂(Bimanual)录制,并理解其背后的 250 Hz 实时控制架构。

🦾 认识 TRLC-DK1:主臂 + 从臂的分工

系统包含两台 6 自由度机械臂,结构几乎对称,但定位完全不同:

部件角色电机特点
Leader(主臂)人手握持操作7 个 Dynamixel XL330-M077带扳机手柄,读取关节角度作为指令
Follower(从臂)执行实际任务3× DM4340 + 4× DM4310 总线舵机高扭矩,支持阻抗控制与夹爪

TRLC-DK1主从机械臂结构透视图,展示主臂与从臂的遥操作对应关系

TRLC-DK1从臂(Follower)的CAD三维模型,带夹爪的6自由度机械臂

TRLC-DK1主臂(Leader)的CAD三维模型,带握持手柄与扳机结构

所有机械结构的 CAD 源文件都开放在仓库中,方便你自行 3D 打印,例如从臂的完整 STEP 文件:hardware/TRLC-DK1-Follower_v0.3.0.step,各连杆 STL 打印件位于 hardware/leader_STLs/ 与 hardware/follower_gripper_STLs/。

📦 环境准备:三步完成安装

项目基于 LeRobot 的插件约定(plugin conventions),安装后会被 LeRobot 自动识别为 dk1_follower / dk1_leader 设备。

第 1 步:克隆仓库

git clone https://gitcode.com/gh_mirrors/tr/trlc-dk1
cd trlc-dk1

第 2 步:创建虚拟环境并安装

uv venv
uv pip install -e .

依赖定义在 pyproject.toml 中,要求 Python ≥ 3.12,核心依赖包括 pyserial(串口通信)、dynamixel-sdk(主臂舵机)、lerobot>=0.5.1 与 mujoco(重力补偿用物理模型)。

💡 提示:-e . 以可编辑模式安装,修改源码后无需重新安装即可生效。

🔍 第 2 步:找到串口与相机端口

主臂、从臂、相机都需要 USB 端口号(如 /dev/ttyACM0),使用 LeRobot 提供的 CLI 工具一键查找:

uv run lerobot-find-port
uv run lerobot-find-cameras

操作技巧:先运行命令,再逐个插入设备,新出现的那一行就是对应端口。建议用表格记录,后面遥操作命令会用到:

设备端口示例
Follower(从臂)/dev/ttyACM0
Leader(主臂)/dev/ttyACM1
头部相机 / 腕部相机0 / 1(索引)或 /dev/video*

🚀 首次遥操作:单臂实时控制

确认端口后,用 LeRobot 的 lerobot-teleoperate 命令即可让从臂跟随主臂:

uv run lerobot-teleoperate \
    --robot.type=dk1_follower \
    --robot.port=/dev/ttyACM0 \
    --teleop.type=dk1_leader \
    --teleop.port=/dev/ttyACM1 \
    --robot.cameras="{
        context: {type: opencv, index_or_path: 0, width: 960, height: 540, fps: 60},
        wrist: {type: opencv, index_or_path: 1, width: 960, height: 540, fps: 60, rotation: 180}
      }" \
    --display_data=true

参数含义一目了然:

  • --robot.type=dk1_follower:启用从臂,即 lerobot_robot_trlc_dk1/follower.py 中注册的 DK1Follower
  • --teleop.type=dk1_leader:启用主臂遥操作器,对应 lerobot_robot_trlc_dk1/leader.py 中的 DK1Leader
  • --robot.cameras:定义头部(context)与腕部(wrist)两个 OpenCV 相机
  • --display_data=true:实时显示相机画面与关节状态

⚠️ 安全提示:从臂默认启用阻抗控制,断电瞬间不会"塌臂",但仍建议在从臂下方放置防护区域后再启动。

如果你不想用 CLI,也可以直接运行 Python 示例 examples/teleop.py:它把主臂 get_action() 的读数以 200 Hz 喂给从臂 send_action(),是最小可用的遥操作闭环。

🤖 进阶:双臂遥操作与数据录制

TRLC-DK1 支持两套主臂 + 两套从臂的双手机器人形态,设备类型为 bi_dk1_follower / bi_dk1_leader(实现见 lerobot_robot_trlc_dk1/bi_leader.py 与 lerobot_robot_trlc_dk1/bi_follower.py)。

录制训练数据集时,用 lerobot-record 一条命令搞定,它会同时驱动双主臂、双从臂与三台相机:

uv run lerobot-record \
    --robot.type=bi_dk1_follower \
    --robot.right_arm_port=/dev/ttyACM0 \
    --robot.left_arm_port=/dev/ttyACM1 \
    --teleop.type=bi_dk1_leader \
    --teleop.right_arm_port=/dev/ttyACM2 \
    --teleop.left_arm_port=/dev/ttyACM3 \
    --robot.cameras="{
        head: {type: opencv, index_or_path: /dev/video0, width: 960, height: 540, fps: 60},
        right_wrist: {type: opencv, index_or_path: /dev/video2, width: 960, height: 540, fps: 60, rotation: 180},
        left_wrist: {type: opencv, index_or_path: /dev/video4, width: 960, height: 540, fps: 60, rotation: 180}
      }" \
    --dataset.repo_id=$USER/my_test_dataset \
    --dataset.push_to_hub=false \
    --dataset.num_episodes=3 \
    --dataset.episode_time_s=30 \
    --dataset.reset_time_s=20 \
    --dataset.single_task="Test the LeRobot recording pipeling."

💡 把 --dataset.push_to_hub=false 保持为 false 可先保存到本地验证流程无误,之后再上传共享。

对应的纯 Python 双机演示脚本是 examples/bi_teleop.py。

⚙️ 理解实时性:两种控制模式

DK1Follower 提供两种控制模式,通过 DK1FollowerConfig.control_mode 切换:

模式原理适用场景
impedance(默认)MIT 力矩模式 + MuJoCo 重力补偿,250 Hz 后台线程持续执行跟随自然流畅,适合遥操作与数据采集
pos_vel原始位置-速度模式,按 joint_velocity_scaling 限速兼容旧版驱动逻辑,调试参考

核心架构在 trlc_dk1_control/robot.py 中,采用双线程设计:

  1. 电机线程(250 Hz):位于 trlc_dk1_control/motor_chain.py,独占串口 I/O,向 6 个臂关节发送 MIT 指令、向夹爪发送力矩-位置指令;
  2. 服务线程(~250 Hz):读取关节状态、用 MuJoCo 计算重力补偿(trlc_dk1_control/gravity_comp.py)、执行位置/力矩裁剪与过流保护,再把最新指令推给电机线程。

这意味着上层代码可以任意频率调用 command_joint_pos() / get_joint_state() 而不会阻塞控制环——实时性由底层线程保证。所有增益、关节限位、安全看门狗参数集中在 trlc_dk1_control/config.py,例如 motor_thread_hz=250、command_timeout_s=0.5(命令超时后自动保持上一目标位)。

主臂侧的实现更轻量:leader.py 用 sync_read 一次读取 7 个 XL330 的 Present_Position,将 4096 步原始读数换算为弧度,夹爪则归一化到 0(开)~1(闭)区间。

🧪 常用调试脚本速查

仓库 examples/ 目录提供了几个上手最快的调试入口:

脚本作用
examples/leader_test.py只读主臂,验证主臂连接与读数
examples/follower_read_position.py只读从臂各关节位置
examples/teleop.py单臂遥操作闭环(200 Hz)
examples/bi_teleop.py双臂遥操作闭环
examples/calibration_follower.py / examples/calibration_leader.ipynb主从臂标定
examples/read_motor_params.py读取从臂电机参数
examples/uvc_cam_test.py测试 UVC 相机

🔧 若从臂串口不通,可用 lerobot_robot_trlc_dk1/motors/DM_Control_Python/DM_Motor_Test.py 单独测试 DM 舵机总线(协议说明见同目录 README_zh.md)。

📐 仿真预览:URDF 与 MuJoCo 模型

不想真机试错?从臂的完整 URDF(含视觉 GLB 与碰撞 STL 网格)位于 urdf/follower/,主文件为 urdf/follower/TRLC-DK1-Follower.urdf。阻抗模式下的重力补偿正是基于该模型在 MuJoCo 中计算,控制参数中的关节限位也与其 <limit> 标签严格保持一致,避免"限位不一致导致补偿力矩异常"的隐患。

TRLC-DK1从臂的URDF/MuJoCo仿真渲染图,用于仿真与重力补偿

✅ 总结:你的 TRLC-DK1 遥操作路线

  1. 装好环境:git clone → uv venv → uv pip install -e .;
  2. 找到端口:lerobot-find-port 记录主臂、从臂、相机的设备号;
  3. 跑通单臂遥操作:lerobot-teleoperate --robot.type=dk1_follower --teleop.type=dk1_leader;
  4. 升级双臂录制:lerobot-record 采集 AI 策略训练数据;
  5. 深入调参:修改 trlc_dk1_control/config.py 中的 PD 增益、限位与看门狗参数。

掌握这条"主臂读数 → LeRobot 动作空间 → 从臂 250 Hz 实时执行"的链路,你就完成了从 0 到实时控制 TRLC-DK1 机械臂的全过程 🎉。

【免费下载链接】trlc-dk1

TRLC's Developer Kit 1

项目地址: https://gitcode.com/gh_mirrors/tr/trlc-dk1
点击查看 免费下载
Logo

聚焦RDK与具身智能,汇集机器人开发教程、开源案例和技术交流

更多推荐