【知識教學文】一起走進ROS的世界吧!-Part1

【知識教學文】一起走進ROS的世界吧!-Part1

在機器人智慧化的過程當中,ROS(機器人作業系統)成為最關鍵的一環,當機器人要投入生活甚至是醫療等更多元的場景時,皆需要面對相較普通的生產線以及更複雜的空間環境,而ROS也相較於我們大腦的中樞,不僅能匯集環境變動的數據,亦能分析服務對象的空間位置,進而提供對應的服務操作。

Simple Care專案使用Machine Learning做室內定位後,整體專案基本上就大致完成,但是在APP上怎麼顯示出對方的位置呢?這裡有2個選擇:

  1. 讓使用者自已拉出自家的房間格局,所以需要一個特製的APP,有點類似小畫家,但這是畫格局的小畫家
  2. 一台簡易型的小車,用Lidar把格局Slam出來

第一項基本上有點像SketchUp

在Github有類似的專案可以使用,但叫我自己把家裡的房間格局用APP,可能要花一小時畫出來再連上資料庫!? 好像有點搞剛(台語;麻煩之意)!而第二項,用Lidar把格局Slam出來的技術,不就是掃地機器人在做的事嗎? 研究過Slam後,想到要怎麼讓Maker一起玩,結果就看到了ROS這個機器人架構居然有掃地機器人Roomba相關文章!

由下圖我們不難發現,在PC端的系統有Windows、Linux與Mac,而在手持系裝置有Android和iOS佔大宗,看來ROS的目標就是想做機器人的Android系統。

當然機器人還有其他操作系統,如果學校教授也願意為各位Maker開一堂課的話,小弟一定會坐在台下認真聽課的,我還想拿這個當研究主題回去讀博班呢!(畢竟因為沒博班畢業被以前的工作伙伴施P笑 XD)

簡單說一下什麼是ROS,很多夥伴都有做各種不同的機器人,例如:雙足機器人、教育型機器人或是Arduino的關節型機器人。這些機器人有些沒有作業系統,且硬體設計都不一樣,如果今天像我們Simple Care專案只是想用SLAM(同步定位與地圖構建)的話,代表要重覆造輪子,才有辦法做到別人早就做過的東西。

如果像我們之前做專案前的習慣,先去Github上逛逛,找到能用的再做修正,省去許多重覆造輪子的時間,在這個Moment,我聽到一個聲音……

是的!什麼都得重覆造輪子的話,那專案就要爆炸了!PM先跳腳!專案時程不明確,且SW離職後,新來的SW還要看懂前人所留下的自閉軟體系統,等到三個月試用期一過,又離職到其他公司上班了!因為code無法維護,還是維護自己的薪水比較實際,如此一來,ROS就這麼橫空出世了!(當然不是這個理由 XD)但看來在Service Robot上,用ROS跑專案的確可以加速進行。但基本上在ROS的核心精神就是在巴別塔裡面講著相同的語言‧‧‧‧‧‧

總而言之。簡單來說就是不要再重覆造輪子啦!而ROS是架構在Linux內的一套軟體,所以只要有Ubuntu就行啦!這次我們用模擬器,可以是VMWARE或是Virtual Box,使用Ubuntu 16.04安裝ROS Kinetic,但在2018五月時,ROS推出了Melodic,也有網友在Ubuntu 18.04安裝,基本上也沒什麼問題,嚐鮮的朋友趕快下載哦!

這篇文章在VMWARE使用ubuntu-16.04.5-desktop-amd64.iso

在安裝過程中,會需要輸入Ubuntu的帳號及密碼。

下圖有一點小小重要,本來我是用預設的20GB,但在嘗試ROS的模擬器與程式碼後,東灌西灌的結果就是20GB搞到要爆炸了,所以60GB會比較好一點點。

MAC Air 128G表示: ㄜ …

簡單提一下,我的MAC Air 128G一開始是用雙系統切了一半過去,用了1個月後系統容量爆炸,完完全全不夠用啊!!!之後再來提一下MAC系統如果不是只想模擬該怎麼辦。(這句不是只想模擬,可是有很深的奧義存在哦~)

由於這篇文章目的在模擬,所以在Windows與MAC OS都能用VMWARE或是Virtual Box(小弟親身試驗過,請放心服用)但問題來了,如果您是研究所以上的學生,教授要您做出硬體來,VMWARE或是Virtual Box都無法控制到遠端的硬體啊!這也是小弟試了好幾次才發現,一定要用原生的Linux系統加上ROS才行啊!!!所以我在Windows上的解決方式是直接做雙系統,反正硬碟夠大,但UEFI的Bios也搞了許久。

而在MAC Air就不能切雙系統了,128G切一半就不能拿來工作了,所以在MAC Air是用外接128G USB隨身碟安裝Ubuntu,這也搞了許久,總之Windows與MAC OS安裝ROS都可以寫一篇文章了。好,回到開始用VMWARE安裝Ubuntu的時候,會看到下圖,這時可以去買杯手搖飲悠閒的等待‧‧‧‧‧‧

安裝完畢後,可以去更新一下在Software & Updates(我Key成updata,小朋友不要學哦!叔叔可是有練過的!)但不更新也可以準備安裝就是了。

然後在Terminal輸入以下指令:

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

這個時候會請您輸入密碼,之後再貼上KEY的指令(如下方指令)

sudo apt-key adv –keyserver hkp://ha.pool.sks-keyservers.net:80 –recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

然後再sudo apt-get update

接著sudo apt-get upgrade升所有需要的安裝包,再喝一口手搖飲。

所以我才說前面不要Software & Update也可以,接著就是安裝Desktop-Full版本的ROS系統在Ubuntu內:

sudo apt-get install ros-kinetic-desktop-full

這樣就是再度悠閒的把手搖飲喝完的時候到了

安裝完畢,再來呢?接下就就是要初始化!

sudo rosdep init

rosdep update

配置環變量

echo “source /opt/ros/kinetic/setup.bash” >> ~/.bashrc

source ~/.bashrc

上面2句還挺重要的,不然每次ROSRUN xxx什麼安裝包都出現Error

例如:

 

But!人生就是有這個But!

印象中有一次在Windows的VMWARE中也輸入上面2句然後再ROSRUN還是出現Error,所以就開了MAC Air內的Ubuntu看了一下.bashrc檔照抄

紅框是有修正過的,如果您下了ROSRUN的指令也出現Error,就照抄Source的那行吧!

也許眼尖的讀者會發現上面的.bashrc檔最後一行是TURTLEBOT3!

是的!我當初就是在Windows的VMWARE安裝UBUNTU及MAC Air安裝Virtual Box,不論是在哪台機器都控制不了Turtlebot3的硬體啊!!!至於如何控制硬體!?如果您有玩我們Simple Care Github的Code,會發現裡面的源始碼是用MQTT,而ROS控制的方式也跟MQTT高度相似,所以之後玩到Publish與Subscribe的Code的時候會覺得似曾相似。

而相似的程度大約 →

 

接下來安裝所有以後可能用的到的套件:

sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential

安裝結束囉 ~ 而本篇的最後,就是來個roscore測試一下!

然後看到如下圖的描述沒出現Error就正確啦~

恭喜各位大神進入ROS的世界!!!

 

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

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

(作者:Sco;責任編輯:葉于甄)

Comments ( 2 )

  • 虛擬機也可以遠端連上硬體,需要設定虛擬機跟本機跟硬體在同網域

    • 就是那個網卡的設定要由預設的 nat 改為
      bridge 即可

發表迴響

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