ubuntu15.04 + ROS jade

衆所周知,一個蘿蔔一個坑,一個Ubuntu一種ROS。Ubuntu15.04應該已經中止維護了吧,像以往那種腦殘式安裝ROS通常是不可能的了,沒辦法,本身編譯咯!! 雖然找不到大神關於這方面的帖子  (╯﹏╰)  ,但哥們兒不能輕易放棄!!!python

開始的開始,交代一些很重要的東西,因爲這個鬼東西已經中止維護了,因此須要修改源,否則你 apt 不上任何東西(改爲阿里源也沒用 ╮(╯▽╰)╭)ios

編輯原來的源文件 /etc/apt/sources.list ,將原來的 http://ports.ubuntu.com/ubuntu-ports 所有替換爲 http://old-releases.ubuntu.com/ubuntu/,而後保存並 sudo apt-get updatec++

咱們的方法是下載 ROS 的包,而後在本身板子上編譯。廢話很少說,上平臺:git

硬件:firefly RK3128 (不得不噴一下!!!!官網上居然只有15.04一個版本,想一想都來氣,售後技術支持我就不說了)github

軟件:ROS jadebootstrap

先給出 ROS 官網地址,雖然報錯一大堆,但仍是要看(尤爲是搞別人沒搞過的東西)。ubuntu

懶得看官網或見英文眼花的朋友,直接看下面 ↓bash

詳細安裝步驟(吐血歷程,且行且珍惜):app

一、安裝 boost

個人板子是新的,因此首先要安裝 boost,版本是 1 5 4。參考網頁函數

首先安裝依賴:

sudo apt-get install mpi-default-dev
sudo apt-get install libicu-dev
sudo apt-get install python-dev
sudo apt-get install libbz2-dev

而後將 boost_1_54_0.tar 拷貝到 /home,並進入,解壓:

tar -zxvf boost_1_54_0.tar.gz

進入 boost_1_54_0

sudo ./bootstrap.sh

sudo ./b2

sudo ./b2 install

測試:

新建文件 test.cpp,內容爲:
#include<iostream>
#include<boost/lexical_cast.hpp>
int main()
{
int a = boost::lexical_cast<int>("123456");
std::cout << a <<std::endl;
return 0;
}

編譯:
g++ test.cpp -o test
運行test,輸出 "123456" 表示安裝成功。

二、ROS jade 源碼包下載

ROS 的下載和安裝不是經過 git 啥的下載包,也不是經過 cmake 指令安裝,雖然看不懂,不過不要緊照着作就好了。

首先這樣(爲啥?別問我,不知道。):

sudo update-locale LANG=C LANGUAGE=C LC_ALL=C LC_MESSAGES=POSIX

添加源(官方源好像用不了,這個是鏡像):
sudo sh -c 'echo "deb http://ros.exbot.net/rospackage/ros/ubuntu/ vivid main" > /etc/apt/sources.list.d/ros-latest.list'

配置祕鑰:

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

安裝依賴:

apt-get install python-rosdep python-rosinstall-generator python-wstool python-rosinstall python-empy python-nose 

而後:

sudo rosdep init

rosdep update

而後要下載 ROS 包了,咱們下載到 ros_catkin_ws 下(應該哪裏均可以):

mkdir ~/ros_catkin_ws
cd ~/ros_catkin_ws

先下載下載工具:

rosinstall_generator desktop_full --rosdistro jade --deps --wet-only --tar > jade-desktop-full-wet.rosinstall

以後會出現一個 jade-desktop-full-wet.rosinstall 腳本。咱們下載的是 ROS 豪華版(全家桶。。可能須要10G多??):

wstool init -j8 src jade-desktop-full-wet.rosinstall

板子存儲空間沒那麼大的話就裝個桌面版好了:

rosinstall_generator desktop --rosdistro jade --deps --wet-only --tar > jade-desktop-wet.rosinstall

wstool init -j8 src jade-desktop-wet.rosinstall

全家桶225個包,桌面版189個,,,,若是空間仍是不夠,那就裝個沒有GUI工具(rviz等)的吧,這個只有50個包:

rosinstall_generator ros_comm --rosdistro jade --deps --wet-only --tar > jade-ros_comm-wet.rosinstall

wstool init -j8 src jade-ros_comm-wet.rosinstall

時間有一下子,以後後出現一個 src 文件夾,裏面是下載好的源碼。而後安裝依賴:

rosdep install --from-paths src --ignore-src --rosdistro jade -y

三、ROS jade 編譯

真正的編譯過程那叫個慘不忍睹,爲了親們不重蹈覆轍,咱們先安裝一些東西。

首先安裝個簡單點兒的小東西,poco 庫:

sudo apt-get install libpoco-dev libgtest-dev libfltk1.3-dev 

而後編譯 boost,有沒有人說前面不是已經編譯安裝過了嗎?沒毛病,前面是編譯過了,並且默認安裝在 /usr/local 下,可是進入 /usr/local/lib ,你會發現沒有 libboost_thread 開頭的幾個包。

放心,此次編譯咱們只編譯 libboost_thread 這部分,跟前面也不衝突,進入 boost_1_54_0:

sudo ./b2 --with-thread stage cxxflags="-std=c++11"

而後把 stage/lib 下 libboost_thread 開頭的幾個包拷貝到 /usr/local/lib 下。

若是沒有把這個搞好,後面編譯時會出現找不到 libboost_thread 庫的問題。

接下來,仍是 boost,此次須要改源碼:

編輯 /usr/local/include/boost/atomic/atomic.hpp,添加 #include<stdint.h>

不然可能報錯:
「/usr/local/include/boost/atomic/atomic.hpp:202:43: error: invalid type in declaration before ';' token typedef atomic<uintptr_t> atomic_uintptr_t;」

而後嘞,下載 console_bridge,編譯過程須要,進入 /usr/local 下載:

git clone https://github.com/ros/console_bridge.git

而後編譯:

cd console_bridge
sudo mkdir build
cd build
sudo cmake ..
sudo make
sudo make install

會安裝到 /usr/lcoal 下,可是呢,咱們安裝的這個東西還須要修改一哈:

編輯 /usr/local/include/console_bridge/console.h

將裏面的 CONSOLE_BRIDGE_log 替換爲 log  (替換時必定要把 Match case 打上對勾,意思是區分大小寫),好像一共替換了 五、六、七、8個吧,很少。

這樣是把 CONSOLE_BRIDGE_logWarn 等函數變爲 logWarn,與 ROS 源碼對應。不然編譯 class-loader 時會報錯說函數 logWarn 等函數未定義。 

終於,能夠編譯了:

cd ~/ros_catkin_ws

./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release

編譯 225 個包,慢慢等吧    嘿 嘿   !!

編譯std_srve時,可能會報錯:
Please submit a full bug report, with preprocessed source if appropriate.
緣由爲內存不足,增長虛擬內存(增長 64 * 16 M):
sudo dd if=/dev/zero of=/home/swap bs=64M count=16
sudo mkswap /home/swap
sudo swapon /home/swap
繼續編譯:
./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release
編譯完後就能夠關掉虛擬內存了:
sudo swapoff /home/swap
sudo rm /home/swap

 

編譯成功後,設置環境變量:
source ~/ros_catkin_ws/install_isolated/setup.bash

 

 

不就是那幾個問題嗎?!庫沒裝,庫版本不對,安裝位置不對,頂多就是改幾行源碼,有什麼嘞 ╮(╯▽╰)╭(我,,我就吹個NB。。。。編譯這個廢了不知道多長時間 )努力努力再努力 哈哈

相關文章
相關標籤/搜索