Turtlebot 2e 导航之`move_base` 参数详解:速度平滑功能包

14 篇文章 10 订阅
13 篇文章 3 订阅

Turtlebot 2e 导航之move_base 参数详解:速度平滑功能包

速度平滑功能包velocity_smoother.launch.xml

velocity_smoother.launch.xml为速度平滑包,是一个速度平滑控制器,用来防止robot navigation的速度/转速过快,加速度/快减速过大。smoother主要针对navigation或者其他一些例子。robot有一个命令选择node cmd_vel_mux,它可以防止robot被多个ros app下发的运动命令控制从而出现运动问题。见下图:
在这里插入图片描述

velocity_smoother.launch.xml的内容为:

<!-- 
         Velocity smoother
-->
<launch>
  <node pkg="nodelet" type="nodelet" name="navigation_velocity_smoother" args="load yocs_velocity_smoother/VelocitySmootherNodelet mobile_base_nodelet_manager">
    <rosparam file="$(find turtlebot_bringup)/param/defaults/smoother.yaml" command="load"/>
    <remap from="navigation_velocity_smoother/smooth_cmd_vel" to="cmd_vel_mux/input/navi"/>

    <!-- Robot velocity feedbacks; use the default base configuration -->
    <remap from="navigation_velocity_smoother/odometry" to="odom"/>
    <remap from="navigation_velocity_smoother/robot_cmd_vel" to="mobile_base/commands/velocity"/>
  </node>
</launch>

虽然在move_base脚本中启动,但smoother是一个nodelete,被moibile_base_nodelete_manager加载。其中smoothrt.yaml参数配置文件更是在turtlebot_bringup package下面。最后将节点中的发布的topic “navigation_velocity_smoother/smooth_cmd_vel” 重新映射成 “cmd_vel_mux/input/navi”,这样cmd_vel_mux就可以订阅到smoother发布的主题。

订阅的主题


~raw_cmd_vel (geometry_msgs/Twist):输入的速度命令
~odometry (nav_msgs/Odometry):接收里程计信息,确保下发的运动命令没有大的跳跃。根据feedback参数配置
~robot_cmd_vel (geometry_msgs/Twist):接受robot 命令信息,确保下发的运动命令没有大的跳跃。根据feedback参数配置

发布的主题

~smooth_cmd_vel (geometry_msgs/Twist):发出来的命令,通常会将其remap到cmd_vel_mux订阅的运动命令topic上

参数


~accel_lim_v (double):强制必须设置,线性加速度最大值
~accel_lim_w (double):强制必须设置,角加速度最大值
~speed_lim_v (double):强制必须设置,线速度最大值
~speed_lim_w (double):强制必须设置,角速度最大值
~decel_factor (double, default: 1.0):加减速比,对于惯性大的机器人
~frequency (double, default: 20.0):输出速度频率。不论输入命令的频率。必要时插值
~robot_feedback (int, default: 0):速度反馈(0 - none, 1 - odometry, 2 - end robot commands). 

参数配置文件smoother.yaml

# Default parameters used by the yocs_velocity_smoother module.
# This isn't used by minimal.launch per se, rather by everything
# which runs on top.
 
# Mandatory parameters
speed_lim_v: 0.8
speed_lim_w: 5.4
 
accel_lim_v: 1.0 # maximum is actually 2.0, but we push it down to be smooth
accel_lim_w: 2.0
 
# Optional parameters
frequency: 20.0
decel_factor: 1.5
 
# Robot velocity feedback type:
#  0 - none (default)
#  1 - odometry
#  2 - end robot commands
robot_feedback: 2

其他

  1. 除了frequency其它参数都是动态可配置的

  2. 如果有一个恒定的旋转半径,线/角速度会更加平滑

  3. 输入的最后一个topic信息不为0时(命令下发node 崩溃/不活跃),为了保证robot不出现意外,会在最后加一个0速度。

  4. 使用yocs_cmd_vel_mux进行机器人速度控制切换,可参考以下博文:
    https://www.cnblogs.com/21207-iHome/p/8228356.html

  5. 关于velocity smooth算法,有篇比较好的综述文件:

Ravankar A, Ravankar A, Kobayashi Y, et al. Path smoothing techniques in robot navigation: State-of-the-art, current and future challenges[J]. Sensors, 2018, 18(9): 3170.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值