兩個或者多個ros之間的資訊通訊

2021-09-25 18:09:49 字數 2712 閱讀 7837

兩個或者多個ros之間的資訊通訊

【必做】

時間同步

sudo apt-

getinstall chrony

1、【問題:】

e: 無法獲得鎖 /var/lib/apt/lists/lock - open (11: 資源暫時不可用)

e: 無法對目錄 /var/lib/apt/lists/ 加鎖

解決:sudo rm /var/lib/apt/lists/lock

2、【知識】

ros分布式多機通訊

ros是一種分布式軟體框架,節點之間通過松耦合的方式進行組合,在很多應用場景下,節點可以執行在不同的計算平台上,通過topic、service進行通訊。但是「一山不容二虎」,ros只允許存在乙個master,在多機系統中master只能執行在乙個機器上,其他機器需要通過 ssh 的方式和master取得聯絡。所以在多級ros系統中需要一些配置。

我們以兩台虛擬計算機為例,介紹分布式多機通訊的配置步驟,其中計算機wlzxzq作為主機執行master,計算機bei作為從機執行節點。

通過ifconfig檢視計算機ip

master計算機wlzxzq:192.168.161.132

從機計算機bei:192.168.161.132

修改~/.bashrc檔案

master計算機wlzxzq:192.168.161.132

# set ros kinetic【以下是3個工作空間】

source /opt/ros/kinetic/setup.bash

source ~/catkin_ws/devel/setup.bash

source ~/ros_tutorials/devel/setup.bash

# set ros alias command

alias cw='cd ~/catkin_ws'

alias cs='cd ~/catkin_ws/src'

alias cm='cd ~/catkin_ws && catkin_make'

# set ros network

export ros_hostname=192.168.161.132

#ros主機ip  如機械人

:11311  可以放開注釋

#pc ip

從機計算機bei:192.168.161.132

# set ros network

export ros_hostname=192.168.161.133

export ros_master_uri=

# set ros alias command

alias cw='cd ~/catkin_ws'

alias cs='cd ~/catkin_ws/src'

alias cm='cd ~/catkin_ws && catkin_make'

source /opt/ros/kinetic/setup.bash

source ~/catkin_ws/devel/setup.bash  

測試通訊

a:master計算機wlzxzq:192.168.161.132

b:從機計算機bei:192.168.161.132

重新開啟terminor

a: ping 192.168.161.132

b: ping 192.168.161.133

正常通訊。

在a中開啟我們的roscore

在a中使用例程ros_tutorials下面的talk

rosrun roscpp_tutorial talk

在b中使用例程listen

rosrun roscpp_tutorial listen

ssh通訊

①master: sudo apt-get

install

openssh-

server ②

從機:

sudo apt-get

install

openssh-

client ③

開啟服務:

sudo service ssh

start

修改配置:sudo gedit /etc/ssh/sshd_config

把配置檔案中的"permitrootlogin without-password"加乙個"#"號注釋掉,再增加一句"permitrootlogin yes",儲存檔案,是為了允許root使用者登入。  ④

兩個視窗之間資訊的傳遞 C

下面有個例子 我要將 form1 中的 textboxinform1 的內容讀到 form2 的 textboxinform2 中 我有兩種方法介紹給大家,隨便看看吧!第一種,先在 from2中新增乙個全域性變數form1msg,然後寫乙個得到from1msg的方法,如下 private strin...

兩個視窗之間資訊的傳遞 C

下面有個例子 我要將 form1 中的 textboxinform1 的內容讀到 form2 的 textboxinform2 中 我有兩種方法介紹給大家,隨便看看吧!第一種,先在 from2中新增乙個全域性變數form1msg,然後寫乙個得到from1msg的方法,如下 csharp view p...

docker乙個宿主機內兩個容器之間的通訊問題

爬坑。今天搞了個docker小demo 在乙個宿主機內建立了三個容器,乙個tomcat 乙個redis 乙個mysql。tomcat裡有乙個springboot專案。訪問的時候怎麼也連不上資料庫。後來才發現兩個容器之前的網路是不互通的。解決方法 在執行容器的時候如果想連線其他容器 在執行的時候加上 ...