截至 2017/4/18 主要有兩個問題已解決
首先, 樹莓派編譯到179個包的時候 ,會出錯, 諮詢過github的作者,說liburdf headers liburdf這個包更改了部分內容,將boost的內容替換成c++11,所以 要降到0.4.2或者0.4.0 這個版本。
其次,如果RVIZ不能啓動的話,注意查看urdfdom這個包是否安裝正常。//如果之前有安裝過ros,添加其他包的時候,注意安裝完之後,記得運行 sudo ldconfig 進行動態庫鏈接,博主一開始沒有做,一直提示無法啓動urdfdom_sensor.h 文件共享報錯。
//附上常用的幾個debian指令 老鳥繞過
刪除原來已安裝的包 dpkg -P //查看已安裝的包 dpkg -L apache2
附上鍊接 github兩個包鏈接:
https://github.com/ros/urdfdom_headers/releases/tag/0.4.2
https://github.com/ros/urdfdom/releases/tag/0.4.2
根據官網的的指導教程中的兩個相關的包 替換成這兩個包就可以編譯通過。
附上collada-dom的百度鏈接,這個包要下載很久,很浪費時間,博主下完之後,保存了下來。
https://pan.baidu.com/s/1jI2wqCA
至此,ros的安裝的坑躺完了。
附上官網的 教程 鏈接和參考的一篇博客的鏈接。
http://wiki.ros.org/ROSberryPi/Installing%20ROS%20Indigo%20on%20Raspberry%20Pi
如果 有什麼問題 建議 參考 官網,有人說官網很容易出錯,但是其實我感覺,理解了官網的意思 應該沒什麼問題, 就是有些小細節, 底下 這篇文章 會指出。
然後我自己 補充 一個地方。
以下的教程參考了超級cooper的博客:
就是關於collada 這個包的安裝, 執行安裝之後 會提示安裝成功,但是Resolve Dependencies時
執行
rosdep install --from-paths src --ignore-src --rosdistro indigo -y -r --os=debian:jessie會出現collada fasiled , 關於 python那幾個 不用管他,但是這個選項我查了一下官網, 如下
Unavailable Dependencies
Following packages are not available for Raspbian:
Raspbian Wheezy: libconsole-bridge-dev, liburdfdom-headers-dev, liburdfdom-dev, liblz4-dev, collada-dom-dev
Raspbian Jessie: collada-dom-dev
對於raspbian 這個包一開始就說是不能 用的,那爲什麼 還提供 安裝 ?? 完全無法理解。外國人在想什麼?
1、準備材料
樹莓派3B, ROS Indigo, 16G SD卡,Raspbian OS(博主裝的是jessie)
2、準備安裝
2.1添加ROS代碼倉庫
$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu jessie main" > /etc/apt/sources.list.d/ros-latest.list' $ wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O - | sudo apt-key add -更新一下,否則很容易出錯
$ sudo apt-get update $ sudo apt-get upgrade
2.2安裝相關依賴包
Raspbian Jessie:
$ sudo apt-get install python-pip python-setuptools python-yaml python-distribute python-docutils python-dateutil python-six $ sudo pip install rosdep rosinstall_generator wstool rosinstall
2.3初始化rosdep
$ sudo rosdep init $ rosdep update
3、開始安裝
$ mkdir ~/ros_catkin_ws $ cd ~/ros_catkin_ws接下來下載ROS源碼,我們要安裝的是完整版(Desktop)
$ rosinstall_generator desktop --rosdistro indigo --deps --wet-only --exclude roslisp --tar > indigo-desktop-wet.rosinstall $ wstool init src indigo-desktop-wet.rosinstall
$ wstool init src indigo-desktop-wet.rosinstall -j8
$ wstool update -t src
3.2解決依賴
3.2.1安裝軟件源沒有的依賴包
$ mkdir ~/ros_catkin_ws/external_src $ sudo apt-get install checkinstall cmake $ sudo sh -c 'echo "deb-src http://mirrordirector.raspbian.org/raspbian/ testing main contrib non-free rpi" >> /etc/apt/sources.list' $ sudo apt-get update
$ cd ~/ros_catkin_ws/external_src $ sudo apt-get build-dep console-bridge $ apt-get source -b console-bridge $ sudo dpkg -i libconsole-bridge0.2*.deb libconsole-bridge-dev_*.deb如果看到關於'-std=c++11' 的錯誤,按照下面的步驟將gcc版本升級到gcc 4.7+
sudo apt-get install g++-4.7 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.6 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.7 sudo update-alternatives --config gcc
$ cd ~/ros_catkin_ws/external_src $ apt-get source -b lz4 $ sudo dpkg -i liblz4-*.deb
$ cd ~/ros_catkin_ws/external_src $ git clone https://github.com/ros/urdfdom_headers.git $ cd urdfdom_headers $ git reset --hard 9aed725 $ cmake . $ sudo checkinstall make install前面分析了編譯過程可能出現"collada_parser"報錯的原因,這裏的'9aed725'就是將"liburdfdom-headers-dev"的安裝版本變成我們需要的1.0.0版本。
$ dpkg -l運行上面命令在列表中沒有看到我們安裝的"liburdfdom-headers-dev"包,或者package名沒有修改成功,運行下面命令重新安裝(爲確保這裏的每個依賴包都正確安裝,建議每安裝一個包之後都用這個方法檢查一遍)
$ sudo checkinstall make install
$ cd /usr/local/include/urdf_model $ sudo wget https://raw.githubusercontent.com/ros/urdfdom_headers/master/urdf_model/include/urdf_model/utils.h
$ 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 installcheck-install開始會讓你輸入包的描述,可以直接按回車跳過。當checkinstall詢問是否改變安裝選項時,選擇[2],將名字從 "urdfdom"改爲"liburdfdom-dev" ,其餘有[y]或[n]的問題都輸入'n'按回車, 否則會編譯出錯
$ 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 installcheck-install開始會讓你輸入包的描述,可以直接按回車跳過。當checkinstall詢問是否改變安裝選項時,選擇[2],將名字從 "collada-dom"改爲 "collada-dom-dev" ,其餘有[y]或[n]的問題都輸入'n'按回車, 否則會編譯出錯
$ cd ~/ros_catkin_ws $ rosdep install --from-paths src --ignore-src --rosdistro indigo -y -r --os=debian:jessie這個命令會尋找所有src目錄的package並遞歸安裝依賴,要安裝的依賴包有點多,耐心等待吧。
$ nano ~/ros_catkin_ws/src/robot_model/collada_urdf/src/collada_urdf.cpp
#include <strings.h>
bool Assimp::IOSystem::ComparePaths(const char *p1, const char *p2) const
{
return !::strcasecmp(p1,p2);
}
$ nano ~/ros_catkin_ws/src/rviz/src/rviz/mesh_loader.cpp
#include <strings.h>
bool Assimp::IOSystem::ComparePaths(const char *p1, const char *p2) const
{
return !::strcasecmp(p1,p2);
}
#endif
3.3.2修改交換空間大小
$ sudo nano /etc/dphys-swapfile找到CONF_SWAPSIZE=100,修改爲 CONF_SWAPSIZE=1024
$ sudo reboot
$ cd ~/ros_catkin_ws $ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/indigo執行上面命令默認使用4個核心來編譯,會使得CPU的使用率長時間爲100%,容易死機,所以我們可以加上-j2參數設定樹莓派使用2個核心編譯。
$ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/indigo -j2
$ source /opt/ros/indigo/setup.bash設置ROS環境變量在每次啓動shell時自動添加到bash會話
$ echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc到這裏我們的ROS完整版就已經成功安裝好了,不妨運行roscore試一下
$ roscore成功運行roscore就證明我們安裝成功了,接下來就可以按照官網教程愉快地學習了,距離做出自己的ROS移動平臺又近了一步。
$ source /opt/ros/indigo/setup.bash這樣以後你執行ros環境的時候,就會幫你添加ros環境。