速度平滑器
``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