## System Ubuntu 18.04 ## 連結 * [ROS Installation on VOXL 1](https://docs.modalai.com/ros-installation-voxl/) * [How to Run MAVROS](https://docs.modalai.com/mavros/) * [如何解決“dpkg:error processing/var/cache/apt/archives/python-apport_2.0.1-0ubuntu9_all.deb”?](https://ubuntuqa.com/zh-tw/article/1984.html) * [Qualcomm Robotics RB5 SDK Manager User Guide ](https://thundercomm.s3-ap-northeast-1.amazonaws.com/shop/doc/1590131656070623/Thundercomm_Turbox_RB5_SDK_Manager_User%20Guide.pdf) * [SDK Manager 2.x+ 中 LE 和 LU 分別是什麼意思?](https://developer.qualcomm.com/forum/qdn-forums/hardware/qualcomm-robotics-rb5-development-kit/68626) * [高通機器人 RB5-Thundercomm SDK Manager 3.0.0 入門](https://developer.ridgerun.com/wiki/index.php/QUALCOMM_Robotics_RB5/Thundercomm_SDK/Getting_Started) * [高通USB閃存工具](https://www.96boards.org/documentation/consumer/guides/qdl.md.html) --- ## windows 安裝 ADB adb工具可以讓RB5在windows系統上直接輸入指令 ### 1.下載platform-tools文件 下載後的檔案放入電腦裡的C槽位置 [下載連結](https://developer.android.com/studio/releases/platform-tools?hl=zh-tw) ![](https://hackmd.io/_uploads/H1Chb1nqn.png) ### 2.設定ADB的windows環境變數 鍵盤按鍵"Windows + R", 輸入"sysdm.cpl" 開啟系統內容 ![](https://hackmd.io/_uploads/HyTcMy29n.png) 點擊"進階 > 環境變數" 在系統變數中找到"PATH",點擊"編輯" ![](https://hackmd.io/_uploads/HkHe4Jnch.png) 點擊"新增"填入platform-tools的資料夾路徑,在點擊"確認",即完成設定 ![](https://hackmd.io/_uploads/HykrN1hqn.png) ### 3.測試ADB功能 於CMD輸入查詢ADB版本指令,若列出版本號表示成功 ![](https://hackmd.io/_uploads/Hy62NJn92.png) 將RB5與電腦使用USB TypeC連接,於CMD輸入"adb shell"指令即可開始使用 ``` $ adb shell ``` ![](https://hackmd.io/_uploads/rkXOHy292.png) --- ## RB5刷機 刷機**必須使用實體作業系統進行操作**,若使用虛擬機進行刷機則因為Windows無法抓取RB5在EDL mode下的USB驅動,進而造成虛擬機也無法抓到裝置。刷機輸入作業系統版本為 Ubuntu 18.04。 ### 注意!!不得使用虛擬機進行刷機 ### 參考資料 * [Qualcomm Robotics RB5 SDK Manager](https://thundercomm.s3-ap-northeast-1.amazonaws.com/shop/doc/1590131656070623/Thundercomm_Turbox_RB5_SDK_Manager_User%20Guide.pdf) * [Qualcomm Robotics RB5- Getting Started with Thundercomm SDK Manager 3.0.0](https://developer.ridgerun.com/wiki/index.php/QUALCOMM_Robotics_RB5/Thundercomm_SDK/Getting_Started) * [Qualcomm USB flashing tool](https://www.96boards.org/documentation/consumer/guides/qdl.md.html) ### 1. 註冊 thundercomm 帳戶 完成帳戶註冊,以利後續提供 SDK Manager 登入使用 [Thundercomm 網站](https://www.thundercomm.com/) ### 2.安裝Qualcomm USB flashing tool #### 2.1 下載Linux flashing tool ``` $ git clone https://git.linaro.org/landing-teams/working/qualcomm/qdl.git ``` #### 2.2 安裝編譯工具 ``` $ sudo apt-get update $ sudo apt-get install libxml2-dev libudev-dev ``` #### 2.3 禁用 Dragonboard ``` $ sudo systemctl stop ModemManager ``` ### 3.下載 SDK Manager [SDK Manager下載連結](https://www.thundercomm.com/product/qualcomm-robotics-rb5-development-kit/) 將下載的SDK Manager檔案解壓縮 ``` $ unzip TC-sdkmanager-x.x.x.zip ``` ### 4.安裝 SDK Manager 在Linux系統中安裝SDK Manager分為兩種不同安裝方法,分別為for Ubuntu 18.04的安裝方法與for Ubuntu 16.04, 20.04的安裝方法,根據本機Linux作業系統版本選擇操作方法 ### 注意!!步驟4.1請依照作業統版本擇一執行 #### **4.1 On Ubuntu 18.04 Host** ##### 4.1.1 安裝 qemu-user-static & openssh-server ``` $ sudo apt-get install qemu-user-static openssh-server -y ``` ##### 4.1.2 安裝 SDK Manager ``` $ sudo dpkg -i tc-sdkmanager-vx.x.x_amd64.deb ``` ##### 4.1.3 啟動SDK Manager 開啟SDK Manager後跳到步驟5開始操作SDK Manager ``` $ sdkmanager ``` #### **4.1 On Other Ubuntu Host (Ubuntu 16.04, 20.04)** ##### 4.1.1 安裝 qemu-user-static & openssh-server & udev ``` $ sudo apt-get install qemu-user-static openssh-server udev -y ``` ##### 4.1.2 安裝Docker [Install Docker Engine on Ubuntu](https://docs.docker.com/engine/install/ubuntu/) ###### 4.1.2.1 更新apt包索引並安裝包以允許apt通過 HTTPS 使用存儲庫 ``` $ sudo apt-get update $ sudo apt-get install ca-certificates curl gnupg ``` ###### 4.1.2.2 添加Docker官方GPG密鑰 ``` $ sudo install -m 0755 -d /etc/apt/keyrings $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg $ sudo chmod a+r /etc/apt/keyrings/docker.gpg ``` ###### 4.1.2.3 設置存儲庫 ``` $ echo \ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ``` ###### 4.1.2.4 安裝最新版本Docker ``` $ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin ``` ###### 4.1.2.5 通過運行鏡像來驗證Docker Engine安裝是否成功 hello-world 此命令下載測試映像並在容器中運行它。當Docker運行時,它會打印一條確認消息並退出。 ``` $ sudo docker run hello-world2 ``` ##### 4.1.3 生成 Ubuntu 18.04 docker 鏡像 ``` $ sudo docker build -t ubuntu:18.04-sdkmanager . ``` ##### 4.1.4 建立 Docker 容器 ``` $ sudo docker run -v /home/${USER}:/home/hostPC/ --privileged -v /dev/:/dev -v /run/udev:/run/udev -d --name sdkmanager_container -p 36000:22 buntu:18.04-sdkmanager ``` ##### 4.1.5 在Docker容器啟動SDK Manager 啟動 Docker 環境,若第一次啟動 SDK Manager 則跳過此步驟 ``` $ sudo docker start sdkmanager_container ``` 開啟SDK Manager後跳到步驟5開始操作SDK Manager ``` $ sudo docker exec -it sdkmanager_container sdkmanager ``` ### 5. SDK Manager 下載映像檔 #### 5.1 登入 Thundercomm 帳戶 輸入於步驟1.註冊的電子郵件與密碼 ![](https://hackmd.io/_uploads/B1k4s7rj2.png) #### 5.2 確認目標路徑 輸入"y"確認路徑 ![](https://hackmd.io/_uploads/Skzm3XBin.png) #### 5.3 選擇裝置型號 輸入"1"選擇RB5 ![](https://hackmd.io/_uploads/BkS93Xrjh.png) #### 5.4 設定映像檔作業系統類型 [What does LE mean and what does LU mean in SDK Manager 2.x+?](https://developer.qualcomm.com/forum/qdn-forums/hardware/qualcomm-robotics-rb5-development-kit/68626) 輸入"1"選擇LU Platform(Ubuntu) ![](https://hackmd.io/_uploads/SJNX6mHih.png) 輸入"1"選擇LU1.0 Platform ![](https://hackmd.io/_uploads/SJycTXBin.png) #### 5.5 選擇映像檔版本 輸入"1"選擇最新版本映像黨 ![](https://hackmd.io/_uploads/SyWbAmHs2.png) #### 5.6 下載映像檔 輸入"1"開始下載映像檔版本,該步驟執行需要比較長時間 ![](https://hackmd.io/_uploads/rySF07Bo3.png) #### 5.7 RB5 進入EDL Mode 1. 移除RB5所有的外接線路,包括USB、Type C與HDMI,否則會造成RB5損壞 2. 持續按壓著"F_DL"按鍵(下圖所示),同時插入電源線 ![](https://hackmd.io/_uploads/r13pc4rin.png) 3. 繼續按壓著"F_DL"按鍵,插入電腦USB與Type C連接線,接著釋放"F_DL"按鍵 4. 輸入下列指令查詢電腦是否抓到RB5裝置,當電腦抓到RB5則會多出"/dev/ttyUSB0"的項目 ``` $ ls /dev/tty* ``` #### 5.8 燒入映像檔 輸入"2"開始燒入映像檔。燒入完成後等待RB5開機即完成RB5的刷機 ![](https://hackmd.io/_uploads/rkYtJ4rj3.png) --- ## Setting WiFi ### 1.進入WiFi配置檔案位置 ``` $ cd /data/misc/wifi ``` ### 2.修改WiFi配置檔案 修改以下WiFi設定,修改後退出 * ssid=輸入WiFi * psk=WiFi密碼 ``` $ vim wpa_supplicant.conf ``` ### 3.重新載入WiFi配置 ``` $ wpa_cli -i wlan0 reconfigure ``` ### 4.測試連線 查詢IP,若輸入指令後於wlan0顯示IP表示WiFi連接成功 ``` $ ifconfig ``` 測試ping google通互聯網 ``` $ ping www.google.com ``` --- ## 系統更新 更新軟體的最新資訊及列表 ``` $ apt-get update ``` 更新目前已安裝的軟體到最新版本 ``` $ apt-get full-upgrade ``` 刪除依賴項 ``` $ apt autoremove ``` --- ## Install ROS 安裝 ROS Melodic 版本 ### 1.重新設定apt的來源 備份 sources.list 檔案 ``` $ cp /etc/apt/sources.list sources_backup.list ``` 修改 sources.list ``` $ cd /etc/apt $ vim sources.list ``` sources.list 內容覆蓋為以下資料,如下圖所示 > deb [arch=amd64,i386] http://us.archive.ubuntu.com/ubuntu/ bionic main restricted universe multiverse > deb [arch=amd64,i386] http://us.archive.ubuntu.com/ubuntu/ bionic-updates main restricted universe multiverse > deb [arch=amd64,i386] http://us.archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse > deb [arch=amd64,i386] http://security.ubuntu.com/ubuntu bionic-security main restricted universe multiverse > deb [arch=arm64,armhf,ppc64el,s390x] http://ports.ubuntu.com/ubuntu-ports/ bionic main restricted universe multiverse > deb [arch=arm64,armhf,ppc64el,s390x] http://ports.ubuntu.com/ubuntu-ports/ bionic-updates main restricted universe multiverse > deb [arch=arm64,armhf,ppc64el,s390x] http://ports.ubuntu.com/ubuntu-ports/ bionic-backports main restricted universe multiverse > deb [arch=arm64,armhf,ppc64el,s390x] http://ports.ubuntu.com/ubuntu-ports/ bionic-security main restricted universe multiverse 示意圖 ![](https://hackmd.io/_uploads/HJ7T4A2c2.png) ### 2.Setup your sources.list ``` $ apt-get update $ sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' ``` ### 3.設定金鑰 安裝 curl 工具 ``` $ apt install curl ``` 加入金鑰 ``` $ curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | apt-key add - ``` ### 4.更新軟體的最新資訊及列表 ``` $ apt-get update ``` ### 5.安裝ROS 由於 RB5 沒有 GUI 工具,因此只能安裝 ROS-Base 版本 ``` $ apt install ros-melodic-ros-base ``` ### 6.環境設置 將ROS環境變數加入.bash ``` $ echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc ``` 重新載入.bash ``` $ source ~/.bashrc ``` ### 7.安裝構建包的依賴關係 安裝構建 ROS 包的依賴項 ``` $ apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential ``` 安裝rosdep ``` $ apt install python-rosdep ``` 初始化rosdep ``` $ rosdep init $ rosdep update ``` --- ## Install MAVROS ### 1.MAVROS 簡易安裝程序 ``` $ apt-get install ros-melodic-mavros ros-melodic-mavros-extras $ wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh $ chmod a+x install_geographiclib_datasets.sh $ ./install_geographiclib_datasets.sh ``` ### 2.安裝 catkin tool ``` apt-get install python3-catkin-tools ``` --- ## 建立 ArduPilot 與 ROS 連線環境 ``` $ mkdir -p ardupilot_ws/src $ cd ardupilot_ws $ catkin init ``` ### 1.配置Launch檔案 ``` $ mkdir launch $ cd launch $ roscp mavros apm.launch apm.launch ``` ### 2.連接無人機 用USB線將無人機與RB5連接,輸入以下指令開始ROS連線 ``` $ roslaunch apm.launch ``` ### 3.驗證連線 在開啟一個cmd視窗進入adb shell,輸入以下指令查看ROS連線狀態 ``` $ rostopic echo /mavros/state ``` # 群飛測試 ### 開啟mavros ``` $ "Home" $ cd /home/catkin_ws/launch $ roslaunch apm.launch ``` ### 查看mavros連線狀態 開啟新SSH視窗 ``` $ rostopic echo /mavros/state ```