好文集ChatGPT Plus¥119

让机械臂学会整理文具:从第一次遥操作到 AI 自主抓取

文章目录

部分视频或图片暂未收录,已在正文保留提示;需要时可查看原文。查看原文 ↗

第一次接触机械臂,最容易遇到的困难,一般都是不知道应该从哪里开始。而且很多专业术语,看似都见过,但却不知道他们的关系。

这篇文章会从一个具体任务开始:

  1. 桌上有两支笔、一块橡皮擦和一个笔筒

  2. 先由你操作机械臂,把文具放进笔筒

  3. 电脑记录操作过程,再用这些记录训练模型

  4. 让模型根据摄像头画面和机械臂状态,尝试自己完成同样的任务。

带你理解整个过程。

文章配图

这次要学习的文具整理任务

开始之前,先认清几个工具

我们可以把整个实验理解成给机械臂上课。

  • LeRobot

负责记录和整理你的示范,你抓起一支笔时,它会同时保存摄像头拍到的画面、机械臂各关节的位置,以及发给机械臂的动作指令。整理后的记录,就叫数据集。

  • Isaac Sim

电脑里的机器人实验室,里面有虚拟机械臂、桌面、物体和摄像头,可以在这个环境中操作机械臂,收集仿真数据。

  • Cosmos

用来扩展视频里的场景外观,比如把固定背景换成另一种实验室环境,让训练数据接触更多视觉变化。生成结果还需要检查,不能直接全部拿来训练。

  • GR00T

负责学习和预测动作的模型,它接收画面、任务文字和机械臂当前状态,预测接下来应该怎么动。

VLA 是 Vision、Language、Action,分别对应视觉、语言和动作。

  • Jetson

最后用来运行模型的小型计算设备,前期可以用电脑完成验证,之后再把模型放到 Jetson 上,让它在机械臂旁边运行。

TensorRT 则帮助模型在目标设备上更高效地执行。

  • Sim-to-Real

把仿真中学到或验证过的能力,迁移到真实机器人上。包含真实数据采集、仿真采集、训练和部署;其中仿真采集是可选步骤。

第一次做,建议按这个顺序推进:

  1. 先让机械臂跟着你动

  2. 再录好示范

  3. 接着训练并验证自主操作

  4. 最后尝试仿真、视频增强和 Jetson 部署

每完成一步,都先确认结果,再往下走。

第一步:准备设备,搭一个固定的操作场地

先把实验里各个设备的作用弄明白:

设备用来做什么
reBot Arm B601-RS实际抓取文具的机械臂,称为“从臂”
Star Arm 102由人手动操作的控制臂,称为“主臂”
USB-CAN 适配器让电脑通过 CAN 通信控制 B601-RS
两路 USB 摄像头从不同视角拍摄操作过程
对应的电源、线缆和固定工作台给设备供电,并保持操作位置稳定
Linux 电脑运行控制、数据采集和后续训练相关程序
Jetson AGX Orin 或 Thor在最后的边缘部署阶段使用

“主臂”和“从臂”可以这样理解:你用手移动主臂,从臂按照对应的指令运动。这个过程叫遥操作。它让你能够通过示范教机器人完成任务。

仿真部分使用 Ubuntu 22.04 和 Isaac Sim 4.5,并需要兼容的 NVIDIA RTX GPU。训练和推理也需要适配的 GPU 环境,不能把运行采集程序的电脑配置,直接当作训练配置。

先把 B601-RS 底座固定好,把笔筒放在容易够到的位置,再安装摄像头。两路画面都应看得到任务相关的区域,避免夹爪一靠近文具就完全遮住目标。

两个图像通道命名为 front 和 side,这两个名字后面会一直用到。记下各自对应哪台摄像头、哪个实际视角,训练和运行模型时都沿用这份对应关系。

文章配图

工作台与相机布置。固定相机和灯光,有助于减少第一次实验中的变化因素。

一个稳定的场地:机械臂固定、文具在工作范围内、相机能够看清操作区域。

接线时保持机械臂动力电源关闭。

第二步:安装软件,让电脑认识机械臂

接下来在 Linux 电脑上打开终端。下面的命令都在终端执行,每一组执行成功后,再继续下一组。

先安装基础工具。Git 用来下载代码,FFmpeg 用来处理录制的视频,uv 用来管理 Python 环境和依赖:

sudo apt update
sudo apt install -y git ffmpeg curl
curl -LsSf https://astral.sh/uv/install.sh | sh
export PATH="$HOME/.local/bin:$PATH"
uv --version

最后一条命令能输出版本号,就说明当前终端已经可以使用 uv。

以后新开终端,如果提示找不到 uv,可以重新执行上面的 export PATH=...,或按安装程序提示加载环境。

然后建立工作目录,下载教程使用的三个项目:

mkdir -p ~/rebot_lerobot
cd ~/rebot_lerobot

git clone https://github.com/Seeed-Projects/lerobot.git
git clone https://github.com/Seeed-Projects/lerobot-teleoperator-rebot-arm-102.git
git clone https://github.com/Seeed-Projects/lerobot-robot-seeed-b601.git

创建并启用 Python 虚拟环境,然后安装软件:

uv venv --python 3.12 .venv
source .venv/bin/activate

uv pip install -e ./lerobot
uv pip install -e ./lerobot-teleoperator-rebot-arm-102
uv pip install -e ./lerobot-robot-seeed-b601
uv pip install motorbridge

虚拟环境可以理解成这个实验专用的 Python 工具箱,让它使用自己的依赖。后面每次新开终端,需要先进入工作目录并启用它:

cd ~/rebot_lerobot
source .venv/bin/activate

接下来确认设备接口。主臂通常通过串口连接,从臂在本文的示例中通过 SocketCAN 连接。可以先查看系统发现了哪些设备:

ls /dev/ttyUSB*
ip -brief link

下面以主臂 /dev/ttyUSB0、从臂 CAN 接口 can0 为例。先确认它们确实对应自己的设备,再设置权限和 CAN 通信:

sudo chmod 666 /dev/ttyUSB0
sudo ip link set can0 down
sudo ip link set can0 type can bitrate 1000000 restart-ms 100
sudo ip link set can0 up
ip -details -statistics link show can0

1000000 是教程使用的 CAN 波特率,表示每秒 100 万比特。最后一条命令用于检查接口状态。

如果没有找到 can0,先检查适配器识别和驱动,出现 BUS-OFF 等总线错误时,先解决通信问题。

这组配置针对 B601-RS 和 SocketCAN,第一次操作时要保持机械臂型号、驱动类型和适配器一致。

第三步:校准,然后试着让机械臂跟着你动

校准的作用,是让程序知道机械臂的参考位置。可以把它理解成:开始测量之前,先把尺子的零刻度对齐。

在机械臂周围留出空间,按硬件指南完成上电准备,运行从臂校准命令:

lerobot-calibrate \
  --robot.type=seeed_b601_rs_follower \
  --robot.port=can0 \
  --robot.id=follower1 \
  --robot.can_adapter=socketcan

按照终端提示,把从臂放到下图的零位,夹爪完全闭合。

确认姿态正确后,再根据提示继续。

文章配图

校准时使用的从臂零位参考

接着校准主臂:

lerobot-calibrate \
  --teleop.type=rebot_arm_102_leader \
  --teleop.port=/dev/ttyUSB0 \
  --teleop.id=rebot_arm_102_leader

两边完成后,运行遥操作命令:

lerobot-teleoperate \
  --robot.type=seeed_b601_rs_follower \
  --robot.port=can0 \
  --robot.id=follower1 \
  --robot.can_adapter=socketcan \
  --teleop.type=rebot_arm_102_leader \
  --teleop.port=/dev/ttyUSB0 \
  --teleop.id=rebot_arm_102_leader

先做小幅、缓慢的动作,观察从臂是否按预期跟随,夹爪能否正常张开和闭合。熟悉之后,再尝试抓起一支笔、移动到笔筒上方、松开夹爪。

媒体暂未收录,可在原文中查看

主从臂遥操作演示

目标是你可以稳定地通过主臂控制从臂。

如果方向异常、动作突然跳变或连接不稳定,应先停下检查。发生断电或通信异常后,停止程序、检查机械臂状态并按指南重新初始化,再恢复操作。

第四步:把你的操作录下来

机械臂已经能跟着你动了。接下来是让电脑把“你看到了什么、机械臂处于什么姿态、你让它怎么动”一起记录下来。

先确认摄像头:

lerobot-find-cameras

查看命令输出,以及 ~/rebot_lerobot/outputs/captured_images 中的预览图,确认哪一路是 front、哪一路是 side。

USB 重插后设备编号可能改变,因此每次开始采集前都应该检查。

文章配图

通过预览图确认相机对应的设备编号,避免两路画面接反

下面的录制示例参数,把试录数量调整为 3 回合,方便先检查流程。相机编号 6 和 0 是示例值,运行前必须换成你刚刚确认的编号。

lerobot-record \
  --robot.type=seeed_b601_rs_follower \
  --robot.port=can0 \
  --robot.id=follower1 \
  --robot.can_adapter=socketcan \
  --robot.cameras='{front: {type: opencv, index_or_path: 6, width: 640, height: 480, fps: 30, fourcc: "YUYV"}, side: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30, fourcc: "YUYV"}}' \
  --teleop.type=rebot_arm_102_leader \
  --teleop.port=/dev/ttyUSB0 \
  --teleop.id=rebot_arm_102_leader \
  --display_data=false \
  --dataset.repo_id=local/organize_stationery_trial \
  --dataset.num_episodes=3 \
  --dataset.single_task="Organize stationery" \
  --dataset.push_to_hub=false \
  --dataset.episode_time_s=25 \
  --dataset.reset_time_s=5

命令比较长,先理解其中几个重要参数:

参数用通俗的话解释
repo_id这份数据集的名字;正式采集时可以使用新的名字
num_episodes录几次完整操作;一次完整操作叫一个 episode
single_task这份示范对应什么任务,这里是“整理文具”
episode_time_s每次操作最多录多长时间,单位是秒
reset_time_s两次录制之间留多少时间,用来把文具摆回去
push_to_hub=false先保存在本地,不自动上传

25 秒和 5 秒都是原教程的示例值。第一次操作可能更慢,可以根据需要增加录制时间和重置时间。不要因为倒计时快结束,就急着做完动作。

录制时,跟着终端提示开始操作。把两支笔和橡皮擦放进笔筒,再把场景恢复到下一次示范的起始状态。快捷键:右箭头提前结束当前阶段,左箭头取消当前回合并重录,ESC 停止录制会话。

这 3 回合只用于确认采集链路。检查没有问题后,再用新的数据集名称进行正式采集。实际需要多少数据,要看任务变化和模型表现。

文章配图

操作主臂的同时,记录从臂状态和双摄像头画面

第五步:先检查数据,再花时间训练

录到视频,只能说明摄像头工作了。要用来训练模型,还要检查动作和状态是否一起保存,而且对应同一个时刻。

数据通常保存在 ~/.cache/huggingface/lerobot 下。以前面的试录为例,可以这样查看第一回合:

lerobot-dataset-viz \
  --repo-id local/organize_stationery_trial \
  --root ~/.cache/huggingface/lerobot/local/organize_stationery_trial \
  --mode local \
  --episode-index 0 \
  --display-compressed-images false

这里的 0 表示第一个回合,修改 episode-index 可以检查后面的回合。若日志显示的数据目录不同,以实际保存位置为准。

回放时重点看几件事:

  • 两路画面是否正常,有没有黑帧或严重遮挡;

  • 夹爪闭合时,记录的夹爪状态是否也在变化;

  • 操作是否包含从接近物体到释放物体的完整过程。

如果示范中掉落了笔、抓取失败,或者最后没有放进笔筒,先把这些回合标出来。用于这次模仿学习的示范,应优先选择任务完成、动作清楚的回合。

正式采集时,可以在机械臂够得到的范围内,适当改变文具的起始位置。这样模型会接触不同情况。每次增加变化,都要确认你仍然能够稳定完成示范。

第六步:在电脑里练习采集,认识 Isaac Sim

有了真实数据的基础,再看仿真就容易理解了:你仍然操作主臂,只是跟随它运动的机械臂出现在电脑屏幕里。

这一部分是可选练习。

安装 Isaac Sim 4.5

开始前请确认以下条件:

  • Ubuntu 22.04;

  • NVIDIA RTX GPU 且 Isaac Sim 4.5 能够正常启动;

  • Isaac Sim 默认安装在 ~/isaacsim;

  • LeRobot 环境位于 ~/rebot_lerobot/.venv;

  • reBot Arm 102 Leader 已通过 USB-UART 连接至计算机并完成校准。

在 Ubuntu 主机的终端中运行以下命令,下载源码:

cd ~
git clone https://github.com/yuyoujiang/rebot-arm-dli-isaacsim.git

进入项目目录并启动Isaac Sim 遥操作:

cd ~/rebot-arm-dli-isaacsim
./run.sh --leader-port /dev/ttyUSB0

项目默认假设 Isaac Sim 位于 ~/isaacsim,LeRobot 环境位于 ~/rebot_lerobot/.venv。如果安装位置不同,需要按原教程修改启动参数。

启动后,先点击仿真窗口,让它接收键盘输入。然后按顺序操作:

  1. 按 R 重置场景,检查文具位置和两路相机画面。

  2. 按 S 开始录制。

  3. 移动主臂,控制虚拟机械臂完成收纳。

  4. 松开夹爪,等待物体稳定,并确认出现 [SUCCESS]。

  5. 再按 S 保存,等终端显示 Episode saved。

如果抓取失败,按 C 取消当前回合,再用 R 开始下一次。

媒体暂未收录,可在原文中查看

通过主臂在 Isaac Sim 中采集示教。虚拟机械臂的动作依然由人控制

重置场景时,项目会对物体、光照和相机等条件做随机变化,让采集到的示范更丰富。

仿真数据保存后,也要检查画面与动作同步。准备和真实数据一起训练前,还需要确认关节顺序、单位、图像键和任务定义能够对应。

仿真有助于增加数据,但真实机械臂还有摩擦、通信延迟、相机误差等影响。最终是否能完成任务,仍要回到真实设备上验证。

第七步:让示范视频接触更多背景,认识 Cosmos

假设你一直在同一张桌子、同一盏灯下采集数据,模型可能对这个画面过于熟悉。换个背景后,它的表现就可能变差。

用 Cosmos3 Transfer 对视频做场景增强,需要三类输入:

  • 原始操作视频

  • 描述目标场景的文字

  • 帮助约束画面结构的控制信号

其中,Canny 边缘图把轮廓提取出来,帮助约束机械臂和物体的形状。SAM2 分割图标出不同区域,帮助模型分清主体和背景。

暂时不需要掌握它们的算法,先理解它们为什么出现在流程里。

文章配图

共同用于生成增强视频,可结合原视频和增强后的视频查看变化

控制权重:edge=0.9、seg=0.1 ,可以把它理解成:生成新场景时,更强调保留画面轮廓,再用分割信息辅助约束区域。

生成后仔细检查:

  • 夹爪有没有变形

  • 笔有没有突然消失

  • 物体和机械臂的接触是否合理

  • 动作时刻有没有变化

只有增强视频仍然与原来的动作记录对应,才有继续复用这些标签的依据。

这一部分涉及额外的模型、显存和视频处理环境,适合在基本训练流程完成后,单独尝试。最后通过真实任务测试,判断增强数据是否带来改善。

第八步:让 GR00T 学习你的示范

现在可以把整理好的数据交给模型。这个过程叫微调:从一个已有能力的模型出发,用自己的任务数据继续训练,让它适应这台机械臂和文具整理任务。

先安装教程使用的 Isaac-GR00T 环境。在 Linux 主机上另开终端:

sudo apt install -y git-lfs ffmpeg
git lfs install
cd ~
git clone --recurse-submodules https://github.com/NVIDIA/Isaac-GR00T
cd ~/Isaac-GR00T
uv sync --python 3.12

接下来处理数据格式。前面采集的 LeRobot v3 数据,需要按教程转换成此训练流程使用的 v2 格式。

下面以试录数据展示转换命令。正式训练时应改成正式数据集的路径:

cd ~/Isaac-GR00T
uv run --project scripts/lerobot_conversion \
  python scripts/lerobot_conversion/convert_v3_to_v2.py \
  --repo-id "$HOME/.cache/huggingface/lerobot/local/organize_stationery_trial"

转换完成后,记下程序输出的新数据目录,是后面训练需要填写的路径。

还需要准备两个配置文件,它们相当于数据的说明书:

文件它告诉模型什么
转换后数据集中的 meta/modality.json哪些字段是图像、关节状态、动作和任务文字
examples/rebot_arm/rebot_config.py训练时如何读取这些字段,以及怎样表示动作

保存到对应位置,再核对自己的数据。

其中最需要看懂的是:

  • 机械臂有 6 个关节,再加 1 个夹爪,共 7 个控制维度;

  • 两个摄像头分别映射到 front 和 side;

  • 任务文字说明要做什么。

不能随便改顺序,同一串数字,第一项表示肩部还是肘部,会直接改变执行结果。采集、训练和实际控制必须对同一个位置使用同一个含义。

文章配图

GR00T 接收图像、任务文字和机器人状态,再预测动作。第一次实践先把输入输出关系理解清楚即可

准备好配置和正式数据后,启动微调:

cd ~/Isaac-GR00T
export SAVE_STEPS=5000

bash examples/finetune.sh \
  --base-model-path nvidia/GR00T-1.7-3B \
  --dataset-path /path/to/converted_dataset \
  --modality-config-path examples/rebot_arm/rebot_config.py \
  --embodiment-tag NEW_EMBODIMENT \
  --output-dir "$HOME/rebot_training_output"

/path/to/converted_dataset 是占位写法,要替换成刚才转换得到的正式数据目录。

SAVE_STEPS=5000 表示保存检查点的间隔,不是总训练步数。

训练期间会输出 loss 等数值,可以观察模型学习过程。不过,loss 下降并不保证机械臂已经会抓取,下一步还要实测。

训练产生的 checkpoint-... 文件夹,就是某个训练时刻保存的模型。记下你要使用的检查点路径,保留配套配置和统计文件。

若出现显存不足,应按训练项目文档调整配置或使用合适的训练设备。

第九步:让模型尝试控制真实机械臂

大致流程是:

  1. 摄像头和关节传感器提供当前情况

  2. 模型给出动作

  3. 机械臂执行一部分动作

  4. 再读取新的情况,继续预测。

这种不断观察和调整的过程,叫闭环控制。

服务器负责运行模型,客户端负责读设备、发送观测和执行动作。初次验证可以在同一台电脑的两个终端中运行。

先在第一个终端启动模型服务器:

cd ~/Isaac-GR00T
uv run python gr00t/eval/run_gr00t_server.py \
  --model-path /path/to/your/checkpoint \
  --embodiment-tag NEW_EMBODIMENT

把检查点路径换成实际保存的目录,等服务器完成加载。

另一个终端的客户端代码保存为 eval_rebot_arm_rs.py:

# follower
sudo ip link set can0 down 2>/dev/null
sudo ip link set can0 type can bitrate 1000000 restart-ms 100
sudo ip link set can0 up

python eval_rebot_arm_rs.py \
  --robot-port can0 \
  --robot-id follower1 \
  --front-camera /dev/video0 \
  --side-camera /dev/video6 \
  --policy-host 127.0.0.1 \
  --policy-port 5555 \
  --instruction \"Organize stationery\" \
  --duration-s 25 \
  --execute

运行客户端的 Python 环境必须同时能够导入 LeRobot、B601 插件和 GR00T 所需依赖,具体按该模块准备。

先读清客户端的参数说明:

python eval_rebot_arm_rs.py --help

客户端需要填写 CAN 接口、两路相机、服务器地址、任务指令和运行时长。

电脑本机的地址使用 127.0.0.1,教程的服务端口是 5555。相机编号要根据当前设备重新确认,再保持 front 和 side 的实际视角与训练一致。

客户端中的动作限幅、平滑和关节方向处理也要保留。程序里已经处理过的夹爪缩放,不要再手动重复乘一次。

使用 --execute 参数允许客户端发送真实动作。先完成服务器通信、设备映射和动作配置检查,再按教程开启执行。

首次尝试时留出清晰的操作区域,并确保能够立即停止机械臂动力。

媒体暂未收录,可在原文中查看

演示效果,自己的训练结果需要另行验证。

观察失败时,尽量确认是没对准笔,抓起后掉落,还是移动到了笔筒旁边却没有放进去?

这些具体记录,比模型效果不好更能帮助你安排下一轮采集。

可以先在一组固定起始条件下重复测试,再逐步改变文具的位置。记录成功次数、总次数和人工干预情况,比较不同检查点的表现。

第十步:把已经验证过的模型搬到 Jetson

电脑上的自主操作稳定后,再进行 Jetson 部署。这个阶段的目标,是把模型放到机械臂附近的设备上运行。

平台以 Jetson AGX Orin 和 Thor 的 JetPack 7.2 为例,JetPack 是 Jetson 的系统和开发软件套件。

安装完成后,要检查 USB-CAN 驱动、相机和存储空间。

文章配图

Jetson 连接摄像头和 USB-CAN,再通过 CAN 控制机械臂。USB 接口不足时按教程使用带供电的集线器。

部署四步骤:

  1. 装好系统和硬件驱动。 确认 Jetson 正常启动,CAN 接口可用,两路相机可以预览。

  2. 安装对应的软件环境。 Orin 和 Thor 使用各自的安装脚本。

  3. 准备模型和数据。 包括微调检查点、配置与统计文件、Cosmos-Reason2-2B backbone,以及与训练配置一致的数据集。backbone 可以理解成完整模型依赖的基础组件,不能只复制一个权重文件就结束。

  4. 生成并验证 TensorRT 引擎。 先用离线数据检查模型能否运行,再连接真实机械臂。

准备主机

准备一台 Ubuntu 主机,要求:

  • 至少 25 GB 可用空间,用于 SDK Manager 和 JetPack 软件包;

  • 一根可靠的 USB Type-C 数据线;

  • 稳定的网络连接;

  • 管理员访问权限。

从官方下载页面安装 NVIDIA SDK Manager:

进入强制恢复模式

  • Jetson AGX Thor 开发者套件
  1. 关闭 Jetson 电源。

  2. 将其恢复 USB Type-C 端口连接到主机。

  3. 按住强制恢复按钮。

  4. 按下并释放 Reset,同时继续按住强制恢复按钮。

  5. 释放强制恢复按钮。

  6. 确认 SDK Manager 检测到目标设备。

标记按钮
11电源
12强制恢复
13复位

文章配图

  • Jetson AGX Orin 开发者套件

Jetson AGX Orin 开发者套件使用与 Jetson AGX Thor 开发者套件不同的按钮和接口编号。按照下方 NVIDIA 官方图示中的标签操作。

提示: 开始前必须为开发者套件通电。使用按钮 2(强制恢复)和按钮 3(复位)。

  1. 将 USB Type-C 端口 10(位于 40 引脚排针旁)连接到 Ubuntu 主机。

  2. 连接电源,确保开发者套件已通电。

  3. 按住按钮 2(强制恢复)。

  4. 在按住强制恢复的同时,按住按钮 3(复位)。

  5. 释放两个按钮。

  6. 确认 NVIDIA SDK Manager 检测到 Jetson AGX Orin 目标设备。

文章配图

Jetson AGX Orin 开发者套件按钮:1 电源、2 强制恢复、3 复位。

文章配图

Jetson AGX Orin 开发者套件烧录端口:10 USB Type-C,位于 40 引脚排针旁。

  • 安装 JetPack

在 SDK Manager 中:

  1. 选择 Jetson AGX Thor / Jetson AGX Orin 作为目标硬件。

  2. 选择 JetPack 7.2。

  3. 使用 Direct Flash,除非部署需要 ISO 工作流。

  4. 完成目标设备安装和初始 Ubuntu 设置。

  • 验证Jetson

在目标设备上运行以下命令:

tr -d '\\0' < /proc/device-tree/model
cat /etc/nv_tegra_release
df -h /
free -h

确认:

  • 检测到的型号与预期的 Orin 或 Thor 目标一致;

  • 系统报告预期的 JetPack/L4T 版本;

  • NVMe 或根文件系统有足够空间存放检查点、backbone、ONNX 文件和 TensorRT 引擎;

  • 系统重启后正常启动。

  • 以 Orin 为例

确认 GR00T_REPO、模型路径、数据路径等环境变量已经配置好,在 Jetson 的终端执行:

cd "${GR00T_REPO}"
bash scripts/deployment/orin_jp72/run_full_trt.sh prepare
bash scripts/deployment/orin_jp72/run_full_trt.sh verify
bash scripts/deployment/orin_jp72/run_full_trt.sh status
bash scripts/deployment/orin_jp72/run_full_trt.sh evaluate

四个步骤分别用于准备与构建、验证、查看状态和离线评估。

完整流程会生成七个引擎,它们是模型不同部分在目标设备上运行所需的文件。

离线评估通过后,再运行同一个脚本的 serve 子命令启动服务,并接入已经验证的机器人客户端。

引擎需要在对应目标设备上构建。Orin 和 Thor 之间不能直接互拷 .engine 文件。

模型、TensorRT 版本或影响输入输出形状的配置变化后,也需要重新构建。

媒体暂未收录,可在原文中查看

Jetson 边缘推理演示

常见问题

遇到的现象优先检查什么
终端提示找不到 uv 或 lerobot-recorduv 是否安装,当前终端是否启用了正确环境
找不到主臂或 can0线缆、适配器识别、设备名称、权限和驱动
相机打不开或两路视角反了重新检测设备编号,再根据预览图确认映射
文具还没放好,录制就结束了增加单回合时间,也给重置场景留足时间
数据能打开,训练却提示字段不匹配检查转换后的数据目录、图像键和两个配置文件
模型动作方向明显异常停止执行,检查校准、关节顺序、方向和单位
换了背景后成功率下降检查数据覆盖情况,补充对应场景的示范并重新评估
Jetson 无法加载引擎核对目标设备和软件版本,按对应流程重新构建

第一次实践,可以完成一轮稳定的遥操作,并录好 3 个可回放的示范。

接下来才是正式采集、训练和自主操作。

每次记录你修改了什么、结果怎样,保存相机位置、数据集、软件版本和模型检查点。

等这一套过程熟悉之后,再加入仿真和视觉增强,更容易看清每一步究竟带来了什么变化。


扩展内容:

嵌入推文(联网查看)

如果你对机器人工程感兴趣,欢迎关注我 @tspy 了解更多内容……

全文完
查看原文