让机械臂学会整理文具:从第一次遥操作到 AI 自主抓取
文章目录
部分视频或图片暂未收录,已在正文保留提示;需要时可查看原文。查看原文 ↗
第一次接触机械臂,最容易遇到的困难,一般都是不知道应该从哪里开始。而且很多专业术语,看似都见过,但却不知道他们的关系。
这篇文章会从一个具体任务开始:
-
桌上有两支笔、一块橡皮擦和一个笔筒
-
先由你操作机械臂,把文具放进笔筒
-
电脑记录操作过程,再用这些记录训练模型
-
让模型根据摄像头画面和机械臂状态,尝试自己完成同样的任务。
带你理解整个过程。
这次要学习的文具整理任务
开始之前,先认清几个工具
我们可以把整个实验理解成给机械臂上课。
- LeRobot
负责记录和整理你的示范,你抓起一支笔时,它会同时保存摄像头拍到的画面、机械臂各关节的位置,以及发给机械臂的动作指令。整理后的记录,就叫数据集。
- Isaac Sim
电脑里的机器人实验室,里面有虚拟机械臂、桌面、物体和摄像头,可以在这个环境中操作机械臂,收集仿真数据。
- Cosmos
用来扩展视频里的场景外观,比如把固定背景换成另一种实验室环境,让训练数据接触更多视觉变化。生成结果还需要检查,不能直接全部拿来训练。
- GR00T
负责学习和预测动作的模型,它接收画面、任务文字和机械臂当前状态,预测接下来应该怎么动。
VLA 是 Vision、Language、Action,分别对应视觉、语言和动作。
- Jetson
最后用来运行模型的小型计算设备,前期可以用电脑完成验证,之后再把模型放到 Jetson 上,让它在机械臂旁边运行。
TensorRT 则帮助模型在目标设备上更高效地执行。
- Sim-to-Real
把仿真中学到或验证过的能力,迁移到真实机器人上。包含真实数据采集、仿真采集、训练和部署;其中仿真采集是可选步骤。
第一次做,建议按这个顺序推进:
-
先让机械臂跟着你动
-
再录好示范
-
接着训练并验证自主操作
-
最后尝试仿真、视频增强和 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。如果安装位置不同,需要按原教程修改启动参数。
启动后,先点击仿真窗口,让它接收键盘输入。然后按顺序操作:
-
按 R 重置场景,检查文具位置和两路相机画面。
-
按 S 开始录制。
-
移动主臂,控制虚拟机械臂完成收纳。
-
松开夹爪,等待物体稳定,并确认出现 [SUCCESS]。
-
再按 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-... 文件夹,就是某个训练时刻保存的模型。记下你要使用的检查点路径,保留配套配置和统计文件。
若出现显存不足,应按训练项目文档调整配置或使用合适的训练设备。
第九步:让模型尝试控制真实机械臂
大致流程是:
-
摄像头和关节传感器提供当前情况
-
模型给出动作
-
机械臂执行一部分动作
-
再读取新的情况,继续预测。
这种不断观察和调整的过程,叫闭环控制。
服务器负责运行模型,客户端负责读设备、发送观测和执行动作。初次验证可以在同一台电脑的两个终端中运行。
先在第一个终端启动模型服务器:
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 接口不足时按教程使用带供电的集线器。
部署四步骤:
-
装好系统和硬件驱动。 确认 Jetson 正常启动,CAN 接口可用,两路相机可以预览。
-
安装对应的软件环境。 Orin 和 Thor 使用各自的安装脚本。
-
准备模型和数据。 包括微调检查点、配置与统计文件、Cosmos-Reason2-2B backbone,以及与训练配置一致的数据集。backbone 可以理解成完整模型依赖的基础组件,不能只复制一个权重文件就结束。
-
生成并验证 TensorRT 引擎。 先用离线数据检查模型能否运行,再连接真实机械臂。
准备主机
准备一台 Ubuntu 主机,要求:
-
至少 25 GB 可用空间,用于 SDK Manager 和 JetPack 软件包;
-
一根可靠的 USB Type-C 数据线;
-
稳定的网络连接;
-
管理员访问权限。
从官方下载页面安装 NVIDIA SDK Manager:
进入强制恢复模式
- Jetson AGX Thor 开发者套件
-
关闭 Jetson 电源。
-
将其恢复 USB Type-C 端口连接到主机。
-
按住强制恢复按钮。
-
按下并释放 Reset,同时继续按住强制恢复按钮。
-
释放强制恢复按钮。
-
确认 SDK Manager 检测到目标设备。
| 标记 | 按钮 |
|---|---|
| 11 | 电源 |
| 12 | 强制恢复 |
| 13 | 复位 |
- Jetson AGX Orin 开发者套件
Jetson AGX Orin 开发者套件使用与 Jetson AGX Thor 开发者套件不同的按钮和接口编号。按照下方 NVIDIA 官方图示中的标签操作。
提示: 开始前必须为开发者套件通电。使用按钮 2(强制恢复)和按钮 3(复位)。
-
将 USB Type-C 端口 10(位于 40 引脚排针旁)连接到 Ubuntu 主机。
-
连接电源,确保开发者套件已通电。
-
按住按钮 2(强制恢复)。
-
在按住强制恢复的同时,按住按钮 3(复位)。
-
释放两个按钮。
-
确认 NVIDIA SDK Manager 检测到 Jetson AGX Orin 目标设备。
Jetson AGX Orin 开发者套件按钮:1 电源、2 强制恢复、3 复位。
Jetson AGX Orin 开发者套件烧录端口:10 USB Type-C,位于 40 引脚排针旁。
- 安装 JetPack
在 SDK Manager 中:
-
选择 Jetson AGX Thor / Jetson AGX Orin 作为目标硬件。
-
选择 JetPack 7.2。
-
使用 Direct Flash,除非部署需要 ISO 工作流。
-
完成目标设备安装和初始 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-record | uv 是否安装,当前终端是否启用了正确环境 |
| 找不到主臂或 can0 | 线缆、适配器识别、设备名称、权限和驱动 |
| 相机打不开或两路视角反了 | 重新检测设备编号,再根据预览图确认映射 |
| 文具还没放好,录制就结束了 | 增加单回合时间,也给重置场景留足时间 |
| 数据能打开,训练却提示字段不匹配 | 检查转换后的数据目录、图像键和两个配置文件 |
| 模型动作方向明显异常 | 停止执行,检查校准、关节顺序、方向和单位 |
| 换了背景后成功率下降 | 检查数据覆盖情况,补充对应场景的示范并重新评估 |
| Jetson 无法加载引擎 | 核对目标设备和软件版本,按对应流程重新构建 |
第一次实践,可以完成一轮稳定的遥操作,并录好 3 个可回放的示范。
接下来才是正式采集、训练和自主操作。
每次记录你修改了什么、结果怎样,保存相机位置、数据集、软件版本和模型检查点。
等这一套过程熟悉之后,再加入仿真和视觉增强,更容易看清每一步究竟带来了什么变化。
扩展内容:
如果你对机器人工程感兴趣,欢迎关注我 @tspy 了解更多内容……














