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網卡介面:

udo ifconfig wlan0 up

P.S.正常應該不會開啟,需手動啟動。

B.設定 /etc/network/interfaces

sudo nano /etc/network/interfaces

開啟interface檔案,在當中輸入以下指令並存檔離開(注意避免輸入錯誤)

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

***$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf***

開啟wpa_supplicant.conf檔案後在當中輸入以下指令並存檔離開

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 #country=TW #國碼,這行不一定要加 network={ ssid="WIFI名稱" psk="WIFI密碼" }

D.使用以下指令確認是否可連線

sudo wpa_cli -i wlan0 reconfigure

正常來說應該會報以下錯誤提示
Failed to connect to non-global ctrl_ifname: (null) error: No such file or directory
此時可使用以下指令修復(該指令詳細意義可以再自行查詢)

E.關閉所有使用中的wpa_supplicant

sudo killall wpa_supplicant

F.重新讀取wpa_supplicant.conf設定

sudo wpa_supplicant –B –c /etc/wpa_supplicant/wpa_supplicant.conf –i wlan0 –Dwext

G.完成以上步驟後將Raspberry 4B開發板重開機

sudo reboot

H.重開機並登入後,重新開啟wlan0介面

sudo ifconfig wlan0 up

I.執行以下指令確定eth0、io與wlan0都有被列出

ifconfig

J.再次執行以下指令確認是否可連線

sudo wpa_cli -i wlan0 reconfigure

如果出現
OK
代表成功連上熱點或WAP了

K.執行以下指令確認是否可連線

sudo wpa_cli reconfigure

如果出現
Selected interface ‘wlan0’
OK

代表成功

L.連上特定的wifi熱點

sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf &

(最後的&符號意思為將該命令掛到後臺運行.若執行命令後出現CONNECTED,說明啟動成功,若出現CHANGE或REJECT或其他的,說明啟動失敗.)

M.向DHCP Server索取IP

sudo dhclient wlan0

N.此時Raspberry 4B應成功連上wifi,後續便可執行與網路相關的操作。

建議可以下面兩指令執行相關更新

sudo apt-get update sudo apt-get upgrade

重新開啟raspberry 4 pi時,若wifi熱點資訊不變,則以dhcp方式連上wifi熱點僅需以下步驟:

A.開啟wpa_supplicant.conf,確認wifi熱點資訊是否正確。

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

B.開啟無線網路卡介面

sudo ifconfig wlan0 up

C.連上特定wifi熱點(假設wpa_supplicant.conf內熱點資訊與上次連線相同)

sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf &

D.獲取ip地址

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

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

(3) 設置密鑰

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

P.S.如果有掛代理伺服器導致執行失敗,也可嘗試以下命令:

$ curl –sL 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xC1CF6E31E6BADE8868B172B4F42ED6FBAB17C654' | sudo apt-key add -

(4) 安裝ROS

A.系統更新至最新

sudo apt update

B.安裝ROS完整版

sudo apt install ros-melodic-desktop-full

也可以安裝其他版本
P.S.1.也可以安裝ROS標準版

sudo apt install ros-melodic-ros-base

P.S.2.安裝ROS其他套件
$ sudo apt install ros-melodic-PACKAGE (PACKAGE為其他套件的名稱)例如:

sudo apt install ros-melodic-slam-gmapping

P.S.3.尋找其他可供安裝的ROS套件

apt search ros-melodic

B-1 若執行步驟B出現錯誤提示

unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend) is another process using it?
請輸入以下三行指令,刪除相關檔案後即可重新安裝ros:

sudo rm /var/lib/dpkg/lock-frontend sudo rm /var/lib/dpkg/lock sudo rm /var/cache/apt/archives/lock

C.安裝並初始化rosdep+

sudo apt-get update sudo apt-get install python-rosdep sudo rosdep init rosdep update

D.初始化環境變數

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc source ~/.bashrc

E.安裝其他常用ROS套件

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

================================================================

Select a repo