【知識教學文】小試身手把 ROS 與 Raspberry pi 裝起來!

【知識教學文】小試身手把 ROS 與 Raspberry pi 裝起來!

 

2018 寫了 5 篇在電腦上玩 ROS 的文章,2019 終於要進入實戰系列啦!!

 

小弟心裡對於未來的文章規劃,希望是:

  • 小試身手玩玩 ROS 以及 Raspberry pi 安裝-就是本篇在講的事兒
  • Raspberry pi 與電腦的 DDS Code 實戰 -小弟想用 DDS 取代 publish 與 subscribe
  • Raspberry pi + Arduino + 底盤車輪-要讓它走起來,最好是能走到飛
  • Raspberry pi + 語音控制-延續 2018 年的最後一篇,走到飛之後才能用語音控制,希望這篇 google assistants 中文版可以讓我接入
  • Raspberry pi + 3D Camera-想用 Camera 做一些奇奇怪怪的判斷設計
  • Raspberry pi + Lidar-沒有 Lidar 怎麼做室內定位呢?
  • Raspberry pi + SLAM 與 2017 年的 MT7697 結合-結合了 2017 年 simple care 的室內定位 Code,大家可以拿去生產做樣品了
  • OpenCV 影像辨識的玩法(Maker 高高手 CH 大與 Jack 大已寫了許多,拿來照抄好了哈)

 

其實在業界,這種專案也許只要 3 個月,我們就可以搞出 EVT 樣品了,但因為台灣人力實在太便宜,導致這種長照型機器人的專案價格與人力相比,較不具備優勢,因此我們的專案改由社群出發,也許剛好解決了您手上專案的問題!

以上有沒有哪位大大願意分享一篇的,麻煩跟 MakerPRO / 南科小編或是小弟聯絡

預計寫7~8篇,但寫不到相信大家也拿我輒 XD

 

且小弟還有另一個計劃,由於家中的小朋友看到我在玩機器人,也想一起加入,但讓還沒念小學的小朋友直接加入實在太困難了,不如先由非常基本的電學實驗開始,一路到後面的程式設計,最後再到 ROS 機器人,所以除了 ROS 之外,也會有一連串的科學教育讓小朋友嘗試,達到真正的實戰中學習!

但如果只注重科學也太 Low 了,小的也發現甜點愈來愈高貴,就是吃定城市人不會動手做,這種感覺就像吃定大家不會去蓋房子。其實 Maker 應該有更多種可能,如果哪天政府想活化閒置用地,可以來找我們南科 AI_ROBOT 自造基地或 MakerPRO 的大大們,我倒是很想用雙手蓋房子。當了解原理,就可以動手自製,不需要讓別人來餵食。

還不關注南科 AI_ROBOT 自造基地MakerPRO 就 Low 了!快加小編或歐大的 FB 先~

回到 ROS,如果真的寫到 7 篇,加上目前社群在玩 ROS 的大大們,都可以寫成一本書了,仔細想想,好像還沒有一本台灣人寫 ROS 書耶~我們用鄉民文,從社群出發來寫書如何?嗯···應該不會有人想買!

往下進行時,首先要知道我們打算開始玩 ROS 2.0 和 Raspberry pi 3B+,如果沒有 Raspberry pi 3B+ 也可以用虛擬機( VM )來玩玩,說實在用樹莓派 3 的圖形界面開發真的很不順啊!不如在 VM 內開發完畢再把 Code 丟到 Pi 內。

 

以下是小弟親身實測 Pi 上跑 ROS,所以有四項必備:

  • Raspberry pi 3B+
  • SD 卡

這邊我用的是 ADATA 32 GB,大家可以看 這裡 選能用的 SD 卡

  • 下載Ubuntu mate 16.04
  • 下載Win32 Disk Imager

 

首先需下載

Ubuntu mate 16.04

https://ubuntu-mate.org/blog/ubuntu-mate-xenial-final-release/

選擇 Raspberry pi 3 用的 img 檔

https://blog.csdn.net/DaveBobo/article/details/80021351

Download 下來解壓縮

再去 Downlad Win32 Disk Imager

https://sourceforge.net/projects/win32diskimager/

確認您的 SD 卡沒有重要資料,選擇 img 檔與確認覆寫

然後就會看到出現寫入成功

接著打開 Pi,設定遠端 SSH 登入與 Pi 的固定 IP

這裡有三件事要做:

  • 插入自已的 USB WiFi 網卡(自 Pi 自帶的也行啦~只是我嫌它距離不夠遠!)
  • 打開 SSH
  • 設定固定 IP

那就開始第一步吧!

安裝完 Ubuntu Mate 之後,USB WiFi 網卡這裡一直是扇型的

網上有說,假設您的網卡是 TP – Link (裡面是 RTL8188 的 chip),要去 GitHub 下載 8188 的 Linux Driver

所以我先輸入 lsusb,發現網卡真的是 8188(其實是 2018 年為了寫 ROS 文章,刻意買 RTL8188EUS,網上說這個在 Ubuntu 下跑 ROS 沒什麼問題)

但小弟左思右想後,發現網上的資料都是 2016 以前的,Ubuntu 16.04 應該沒這麼笨吧?

所以就直接輸入 sudo /etc/init.d/networking restart

再點擊扇型 ICON,此時就可以選擇無線網路了

開啟 Firefox 出現 Google,簡直太開心了,網路設定的地方結束了

P.S. 後來在寫文章時覺得,不輸入 sudo /etc/init.d/networking restart,也許 Ubuntu 重新開機應該也可以用 XD

接著是打開 SSH,輸入 sudo raspi-config,接著會請您輸入密碼

進入 Interfacing Options 選單

選擇 SSH

打開它

不放心的話,輸入 ps –e | grep ssh 會出現以下畫面

接著要做第三步,設定固定 IP

先輸入ifconfig,查看IP然後記下來

安裝一下 gedit

輸入 sudo gedit /etc/network/interfaces

這個 172.27.35.9 是我給它的 IP,也可以給一個其他人肯定不會用的 IP

在 gedit 輸入

auto eth0

iface eth0 inet static

address 172.27.35.9

netmask 255.255.255.0

gateway 172.27.35.9

 

如下圖

 

再重開一次網路

sudo /etc/init.d/networking

Pi 這邊差不多結束了,回到遠端的電腦,下載 PuTTY

安裝後,打開 PuTTY,輸入 Pi 的 IP,也記得輸入您在 Ubuntu Mate 的帳號密碼

然後 ls 一下,果真連上 Pi 啦!可以將 Pi 上面滑鼠與鍵盤拆掉了

小弟我是先安裝 ROS1,因為先前有跑一些 code 在 Pi 上測試

如果您忘了怎麼安裝 ROS1,可以看先前寫的第一篇

假設您有安裝 ROS1,沒安裝也沒關係啦~官方說 ROS2 可以自己獨立運作的

但是啊~我在 Pi 安裝 ROS2 四次才成功

後來才發現要先 SWAP 記憶體,不然 Pi 會直接卡死

 

首先輸入 sudo swapoff -a

再輸入以下這個 command,代表我們給 Pi 1G 的記憶體容易,它會跑有點久,如果超過半小時,那代表 Pi 當機了

sudo dd if=/dev/zero of=/swapfile bs=1M count=1024

 

然後再用以下指令

sudo mkswap /swapfile

sudo swapon /swapfile

 

free –m

 

或是用這個指令看一下

grep SwapTotal  /proc/meminfo

接下來安裝 vim,因為 SSH 時,gedit 打不開啊!

Key → sudo apt install vim

再輸入 sudo vim /etc/fstab

然後在 vim 內加入

/opt/image/swap    /swap    swap    defaults 0 0

來個開機自動掛載 cat /etc/fstab

最後輸入 sudo mount –a

SWAP 記憶體結束!

 

寫在前面先!

小的我在安裝 ROS2 時常碰到 Unable to lock the administration directory(/var/lib/dpkg/)

主要是下載某個 package 時被中斷,系統會產生一個 lock 檔案在某個資料夾

當大伙兒碰到這個問題時,可以輸入以下指令

sudo killall -9 apt

sudo rm /var/lib/dpkg/lock

sudo rm /var/lib/apt/lists/lock

sudo rm /var/cache/apt/archives/lock

sudo dpkg –configure -a

sudo apt-get update

 

接下來要安裝 ROS2.0 了,這裡不寫太多,想請大家看官方說明

如果您看過先前網路上流傳的方法,會發現 Ament 這個編譯器改為 Colcon 了

再來就是從這裡開始,用 VM 完全可以操作,不需真的有一台 Pi

 

我們直接看官方的圖來說故事,首先是安裝一堆的開發工具

再來是下載ROS2.0的code

然後再用rosdep安裝一堆東西

就可以跳到編釋ROS2.0了

由於 Pi 是用 Ubuntu 16.04,所以我是這樣輸入

colcon build –symlink-install –packages-ignore qt_gui_cpp rqt_gui_cpp

然後呢!一直失敗,重覆安裝了 4 次,第 4 次 Pi 跑了 4 個小時,總共浪費了 4 天!

其中 Build 的時候,也嘗試用非圖形模式(可以不需要這麼做,如果順的話,用 SSH 讓它 Run 就行了)

在 Terminal 內 key → sudo systemctl set-default multi-user.target

Build 完再回到圖形模式 → sudo systemctl set-default graphical.target

 

小弟也試過下載 ROS2 的 package 直接使用,連結在這裡,這種方式相當方便

我是在 VM 裡用這個 package

ros2-crystal-20190117-linux-xenial-amd64.tar.bz2

解壓縮後,直接下指令

開一個 Terminal

source ~/ros2_install/ros2-linux/setup.bash

ros2 run demo_nodes_cpp talker

再開一個 Terminal

source ~/ros2_install/ros2-linux/setup.bash

ros2 run demo_nodes_cpp listener

有沒有發現 ROS2.0 裡,沒有輸入 roscore,talker 與 listener 也 Run 的穩穩的?

 

這個我們下一篇再說明,如果您是從早上九點開始做這個實驗,也許現在都已經超過下午五點了,且這一篇寫得有點不順手,一直再解 Bug。第二篇也許會在 Raspberry pi 上嘗試用 Ubuntu18.04,或是直接用現有 TurtleBot3 的 ROS2 Image。

小的在 Turtlebot3 直接用 ROS2 的教學還挺順利的,可以參考這兒

所以您如果也碰到一堆 Bug,那就先在 VM 裡操作保證成功(在 ROS Forum 也看到別人也有同樣問題)

 

對了!記得還是在學生時代,直接 Power off Raspberry pi , SD 卡會出事

SSH 遠端關機可以用這個 sudo shutdown -h now

2019 新年新希望~身體健康,跑 ROS2 大順利!

 

歡迎加入智慧醫療主題論壇:https://goo.gl/aNBkuN

(作者:智慧醫療主題論壇版主Sco Lin;責任編輯:葉佳錚)

No Comments

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料