导航模块新增参数说明(TBC)
〇、障碍地图接入:单帧点云/累积帧
接入方式编辑
局部导航(同时影响直线导航和自主导航的局部实际感知)的地图接入源有两种,目前改为默认接入单帧雷达,可改为接入累积帧。修改路径位于`/opt/robot/share/planner/scripts`,编辑启动脚本文件`local_planner.sh`:
下图为默认状态,启动接单帧点云,接可通行域被注释:

图片内容(已识别并结合上下文整理):
local_planner.sh默认配置示例:启用接收单帧雷达点云的处理节点,接入可通行域/累积帧的命令被注释。
如需更换为接可通行域,请按下图修改:
请注意,两种接入方式必须二选一,不能同时释放。编辑后请注意保存文件。如果更换,建议整机重启,保证替换成功。或至少重启planner.service。

图片内容(已识别并结合上下文整理): 切换到可通行域的配置示例:注释单帧点云处理命令,启用可通行域对应命令。两种输入只能保留一种,保存后需重启相关服务或整机。
如何判断是否更换成功
另外,可通过导航日志判断更换是否成功:
当接入单帧点云时,planner日志warning status应为0, 不应出现1001或1002状态码;
当接入累积帧+可通行域时,在未开启导航时,planner日志warning status应为1001(缺少点云数据);当进入导航模式时,planner日志warning status应为0. 这是由于累积帧+可通行域模块占用算力较大,因此只在进入导航模式时开启计算,planner才接收到障碍地图。
接原始点云\累积帧的影响
| 影响方面 | 累积帧+可通行域 (对应服务passable_area.service) |
接单帧点云 (不需另外的包和服务) |
|---|---|---|
| 环境空旷度 | 动态障碍物受到影响,场地过于空旷,可能会导致动态障碍物挪开后依然误停障 | 不受影响 |
| 侧面盲区 (只影响自主导航) | 有侧面障碍累积,更能避免侧面擦、碰 | 侧面盲区无法被感知,侧向位置有障碍时可能擦碰 |
| 高度问题、楼梯斜坡 | 含高度差处理 可通行域模块 会根据某参数 将此高度差内的障碍消去,因此可以在斜坡、楼梯上尝试停避障(118大包中默认不允许开启) |
不含高度差处理 根据实际感知范围内的信息来停避障(例如如果在草地,可能草的波动进入感知范围,会被当作障碍) 此种情况可以调整planner的配置文件 pcl_pass_grid.yaml来修改狗下方(以狗背为z平面的负值)的感知高度,需将以下两个参数改成一样的数字:out_minz,in_minz |
所有参数修改后,需要重启服务生效。
## 全局规划参数
# 118.5版本默认不使用全局规划信息作为引导
sudo systemctl restart global_planner.service
## 局部规划参数
sudo systemctl restart planner.service
全局-局部之间的关系:
全局规划用于在宏观层面上指引方向;局部规划用于在实时局部范围避障运动;
二维地图只在全局规划中生效;
雷达获取到的实时环境信息只在局部规划中生效;
一、全局规划-局部规划配合参数
1.1 控制全局对局部的引导效果
如果出现局部有体积较大的新增障碍区域(在建图时不出现),可能会出现全局引导未更新、从而局部规划目标位置被锁死的情况。此时可以略微调整:
planner中的:local_point_dis 略微调大,用于控制局部规划的处理范围

图片内容(已识别并结合上下文整理): 局部目标选取示意:
local_point_dis越大,局部规划的搜索半径越大,可从全局路径上选择更远的局部目标点;调小则只处理机器人附近的路径段。
如果环境中基本没有动态障碍物,可以将参数local_point_dis 调小或设置为0.(实际范围为1.61+local_point_dis)
如果静态环境(建图时的环境,对应全局规划)中,障碍较为密集/较为稀疏,希望提升规划效率,可以:
step_size(用于控制全局规划的搜索步长,即两个红点之间的距离):
当障碍密集时,调小,建议在0.3 - 0.6范围内调整;
当障碍稀疏时,可以调大,建议在0.5 - 0.8范围内调整;

图片内容(已识别并结合上下文整理): 栅格地图中的红色路径点较密、单步距离较短,适合障碍密集或狭窄区域,可降低跨过通道或贴近障碍的风险。
当环境中有狭窄通道时,请将step_size调小,建议保持在0.3;
如果调整参数step_size,同时调整参数xy_tolerance,设置为step_size的1.1倍。
二、效果性参数
2.1 在长段导航时,感觉行驶路线不够平滑

图片内容(已识别并结合上下文整理): 栅格地图中的红色全局路径点在转角和走廊内存在折线。相关平滑参数用于减少这些不必要的曲折,使长距离导航路线更连续。
用于将上图的红色路点进行平滑,使其不过于曲折;
但进行平滑操作易对狭窄通道等位置产生影响。
调整global_planner中的enable_smooting ,如果设置为false,则为关闭对全局规划输出结果的平滑效果,改为true功能开启。
当enable_smooting设置为true时,smooth_count \ smooth_degree \ num_samples \ angle_threshold 4个参数才起作用。
2.2 环境较为固定,希望每次高重复度运行/常有变化,会放置新障碍物
以下内容适用于118.2及以前版本,118.3及更新版本并不适用,参数新含义 请参考 参数文件中的语言描述
如果环境较为固定:localplanner的localplanner.yaml中的local_try设置为false, 则只会在全局规划成功时,进行局部跟踪;
以及如果在地图中绘制了虚拟障碍(需注意虚拟障碍的绘制能否和真实环境对应上),并希望其严格遵循,请将local_try设置为false。
如果环境常有变化:例如在全局规划中的障碍物被挪开,但是扫描的地图中没有更新,可能导致全局规划失败。此时可以local_try设置为true,将全局规划不成功的时候依然尝试进行局部规划,提升导航的自由度。
2.3 障碍信息稀疏,容易刮蹭 / 障碍密集,错误停障

图片内容(已识别并结合上下文整理): RViz 中的彩色体素表示局部障碍,绿色线表示规划路径。该图用于观察障碍膨胀和局部路线是否与真实环境匹配。
图片内容(已识别并结合上下文整理): 另一组 RViz 障碍点云较稀疏,局部障碍轮廓不完整。对比前图可判断点云过稀是否可能导致刮蹭,或过密是否造成错误停障。
障碍效果 都需要通过rviz来查看,如果凭感觉盲目修改可能带来其他问题
如果环境中的物体点云信息不密集,例如细杆、有镂空等,使用默认参数;
如果环境中障碍点云密集,有偶然出现误停障,可以:
local_planner的pcl_remove.yaml中,将serach_radius调整为0.1,minNeighbors在3~5范围内调整;用于滤除杂点,避免空间中有杂点影响;
参数含义为:每个点以
serach_radius为半径的空间中,如果有minNeighbors个点,则认为不是杂点。即minNeighbors越小、serach_radius越大,则将保留更多的点,滤除错误点的效果变差;
local_planner的localplanner.yaml中,grid_occu_num_在2~5范围内调整。- 用于将
2.4 旋转过程中,障碍检测的保守/激进
如果需要更侧重安全性,旋转位置较为空旷,可以将的localplanner.yaml中rotate_detect_dis增加,建议在参数在0.1~0.3之间调整,将增加检测范围;
如果空间狭窄,或者出现错误上报旋转遇到障碍,则保持rotate_detect_dis为0.0 不变。

图片内容(已识别并结合上下文整理): 旋转检测示意:以机器人旋转中心为圆心建立检测范围,矩形机体旋转时扫过的区域需保持无障碍;增大
rotate_detect_dis会扩大安全检测范围。
2.5 目标点在障碍物中的检测效果
local_planner的localplanner.yaml中,参数goal_in_ob_dis控制目标点区域的障碍检测范围,goal_in_ob_z控制目标点区域的障碍检测高度。
参数goal_in_ob_dis增大,则会检测更大范围,以避免目标点区域被占据影响导航;
参数goal_in_ob_dis减小,则检测更小范围,目标点位置有障碍物的判断更难以被触发。

图片内容(已识别并结合上下文整理): 目标点障碍检测示意:以目标点为圆心检查一定半径内的障碍。
goal_in_ob_dis越大,目标附近被占据的判断越容易触发;越小则检测范围越窄。
