速度平滑器

在Github上的源代码

``nav2_velocity_smoother``是一个包含生命周期组件节点的软件包,用于平滑Nav2发送给机器人控制器的速度。该软件包的目的是通过平滑加速度/突变运动,从Nav2实现速度、加速度和死区的平滑,以减少机器人电机和硬件控制器的磨损。

有关更多信息,请参阅软件包的 README。

速度平滑器参数

平滑频率

类型

默认

双精度

20.0

描述

使用最后接收到的速度命令按照速度、加速度和死区约束进行平滑的频率(Hz)。如果设置为与您的本地轨迹规划器的频率大致相同,它将通过加速度约束平滑速度命令。如果设置得更高,它将进行插值,并为硬件控制器提供一组平滑的命令。

比例速度

类型

默认

布尔值

false

描述

是否按比例调整速度的其他分量,以根据加速度限制的变化来进行调整。这将尝试调整所有分量以遵循相同的方向,但仍然强制执行加速度限制以确保合规性,即使这意味着稍微偏离命令轨迹。

反馈

类型

默认

string

"OPEN_LOOP"

描述

用于机器人速度当前状态的反馈类型。在“OPEN_LOOP”模式下,它将使用上一次命令的速度作为下一次迭代的当前速度。当适当设置加速度限制时,这是一个很好的假设。在“CLOSED_LOOP”模式下,它将使用“odom”话题的里程计来估算机器人的当前速度。在闭环模式下,相对于平滑频率而言,里程计的速率和延迟都非常重要。

max_velocity

类型

默认

vector<double>

[0.5,0.0,2.5]

描述

最大速度(m/s),分别对应``[x, y, theta]``轴。

最小速度

类型

默认

vector<double>

[-0.5, 0.0, -2.5]

描述

在“[x,y,theta]”轴上的最小速度(米/秒)。这是**有符号**的,因此必须是**负数**以进行反向运动。注意:旋转速度的负方向是右转,因此无论反转偏好如何,它始终应为负数。

死区速度

类型

默认

vector<double>

[0.0, 0.0, 0.0]

描述

最小速度(m/s),用于发送给机器人硬件控制器,以防止由于堵转力矩而无法实现该速度时,小指令损坏硬件控制器。

velocity_timeout

类型

默认

双精度

1.0

描述

超时时间(秒),在此时间之后,速度平滑器将发送一个零化的``Twist``指令并停止发布。

max_accel

类型

默认

vector<double>

[2.5, 0.0, 3.2]

描述

每个轴(x,y,theta)应用的最大加速度。

最大减速度

类型

默认

vector<double>

[-2.5, 0.0, -3.2]

描述

将应用于每个轴``[x,y,theta]``的最小加速度。这是**有符号的**,因此通常应该全部为**负值**。

odom_topic

类型

默认

string

"odom"

描述

如果处于``CLOSED_LOOP``操作模式,则用于查找机器人里程计的主题。

odom_duration

类型

默认

双精度

0.1

描述

将里程计命令缓冲以估计机器人速度的时间(秒),如果处于``CLOSED_LOOP``操作模式。

示例

velocity_smoother:
  ros__parameters:
    smoothing_frequency: 20.0
    scale_velocities: false
    feedback: "OPEN_LOOP"
    max_velocity: [0.5, 0.0, 2.5]
    min_velocity: [-0.5, 0.0, -2.5]
    deadband_velocity: [0.0, 0.0, 0.0]
    velocity_timeout: 1.0
    max_accel: [2.5, 0.0, 3.2]
    max_decel: [-2.5, 0.0, -3.2]
    odom_topic: "odom"
    odom_duration: 0.1