速度控制话题按优先级输出-cmd_vel ROS
  4FuoKA6x56q4 2023年11月12日 22 0

Y

一般我们的速度控制发布话题会取名为“cmd_vel”, 接受也叫这个,但如果有多个发布节点呢,接受该听谁的,笔者曾经就在机器人调试发现机器人运动卡顿,经过调试才发现原来手柄开着一直发布零指令。虽然可以通过特殊按键进行触发控制,但这岂不是又要配置。于是控制多路切换出现了

T

其实最具代表性的为twist_mux切换功能包,其输入输出如下:

速度控制话题按优先级输出-cmd_vel ROS_限制输入

经过该节点,同一时刻只有一个控制输出,通过配置文件不仅可以控制速度控制话题的优先级,而且还可以根据超时限制、外部锁话题来限制输入话题的选择。

W


安装

直接克隆库https://github.com/ros-teleop/twist_mux.git

也可以直接安装· 

sudo apt-get install ros-$ROS_DISTRO-twist-mux

运行

roslaunch twist_mux twist_mux.launch

话题

速度控制话题按优先级输出-cmd_vel ROS_限制输入_02

这里的输出话题名是twist_mux/cmd_vel,的我们的接受话题为cmd_vel,这时可以将

`<arg name="cmd_vel_out" default="cmd_vel"/>`

改为

<arg name="cmd_vel_out" default="cmd_vel"/>

节点发送端进行重映射

<remap from ="/cmd_vel" to="/nav_vel"/>

这就可以实现控制

优先级设置,可以通过修改twist_mux_topics.yaml来进行制定

# Input topics handled/muxed.
# For each topic:
# - name    : name identifier to select the topic
# - topic   : input topic of geometry_msgs::Twist type
# - timeout : timeout in seconds to start discarding old messages, and use 0.0 speed instead
# - priority: priority in the range [0, 255]; the higher the more priority over other topics

topics:
-
  name    : navigation
  topic   : nav_vel
  timeout : 0.5
  priority: 10
-
  name    : joystick
  topic   : joy_vel
  timeout : 0.5
  priority: 100
-
  name    : keyboard
  topic   : key_vel
  timeout : 0.5
  priority: 90
-
  name    : tablet
  topic   : tab_vel
  timeout : 0.5
  priority: 100



ref

http://www.guyuehome.com/1534

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月12日 0

暂无评论

推荐阅读