衆所周知,一個蘿蔔一個坑,一個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,版本是 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 的下載和安裝不是經過 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
真正的編譯過程那叫個慘不忍睹,爲了親們不重蹈覆轍,咱們先安裝一些東西。
首先安裝個簡單點兒的小東西,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。。。。編譯這個廢了不知道多長時間 )努力努力再努力 哈哈