Personal archive
深度相机与松灵机械臂使用经验总结(RealSense L515 / D435i + 松灵 PiPER / NERO)
记录 RealSense 深度相机、手眼标定、PiPER / NERO 机械臂通信与末端执行器调试中的实用经验。
On this page
适用环境:Intel RealSense L515 / D435i 深度相机;松灵(AgileX)PiPER、NERO 机械臂;ROS 开发环境。
深度相机:L515 与 D435i
先检查硬编码的相机内参
写得不够规范的代码常常会把相机内参(尤其是 `depth_scale`)硬编码在程序里。更换深度相机型号时,应该逐项核对:
| 相机型号 | 深度原理 | `depth_scale` |
|---|---|---|
| L515 | 激光(MEMS 扫描) | 0.00025 |
| D435i | 双目立体视觉(非激光) | 约 0.001 |
两者相差约 4 倍。参数不匹配时,点云无法正确对齐,画面会出现明显异常。更稳妥的做法是把 `depth_scale` 等参数放进配置文件,换相机时只修改配置,不改业务代码。
确认实际 USB 链路速率
使用深度数据时,最好让相机走 USB 3.x。过长的被动式 USB 延长线(不带主动头)可能导致链路降级到 USB 2.0,使深度流带宽不足。
需要延长时,应改用带主动中继芯片的延长线或主动光缆,并确认设备实际协商到的速率确实是 USB 3.x。
不要同时打开两个取流工具
`realsense-viewer` 与 `rqt_image_view` 不要同时运行。两者可能争抢同一个相机的取流资源,调试时固定使用其中一个即可。
手眼标定
标定前核对 ArUco 标定板
- 尺寸: 打印出来的标定板尺寸经常与设计值不一致,而尺寸会直接参与位姿解算。打印后务必用尺实测,再把实际数值填入程序。
- 类型: 确认使用的 ArUco 字典和检测代码中的字典一致。
- marker ID: 确认标定板上各 marker 的 ID 与代码中的对应关系一致。
机械臂本体与通信:PiPER / NERO
多台机械臂共存时,分清 CAN 口与机械臂的对应关系
PiPER / NERO 通过 CAN 口通信。主机同时连接多台机械臂时,要先确认每个 CAN 口对应哪条机械臂,否则容易把指令发给错误的臂。可以通过重命名 CAN 口来减少混淆。
NERO 关节角读取错误
NERO 有可能出现关节角读取错误。处理方法是重新校准零位置,然后强制复位。
断电安全位置与碰撞保护恢复
- 断电前让机械臂保持在安全位置。
- PiPER 触发碰撞保护后,通常无法通过软件复位,只能断电重启恢复。
PiPER 夹爪线缆很短
PiPER 夹爪的供电/通信线很短,最后一个关节旋转角度过大时可能把线缆拉断。
安装时,尽量选择让线缆两端插在距离较近的接口上的方案,减少线缆被绷紧的风险。
末端执行器:灵巧手与夹爪
先确认“开 / 关”状态的极性
使用灵巧手时,要先确认“开”和“关”分别对应哪个数值状态。例如,InspireHand 和 BrainCo Revo2 的设定恰好相反。
对接新的灵巧手时,先实测开合极性,再进行上层封装,避免发送“张开”指令时实际闭合。
运动学求解
谨慎使用出厂自带的 IK 求解器
PiPER 和 NERO 出厂自带的 IK 求解器在实际使用中可能不够稳定。正式项目中,建议替换为更可靠、经过验证的求解方案。