當我在尋求多地圖實時切換方案的時候,找到了mux這個工具
對硬件比較熟悉的各位,應該指導多路復用器這個東西,就是這個mux
mux可以訂閱多個topic,所謂的intopics,

intopics
一個mux節(jié)點只能輸出一個topic(但是可以同時啟動多個mux哦)
輸出的topic就是從mux的input topic中篩選,更改成設定的output topic name之后發(fā)布
提供三個服務(選擇、添加、刪除)
選擇哪個輸入作為輸出
添加一個輸入topic
刪除一個輸入topic

image.png
舉例
比如 我有4張地圖-------描述文件分別為:
map1.yaml
map2,yaml
map3.yaml
map4,yaml
利用map_server把四張地圖全部發(fā)布出去,有以下消息
\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