「Raspberry Pi 2」使用 Ubuntu + ROS indigo image 快速建立有ROS環境的作業系統 免step-by-step


前言
簡單來說我之前的系列都在做心酸的QQ,
爬一爬文之後發現原來不只我,
大家照下方連結那個tutorial走,都要花9hr+,
http://wiki.ros.org/ROSberryPi/Setting%20up%20ROS%20on%20RaspberryPi
http://wiki.ros.org/ROSberryPi/Installing%20ROS%20Indigo%20on%20Raspberry%20Pi

還可能會遇到Dependencies一直搞不好,
遲早氣死,至少我到現在已經重灌過三次,還是不行

後來發現有另一種方法是,
在灌作業系統的同時,就「內建」幫你灌好ROS,
就是把ROS直接包在image檔裡面
天啊~這真是太佛心了,幫大家省下了大量的時間,
跪拜貢獻者



作業系統與ROS的相關資源
統整一下至今為止找到的教學與資源

1.ROS Fuerte x Raspbain 的 image
http://www.instructables.com/id/Raspberry-Pi-and-ROS-Robotic-Operating-System/
這篇也是同時把系統跟ROS一次灌好,
但由於這篇的ROS太古老了,很多功能都還沒有(印象中好像沒有catkin_make)
所以不用這篇

2.ROS indigo x ubuntu 的 step-by-step tutorial
http://therobotacademy.com/meetup/installing-ros-indigo-ubuntu-trusty-raspberry-pi-2
要先灌好ubuntu在灌ROS過程有點繁瑣
不推薦,容易debug用很久

3.ROS indigo x raspbian 的 image (簡單版)
http://www.mauriliodicicco.com/raspberry-pi2-ros-images/
這篇也是同時把系統跟ROS一次灌好,
可惜系統是用Raspbian,
而且是基本款,有些套件會沒有灌,
但還是不錯有需要的話可以灌這一版

4.ROS indigo x ubuntu arm 14.04.02 的 image (完整版)
http://www.mauriliodicicco.com/raspberry-pi2-ros-images/
這篇也是同時把系統跟ROS一次灌好,
大推~有成功有推,但網路方面撞牆了有點久才成功
但整體而言是非常棒的,很有效率
14.04配indigo,完美~

4.ROS indigo x raspbian jessie 的 step-by-step tutorial
http://wiki.ros.org/ROSberryPi/Installing%20ROS%20Indigo%20on%20Raspberry%20Pi
先灌Raspbian在灌ROS,
這個就是9hr+,會做到死掉還做不出來的那個,
超級花時間,大不推



教學開始
使用上方的4.ROS indigo x ubuntu arm 14.04.02 的 image (完整版)
參考網站:http://www.mauriliodicicco.com/raspberry-pi2-ros-images/
然後務必先看過這篇:「Raspberry Pi 2」查詢IP與連線狀態 透過無線網卡 使用SSH 遠端操作 教學


1.下載image檔
我們這次決定要安裝的是ROS indigo x ubuntu arm 14.04.02 image (完整版),
根據網站裡說的這個image好像有在某個有名的ROS workshop使用,
所以穩定性應該蠻高的,載點如下
https://drive.google.com/file/d/0ByBoXG5G8QBMcWRYMTNnaXRMTnM/view

2.解壓縮兩次
下載下來的檔名應該會長下圖這樣
從.tar.gz開始解->.tar ->.img 就完成了


3.把系統灌到SD卡
先格式化你的SD卡到exFAT格式
然後三步把.img檔安裝到隨身碟(把img檔丟在桌面)
首先找到你的disk編號
$ diskutil list
這邊我是disk2,然後繼續接下來的步驟
$ diskutil unmountDisk disk2
這行會跑很久,然後沒有任何output是正常的,耐心等
$ sudo dd if=~/Desktop/aristoteles.img of=/dev/rdisk2 bs=2m

4.開機登入ubuntu
準備好以下七樣東西:
1. Raspberry Pi (Raspberry Pi 2 Model B V1.1)
2. SD卡 (sandisk 32G) 與 Adapter
3. micro USB-B線 與 電源(變壓器、行充)
4. 筆電 (mac pro)
5. 網路線 與 無線網卡
6. HDMI接頭 的顯示器(電腦螢幕or電視)
7. USB接頭 的鍵盤 與 滑鼠
然後
1.把SD卡插到Pi的SD卡槽
2.把螢幕的HDMI線插到Pi的HDMI孔
3.鍵盤滑鼠的USB插到Pi的USB孔
4.把microUSB的電源插到Pi的microUSB孔
重新插拔電源線就會開機摟~

5.設定無線網路
沒有網路不但不能ssh,
也不能apt-get東西,
可以說是什麼都不能做啊~
參考:「Raspberry Pi 2」查詢IP與連線狀態 透過無線網卡 使用SSH 遠端操作 教學
底下有專門for Ubuntu14.04的解法
我自己最後是靠法二搞定的,讓系統在一開機就去抓手機的熱點
不過這也有缺點,沒抓到就會卡超久才開機,可能要一直按esc跟enter還不一定有救

6.安裝GUI介面
參考:「Raspberry Pi 2」Linux的圖形化介面(UI) 介紹 安裝 筆記
$ sudo apt-get install xubuntu-desktop
完成後如下圖


7.使用Remote Desktop
參考:「Raspberry Pi 2」使用 Microsoft Remote Desktop 遠端桌面 連線到 另一台電腦 有圖形化介面
$ sudo apt-get update
$ sudo apt-get install xrdp
$ sudo service xrdp restart
完成後如下圖

這是後可以再回去看看
這篇:「Raspberry Pi 2」查詢IP與連線狀態 透過無線網卡 使用SSH 遠端操作 教學
在網路設定上有GUI時該怎麼設定

8.基礎環境建設

設定roscd路徑到workplace
先進到.bashrc
$ vim ~/.bashrc
然後把原本的註解掉
#source /opt/ros/indigo/setup.bash
加入新的在下面,就是你的workplace裡的devel裡的bash檔
source /home/user_name/Documents/roscode/ros_indigo/devel/setup.bash



測試ROS node
先來試試用這個方法裝的ROS到底能不能用
簡單跑個烏龜看看
$ sudo apt-get install ros--ros-tutorials
$ rosrun turtlesim turtlesim_node

http://wiki.ros.org/ROS/Tutorials/UnderstandingNodes 



裝libserial
一步解決
$ sudo apt-get update
$ sudo apt-get install libserial-dev

https://www.howtoinstall.co/en/ubuntu/utopic/libserial-dev

裝ros_control
這個package在以後跑很多東西都會用到
一步解決
$ sudo apt-get install ros-indigo-ros-control ros-indigo-ros-controllers
http://wiki.ros.org/ros_control

但有的時候用apt-get裝的系統會找不到,
不知道為什麼,所以我是用git clone的方法,裝在workplace
$ cd CATKIN_WORKSPACE/src
$ wstool init
$ wstool merge https://raw.github.com/ros-controls/ros_control/indigo-devel/ros_control.rosinstall
$ wstool update
$ cd ..
$ rosdep install --from-paths . --ignore-src --rosdistro indigo -y
$ catkin_make



Troubleshooting

當catkin_make處理到某個pkg失敗的時候
可以使用分開來catkin_make的方法
先build好一個pkg再重跑一次catkin_make
$ catkin_make --pkg pkg_name
$ catkin_make
http://forum.erlerobotics.com/t/solved-problem-with-error-invoking-make-j4-l4-failed/803/2

當roslaunch失敗的時候
像是:ERROR: cannot launch node of type [robot_state_publisher/robot_state_publisher]: robot_state_publisher
或是:ERROR: cannot launch node of type [rqt_robot_steering/rqt_robot_steering]: rqt_robot_steering
都可以直接apt-get那個pkg
$ sudo apt-get install ros-indigo-rqt-robot-steering
$ sudo apt-get install ros-indigo-gmapping
$ sudo apt-get install ros-indigo-robot-state-publisher
http://answers.ros.org/question/81716/robot-state-publisher-error/

無法使用hokuyo layzer
因為這種的hokuyo layzer會吃非常多電
會讓raspberry pi關機或讓其他USB設備失能(ex:無線網卡)


要改用這種的hokuyo layzer可以分開供電,只是吃的電壓是12V,可能要另外接個升壓電路

留言

張貼留言

留言

更多相關文章

「Arduino」使用Arduino控制電變/無刷馬達

「Arduino」HC-05藍芽模組(附按鈕),與iPhone、Mac間的美麗與憂愁附帶教學

「Arduino」ESP8266 ESP01 WIFI模組 — 最便宜,最多人用,但也很難搞,學習筆記 教學 for Mac

>>>>>> 文章分類 (按我展開)