导航模块新增参数说明(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_minzin_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_plannerpcl_remove.yaml中,将serach_radius调整为0.1, minNeighbors在3~5范围内调整;

    • 用于滤除杂点,避免空间中有杂点影响;

    • 参数含义为:每个点以serach_radius为半径的空间中,如果有minNeighbors个点,则认为不是杂点。即minNeighbors越小、serach_radius越大,则将保留更多的点,滤除错误点的效果变差;

  • local_plannerlocalplanner.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 越大,目标附近被占据的判断越容易触发;越小则检测范围越窄。