调整导航
ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html
文章目录
- 调整导航
- 定位器
- 全局规划器
- 局部规划器
- 控制器
定位器
定位器是导航堆栈的关键部分,因为了解机器人的位置对于正确导航到目的地至关重要。 因此,快速准确的定位至关重要。
有几个参数可能需要进行一些调整以优化性能:
-
num_particles:控制使用多少粒子来跟踪机器人的位置。 增加粒子数量对速度有直接影响:粒子数量加倍,定位器需要两倍的时间。 但是,在某些情况下您可能想要增加粒子数:当传感器非常嘈杂时,环境与地图无法准确匹配(例如,如果有很多移动物体,如椅子),或者 里程计不可信。
-
initial_sigma:调整此参数以匹配全局定位器的不确定性。 前两个值表示 X 和 Y 方向的标准偏差。 一个好的值匹配像素大小的最大值和 grid_search_localizer 的 sample_distance。 第三个也是最后一个值对应于标题的标准偏差。 一个好的起始值是关于 grid_search_localizer 中使用的两个光束之间的间隙:2 x Pi / num_beams_gpu。
如果您的传感器噪音很大,请考虑增加所有这些值。
-
absolute_predict_sigma:同上。 它包含 3 个值,对应于随机噪声的标准差。 该参数与机器人的当前运动无关。 它被调整以匹配一般定位的预期噪声。 这反映在传感器和地图的准确性上。
-
relative_predict_sigma:控制运动/里程计的噪声。 里程计越准确,该值越小。 它还反映了机器人的模型:差动底座沿 X 方向的噪声比 Y 方向的噪声更多。
全局规划器
-
graph_initialization_steps:控制start函数中执行多少个随机样本。 这直接影响启动函数的速度。 如果你想要一个覆盖率高的图表,增加这个值。 不幸的是,没有办法选择一个好的值。 它取决于图形的大小,还取决于机器人的形状、有效姿势之间的连接等。尝试不同的值并查看生成的图形,直到您对结果满意为止。
注意:如果地图在应用程序的未来运行中主要是静态的,则值得花更长的时间来生成一个好的图表(通过增加此值)。 使用参数 graph_file_out 将图形保存到文件中。 之后,您可以使用参数 graph_file_in 直接从文件加载图形。
-
graph_in_tick_steps:在大多数情况下,您在启动函数中构建图形或从文件加载它,并且此参数应设置为 0(以免在 tick 函数期间浪费时间)。 但是,当地图在运行之间不断变化(防止从文件加载)并且应用程序需要快速启动时,可能值得减小上述参数的值并将此参数设置为合理的值(再次,有 不是神奇的数字,所以将其调整为大约允许滴答时间的 10/20%)一点一点地构建图表,在每次滴答时改进它。
-
max_colliding_lookup:当你期望机器人导航非常靠近障碍物或目标目的地靠近障碍物时,使用此参数允许规划器选择非碰撞状态下的替代起始/目标位置(从 规划师)。 然后规划器尝试规划到/从这些备选位置。 此参数控制在规划器放弃并寻找路径之前当前/目标位置可以在障碍物内多远。
-
model_max_translation_distance:控制导航图航路点之间允许的最大距离。 如果你减少这个参数,它会生成一个更密集的图(需要更多的随机采样)。 在拥有更多航点(减慢在图中寻找路径)和拥有较远的航点之间存在折衷,这使得两个航点之间的碰撞检查更慢。 最佳位置似乎是办公空间机器人大小的几倍。
如果您的地图大部分是开放空间,则可能会增加此值。
-
model_max_rotation_distance:控制连接两个航路点所允许的最大旋转。 设置大于 Pi 的值意味着没有限制,大多数时候它是合理的选择。 但是,如果您的地图使得您的机器人不能旋转太多(在主要由走廊组成的地图中为矩形),则可能值得限制旋转以加快沿边缘的碰撞检查。 这通常会创建一个更密集的图形。
局部规划器
局部规划器是迄今为止最难调整的一个,因为它取决于您的机器人、应用程序和个人偏好:
-
要控制机器人的速度,可以使用不同的参数:min_speed和max_speed控制合法的运行范围。 确保此范围包括零。 要限制机器人向后移动的能力,请将 min_speed 设置为 0。
请注意,这些参数并不是对速度范围的绝对限制。 离开范围时会受到惩罚,因此将限制设置为低于所需的最大速度(因为它取决于其他参数,您可能想尝试一下,但通常大约为目标 max_speed 的 90% 是一个不错的猜测 ). 将值设置得足够低也很重要,这样规划器就不会命令机器人无法达到的速度。
您还可以通过调整 DistanceQuadraticCostBuilder组件的 costs 参数来控制机器人接近障碍物时的速度。 此参数采用对应于增益、target_distance 和梯度的三元组列表。 如果梯度设置为 0,则机器人在靠近障碍物时不会调整速度。 如果该值设置为非零值,则机器人在接近障碍物时以指定的速率降低速度。 例如,如果梯度设置为 0.5,并且机器人在距离障碍物 1 m 处以 1 m/s 的速度移动,如果机器人被强制移动到距离障碍物 0.4 m 处,它会四处移动 1 m/s - 0.5 * (1 - 0.4) = 0.7 m/s 的速度。
增加 gain_linear_acceleration 可能会降低最高速度或需要更长的时间才能达到。 增加 gain_lat_acceleration 会迫使机器人在转弯时减速。
-
要控制旋转速度,请使用参数 max_angular_speed 限制最大旋转。 与线速度类似,这不是硬性限制。 最多将此值设置为机器人可以执行的最大旋转速率的 ~80%。 您还可以使用 gain_steering 来限制角速度。
-
要控制到障碍物的距离,您可以设置两个限制: target_distance 是机器人尽可能保持的距离。 当机器人比这个距离更近时,它会受到一些惩罚。 使用 min_distance 设置机器人可以接近的硬性限制(至于速度,这不是真正的硬性限制,但惩罚增长很快超过这个值)。
控制器
- use_pid_controller:控制是否使用pid控制器来跟踪错误。 如果禁用此参数,则命令与全局规划器提供的计划相匹配。 在这种情况下,请禁用本地规划器的 use_predicted_position。
更多精彩内容:
https://www.nvidia.cn/gtc-global/?ncid=ref-dev-876561