ROS使用yocs_smoother_velocity做速度平滑处理
ROS 导航模块move_base 输出的/cmd_vel topic指定了为机器人规划的线速度和角速度, 但是这个输出值还是不够友好导致机器人运动不够流畅,这就需要对这个输出速度值进行一个平滑的过程。ROS中的yocs_smoother_velocity是一个非常好的速度插值的包, 可以对速度、加速度进行限制,用来防止机器人的速度、转速变化过快或过慢, 是其运行平滑流畅. 下面做个具体介绍.
1 输入的TOPIC
~raw_cmd_vel (geometry_msgs/Twist)
- Input velocity commands. 输入的速度值,一般就是move_base的输出topic /cmd_vel
~odometry (nav_msgs/Odometry)
- We compare the output velocity commands to "real" velocity to ensure we don't create very big jumps in the velocity profile.
里程计数据,这个可以是直接的里程计,也可以是经过位姿估计调整后的里程计
~robot_cmd_vel (geometry_msgs/Twist)
- Alternatively, we can also compare the output velocity commands to end robot velocity commands to ensure we don't create very big jumps in the velocity profile. See robot_feedback parameter description below for more details.
这个数据一般是base_controller实际发送给机器人电机的速度值,把这个值发布出来,yocs_smoother_velocity可以参考这个值避免大的数据波动。
2 输出的TOPIC
~smooth_cmd_vel (geometry_msgs/Twist)
- Smoothed output velocity commands respecting velocity and acceleration limits.
输出的cmd_vel. Bas_ controller 的输入topic。不使用yocs_smoother_velocity的话,base controller的输入是move_base的输出/cmd_vel, 现在就是用/smooth_cmd_vel了
3 配置参数
~accel_lim_v (double)
- Linear acceleration limit. Mandatory. 线加速度的最大值
~accel_lim_w (double)
- Angular acceleration limit. Mandatory. 角加速度的最大值
~speed_lim_v (double)
- Linear velocity limit. Mandatory. 线速度的最大值
~speed_lim_w (double)
- Angular velocity limit. Mandatory. 角速度的最大值
~decel_factor (double, default: 1.0)
- Deceleration/acceleration ratio. Useful to make deceleration more aggressive, for example to safely brake on robots with high inertia.
减或加速度系数,需要紧急减速时有用,例如高惯性的机器人急刹车时,此系数越大,越有效
~frequency (double, default: 20.0)
- Output messages rate. The velocity smoother keeps it regardless incoming messages rate, interpolating whenever necessary.
输出数据的频率, 不管输入的数据频率,velocity smoother会保持这个频率发布数据
~robot_feedback (int, default: 0)
- Specifies which topic to use as robot velocity feedback (0 - none, 1 - odometry, 2 - end robot commands). See hints below for more details.
机器人对此发布数据的反馈。详细解释可以参考官方文档。
4 yocs_velocity_smoother的安装与配置
安装很简单了,Ubuntu18.04 melodic 为例,
运行sudo apt-get install ros-melodic-yocs_velocity_smoother
Launch 文件的配置例子如下:
<include file="$(find yocs_velocity_smoother)/launch/velocity_smoother.launch">
<arg name="node_name" value="$(arg node_name)"/>
<arg name="nodelet_manager_name" value="$(arg nodelet_manager_name)"/>
<arg name="config_file" value="$(arg config_file)"/> //配置参数的yaml文件
<arg name="raw_cmd_vel_topic" value="$(arg raw_cmd_vel_topic)"/>
<arg name="smooth_cmd_vel_topic" value="$(arg smooth_cmd_vel_topic)"/>
<arg name="robot_cmd_vel_topic" value="$(arg robot_cmd_vel_topic)"/>
<arg name="odom_topic" value="$(arg odom_topic)"/>
</include>
配置参数是yaml文件格式,一个例子如下:
# Example configuration:
# - velocity limits are around a 10% above the physical limits
# - acceleration limits are just low enough to avoid jerking# Mandatory parameters
speed_lim_v: 0.6
speed_lim_w: 0.5accel_lim_v: 0.1
accel_lim_w: 0.25# Optional parameters
frequency: 20.0
decel_factor: 20.0# Robot velocity feedback type:
# 0 - none
# 1 - odometry
# 2 - end robot commands
robot_feedback: 0
Reference:
http://wiki.ros.org/yocs_velocity_smoother
ROS使用yocs_smoother_velocity做速度平滑处理相关推荐
- 使用yocs_smoother_velocity做速度平滑处理
参考文章 1-ros中的速度平滑处理和yocs_smoother_velocity介绍及关于全向扩展包实现 https://www.jianshu.com/p/926d6e68ebd1 2-ROS使用 ...
- ROS小车基于yocs_smoother_velocity做速度平滑处理
文章目录 做速度平滑处理的背景 yocs_smoother_velocity功能包解析 如何使用yocs_smoother_velocity 注意事项 功能拓展 做速度平滑处理的背景 ROS 导航模块 ...
- yujin_ocs/yocs_velocity_smoother速度平滑velocity_smoother_nodelet源码解读
[记录学习]本文对yujin_ocs/yocs_velocity_smoother/src/velocity_smoother_nodelet.cpp速度平滑源码进行了解读,初学ros,若有错误欢迎指 ...
- yocs_velocity_smoother速度平滑库知识
一.C++ (1)nth_element()用法 头文件:#include<algorithm> nth_element:在数组或容器中将第几大或小的元素放到该放的位置上.(默认第几小,可 ...
- yocs_velocity_smoother速度平滑配置与使用
yocs_velocity_smoother速度平滑配置与使用 简介 安装 配置文件 运行结果 参考 简介 yocs_velocity_smoother速度平滑(滤波)是将base_move导航输出的 ...
- ROS 内外网做双网卡绑定负载分流教程bonding 配置教程
导读: ROS软路由如果带机数量比较多,对网卡的负载能力要求就越高!特别是内网网卡,另一方面如果ROS内网网卡出来故障马上就会断网! 如... ROS软路由如果带机数量比较多,对网卡的负载能力 ...
- 改造industrial_robot_simulator给joint_states的velocity赋值,便于测试轨迹规划的速度平滑性
原生的不存在velocity赋值的功能,现在补充上,补充之后就可以看到joint_states的velocity话题赋值了 #!/usr/bin/env python # # Software Lic ...
- 如何做数据平滑迁移:双写方案
1.什么是数据迁移 数据迁移指的是将一批数据从同构存储系统(如MySQLA到MySQLB)或异构存储系统(如MySQL-MongoDB)间搬运迁移. 最简单的数据迁移方式是通过脚本或定时任务将数据进行 ...
- yocs_velocity_smoother速度平滑包的动态参数设置
ROS功能:动态重配置实用程序;浅显说就是在程序外部动态改变变量值,可以不用重新编译程序,就是说可以快速调参,其中需要用参数服务器,服务和主题. 配置文件保存在和src同级的文件夹cfg中,yocs_ ...
最新文章
- Vue中插入HTML代码的方法
- Cross_validation.train_test_split 中 stratify这个参数的意义是什么?
- linux slub分配器浅析
- [COCI2017-2018#1] Plahte
- Kingsoft AntiVirus(金山毒霸) and av-comparatives organization
- 解决eclipse模块导入后不识别为java项目
- 块级元素水平,垂直居中的两种方式
- Arduino DY-SV17F自动语音播报
- C#监听关注或取消关注微信服务号并获取openid和unionid
- 基于腾讯云cvm的云原生环境搭建
- 创可贴的 ROS PX4 自主飞行无人机 学习笔记(3)
- (github附源码)毕设微信小程序二手书交易后台PHP微擎
- O1,O2,O3优化了什么,链接做了什么;静态链接-static
- 中国黑客生存特写,互联网金钱帝国里的英雄和盗匪
- mysql 特性之一 double write (双写)
- linux的历史演绎
- 浅谈基于PLC和Modbus的配电室现场环境监控系统设计及产品选型
- SHEN ZHEN归来!
- 首届“十大最具价值”AR/VR创业项目遴选榜单丨Xtecher权威发布
- Linux学习:sheel编程
热门文章
- 短视频适合做什么赚钱?短视频暴利赚钱商机,疫情期间实体商家必备拓客软件
- 六成应用不需要程序员,一大批程序员会失业?
- windows系统镜像修复计算机,电脑映像损坏怎么修复_windows提示损坏的映像怎么处理...
- lucene 创建索引慢的问题
- 卧龙图甄选 | 惊蛰来到,万物复苏,春天的气息扑面而来
- opencv2.0 DataType 实现
- Android入门教程五之使用AndroidStudio+SDK开发安卓APP
- 43_sql注入绕waf
- 搜狗输入法——导入本地txt词库
- k8s使用volume将ConfigMap作为文件或目录直接挂载_从应用开发角度认识 K8S