ROS 多台計算機聯網控制機器人


0. 時間同步

sudo apt-get install chrony

1. ubuntu自帶的有openssh-client

可以通過如下指令

ssh username@host

來連接同一局域網內的計算機

可是要想通過ssh被連接,ubuntu系統需要有openssh-server,可以通過

ps -e | grep ssh

 來查看,如果沒有顯示sshd,說明openssh-server還沒有安裝。

2. 安裝openssh-server

sudo apt-get install openssh-server
來安裝openssh-server,如果順利的話會安裝成功,如果遇到
sudo apt-get install openssh-server
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關系樹       
正在讀取狀態信息... 完成       
有一些軟件包無法被安裝。如果您用的是 unstable 發行版,這也許是
因為系統無法達到您要求的狀態造成的。該版本中可能會有一些您需要的軟件
包尚未被創建或是它們已被從新到(Incoming)目錄移出。
下列信息可能會對解決問題有所幫助:

下列軟件包有未滿足的依賴關系:
 openssh-server : 依賴: openssh-client (= 1:6.6p1-2ubuntu1)
E: 無法修正錯誤,因為您要求某些軟件包保持現狀,就是它們破壞了軟件包間的依賴關系。

這是因為,openssh-server是依賴於openssh-client的,那ubuntu不是自帶了openssh-client嗎?原因是自帶的openssh-clien與所要安裝的openssh-server所依賴的版本不同,這里所依賴的版本是

1:6.6p1-2ubuntu1

所以要安裝對應版本的openssh-clien,來覆蓋掉ubuntu自帶的

sudo apt-get install openssh-client=1:6.6p1-2ubuntu1
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關系樹       
正在讀取狀態信息... 完成       
建議安裝的軟件包:
  libpam-ssh keychain monkeysphere
下列軟件包將被【降級】:
  openssh-client
升級了 0 個軟件包,新安裝了 0 個軟件包,降級了 1 個軟件包,要卸載 0 個軟件包,有 0 個軟件包未被升級。
需要下載 566 kB 的軟件包。
解壓縮后會消耗掉 0 B 的額外空間。
您希望繼續執行嗎? [Y/n] y
獲取:1 http://cn.archive.ubuntu.com/ubuntu/ trusty/main openssh-client amd64 1:6.6p1-2ubuntu1 [566 kB]
下載 566 kB,耗時 2秒 (212 kB/s)        
dpkg:警告:downgrading openssh-client from 1:6.6p1-2ubuntu2 to 1:6.6p1-2ubuntu1
(正在讀取數據庫 ... 系統當前共安裝有 200015 個文件和目錄。)
Preparing to unpack .../openssh-client_1%3a6.6p1-2ubuntu1_amd64.deb ...
Unpacking openssh-client (1:6.6p1-2ubuntu1) over (1:6.6p1-2ubuntu2) ...
Processing triggers for man-db (2.6.7.1-1) ...
正在設置 openssh-client (1:6.6p1-2ubuntu1) ...

 可以看到,提示了系統中openssh-client被降級,這樣再安裝openssh-server就可以成功了!

3. 配置

可以通過

hostname
命令來查看主機名 
如果你想將機器人上的電腦作為主機(運行roscore),假設器主機名為hostname_robot,台式機主機名為hostname_desktop
則在機器人電腦上修改bashrc文件:
sudo gedit .bashrc

 在文件最后添加

export ROS_HOSTNAME=hostname_robot.local

 然后在台式機電腦上修改bashrc文件,添加如下代碼:

export ROS_HOSTNAME=hostname_desktop.local
export ROS_MASTER_URI=http://hostname_robot.local:11311

 PS: 上述代碼不能有空格

4. 登錄

在台式機上登錄到機器人電腦上:

ssh username@hostname.local

 OK!

5. 客戶端顯示圖形界面

ssh連接成功后,如果想要顯示圖形界面,需要做一些配置。步驟如下:

5.1 服務器端的ssh必須運行轉發X界面,在ssh服務器中:

sudo gedit /etc/ssh/sshd_config 

      其中有一行X11Forwarding yes,確保這個是yes(注意這個配置文件中的#是注釋,確保X11Forwarding前面沒有#注釋),

      然后重啟ssh服務

cd /etc/init.d
./ssh restart

5.2 客戶端配置,在/etc/ssh/ssh_config配置文件中,找到ForwardAgent yes,ForwardX11 yes,ForwardX11Trusted yes這3個確保是yes(注意這個配置文件中的#是注釋,確保你修改的行沒有被注釋掉)

5.3 配置完成后,進入終端,現在假設我們的ubuntu客戶端的ip是192.168.0.19,而ssh服務器的ip是192.168.0.222。下面是執行步驟,注意別弄錯了:

首先終端未連接ssh之前,執行xhost +192.168.0.222 這個步驟是允許ssh服務器的X界面連接過來然后執行ssh -X root@192.168.0.222 注意-X這個是大寫的X,這個步驟是連接到ssh服務器,接着會要輸入密碼

這個時候終端已經連接到ssh服務器了,然后執行export DISPLAY=192.168.0.19:0.0這個步驟是把ssh服務器的X顯示重新定位到192.168.0.19的0.0顯示器中,也就是我們的客戶端

然后做個測試,執行xclock,等待。。。如果這個時候在你的ubuntu界面中出現了一個時鍾界面,那么恭喜你成功了。

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM