Files
go2_navigation_provincial/go2_autonomous_navigation/NAVIGATION_OPERATION_GUIDE.md

7.2 KiB
Raw Blame History

Go2 机器狗导航操作指南

适用目录:~/go2_autonomous_navigation。本指南按当前仓库中的脚本和 ROS 2 节点整理,操作顺序为:准备环境、建图(已有现场地图可跳过)、启动导航并定位、测试单点目标、录制航点、执行巡检。

1. 启动前检查

  1. 确认机器狗电量充足,现场人员能随时停止机器狗,行走区域没有人员和临时障碍物。
  2. 确认机器狗与运行 ROS 2 的主机通过有线网络连接。脚本默认使用 ens160,实际接口配置见 scripts/go2_runtime.env 和 scripts/go2_env.sh。
  3. 建图、导航和航点标记启动文件都会启动部分机器人驱动节点;切换模式前先停止上一个模式,避免同时运行两套驱动或定位节点。
  4. 地图必须对应当前场地。仓库自带的 src/go2_navigation2/maps/my_room.yaml 只是示例地图,不要直接用于不匹配的场地。

当前目录没有 install/setup.bash 时,先在仓库根目录编译一次:

cd ~/go2_autonomous_navigation
source /opt/ros/humble/setup.bash
source ~/unitree_ros2/cyclonedds_ws/install/setup.bash
colcon build --symlink-install

之后的 scripts/ 启动脚本会自动加载 ROS 2、Unitree 和本仓库的环境。使用 RViz 的步骤需要在有图形桌面的会话中运行。

2. 建图并保存(已有现场地图可跳过)

终端 A:

cd ~/go2_autonomous_navigation
./scripts/go2_start_mapping.sh --rviz

确认 RViz 中地图持续更新,再用现场已有的遥控方式缓慢走遍需要导航的区域。CONFIG.txt 建议直线速度约 0.15–0.25 m/s、转弯角速度低于 0.2 rad/s,并重访部分区域以利于回环检测。本仓库没有提供遥控操作命令。

建图仍在运行时,终端 B 保存地图:

cd ~/go2_autonomous_navigation
./scripts/go2_save_map.sh competition_map

成功后应看到 ~/go2_maps/competition_map.yaml 和 ~/go2_maps/competition_map.pgm。保存成功后回到终端 A 按 Ctrl+C;如仍有建图残留进程,再使用 ./scripts/go2_stop_mapping.sh。不要在建图进程仍运行时启动导航。

如果已有地图,不必重新建图,但应确认所选 .yaml 引用的 .pgm 存在,且地图确实对应现场。本机现有多份 ~/go2_maps/*.yaml;本指南不替你决定哪一份用于现场。

3. 启动 Nav2、设置初始位姿、测试单点目标

在终端 A 指定实际要用的地图。以下以第 2 步新建的地图为例;使用已有地图时,把路径改成已核对的实际 .yaml 文件:

cd ~/go2_autonomous_navigation
export MAP_YAML="$HOME/go2_maps/competition_map.yaml"
test -f "$MAP_YAML"
./scripts/go2_start_nav.sh "$MAP_YAML"

导航启动文件会启动机器狗驱动、激光扫描转换、AMCL 定位、Nav2 和(有桌面环境时)RViz,无需另启一套驱动。等待 RViz 显示地图和激光扫描后:

  1. 用 2D Pose Estimate 在地图上标出机器狗的真实位置和朝向。
  2. 等待定位更新,核对地图中的机器人位置、朝向及激光扫描是否与现场一致。位置明显不符时重新设置初始位姿,不要发送导航目标。
  3. 用 Nav2 Goal 在已知空旷区域选一个近距离目标,拖出最终朝向,先验证单点导航。观察规划路径、障碍物和机器狗实际运动。
  4. 测试结束或需要关闭 Nav2 时,在终端 A 按 Ctrl+C。执行巡检前则保持 Nav2 运行。

scripts/go2_start_nav.sh 不带参数时会查找 ~/go2_maps/competition_map.yaml。当前本机没有这个默认文件;若跳过建图,必须显式传入已有地图路径。

4. 录制巡检航点(需要时)

先保持第 3 步的 Nav2 和定位正常运行。仓库当前的 config/ros2_patrol_routes/default.yaml 已有三个航点;如果它们不属于本次选用的地图,请先备份并重新录制,不要直接执行。

终端 B 启动航点记录节点,显式指定专用 RViz 使用的话题:

cd ~/go2_autonomous_navigation
source scripts/go2_env.sh nav
ros2 run go2_patrol waypoint_recorder_node --ros-args \
  -p route_file:="$PWD/config/ros2_patrol_routes/default.yaml" \
  -p goal_topic:=/go2_patrol/goal_pose

如需从零录制,先备份原路线,再在记录节点运行期间用另一个已加载同样 ROS 环境的终端清空:

cp config/ros2_patrol_routes/default.yaml config/ros2_patrol_routes/default.yaml.bak
ros2 service call /go2_patrol/clear_route std_srvs/srv/Trigger '{}'

终端 C 打开专用 RViz:

cd ~/go2_autonomous_navigation
./scripts/go2_start_patrol_rviz.sh

在专用 RViz 中选 2D Goal Pose,确认工具话题是 /go2_patrol/goal_pose,然后逐个点击航点位置并拖出目标朝向。此话题只供记录节点订阅,不要把普通导航 RViz 中的 Nav2 Goal 当作安全标点工具。每标一个点,记录节点都会更新 config/ros2_patrol_routes/default.yaml;录完后检查文件中的顺序、坐标和朝向,再按 Ctrl+C 关闭记录节点和专用 RViz。

注意:现有 scripts/go2_record_waypoints.sh 虽打印 /go2_patrol/goal_pose,但未把该话题作为节点参数传入;直接将它与专用 RViz 配对可能录不到点。上面的显式参数命令与专用 RViz 配置一致。

5. 执行与取消巡检

保持第 3 步的 Nav2 运行,确认已重新设置正确初始位姿、单点导航正常,且 config/ros2_patrol_routes/default.yaml 中所有启用的航点都对应当前地图。

终端 B 启动巡检执行器(启动后不会立刻移动):

cd ~/go2_autonomous_navigation
./scripts/go2_start_patrol_executor.sh

终端 C 开始一次巡检:

cd ~/go2_autonomous_navigation
./scripts/go2_run_patrol.sh

执行器依次向 Nav2 发送航点目标,到点后检查并调整朝向,默认每点停留 3 秒。运行中需要取消时,在已加载本仓库 ROS 环境的终端调用:

cd ~/go2_autonomous_navigation
source scripts/go2_env.sh nav
ros2 service call /go2_patrol/cancel std_srvs/srv/Trigger '{}'

确认机器狗停止后,按 Ctrl+C 结束巡检执行器和 Nav2。需要再次巡检时,先检查定位及路线仍与地图一致。

6. 当前文档和网页的差异

  • CONFIG.txt、robot_navigation.sh、waypoint_setup.sh、patrol_mission.sh 仍引用旧目录 ~/go2_robot_system,不要原样复制其中的启动命令。上面使用的是当前仓库中的脚本。
  • go2_dashboard/README.md 所写的网页启动脚本在当前仓库中不存在,网页页面也没有文档所说的“设置初始位姿”“确认定位”按钮。首次操作建议按本指南使用 RViz。
  • 网页地图编辑路线保存在 go2_dashboard/data/inspection_routes/default.json,但当前网页“开始巡检”后端读取的是 config/ros2_patrol_routes/default.yaml。不要以为保存了网页地图路线就已替换实际执行的 ROS 航点路线。

相关实现:scripts/go2_start_mapping.sh、scripts/go2_save_map.sh、scripts/go2_start_nav.sh、scripts/go2_start_patrol_executor.sh、scripts/go2_run_patrol.sh、src/go2_navigation2/launch/go2_nav2.launch.py、src/go2_patrol/config/go2_patrol_waypoints.rviz。