zoukankan      html  css  js  c++  java
  • ubuntu15.04 + ROS jade

    众所周知,一个萝卜一个坑,一个Ubuntu一种ROS。Ubuntu15.04应该已经停止维护了吧,像以往那种脑残式安装ROS一般是不可能的了,没办法,自己编译咯!! 虽然找不到大神关于这方面的帖子  (╯﹏╰)  ,但哥们儿不能轻易放弃!!!

    开始的开始,交代一些很重要的东西,由于这个鬼东西已经停止维护了,所以需要修改源,不然你 apt 不上任何东西(改成阿里源也没用 ╮(╯▽╰)╭)

    编辑原来的源文件 /etc/apt/sources.list ,将原来的 http://ports.ubuntu.com/ubuntu-ports 全部替换为 http://old-releases.ubuntu.com/ubuntu/,然后保存并 sudo apt-get update

    我们的方法是下载 ROS 的包,然后在自己板子上编译。废话不多说,上平台:

    硬件:firefly RK3128 (不得不喷一下!!!!官网上竟然只有15.04一个版本,想想都来气,售后技术支持我就不说了)

    软件:ROS jade

    先给出 ROS 官网地址,虽然报错一大堆,但还是要看(尤其是搞别人没搞过的东西)。

    懒得看官网或见英文眼花的朋友,直接看下面 ↓

    详细安装步骤(吐血历程,且行且珍惜):

    1、安装 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" 表示安装成功。

    2、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

    3、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 打上对勾,意思是区分大小写),好像一共替换了 5、6、7、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。。。。编译这个废了不知道多长时间 )努力努力再努力 哈哈

  • 相关阅读:
    Java 学习笔记(10)——容器
    Java 学习笔记(9)——java常用类
    Java 学习笔记(8)——匿名对象与内部类
    OGC相关概念解析
    Django中URL有关
    转载关于Python Web后端开发面试心得
    ArcPy中mapping常见函数及用法1
    Django1.11加载静态文件
    ArcPy第一章-Python基础
    浅谈提高Django性能
  • 原文地址:https://www.cnblogs.com/hxzkh/p/9193379.html
Copyright © 2011-2022 走看看