「RPi2啊派兔#03」Raspberry Pi 2 安裝作業系統 Ubuntu + ROS indigo image 快速建立有ROS環境的作業系統 免step-by-step裝ROS

Standard

前言
簡單來說之前這個系列都在做心酸的QQ,
爬一爬文之後發現原來不只我,
大家照下方連結那個tutorial走,先安裝作業系統,在裝ROS,都要花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 的 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,可能要另外接個升壓電路

9 則留言:

  1. rviz的大小寫是不是寫錯了?

    回覆刪除
  2. 您好,我使用桌機介面是W10,進行Win32DiskImager燒錄,但是燒好後,插入pi板中無法工作!

    想尋求協助。

    回覆刪除
    回覆
    1. 您好,請問是否是燒錄aristoteles.img檔?燒錄有成功嗎?然後不能工作是指不能開機嗎?是否能附相關截圖?感謝

      刪除
    2. 您好,我燒錄aristoteles.img是成功的,但是開機只進到工作畫面,就停滯工作不動了(您好我的圖片似乎無法截圖給您),可以給我信箱讓我寄截圖給您嗎?

      刪除
    3. 我使用的是raspberry pi3版,是否會有影響呢?

      刪除
    4. 可以將照片上傳至免費圖床:http://imgur.com/
      然後複製連結貼在這邊喔

      然後你說的可能沒錯
      因為這個image檔下載的是Ubuntu14.04,wiki ubuntu說的
      https://wiki.ubuntu.com/ARM/RaspberryPi
      他只支援RPi2,ubuntu16.04才有支援RPi3,
      另外Ubuntu MATE也有支援RPi3,
      或是建議您可以使用「3.ROS indigo x raspbian 的 image (簡單版)」
      用raspbian當作業系統

      刪除
  3. 你好,「3.ROS indigo x raspbian 的 image (簡單版)」的網址好像失效了??
    因為我是RPi3 Model B 所以沒辦法用Ubuntu14.04。

    回覆刪除

留言