MUX的使用

2017-09-05  本文已影响0人  marine0131

当我在寻求多地图实时切换方案的时候,找到了mux这个工具

对硬件比较熟悉的各位,应该指导多路复用器这个东西,就是这个mux

mux可以订阅多个topic,所谓的intopics,

intopics

一个mux节点只能输出一个topic(但是可以同时启动多个mux哦)

输出的topic就是从mux的input topic中筛选,更改成设定的output topic name之后发布

提供三个服务(选择、添加、删除)

选择哪个输入作为输出
添加一个输入topic
删除一个输入topic

image.png

举例

比如 我有4张地图-------描述文件分别为:

map1.yaml 
map2,yaml
map3.yaml
map4,yaml

利用map_server把四张地图全部发布出去,有以下消息

\map1, \map1_metadata
\map2, \map2_metadata
\map3, \map3_metadata
\map4, \map4_metadata

做了两个mux,topic名字修改为 mux_map和mux_mapmeta(这是为了防止多个mux之间名字冲突)

map_mux的输入设置为

\map1
\map2
\map3
\map4

输出为 \map

rosrun topic_tools mux map map1 map2 map3 map4 mux:=mux_map

mux_mapmeta的输入设置为

\map1_metadata
\map2_metadata
\map3_metadata
\map4_metadata

输出为\map_metadata

rosrun topic_tools mux map_metadata map1_metadata map2_metadata map3_metadata map4_metadata mux:=mux_mapmeta

那么我们可以通过select服务,来选择每个mux的输出来自哪个输入topic

rosservice call mux_map/select map1
rosservice call mux_mapmeta/select map1_metadata
上一篇下一篇

猜你喜欢

热点阅读