就如同各位從開始的夥伴們,你們一定很想快點看到,一台可以裝上雷射LiDAR導航,自主漫遊 + 路徑規劃 + 自主避障 + 影像AI   &^$%^#%%^%^&%^  ~ 等等集合了目前self-driving 前端科技的家用小車八 !! 我們記錄一位工程師,他是如何從開始的學習、蛻變到一位 self-driving developer的過程。

話說,這一開始的動作應該也是記錄摸索的過程,不過,這卻是最真實的、殘酷與慘痛代價的經驗。希望這些記錄可以減少後面跟進的學習者們寶貴的時間。

1-1、遠端遙控機器人 – two ROS machines 通訊測試 

在此定義初階段的學習標的 :

  • 遠端遙控機器人 
  • LiDAR雷達建地圖
  • 自主導航與避障
  • 路徑規劃   (到這 ~ 基本該會的操作都已經具備了)

我們就從 “two ROS machines 通訊測試 (小烏龜遠端連線)” 開始吧 ! 

1-2、連線架構

使用裝備 : 

  • ACER i5 筆電 win10系統
  • 樹梅派 Pi4 B (2020 年最新版)

測試架構 : 

1-2、VM(虛擬機)設定網路連線

先去 Edit –> Virtual Network Editor…  指定你要用哪個虛擬機,本次用內建的VMnet1,隨即檢查它的內建分配網域,要改成192.16.1.o 的網段,以便跟目前測試網路AP所分配的IP同一個網段。 如下

接著到我們的開啟的虛擬機,去選擇 “virtual machine setting” ; 這裡我們選 Custom – VMnet1 ,來使用我們自己設定的虛擬網路

這時,你會發現 vm中的 VMnet1被分配到 192.168.1.128。 當然,若是你要自己指定其他網路等級的ip 如 10.42.xx.xx ,也可以如上圖自己指定。

此時,到pi 的終端機去檢查有無連上vm裡面的ubuntu,如下 ping 192.168.1.128。同樣地,也從vm中ping一下pi看看有無正確連上。

此時本網路個裝置測試的ip 如下 : 

 

通常在vm設定虛擬網路的時候,許多人會出現問題 ,請務必檢查電腦端網路橋接的結果要正確 : 

如下圖,網路橋接器的裝置名稱,不可以是”無法辨識的網路”,否則橋接wifi 實體網卡仍然是不成功喔 !

成功的話如下圖 : 

 

1-3. 指定ROS管理資訊發佈與接收訊息的Master機器

ROS的通訊架構其實很簡單,就像遊戲中的角色扮演,你要台ROS機器擔任甚麼角色都可以,只要一開始指定清楚即可,本次架構如下:

 

1. 編輯vm虛擬機器端的環境變數設定檔。

我們需先開起虛擬機器上的 Terminal ,輸入指令進入其中的環境變數設定檔。

使用 gedit 編輯環境變數設定檔指令:sudo gedit ~/.bashrc

檔案開啟後,在最後面加上兩行敘述,如下

export ROS_MASTER_URI=http://192.168.1.7:11311
export ROS_HOSTNAME=192.168.1.7

同樣地,在pi4 上面執行上述動作,增加以下兩行

export ROS_MASTER_URI=http://192.168.1.7:11311
export ROS_HOSTNAME=192.168.1.13

2. 在VM虛擬機中開始遙控小烏龜

先在區域網路上註冊一個 Master。註冊 Master 指令 : roscore 。我們選PC的VM虛擬機來註冊master

2. 樹莓派端執行 turtlesim_node 節點。執行 turtlesim_node 節點

指令 : rosrun turtlesim turtlesim_node

3. 虛擬機器執行 turtle_teleop_key 節點。要再開一個新的terminal,執行 turtle_teleop_key 節點

指令 : rosrun turtlesim turtle_teleop_key

以上就是所有的動作了。祝各位順利 !

 

 

Posted in ROS

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>