myAGV Plus 自动回充导航功能使用手册
出厂镜像工作空间为 ~/myagv_plus_ros2(humble 分支)
首次全量编译约需 1 小时。
# 创建新工作空间
mkdir -p ~/myagv_plus_ros2
cd ~/myagv_plus_ros2
git clone https://github.com/elephantrobotics/myagv_plus_ros2.git myagv_plus_ros2/src
# 安装依赖
sudo apt install -y ros-humble-geographic-msgs ros-humble-aruco-markers-msgs ros-humble-robot-localization libgeographic-dev geographiclib-tools libzbar0 python3-pyzbar ros-humble-geometry-msgs ros-humble-common-interfaces
# 编译
colcon build
1.概述
myAGV Plus 的自动回充功能采用远距离 Nav2 导航 + 近距离基于红外线收发传感器的串口控制,实现小车自动导航至充电桩目标点并对接入充电桩充电口实现充电。
2.充电桩位置管理,Nav2 导航相对位置设置
充电桩位置管理:充电桩位置保存至软件包目录的 config/charger_position.json 文件中,位置更新通过订阅 /charger_position_update 话题实现。
json 文件中保存的位置信息为充电桩位置,最新的 charger 位置会持续发布到 /goal_marker 话题中并可视化,位置信息采用四元数表示如下:
{
"p_x": 0.0,
"p_y": 0.0,
"orien_z": 0.0,
"orien_w": 1.0
}
Nav2 导航位置设置:可以调整 Nav2 导航的目标点相对于充电桩的位置及姿态,使小车到达目标位置及姿态后再转为串口控制。
导航点与充电桩的相对位置参数设置可以在 config/nav_goal_params.yaml 文件中进行配置,默认值如下:
forward_distance: 0.35 # 距离充电桩前方 0.35 米
yaw_offset_deg: 0.0 # 顺时针旋转 0 度
充电桩位置录入
以下两种方式二选一。
方式一:手动控制录入
录入时请确保小车正对充电桩触点且紧贴充电桩,位姿偏差会导致串口对接阶段无法正确引导至充电触点。
终端 1:启动底盘 + 雷达
ros2 launch myagv_plus_bringup myagv_plus_bringup.launch.py
终端 2:启动导航
ros2 launch myagv_plus_navigation2 navigation2_active.launch.py
打开 RViz,使用 "2D Pose Estimate" 设置小车初始位姿,确认 AMCL 定位正常。
终端 3:启动键盘控制
ros2 run teleop_twist_keyboard teleop_twist_keyboard
使用键盘将小车开到充电桩触点位置。
终端 4:启动回充程序并记录充电桩位置
ros2 run myagv_plus_autocharge combined_auto_recharger
小车到位后,在终端 4 中按 Enter 记录当前位姿。程序采样 1 秒取中位数写入 charger_position.json,RViz 中红色箭头更新到新位置。
终端打印:

rviz可视化中会立刻显示充电桩的位置。

方式二:RViz 点击设置
启动底盘、导航和回充程序后(终端 1、2、4 同上),在 RViz 工具栏选择 "2D Goal Pose" 工具(已预配置发布到 /charger_position_update 话题),在地图上充电桩位置点击并拖动设置朝向,回充程序自动接收并更新 charger_position.json。

终端打印:

3.功能使用
终端 1:启动底盘 + 雷达
ros2 launch myagv_plus_bringup myagv_plus_bringup.launch.py
终端 2:启动导航
ros2 launch myagv_plus_navigation2 navigation2_active.launch.py
设置初始位姿,确认定位正常。
终端 3:启动回充程序
ros2 run myagv_plus_autocharge combined_auto_recharger
启动后 RViz 中可见红色箭头标记充电桩位置。

在终端 3 中按键盘 p 触发回充。

小车执行两阶段回充:
- 导航阶段:Nav2 导航到充电桩前方
forward_distance处

串口对接阶段:到达后打开 USB-CAN 串口,读取充电桩
0x182引导帧,按帧内 x/z 速度发布/cmd_vel完成最终对接
对接成功终端显示当前充电电流:
Charging current detected: 210.0 mA - docking complete