Savitzky-Golay平滑器

在Github上的源代码

Savitzky-Golay平滑器是一个平滑器服务器插件,它接收输入路径并使用基于`Savitzky Golay Filters <https://en.wikipedia.org/wiki/Savitzky%E2%80%93Golay_filter>`_的简单且快速的平滑技术进行平滑处理。它使用数字信号处理技术来减少噪音对参考信号(在本例中为路径)的扭曲。

它适用于所有类型的规划器,但在NavFn中特别有用,可消除路径结束处或Theta*中可能出现的微小伪影,**而无需**修改主路径,稍微平滑可见线段之间的过渡。它非常快速(<< 1ms),因此是可能导致轻微不连续性的规划器的推荐默认选项。但是,它不能平滑较大尺度的不连续性、振荡或改善平滑性。对于这些情况,请使用其他提供的平滑器插件之一。它还提供平滑后路径点的估计方向向量。

该算法是确定性的和低参数的。在下图中,NavFn的梯度下降中的一些奇点被平滑器平滑处理,而路径的整体特性保持不变。

../../_images/savitzky-golay-example.png

Savitzky-Golay平滑器参数

do_refinement

类型

默认

布尔值

True

描述

是否对平滑结果进行 refinement_num 次平滑,以获得改进的结果。

refinement_num

类型

默认

int

2

描述

递归平滑路径的次数

示例

smoother_server:
  ros__parameters:
    costmap_topic: global_costmap/costmap_raw
    footprint_topic: global_costmap/published_footprint
    robot_base_frame: base_link
    transform_timeout: 0.1
    smoother_plugins: ["savitzky_golay_smoother"]
    savitzky_golay_smoother:
      plugin: "nav2_smoother::SavitzkyGolaySmoother"
      do_refinement: True
      refinement_num: 2