# Raspberry 4B 安裝 ubuntu18.04 與 ROS 流程 #### 使用WindowsPC、2023/06/03最後更新 ## 準備硬體設備: 1、 Raspberry 4B 開發板一塊 2、 螢幕(要能轉接到Raspberry 4B 開發板 micro HDMI接頭) 3、 鍵盤(接Raspberry 4B 開發板 USB port) 4、 Windows系統 PC一臺 5、 讀卡機(接Windows系統PC USB port) ## 準備軟體: 1、 Raspberry官方燒錄工具-“Raspberry Pi Imager” 2、 Ubuntu 18.04映像檔(https://github.com/TheRemote/Ubuntu-Server-raspi4-unofficial/releases)。請下載server版本的.xz壓縮檔案。下載後記得”解壓縮”後才會得到.img映像檔案。P.S.這裡是下載V28版本ubuntu-18.04.4-preinstalled-server-arm64+raspi4.img.xz,解壓縮以後得到ubuntu-18.04.4-preinstalled-server-arm64+raspi4.img映象檔。 3、 最新版本的Respberry 4B韌體(https://github.com/raspberrypi/rpi-firmware)。請直接下載zip檔到電腦後解壓縮。這些檔案是用來替換Respberry 4B安裝ubuntu18.04後的不相容檔案。 ## 大致分為以下三步驟: 1、安裝ubuntu 18.04 2、設定ubuntu 18.04 server wifi 並連上網路 3、在ubuntu18.04上安裝ROS Melodic Morenia ## 1、安裝ubuntu 18.04 將讀卡機接上Windows PC,將SD插入讀卡機,接著利用官方的SD燒錄軟體“Raspberry Pi Imager”將ubuntu-18.04.4-preinstalled-server-arm64+raspi4.img映像檔燒錄至SD卡。 注意!使用Raspberry Pi Imager軟體燒錄時,不要在設定中選擇“配置WIFI“。可能導致後續流程有變。 接下來將SD卡插入Raspberry 4B開發板並開機,正常來說會開機失敗,但失敗畫面上會提示是哪些檔案不相容所導致。 這裡到的狀況提示start4.elf is not compatible。 將Raspberry 4B開發板下電後,把SD卡拔除並插回Windows PC的讀卡機,根據系統提示的不相容檔案,從之前下載的Respberry 4B最新版韌體中,以相應名稱的檔案覆蓋燒錄了ubuntu18.04的SD卡片的system-boot磁碟中的檔案。 注意!!每提示一個檔案不相容,要同時替換掉兩個檔案,規則如下: 如果提示start*.elf不相容 則須同時替換start*.elf與fixup*.dat兩個檔案。 例如提示為start4.elf is not compatible,則要從最新的韌體中複製start4.elf與fixup4.dat兩個檔案,覆蓋掉SD卡system-boot磁碟中的這兩個同名檔案。 將替換掉檔案的SD卡插回Raspberry 4B開發板並開機,如果還有提示其他不相容檔案則依序以最新韌體內檔案替換。 P.S. 實際測試時只替換了start4.elf與fixup4.dat就可順利進入登入畫面。 ================================================================ 安裝ubuntu 18.04之參考網頁 https://blog.csdn.net/JifengZ9/article/details/124314080 ================================================================ ## 2、設定ubuntu 18.04 server wifi 並連上網路(P.S.Raspberry4B已內建網路卡並可連接2.4Ghz與5Ghz wifi故無需再外接USB無線網路卡) ### (1)首次進入ubuntu的預設帳號密碼: Username: ubuntu Password: ubuntu 輸入後ubuntu18.04會要求更改密碼,第一次要輸入舊密碼(ubuntu),第二次輸入新密碼,第三次重複輸入一次新密碼,即可更改完成並登入。登入後開始設定wifi。 首先先確認要連線的wifi之SSID與Password。確認提供wifi的ap使用dhcp模式(以下方法以該條件為前提進行設定)。 ### (2)設定ubuntu 18.04 server wifi 並連上網路 在ubuntu中設定/etc/network/interfacs與/etc/wpa_supplicant/wpa_supplicant.conf兩個檔案。大致來說Interface檔案內會設定無線網路連線方式,wpa_supplicant.conf檔案則用來設定要連接的wifi熱點資訊(主要包含SSID名稱與PSK密碼)。 #### A.先確認wlan0 (無線網路卡)是否開啟 使用ifconfig指令,看是否會列出eth0、io以及wlan0的資訊。如果只有前兩項(eth0與io資訊)則代表wlan0未開啟,請用以下指令開啟wlan0網卡介面: ```shell= udo ifconfig wlan0 up ``` P.S.正常應該不會開啟,需手動啟動。 #### B.設定 /etc/network/interfaces ```shell= sudo nano /etc/network/interfaces ``` 開啟interface檔案,在當中輸入以下指令並存檔離開(注意避免輸入錯誤) ```shell= source-directory /etc/network/interfaces.d auto wlan0 iface wlan0 inet manual wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf ``` #### C.設定 /etc/wpa_supplicant/wpa_supplicant.conf ```shell= ***$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf*** ``` 開啟wpa_supplicant.conf檔案後在當中輸入以下指令並存檔離開 ```shell= ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 #country=TW #國碼,這行不一定要加 network={ ssid="WIFI名稱" psk="WIFI密碼" } ``` #### D.使用以下指令確認是否可連線 ```shell= sudo wpa_cli -i wlan0 reconfigure ``` 正常來說應該會報以下錯誤提示 <font color="red">*Failed to connect to non-global ctrl_ifname: (null) error: No such file or directory*</font> 此時可使用以下指令修復(該指令詳細意義可以再自行查詢) #### E.關閉所有使用中的wpa_supplicant ```shell= sudo killall wpa_supplicant ``` #### F.重新讀取wpa_supplicant.conf設定 ```shell= sudo wpa_supplicant –B –c /etc/wpa_supplicant/wpa_supplicant.conf –i wlan0 –Dwext ``` #### G.完成以上步驟後將Raspberry 4B開發板重開機 ```shell= sudo reboot ``` #### H.重開機並登入後,重新開啟wlan0介面 ```shell= sudo ifconfig wlan0 up ``` #### I.執行以下指令確定eth0、io與wlan0都有被列出 ```shell= ifconfig ``` #### J.再次執行以下指令確認是否可連線 ```shell= sudo wpa_cli -i wlan0 reconfigure ``` 如果出現 <font color="red">*OK*</font> 代表成功連上熱點或WAP了 #### K.執行以下指令確認是否可連線 ```shell= sudo wpa_cli reconfigure ``` 如果出現 <font color="red">*Selected interface ‘wlan0’ OK*</font> 代表成功 #### L.連上特定的wifi熱點 ```shell= sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf & ``` (最後的&符號意思為將該命令掛到後臺運行.若執行命令後出現CONNECTED,說明啟動成功,若出現CHANGE或REJECT或其他的,說明啟動失敗.) #### M.向DHCP Server索取IP ```shell= sudo dhclient wlan0 ``` #### N.此時Raspberry 4B應成功連上wifi,後續便可執行與網路相關的操作。 建議可以下面兩指令執行相關更新 ```shell= sudo apt-get update sudo apt-get upgrade ``` ### 重新開啟raspberry 4 pi時,若wifi熱點資訊不變,則以dhcp方式連上wifi熱點僅需以下步驟: #### A.開啟wpa_supplicant.conf,確認wifi熱點資訊是否正確。 ```shell= sudo nano /etc/wpa_supplicant/wpa_supplicant.conf ``` #### B.開啟無線網路卡介面 ```shell= sudo ifconfig wlan0 up ``` #### C.連上特定wifi熱點(假設wpa_supplicant.conf內熱點資訊與上次連線相同) ```shell= sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf & ``` #### D.獲取ip地址 ```shell= sudo dhclient wlan0 ``` ================================================================ 連線wifi參考網頁 https://home.gamer.com.tw/creationDetail.php?sn=4398337 https://blog.csdn.net/u010299133/article/details/105823339 ================================================================ ## 3、在ubuntu18.04上安裝ROS Melodic Morenia ### (1) 確保wifi已成功連線: 重新開啟raspberry 4 pi時,若wifi熱點資訊不變,則以dhcp方式連上wifi。 ### (2) 設置sources.list ```shell= sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' ``` ### (3) 設置密鑰 ```shell= sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 ``` P.S.如果有掛代理伺服器導致執行失敗,也可嘗試以下命令: ```shell= $ curl –sL 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xC1CF6E31E6BADE8868B172B4F42ED6FBAB17C654' | sudo apt-key add - ``` ### (4) 安裝ROS #### A.系統更新至最新 ```shell= sudo apt update ``` #### B.安裝ROS完整版 ```shell= sudo apt install ros-melodic-desktop-full ``` 也可以安裝其他版本 P.S.1.也可以安裝ROS標準版 ```shell= sudo apt install ros-melodic-ros-base ``` P.S.2.安裝ROS其他套件 $ sudo apt install ros-melodic-PACKAGE (***PACKAGE為其他套件的名稱***)例如: ```shell= sudo apt install ros-melodic-slam-gmapping ``` P.S.3.尋找其他可供安裝的ROS套件 ```shell= apt search ros-melodic ``` #### B-1 若執行步驟B出現錯誤提示 <font color="red">*unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend) is another process using it?*</font> 請輸入以下三行指令,刪除相關檔案後即可重新安裝ros: ```shell= sudo rm /var/lib/dpkg/lock-frontend sudo rm /var/lib/dpkg/lock sudo rm /var/cache/apt/archives/lock ``` #### C.安裝並初始化rosdep+ ```shell= sudo apt-get update sudo apt-get install python-rosdep sudo rosdep init rosdep update ``` #### D.初始化環境變數 ```shell= echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc source ~/.bashrc ``` #### E.安裝其他常用ROS套件 ```shell= sudo apt install python-rosinstall python-rosinstall-generator python-wstool ``` ================================================================ 安裝ROS Melodic Morenia參考網頁 https://blog.csdn.net/virtue333/article/details/52820407 https://zhuanlan.zhihu.com/p/126538251 ================================================================