ROS 學習系列 -- 樹莓派編譯安裝完整版本ROS

樹莓派安裝完整的ROS並不容易,博主東方赤龍花費了數天總結了安裝編譯的經驗,否則很容易走彎路。

ROS官方論壇裏面有安裝教程, 但是很容易出錯。尤其是Desktop版的ROS!


1. 安裝環

樹莓派B+,  ROS Indigo, 16G TF卡,Raspbian OS


2. 安裝裝備

2.1 準備ROS代碼倉庫

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu wheezy main" > /etc/apt/sources.list.d/ros-latest.list'
wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O - | sudo apt-key add -

確保Raspbian OS 已經更新

sudo apt-get update
sudo apt-get upgrade

2.2 安裝 bootstrap 依賴

sudo apt-get install python-setuptools
sudo easy_install pip
sudo pip install -U rosdep rosinstall_generator wstool rosinstall

2.3 初始化 rosdep

sudo rosdep init
rosdep update

3. 編譯ROS

3.1 創建workspace來編譯ROS

mkdir ~/ros_catkin_ws
cd ~/ros_catkin_ws

接下來下載ROS代碼,ROS 提供了兩個代碼包

1)ROS-Comm: 這是官方推薦的,但只包含基本的ROS通訊功能,沒有navigation, TF, action, RViz等 GUI 工具

2) Desktop: 完整的ROS 功能,適合所有機器人應用。我們選擇安裝這個。


下面的命令下載並生產編譯package列表,會很花時間

rosinstall_generator desktop --rosdistro indigo --deps --wet-only --exclude roslisp --tar > indigo-desktop-wet.rosinstall
wstool init -j8 src indigo-desktop-wet.rosinstall

如果中途下載中斷,下面的命令會接着下載:

wstool update -j 4 -t src

3.2 解決依賴

libconsole-bridge-dev, liburdfdom-headers-dev, liburdfdom-dev, liblz4-dev, 和 collada-dom-dev 這五個包並不在Raspbian裏面,需要手工編譯下載

創建新目錄下載這5個包

<span style="font-size:18px;">mkdir ~/ros_catkin_ws/external_src
sudo apt-get install checkinstall cmake</span>

安裝libconsole-bridge-dev:

<span style="font-size:18px;">cd ~/ros_catkin_ws/external_src
sudo apt-get install libboost-system-dev libboost-thread-dev
git clone https://github.com/ros/console_bridge.git
cd console_bridge
cmake .
sudo checkinstall make install</span>
當checkinstall詢問是否改變安裝選項時,選擇[2],將名字從"console-bridge" 改爲 "libconsole-bridge-dev"

接下來的兩個問題連續選擇'n', 否則會編譯出錯


安裝liblz4-dev

<span style="font-size:18px;">$ cd ~/ros_catkin_ws/external_src
$ wget http://archive.raspbian.org/raspbian/pool/main/l/lz4/liblz4-1_0.0~r122-2_armhf.deb
$ wget http://archive.raspbian.org/raspbian/pool/main/l/lz4/liblz4-dev_0.0~r122-2_armhf.deb
$ sudo dpkg -i liblz4-1_0.0~r122-2_armhf.deb liblz4-dev_0.0~r122-2_armhf.deb</span>


安裝liburdfdom-headers-dev

<span style="font-size:18px;">$ cd ~/ros_catkin_ws/external_src
$ git clone https://github.com/ros/urdfdom_headers.git
$ cd urdfdom_headers
$ cmake .
$ sudo checkinstall make install</span>

當checkinstall詢問是否改變安裝選項時,選擇[2],將名字從"urdfdom-headers" 改爲 "liburdfdom-headers-dev"

接下來的兩個問題連續選擇'n', 否則會編譯出錯


安裝liburdfdom-dev

<span style="font-size:18px;">$ cd ~/ros_catkin_ws/external_src
$ sudo apt-get install libboost-test-dev libtinyxml-dev
$ git clone https://github.com/ros/urdfdom.git
$ cd urdfdom
$ cmake .
$ sudo checkinstall make install</span>

當checkinstall詢問是否改變安裝選項時,選擇[2],將名字從"urdfdom" 改爲 "liburdfdom-dev"

接下來的兩個問題連續選擇'n', 否則會編譯出錯


安裝collada-dom-dev

<span style="font-size:18px;">$ cd ~/ros_catkin_ws/external_src
$ sudo apt-get install libboost-filesystem-dev libxml2-dev
$ wget http://downloads.sourceforge.net/project/collada-dom/Collada%20DOM/Collada%20DOM%202.4/collada-dom-2.4.0.tgz
$ tar -xzf collada-dom-2.4.0.tgz
$ cd collada-dom-2.4.0
$ cmake .
$ sudo checkinstall make install</span>
當checkinstall詢問是否改變安裝選項時,選擇[2],將名字從"collada-dom" 改爲 "collada-dom-dev"

接下來的兩個問題連續選擇'n', 否則會編譯出錯


3.3 通過rosdep解決依賴

<span style="font-size:18px;">$ cd ~/ros_catkin_ws
$ rosdep install --from-paths src --ignore-src --rosdistro indigo -y -r --os=debian:wheezy</span>
上面命令會便利所有的package並遞歸安裝依賴

3.4 開始編譯ROS

$ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/indigo


常見錯誤:

編譯過程中會編譯180多個package並同時安裝在/opt/ros/indigo目錄,經常會報出 'urdf' 'collada_parser‘ ’collada_urdf' 這幾個包出錯而中斷安裝。 解決辦法就是將這三個包從目錄 ~/ros_catkin_ws/src/robot_model 目錄中移出,再重新編譯整個ROS. 最後單獨建立一個workspace,將三個包放到src/robot_model 目錄中。 再執行下面命令:

sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/indigo

如果仍然報錯,則需要重新一個一個安裝 步驟3.2中的 liburdfdom-dev,liblz4-dev, 和 collada-dom-dev 包,每安裝一個重新編譯一遍,成功編譯的包可以刪除,直到最後都編譯成功。

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。

發佈了36 篇原創文章 · 獲贊 88 · 訪問量 30萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章