重构版导航-日志说明/分析/录包步骤
导航涉及包名与服务:
全局规划:global_planner.service 局部规划:planner.service
日志目录:/var/opt/robot/log/【日期】
配置文件目录:/opt/robot/share/[包名]/config
只使用预先建立的地图来进行全局规划,为狗提供引导信息,需要关闭全局规划中的地图更新参数,位于:
/opt/robot/share/global_planner/config/astar.yaml,将其中的**dynamic_update**修改为false,则代表不使用局部感知信息进行地图更新,全局规划时,将只按照预先建立的栅格地图来完成,如果有障碍发生变化,全局规划上不会感受到。如果改为true,则会在全局规划时,也更新局部感知的信息。
〇、新增模块衔接关系
118大包开始,为了保证CPU占用不被拉太高,修改为当开始导航任务时,BS给累积点云模块下发标志,累积点云开始计算。两个地图处理模块与导航的关系为:

图片内容(已识别并结合上下文整理): 模块关系图:二维栅格地图和定位输入全局规划;累积点云经可通行域处理后输入局部导航;全局规划向局部导航提供路径/目标,局部导航结合定位和实时障碍输出控制指令。
当导航模块报送warning码为1001(缺少点云数据)时,需要倒查前面两个地图模块是否有正常输出。可以执行:
su
source /opt/ros/foxy/setup.bash
ros2 topic hz [地图处理模块输出话题名]
来确认是否有正常地图处理话题的输出。
累积点云:
输入:
/IMU
/ODOM
/LOC_BODY_POINTS
输出:/accumulate_cloud/cloud_gravity
可通行域:
输入:
/IMU
/accumulate_cloud/cloud_gravity
输出:/impassable_area
或可通过日志查看可通行域状态:
journalctl -u passable_area -fb
如果没有话题/accumulate_cloud/cloud_gravity输出,请查看:
/NAV_STATUS在下发导航任务时是否发出标志位1;拉定位log确认定位是否正常。
一、各类情况打印效果与具体说明
初始化
当程序被重启时,会先打印以下内容,包括【成功导入参数】等初始化步骤,一直到【开始主线程运行】结束所有初始化,并持续2s发送warning code为1003, 以表示初始化状态;后面应该规律打印
planning Monitor的内容,不断循环。
图片内容(已识别并结合上下文整理): 导航初始化/监控日志示例:订阅通道建立后,监控区显示 Odom、Map、Goal、Cancel 的状态以及当前位姿;图中 Odom 和 Map 为 OK、Goal 为 NO,系统处于无目标等待状态。
正常等待状态
如下图所示。如果打印频率过快或者过慢,可以通过
~/config/localplanner.yaml中的参数**monitor_loop_frequency**来调整打印频率,增大则打印频率更快(例如设置为10,则1秒打印10次)。::: 第一行:定位是否正常 | 接入实时地图是否正常 | 是否接到目标 | 是否被取消 | 直线/自主导航模式
第二行:目标在世界系下的位姿
第三行:目标在机体系下的位姿
第四行:当前坐标、yaw (可通过这行看一下定位有没有飘,有没有不准确)
第五行:规划状态码 | warning状态码
第六行:与目标点的距离、角度差
第七行:与行进方向的偏差(主要给直线导航模式下,观察直线是否走偏)
第八行:下发的速度指令(可通过此处判断是否有下发不响应的问题)
第九行:当下发了目标开始规划时,将显示速度最值、停障距离等重要参数 :::

图片内容(已识别并结合上下文整理): 正常等待时,planning Monitor 按设定频率循环输出相同的输入状态和当前位姿;Goal 为 NO、状态为 idle/reached,说明当前没有执行导航任务。
- 直线导航
第一行 【Mode】会显示 直线导航;
原状态码在第五行显示,即Planner Status;
当开始导航时,将增加打印重要速度参数,在每个loop的最后一行

图片内容(已识别并结合上下文整理): 直线导航接近目标时的日志:状态码 2002 表示接近目标并停车,随后 2003 进入目标朝向调整;同时打印距离、角度偏差和实际输出速度。
- 直线导航-直行方向中有障碍物
将增加打印:
障碍相关距离信息;
障碍是否挡在前进方向,是否允许进行微调,返回原方向;

图片内容(已识别并结合上下文整理): 直行方向遇障日志:状态码 2005,连续判断前进方向距离和偏航误差,并因障碍达到停止计数条件而保持停车。
转弯过程障碍
将增加打印信息如下:

图片内容(已识别并结合上下文整理): 转弯遇障日志:状态码 2004,机器人在目标朝向调整阶段检测到旋转路径有障碍,因此反复输出停止指令,避免机体转动碰撞。
- 自主导航
- 是否成功接入全局地图:看打印 【全局规划:】如果为【是】, 则成功接入;如果为否,则查看:
sudo systemctl status global_planner.service
是否正常启动。如果没有正常启动,请手动start。ps:1.1.7.1开始由于要更换新主板,单独的算法模块都不再自行拉起服务。

图片内容(已识别并结合上下文整理): 自主避障正常运行日志:状态码 1001,收到全局路径后由 DWA 生成多条候选轨迹并评分,最终选择局部路径并输出速度。

图片内容(已识别并结合上下文整理): 自主避障异常日志:状态码 1002,检测到目标点落在障碍区域,最近障碍距离极小,目标区域膨胀后仍不可达,因此规划失败。
二、不同地图接入,可通行域衔接
使用原来的地图模式还是接可通行域,都与导航模块本身关系不大,只是更换了不同的地图输入。当打印中第一行的【Map】不是**OK**,请查看`~/scripts/local_planner.sh`,使用的是哪一行脚本。如果使用的脚本正确,则:
su
source /opt/ros/foxy/setup.bash
ros2 topic hz [对应话题名]
来查看对应话题是否正确发布。
如果可通行域话题未发布,请查看服务是否正常:
sudo systemctl status passable_area.service

图片内容(已识别并结合上下文整理):
local_planner.sh输入源配置示例:图中启用单帧点云处理、注释可通行域输入。排查 Map 非 OK 时,应先核对这里选择的输入源与对应服务是否一致。
三、包录制
分析问题,请提供 log + bag + 视频 !!!以及106主机对应的时间!或者直接给目标点坐标
具体某段导航出现的问题,还可以在手柄或者BS查看目标点坐标,将目标点坐标一起提供给我,可以更快速的定位相关问题!
如果有导航不成功停下、刮蹭等问题,请帮忙看下是否一定复现,另外可以录包来帮助分析:
su
source /opt/robot/scripts/setup_ros2.sh
ros2 bag record /GOAL /ODOM /goal_point /target_goal /NAV_POINTS /grid_map_3d /target_goal_baselink /visible_points /NAV_CMD /MOTION_INFO
如果开启了全局规划,增加话题:
/local_map /path_Astar /point_Astar /track_path_baselink /global_path_markers
如果开启了累积帧+可通行域,再增加话题:
/IMU /LOC_BODY_POINTS /impassable_area /accumulate_cloud/cloud_gravity
对应查看的rviz文件:
- 局部规划:
效果为:

图片内容(已识别并结合上下文整理): 局部规划 RViz 效果:彩色点云/体素表示障碍,绿色线为全局规划路线,黄色箭头为当前局部目标,局部候选轨迹围绕障碍展开。
绿色线条:全局规划路线
黄色箭头:局部目标点
彩色栅格:栅格化地图
紫色点云:导航接入点云
如果查看可通行域与累积帧效果,需要坐标系更换为base_gravity:

图片内容(已识别并结合上下文整理): RViz 左侧图层列表包含目标位姿、DWA 候选路径、全局路径点、可通行域、累积帧、导航地图和障碍斥力等;切换图层可分别定位地图输入、路径生成或局部避障问题。
- 全局规划:
效果为:

图片内容(已识别并结合上下文整理): 全局规划 RViz 效果:占据栅格中红色路径点沿狭窄通道和转角延伸,机器人坐标轴位于路径附近,可用于检查全局路径是否穿过障碍或在转角处异常。