1、概述
前面我們做的操作都是在單個(gè)設(shè)備上進(jìn)行,也就是分別開啟多個(gè)終端,在不同終端上啟動(dòng)節(jié)點(diǎn)等相關(guān)操作,這里我們使用兩臺(tái)設(shè)備來控制,一臺(tái)虛擬機(jī)和一臺(tái)無人車(使用VNC Viewer連上去,也可以看做一臺(tái)Linux虛擬機(jī))
VNC Viewer有興趣的可以查閱:遠(yuǎn)程連接VNC-Viewer與安全傳輸WinSCP軟件
2、安裝Chrony包與SSH服務(wù)器
2.1、介紹
Chrony是NTP(Network Time Protocol)網(wǎng)絡(luò)時(shí)間協(xié)議的替代品,能更精確、更快的同步時(shí)鐘,傳統(tǒng)NTP需要幾個(gè)小時(shí),而Chrony僅需要數(shù)秒種或數(shù)毫秒就可以完成時(shí)間同步。
安裝這個(gè)時(shí)間同步服務(wù)是很有意義的,因?yàn)槊颗_(tái)設(shè)備的運(yùn)行環(huán)境等都不一樣,本地時(shí)鐘可能會(huì)不一致,雖然有校正過,但是過一段時(shí)間之后,又可能不一致了,那么對于分布式架構(gòu)來說,就會(huì)造成不好的結(jié)果,我們需要不同的設(shè)備協(xié)同完成,所以需要統(tǒng)一時(shí)間。
Chrony由兩個(gè)程序組成,分別是chronyd和chronyc。
chronyd是一個(gè)后臺(tái)運(yùn)行的守護(hù)進(jìn)程,用于調(diào)整內(nèi)核中運(yùn)行的系統(tǒng)時(shí)鐘和時(shí)鐘服務(wù)器同步,確定計(jì)算機(jī)增減時(shí)間的比率,并對此進(jìn)行補(bǔ)償。
chronyc提供了一個(gè)用戶界面,用于監(jiān)控性能并進(jìn)行多樣化的配置。它可以在chronyd實(shí)例控制的計(jì)算機(jī)上工作,也可以在一臺(tái)不同的遠(yuǎn)程計(jì)算機(jī)上工作。
OpenSSH是SSH協(xié)議的免費(fèi)開源實(shí)現(xiàn),功能包括:實(shí)現(xiàn)SSH協(xié)議,可以讓本地計(jì)算機(jī)和遠(yuǎn)程服務(wù)器之間建立安全的連接,提供安全的傳輸通道,保護(hù)數(shù)據(jù)的傳輸安全。
2.2、安裝
分別在兩臺(tái)設(shè)備上安裝chrony包以及ssh服務(wù)器用來實(shí)現(xiàn)同步
sudo apt-get install chrony openssh-server
分別輸入ifconfig與hostname命令,找出其IP地址和主機(jī)名
虛擬機(jī)(主機(jī))
192.168.1.128 YAB
無人車(從機(jī))
192.168.1.11 jetson-desktop
?2.3、修改hosts
修改hosts文件,將兩者的IP與主機(jī)名都寫入里面
所有用戶加個(gè)可寫權(quán)限:sudo chmod a+w /etc/hosts
修改hosts文件:gedit /etc/hosts
192.168.1.128?? ?YAB
192.168.1.11?? ?jetson-desktop
修改好了之后,在兩臺(tái)設(shè)備上都輸入下列命令重啟網(wǎng)絡(luò),實(shí)現(xiàn)兩臺(tái)設(shè)備間通信:
sudo /etc/init.d/networking restart
確認(rèn)服務(wù)是否啟動(dòng)
ps -e | grep ssh
也可以互相ping主機(jī)名測試下,是否可以ping通,能夠ping通就沒有問題。
2.4、設(shè)置環(huán)境變量?
接下來就設(shè)置環(huán)境變量,最好是加入到.bashrc文件
虛擬機(jī)(主機(jī))
echo "export ROS_HOSTNAME=YAB" >> ~/.bashrc
echo "export ROS_MASTER_URI=http://YAB:11311" >>~/.bashrc
source ~/.bashrc
無人車(從機(jī))
echo "export ROS_HOSTNAME=jetson-desktop" >> ~/.bashrc
echo "export ROS_MASTER_URI=http://YAB:11311" >>~/.bashrc
source ~/.bashrc
2.5、啟動(dòng)節(jié)點(diǎn)
虛擬機(jī)(主機(jī))啟動(dòng)ROS管理節(jié)點(diǎn)Master:roscore
無人車(從機(jī))
啟動(dòng)烏龜
rosrun turtlesim turtlesim_node
啟動(dòng)鍵盤控制
rosrun turtlesim turtle_teleop_key?
這樣就可以在從機(jī)上控制烏龜了,這里也可以看出分布式的優(yōu)勢,可以讓相互獨(dú)立的節(jié)點(diǎn)能夠相互通信,非常棒。如下圖:
當(dāng)然上面的URI也可以使用IP地址,這個(gè)看個(gè)人的具體情況吧。
3、不同網(wǎng)段處理
這里可能大家會(huì)遇到一個(gè)不在同一個(gè)網(wǎng)段的情況,這樣就不能互相通信,這里以本人的為例,怎么更改虛擬中的IP網(wǎng)段。
本人電腦是有線網(wǎng)絡(luò),IP是在192.168.3.xx的網(wǎng)段,虛擬機(jī)一般都是直連物理網(wǎng)絡(luò),所以IP地址也是在192.168.3.xx這個(gè)網(wǎng)段
而無人車使用的是無線USB網(wǎng)卡(Realtek 8188GU Wireless LAN 802.11n USB NIC),IP地址是192.168.1.11
由于虛擬機(jī)跟無人車不在同一個(gè)網(wǎng)段里面,所以不能相互通信,這個(gè)時(shí)候我們需要使用到“虛擬網(wǎng)絡(luò)編輯器”,如下圖:?
點(diǎn)擊進(jìn)來之后,右下角點(diǎn)擊“更改設(shè)置”,如下圖:
將出現(xiàn)一個(gè)新的VMnet0選擇,我們點(diǎn)擊“橋接模式(將虛擬機(jī)直接連接到外部網(wǎng)絡(luò))(B)”,其中已橋接至:選擇無人車的無線USB網(wǎng)卡即可。如下圖:?
最后我們來到虛擬機(jī)的設(shè)置,點(diǎn)擊“網(wǎng)絡(luò)適配器”,網(wǎng)絡(luò)連接,這里我們選擇“自定義(U):特定虛擬網(wǎng)絡(luò)”,選擇上面配置好的VMnet0即可。如下圖:
?
重啟網(wǎng)絡(luò):sudo /etc/init.d/networking restart
我們在兩臺(tái)設(shè)備上面分別互相ping下,不出意外是可以互相ping通了,如下圖:?文章來源:http://www.zghlxwxcb.cn/news/detail-742558.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-742558.html
到了這里,關(guān)于ROS分布式演練,多臺(tái)設(shè)備進(jìn)行通信的配置的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!