冷知識(shí) 當(dāng)一臺(tái)機(jī)器運(yùn)行著多個(gè)WSL,上面運(yùn)行著多個(gè)ROS
一直在用WSL(Windows Subsystem for Linux)來(lái)跑ROS,
WSL分為WSL1和WSL2 ,雖然微軟只更新WSL2了 但是這兩個(gè)各有優(yōu)缺點(diǎn) 誰(shuí)也無(wú)法取代誰(shuí)
對(duì)我來(lái)說(shuō)缺點(diǎn)主要有
WSL1:沒(méi)法使用CUDA?
WSL2:IP是一個(gè)虛擬IP,且每次重啟都會(huì)重置
無(wú)法和Windows外部通信 USB的串口通信也好,ip端口TCP/UDP通信也好(有不少人折騰端口轉(zhuǎn)發(fā),但是我從來(lái)還沒(méi)弄成功)
吃內(nèi)存
為了同時(shí)享受到兩者的優(yōu)點(diǎn),前一陣裝了多個(gè)鏡像? 分別是不同的WSL版本 不同的Ubuntu版本 不同的ROS版本,這樣也方便一些在新版本Ubuntu或者ROS上死活編譯不出的包 丟去老版本編譯和運(yùn)行?
通信也很簡(jiǎn)單,就是照著ROS多機(jī)通訊的設(shè)置弄一下? 看roscore運(yùn)行在哪就各自指定一下ROS_MASTER,效果拔群(電腦能負(fù)擔(dān)得起開(kāi)多個(gè)鏡像的情況下)
但是接下來(lái)的就比較神奇,偶爾忘記用export ROS_MASTER=? 還是能進(jìn)行通訊
當(dāng)WSL2上開(kāi)著roscore,WSL1無(wú)需任何指定 就能從默認(rèn)的localhost:1131里找到core
當(dāng)WSL1上開(kāi)著roscore,WSL2無(wú)法直接找到,需要export ROS_MASTER=本機(jī)IP
當(dāng)WSL1或者WSL2上開(kāi)著roscore,windows側(cè)(通過(guò)rosbridge)直接連localhost是連不上,需要詳細(xì)指定IP
WSL1和WSL2能同時(shí)開(kāi)著兩個(gè)roscore
感覺(jué)很合理又感覺(jué)有點(diǎn)不對(duì),不過(guò)總而言之當(dāng)同時(shí)開(kāi)著多個(gè)WSL的時(shí)候 把roscore放在WSL2上面會(huì)方便很多