topic_tools mux 话题的多路切换开关
http://wiki.ros.org/topic_tools/mux
目录
1.mux
1.mux Usage
2.Associated mux tools (mux_select, mux_add, mux_delete)
2.ROS API
1.mux
mux节点订阅一系列的输入话题,并把其中一个话题重新转发为其他话题,例如,它就是一个多路开关,1到N个输入中切换。提供一些服务,如,输入话题之间的切换,添加或者删除输入话题。启动时,选择命令行的第一个输入话题。
参数
~lazy (bool, default: False)
如果是True,除非至少有一个输出话题的订阅者,否则不订阅输入话题。
Mux使用方法
mux <输出话题> <输入话题1> [输入话题2...] [标准ROS参数]
订阅<输入话题1>...N并且发布当前选择的话题到输出话题。Mux会以选择的 <输入话题1> 开始。
outtopic: 发布的输出话题
intopicN:输入话题N, 订阅的输入话题。多路复用两个命令流(auto_cmdvel和joystick_cmdvel)为一个 (sel_cmdvel):
rosrun topic_tools mux sel_cmdvel auto_cmdvel joystick_cmdvel mux:=mux_cmdve
l
要点: 为了避免与其他的Mux实例冲突,须在命令行使用mux:=foo,把mux节点映射为一些可描述的名称。
**所关联的mux工具 (mux_select, mux_add, mux_delete)**
为了方便使用,topic_tools提供了与mux交互的命令行工具.假设mux名为MUX_NAME (通过启动时重新映射mux:=MUX_NAME),可以使用:
mux_select MUX_NAME `<topic>`
从`<topic>`选择输出.
mux_add MUX_NAME `<topic>`
添加一个新的输入`<topic>.`
mux_delete MUX_NAME `<topic>` :
删除输入`<topic>.`
switch_mux `<outtopic> <intopic>` DEPRECATED since ROS 0.11
: 使用mux_select代替.
设置话题sel_cmdvel在auto_cmdvel和joystick_cmdvel话题之间切换, 然后使用mux_select去选择joystick_cmdvel:
rosrun topic_tools mux sel_cmdvel auto_cmdvel joystick_cmdvel mux:=mux_cmdvel &
rosrun topic_tools mux_select mux_cmdvel joystick_cmdvel
注意: 可以使用 rosservice代替:
rosservice 调用mux_cmdvel/select joystick_cmdvel
**ROS API
订阅的节点**
<intopicN> (any/any)
mux订阅的第N个输入话题(在命令行指定,或者通过mux/add添加服务)
发布的话题
<outtopic> (any/any)
选择的输入消息 (由命令行指定)
mux/selected (new in ROS 0.11) (std_msgs/String)
哪个话题是当前选定的,或者 __none
Services
mux/select (new in ROS 0.11) (topic_tools/MuxSelect)
选择一个输入话题输出,或者 __none去关闭输出
mux/add (new in 0.11) (topic_tools/MuxAdd)
添加一个新的输入topic
mux/delete (new in ROS 0.11) (topic_tools/MuxDelete)
删除一个输入topic
<outtopic>_select (DEPRECATED since ROS 0.11) (topic_tools/MuxSelect)
选择一个输入话题到输出,或__none去关闭输出.
Author: wsh
Email: tongzhuodenilove@163.com