调试与排错#
本页提供软件环境、供电、串口、舵机、校准、相机、网络和数据采集故障的检查步骤。先找到对应现象,再按顺序操作,每次只调整一项配置,并保留机器人端和 PC 端的错误日志。
涉及接线时,先停止控制程序并断开执行器电源。舵机编号和机型参数按 AlohaMini 2 / 2 Pro 说明;其他硬件请使用对应配置。
快速定位#
现象 |
优先检查 |
本页处理步骤 |
|---|---|---|
命令不存在、模块导入失败 |
Python 环境、安装位置和版本 |
|
找不到机械臂、串口无权限 |
数据线、设备节点、权限和端口占用 |
|
缺少 8–11 号舵机、舵机灯不亮 |
供电、总线支路和编号 |
|
校准范围相同、启动后反复要求校准 |
实际活动范围、设备 ID 和 profile |
|
相机缺失、画面接反、取帧超时 |
供电、路径、格式和 USB 带宽 |
|
连接超时、画面和运动卡顿 |
Host、IP、网络和计算负载 |
|
续录失败、视频编码失败 |
数据目录、特征和编码环境 |
|
模型维度不匹配、评估暂停 |
数据特征、机型和保护日志 |
|
更新失败或无法连接代码仓库 |
本地改动、分支状态和网络 |
1. 确认当前软件环境#
pwd
python --version
python -c "import sys; print(sys.executable)"
python -c "import av, cv2, torch; print('av', av.__version__); print('cv2', cv2.__version__); print('torch', torch.__version__)"
git rev-parse --short HEAD
预期:当前目录是软件仓库;Python 来自已激活的项目环境;关键依赖可以导入。两台机器提交版本不一致时,先确认协议是否兼容,再定位通信层问题。
2. 串口找不到或无权限#
lerobot-find-port
ls -l /dev/ttyACM*
ls -l /dev/serial/by-id/
ls -l /dev/am_arm_*
groups
找不到设备节点#
逐个接入控制板,检查数据线、USB 连接和控制板供电。只充电的 Type-C 线不能提供串口通信;旧的 /dev/ttyACM0 编号也可能已经改变。
设备存在,但程序没有权限#
检查当前用户是否属于 dialout 组;添加组后重新登录。不要用长期以 root 运行整个机器人程序来替代权限配置。
别名存在,但左右不对#
回到 udev 规则,对照每块板子的序列号和物理位置。校准文件、遥操作和录制必须始终使用同一左右映射。
端口被占用#
停止先前运行的 Host、校准、遥操作或硬件调试程序。一个程序仍在使用串口时,另一个程序可能无法正常连接。
3. 舵机状态与编号#
查看连接总线上的舵机状态:
python examples/debug/motors.py get_motors_states \
--port /dev/ttyACM0
检查读到的 ID、型号和状态是否符合实际接线。写入新 ID 时每次只连接目标舵机:
python examples/debug/motors.py configure_motor_id \
--id 1 \
--set_id 8 \
--port /dev/ttyACM0
二代底盘目标 ID 为右后轮 8、前轮 9、左后轮 10、升降 11;左右以机器人自身朝向为准。
使用旧硬件调试脚本前先核对#
examples/debug/wheels.py 和 axis.py 是直接访问总线的工具。当前文件中的舵机型号常量仍为 sts3215,axis.py 不会根据整机二代配置自动选择 STS3095;轮组脚本也有自己的轮位命名与运动学常量。
因此,二代/Pro 首次整机检查优先采用匹配 robot_model 的 Host + 键盘客户端。只有确认脚本的型号、ID 与结构匹配后,才直接运行独立调试脚本。
改相位、重设中位、释放扭矩和执行动作脚本会改变硬件状态,不属于通用的“修复所有问题”操作。不要在未确认原因时修改相位或重设中位。
E002:左侧总线缺少 8–11 号舵机#
二代 AM-ARM 的关节为 1–7;底盘车轮为 8、9、10;升降为 11。左侧总线需要同时连通机械臂和底盘/升降支路,右侧仅连接机械臂。SO-ARM 的机械臂舵机编号为 1–6。
停止 Host 并断开执行器电源,检查左臂驱动板两条总线是否接牢。
检查底盘到升降再到左侧驱动板的连接,避免漏接支路。
重新供电后,在树莓派上读取左总线状态:
python examples/debug/motors.py get_motors_states \
--port /dev/am_arm_follower_left
若只读到 1–7,核对是否将左右 USB 端口认反,再检查底盘/升降支路。
按各控制板的序列号重新绑定左右串口别名;确认所需舵机均能读取后再启动匹配机型的 Host。
E004:无法读取舵机状态或指示灯不亮#
确认驱动板有独立电源,并核对该臂对应的电压;USB 连接本身不等于舵机已供电。
检查数据线、端口权限和串口别名,关闭占用同一串口的其他程序。
断电后重新检查接头,逐段核对串联线路。
需要隔离故障时,每次断电后只接一个已确认兼容的舵机,再进行读取测试。
在电源、数据线、端口和已知正常舵机都验证后仍失败,再联系支持方判断是否需要更换驱动板。
可将兼容的夹爪舵机单独接入驱动板进行排查。一次通信失败并不能单独证明控制板损坏。
4. 校准范围与设备匹配(E001)#
常见原因:触发重新校准后,没有实际移动关节,就确认保存了范围。
停止遥操作,确认当前终端连接的确实是目标机械臂。
核对主臂
am-leader-6dof;标准 2 从臂am-follower-6dof;Pro 从臂am-follower-6dof-hd。启动对应设备的校准流程,重新记录零位和活动范围。在程序要求手动采集范围时,缓慢移动每个关节到允许的行程范围,避免强行顶住机械限位。
确认所有关节都记录到变化,再按程序提示保存。
使用与校准相同的设备路径和 ID,先验证单臂小幅动作,再启用整机。
校准数据不能从另一只机械臂直接复制。范围异常时重新完成测量,不要手工填数值来绕过检查。
启动重新校准#
先退出占用串口的 Host、遥操作和调试程序。在树莓派上,按机型选择一条命令校准从臂:
AlohaMini 2
python -m lerobot.robots.alohamini.alohamini_calibrate --robot_model alohamini2
AlohaMini 2 Pro
python -m lerobot.robots.alohamini.alohamini_calibrate --robot_model alohamini2pro
在 PC 上校准 AM 双主臂:
python examples/alohamini/calibrate_bi.py \
--teleop.id am_leader_bi \
--teleop.arm_profile am-leader-6dof
按终端提示选择重新校准,完成中位和活动范围记录。完成后对主从臂断电重启,使用相同设备 ID 与 profile 进行小幅动作检查。
反复要求校准或从臂方向异常#
核对当前设备 ID、左右串口与校准时一致。
主臂使用
am-leader-6dof;2 从臂使用am-follower-6dof,2 Pro 从臂使用am-follower-6dof-hd。树莓派与 PC 的
robot_model保持一致:2 为alohamini2,2 Pro 为alohamini2pro。更换舵机、调整装配或 profile 后,重新测量对应设备的校准范围。
从单侧机械臂的小幅动作开始检查,确认左右、方向和行程正确后再启用整机。
5. 相机无法打开或缺图(E003)#
lerobot-find-cameras
v4l2-ctl --list-devices
v4l2-ctl -d /dev/video0 --list-formats-ext
按以下顺序检查:
相机是否被系统识别,
index_or_path是否指向它。配置要求的分辨率和帧率是否受设备支持。
相机是否被另一个程序占用。
Host 配置启用了哪些相机,设备是否都已连接。
当前画面对应哪个物理位置,左右腕是否接反。
是否存在 USB 带宽、供电或多设备共用 Hub 的问题。
修改相机配置后重启两端相关程序。默认仅启用两路,看到五只物理相机不代表程序会自动使用五路。
多路相机启动超时#
供电不足可能导致多个摄像头无法同时启动。 Timed out waiting for frame 也可能来自错误端口、被其他进程占用、USB 带宽或不受支持的分辨率。
检查电池电量、电源板接口和线缆,核对供电电压与设备铭牌一致。
先停止 Host,确认摄像头没有被其他预览程序占用。
使用本节的相机发现与格式查询命令,单独检查每一路设备。
先启用一台相机,稳定后逐路增加;记录哪一路或哪种组合触发错误。
树莓派与 PC 使用一致的相机配置,修改后重启两端程序。
head_top 与 forward 是不同软件配置中的相机命名,必须核对实际数据键和设备别名。不能把一套名称的数据直接交给另一套配置训练或推理。
6. 网络连接与性能#
PC 检查 Pi:
ping <Pi_IP>
在使用无线网络的机器上检查链路:
iw dev
iw dev wlan0 link
wlan0 需换为实际无线网卡名称。需要测量吞吐量且已安装 iperf3 时,在 Host 上运行:
iperf3 -s
在 PC 上运行:
iperf3 -c <Pi_IP>
测试结束后退出 iperf3 服务。网络延迟或吞吐正常仍不代表整个控制链路正常,还需结合设备采集和 CPU 负载。
观察计算负载#
top
训练 PC 若使用 NVIDIA GPU,可查看:
nvidia-smi
遥操作卡顿时,先将启动参数设为 --fps 10 --camera-fps 10,临时降低控制和相机请求频率。检查 CPU、网络与相机后再恢复正式采集配置。
7. 录制与视频问题#
数据集目录已经存在#
核对这是新建还是续录。续录使用同一数据标识和目录并加入 --resume;新实验使用新名称。不要直接删除旧数据来消除报错。
多频采集时间比设定更长#
该入口需要收集足够的新鲜帧,实际相机帧率稍低时会延长时间。如果明确中止,检查日志是相机停滞、跨相机时间差、状态对齐还是帧率不足。
视频编码/解码失败#
ffmpeg -version
ffmpeg -hide_banner -encoders
python -c "import av; print(av.__version__)"
确认环境一致、视频文件已完整保存,再按错误定位缺少的编码器或后端。不要在写入尚未结束时复制半成品数据集。
8. 策略评估与模型维度#
模型输入或动作维度不匹配#
确认模型训练使用的数据集对应当前机型。2 / 2 Pro 整机接口为 18 维;不能直接使用不同维度的单臂或仿真数据。
核对相机名称、顺序和启用数量。
head_top与forward等名称必须和训练特征一致。核对关节顺序、单位、profile 和校准配置;仅维度数量相同仍不足以证明兼容。
完成配置匹配后先运行短时测试,确认观测有效、动作方向正确。
评估不动作或突然暂停#
先确认没有遥操作或录制客户端仍持有控制权。
核对 Pi 与 PC 的机型是否一致,模型目录是否正确。
查看 Host 是否触发电流保护、看门狗或发生重启。
查看客户端是否缺少新鲜反馈,或策略推理耗时使 Host 超时。
ACT 使用
sync;RTC 必须由模型接口支持。
暂停后的旧动作队列不会自动继续执行。处理故障后按程序流程重新开始,避免把“没有继续动作”误当作单纯网络丢包。
9. 软件更新与网络访问#
先保存本机配置,再更新。不要把 git restore . 当成常规更新步骤,它会丢弃未提交的工作区修改。
cd lerobot_alohamini
git status
git diff
如果有本机配置改动,先备份或提交并确认用途;工作区准备好后再执行:
git pull --ff-only
提示无法快进时,先处理本地提交与远端的差异,避免直接覆盖。更新完成后核对 Pi 与 PC 的软件版本、机型和相机配置。
若使用自己局域网内的代理,可以在当前终端设置:
# 替换为你自己的代理服务器地址和端口
export http_proxy=http://192.168.50.XXX:7890
export https_proxy=http://192.168.50.XXX:7890
curl -I https://github.com
代理程序需要允许该局域网客户端连接。以上占位 IP 不能直接运行,也不应沿用截图中的他人地址。
10. 提交可复现问题#
将以下内容一起提交到 软件 Issues:
机型:AlohaMini 1 / 2 / 2 Pro
主臂与从臂型号:
PC 系统、CPU/GPU:
Pi 系统与架构:
两端软件提交版本:
操作阶段:安装 / 校准 / 遥操作 / 录制 / 训练 / 评估
完整命令(移除访问令牌等秘密):
预期结果:
实际结果:
Host 日志:
PC 日志:
最近修改过的配置:
硬件装配问题请补充局部照片、零件名称和材料,并提交到 硬件 Issues。