大喵AGV社区及常见问题解答
有关 DBUS 协议、导航、故障排除和使用 OpenArm 进行移动操作的常见问题。 论坛和支持链接。
常见问题解答
大喵AGV具体的串口设置是怎样的?
AGV 固件在 UART5(引脚 PD2,RX)上监听 100000 波特率,8 个数据位、偶校验和 2 个停止位 (8E2)。 在 pyserial 中,使用以下命令打开端口:
serial.Serial(
port='/dev/ttyUSB0',
baudrate=100000,
bytesize=serial.EIGHTBITS,
parity=serial.PARITY_EVEN,
stopbits=serial.STOPBITS_TWO
)
一个非常常见的错误是使用 8N1(无奇偶校验,1 个停止位)。 AGV 看似已连接,但会默默地忽略或错误解析所有帧。 总是使用 PARITY_EVEN 和 STOPBITS_TWO.
18字节DBUS帧如何编码速度?
DBUS 帧使用小尾数位打包将四个 11 位通道值 (ch0–ch3) 打包到字节 0–5 中。 每个通道的范围为 0-2047,以 1024 为中心(中性/停止)。 速度映射为: ch3 = 1024 + vx × amp (向前), ch2 = 1024 + vy × amp (侧), ch0 = 1024 + (−vw) × amp (旋转)。 字节 6-15 是归零的鼠标/键盘字段。 字节 16–17 保存 ch4,固定为 1024。 请参见 规格 获取完整的频道映射表。
AGV 短暂移动然后停止——发生了什么?
这是命令超时安全功能触发。 如果在时间内没有收到移动或停止命令 --cmd-timeout-ms (默认 300 毫秒),代理自动将所有速度通道归零并且 AGV 停止。 这通常意味着平台发送命令的速度不够快,或者存在网络延迟导致间隙。 解决办法:(1)增加 --cmd-timeout-ms 500 对于高延迟连接,(2) 确保浏览器 teleop 面板主动发送重复 move 按住方向按钮时以 ~10 Hz 发出命令,(3) 检查到平台的网络 RTT。
AGV 移动方向错误 — 如何修复?
在代理上使用轴反转标志 - 无需更改固件:
# Flip forward/backward python3 dami_agent.py --session RC-XXXX --serial-port /dev/ttyUSB0 --invert-x # Flip lateral (left/right) python3 dami_agent.py ... --invert-y # Flip rotation direction python3 dami_agent.py ... --invert-z
单独测试每个轴(例如,仅发送 X 命令,观察运动)以确定您的物理安装方向需要哪些标志。
我可以在没有物理 AGV 的情况下进行测试吗?
是的。 经过 --mock 启动时 dami_agent.py。 在模拟模式下,串口永远不会打开。 控制循环仍然对 DBUS 帧(存储在内存中)进行编码,遥测数据转发到平台 WebSocket,并且所有命令解析的工作方式相同。 这使您可以验证完整的 WebSocket 管道、测试平台 UI 并集成到 CI 中,而无需硬件:
python3 dami_agent.py --session RC-XXXX-XXXX --mock
启动时出现 pyserial.SerialException - 我该检查什么?
第一的: ls /dev/ttyUSB* 以确认适配器出现。 如果没有,则可能无法加载 USB 转 TTL 适配器驱动程序(尝试不同的 USB 端口)。 如果出现端口但出现权限错误,请将您的用户添加到 dialout 组:
sudo usermod -aG dialout $USER
# Log out and back in, then retry
如果端口出现在设备列表中,但代理仍然无法打开它,则另一个进程可能会打开它(例如,以前的代理实例或串行监视器)。 关闭使用该端口的所有其他进程。
代理已连接,但平台未显示遥测数据 - 出了什么问题?
确认传递给的会话 ID --session 在平台 UI 中仍然处于活动状态。 如果不活动,会话可能会过期。 检查代理的终端输出以获取注册握手响应 - 如果它打印“握手失败”或不打印“就绪”,则会话可能已过期。 在平台中创建一个新会话并将新 ID 传递给代理。 还要验证一下 --backend 指向正确的平台 WebSocket URL。
如何调整AGV的速度?
调整 --amp 范围。 这设置了表示运动命令的通道相对于中心 (1024) 的偏移。 默认值为 660,大约为最大速度的 64%。 要在手臂安装的操作任务期间实现更慢、更可控的操作,请使用 --amp 400。 要在开放地板上获得最大速度,请使用最多 --amp 900。 请注意,麦克纳姆轮在非常高的速度下会损失一些横向效率 - 保持 --amp 横向机动时低于 800。
与 OpenArm 集成的技巧
安装臂之前规划电缆布线
在用螺栓固定手臂之前,将手臂的 CAN/USB 电缆穿过 AGV 的内部电缆管理通道。 一旦安装好臂,就很难在不拆除臂的情况下重新布线。 在手腕处留出 20-30 厘米的额外电缆松弛——手臂的工作空间延伸到两侧和后部,电缆张力可能会对关节轨迹产生意想不到的阻力。
当手臂安装并运动时使用 lower --amp
AGV 上的机械臂提升质心。 快速的横向加速度可能会导致平台晃动,从而对手臂的轨迹产生扰动,尤其是在伸展位置时。 开始于 --amp 400 用于手臂操作期间的基本运动,仅在需要时增加。 对于远程操作数据收集,一致的缓慢基本运动比快速、不稳定的运动产生更干净的训练数据。
使用不同的 --node-id 值注册两个代理
当在同一平台会话中同时运行 AGV 代理和 Arm 代理时,为每个代理指定一个不同的 --node-id。 这可确保平台显示单独的遥测流,并且情节 JSONL 存档独立地标记每个节点的数据。 推荐的命名约定: damiao-base 对于 AGV 和 openarm-right / openarm-left 对于手臂节点。
协调遥摄中的基础运动和手臂运动
在 Fearless Platform teleop 面板中,两个节点同时出现。 有用的远程操作模式是:停止底座,移动手臂进行抓取,移动底座以重新定位,如此重复。 事件 JSONL 存档通过时间戳同步捕获所有节点的遥测数据,因此下游策略可以从完整的移动操作轨迹中学习。 考虑使用平台的记录标记来注释每个情节中基础运动过渡到手臂运动的位置。
添加 Paxini GEN3 传感器以获取丰富的接触移动操作数据
山 帕克西尼 PX-6AX GEN3 OpenArm 指尖或末端执行器上的触觉传感器。 将传感器桥注册为同一会话中的第三个节点。 该平台同步记录触觉、手臂关节和基本速度流,为行为克隆和强化学习创建丰富的接触感知移动操作数据集。