大喵AGV设置指南
从拆箱到通过浏览器驾驶。 涵盖拆箱安全、充电、软件、远程操作、自主导航和手臂安装。
拆箱和安全检查
检查 AGV 并准备工作空间
- 去除包装。 小心地取下所有泡沫衬垫、扎带和运输限制装置。 检查车轮是否有运输损坏 - 所有四个麦克纳姆轮都应用手自由旋转。
- 检查连接器。 检查主控制器上的所有电缆连接器是否已就位。 运输振动有时会导致 JST 或 Deans 连接器松动。
- 工作空间清理。 通电前,请在各个方向上留出至少 2 m 的开放空间。 AGV 可以快速加速——在首次运动测试期间,旁观者应退后一步。
- 紧急停车。 找到机箱上的主电源切断开关。 在通电之前了解如何到达它。 在第一次训练中,一只手始终保持在截止点附近。
- 表面检查。 麦克纳姆轮需要平坦、坚硬的表面(混凝土、木地板或光滑瓷砖)才能获得正确的全向性能。 地毯和不平坦的表面会显着降低横向控制权限。
电池充电和开机
首次使用前将电池组充满电
- 连接充电器。 找到 AGV 底盘上的电池充电端口(通常是大桶连接器或 XT60 端口)。 连接附带的平衡充电器。 将充电器插入接地的 110/220V 插座。
- 充电至充满。 首次使用前让电池充满电 — 通常需要 2-4 小时,具体取决于初始状态。 完成后,充电器 LED 将变为绿色(或停止闪烁)。 首次充电期间请勿无人看管。
- 检查电池电压。 充电后,电池电压应处于标称完全充电水平(检查电池组标签)。 使用万用表或板载显示器(如果配备)。
- 开机顺序。 将电池连接至主控制器。 切换主电源开关。 控制器应在 5-10 秒内启动 — LED 指示灯将稳定下来。 启动期间不要发送运动命令。
软件和 ROS2 导航堆栈
在您的 PC 上安装 Python 代理和可选的 ROS2 包
这 dami_agent.py 脚本是无畏平台和 AGV 硬件之间的主要桥梁。 它需要 Python 3.8+ 和两个 pip 包。
# Install dependencies pip install pyserial websockets # Confirm your USB-to-TTL adapter appears ls /dev/ttyUSB* # Linux # Add your user to the dialout group (Linux) if you get permission errors sudo usermod -aG dialout $USER # Log out and back in for group change to take effect
连接 USB 转 TTL 适配器:连接适配器的 TX 引脚连接到 AGV 主控制器的 UART5_RX(引脚PD2)。 将 GND 连接到 GND。 请勿将适配器的 RX 引脚或 5V 连接到 AGV。
对于 ROS2 集成,请安装导航堆栈:
# ROS2 Humble (Ubuntu 22.04) — adjust for your distro
sudo apt install ros-humble-navigation2 ros-humble-nav2-bringup ros-humble-slam-toolbox
python3 dami_agent.py --session RC-XXXX-XXXX --mock
模拟模式跳过串口打开。 所有 WebSocket 命令解析、遥测转发和超时安全逻辑都以相同的方式运行。
远程操作
通过 Fearless 平台从浏览器驱动 AGV
- 打开 platform.roboticscenter.ai,导航到 Teleop 部分,然后创建一个新会话。 复制会话 ID(格式:
RC-XXXX-XXXX). - 使用您的串行端口和会话 ID 启动代理:
python3 dami_agent.py \ --session RC-XXXX-XXXX \ --serial-port /dev/ttyUSB0 \ --backend ws://localhost:8000
- 代理连接平台,将AGV节点注册为
device_type: "mobile_base",并以 30 Hz 开始控制循环。 - 在浏览器中打开会话 URL。 使用方向控制发送
move命令。 AGV 在一个控制循环周期内做出响应(30 Hz 时为 33 毫秒)。
代理接受的命令类型:
# Move forward along X axis {"type": "move", "axis": "x", "dir": 1} # Move laterally right (Y axis) {"type": "move", "axis": "y", "dir": 1} # Rotate counter-clockwise (Z axis) {"type": "move", "axis": "z", "dir": -1} # Stop all motion immediately {"type": "stop"} # Goal-based delta movement {"type": "goal", "delta": {"x": 0.5, "y": 0.0, "yaw": 0.0}}
要调整运动速度,请使用 --amp 参数(默认 660,建议范围 500–760)。 值越高,运动越快:
python3 dami_agent.py --session RC-XXXX-XXXX --serial-port /dev/ttyUSB0 --amp 500
如果AGV移动方向错误,请使用 --invert-x, --invert-y, 或者 --invert-z 无需更改任何固件即可翻转轴。
自主导航设置
配置 ROS2 nav2、SLAM 和航路点跟随
对于自主导航,将里程计和传感器数据(来自 AGV 上的 LiDAR 或深度摄像头)发布到 ROS2 主题,然后使用 nav2 进行路径规划。
# Launch SLAM Toolbox for mapping ros2 launch slam_toolbox online_async_launch.py # In a second terminal — launch nav2 with the AGV base footprint ros2 launch nav2_bringup navigation_launch.py \ params_file:=/path/to/your/agv_nav2_params.yaml # Send a navigation goal via CLI ros2 action send_goal /navigate_to_pose nav2_msgs/action/NavigateToPose \ "{pose: {header: {frame_id: map}, pose: {position: {x: 1.0, y: 0.5}, orientation: {w: 1.0}}}}"
大庙 AGV 需要调整的关键 nav2 参数:
- 机器人半径 — 设置为 AGV 的半宽度加上安全裕度(通常为 0.4–0.6 m)。
- 最大速度 x / 最大速度 y — 根据您的情况设置
--amp值和测量的最大速度。 保守地开始 (0.3 m/s)。 - 最大速度θ — 转速限制。 用慢速测量
--amp 400先测试一下。 - 完整的 — 设置为
true在 DWB 本地规划器中启用横向运动规划(麦克纳姆/全向轮所需)。
安装机器人手臂
将 OpenArm 或 DK1 用螺栓固定到顶板上,并在一个平台会话中注册两者
大喵 AGV 的顶板设计用于容纳标准机械臂底座法兰。 此步骤涵盖物理集成和 Fearless Platform 多节点会话设置。
物理安装
- 关闭 AGV 和手臂电源 在进行任何机械工作之前。
- 将机器人手臂底板放置在 AGV 顶板安装孔上方。 使用提供的 M6 内六角螺栓(或 M5 用于打火机臂)。 在所有紧固件上涂抹螺纹锁固剂。
- 将手臂的电源和 CAN/USB 电缆向下穿过顶板中的电缆管理通道到达 AGV 底盘隔间。 使用扎带固定 — 留出足够的松弛度,以保证手臂的整个工作空间,而无需拉动。
- 通过 AGV 底盘中的单独电池或稳压电源为手臂供电。 未经适当隔离,请勿将 AGV 驱动电池与手臂控制器共用。
多节点平台会话
启动指向同一会话 ID 的两个代理。 它们注册为独立节点,平台同步记录两个流:
# Terminal 1 — AGV agent python3 dami_agent.py \ --session RC-XXXX-XXXX \ --serial-port /dev/ttyUSB0 \ --node-id damiao-base # Terminal 2 — OpenArm agent (example) python3 openarm_agent.py \ --session RC-XXXX-XXXX \ --can-interface can0 \ --node-id openarm-right
在 Fearless Platform teleop 面板中,两个节点都会出现。 操作员可以在同一会话中独立向 AGV(x/y/z 轴)发送运动命令和手臂命令。 情节记录在单个 JSONL 存档中捕获所有节点的遥测数据 - 完整的移动操纵轨迹,包括基本速度和手臂关节位置,并按时间戳同步。
CAN 总线和电机配置
配置CAN FD总线并为安装在AGV上的任何大庙执行器设置电机ID
当 OpenArm 或 DK1 手臂安装在 AGV 顶板上时,其 Damiao QDD 电机通过 CAN FD 总线与车载计算机进行通信。 本节涵盖总线启动、电机 ID 分配、调试命令和 LED 诊断。
安装can-utils
# Install SocketCAN utilities (Ubuntu / Debian)
sudo apt update && sudo apt install -y can-utils
打开 CAN FD 接口
对于所有新部署,建议采用 1 Mbit/s 标称 + 5 Mbit/s 数据的 CAN FD 模式:
# Bring interface down first if already up sudo ip link set can0 down # Configure CAN FD: 1M nominal baud, 5M data baud, FD mode enabled sudo ip link set can0 type can bitrate 1000000 dbitrate 5000000 fd on # Bring interface up sudo ip link set can0 up # Verify — output should show "fd on" ip link show can0
如果您安装了 OpenArm PPA,帮助程序脚本将包含以下命令:
# CAN FD single arm openarm-can-configure-socketcan can0 -fd -b 1000000 -d 5000000 # Classic CAN 2.0 (legacy / compatibility) openarm-can-configure-socketcan can0
监控总线
# Dump all CAN frames — verify connectivity before sending commands candump -x can0 # Dump with timestamps candump -td can0
电机 ID 分配 (J1–J8)
CAN总线上的每个大庙电机都必须有一对唯一的ID:发送器ID(主机→电机)和接收器ID(电机→主机)。 在arm组装之前使用Damiao Windows调试工具配置ID。 标准 OpenArm 映射:
| 联合的 | 电机型号 | TX ID(主机→电机) | RX ID(电机→主机) |
|---|---|---|---|
| J1 — 底座旋转 | DM-J4340p-2EC | 0x01 | 0x11 |
| J2——肩距 | DM-J4340p-2EC | 0x02 | 0x12 |
| J3——肩部滚动 | DM-J4340p-2EC | 0x03 | 0x13 |
| J4——肘节 | DM-J4340-2EC | 0x04 | 0x14 |
| J5——肘部滚动 | DM-J4340-2EC | 0x05 | 0x15 |
| J6——手腕俯仰 | DM-J4340-2EC | 0x06 | 0x16 |
| J7——手腕滚动 | DM-J4310-2EC V1.1 | 0x07 | 0x17 |
| J8——夹具 | DM-J4310-2EC V1.1 | 0x08 | 0x18 |
每个 CAN 总线的 ID 都是唯一的,而不是全局的。 双手设置(两只手臂)使用第二条总线 — can1 — 使用相同的 ID 方案。
cansend 测试命令
使用 cansend 用于低级调试。 代替 001 与目标关节的十六进制 TX ID(例如, 002 对于 J2)。
## CAN FD commands (use when interface has "fd on") # Enable motor — motor holds position and accepts commands cansend can0 001##1FFFFFFFFFFFFFFFC # Disable motor — motor becomes free-wheeling cansend can0 001##1FFFFFFFFFFFFFFFD # Clear motor error — required before re-enabling after a fault cansend can0 001##1FFFFFFFFFFFFFFFB ## CAN 2.0 equivalents (use when interface is classic CAN, no fd on) cansend can0 001#FFFFFFFFFFFFFFFC # Enable cansend can0 001#FFFFFFFFFFFFFFFD # Disable cansend can0 001#FFFFFFFFFFFFFFFB # Clear error
##1 接口配置时的 CAN FD 语法 fd on,以及单个 # CAN 2.0 的经典语法。 在同一总线上混合帧类型将导致总线错误。
LED 状态指示灯
每个大庙电机都有一个通过外壳窗口可见的板载 LED:
| LED图案 | 状态 | 需要采取的行动 |
|---|---|---|
| 绿色(稳定) | 电机已启用并准备就绪 | 无 — 电机处于活动状态并接受命令 |
| 红色(稳定) | 电机禁用(已通电,未启用) | 发送启用命令以激活电机 |
| 红色(闪烁) | 电机故障/错误状态 | 发送清除错误命令,调查原因,然后重新启用 |
常见故障原因:过流(降低增益或负载)、过热(允许冷却)、编码器错误(重新安装电缆)、欠电压(24 V 系统上的电源低于 ~18 V)、CAN 总线关闭(检查终端和接线)。
闪存写入警告
--flash 标志仅进入 RAM,不消耗闪存周期。 避免重复刷新电机参数的脚本。