树莓派4B日志(一) Raspbian Buster源码安装ROS Kinetic

目录

    • 1. 写在前面
    • 2. 树莓派4安装Raspbian Buster
    • 3. 准备工作
      • 3.1 添加ROS仓库
      • 3.2 安装Bootstrap依赖
      • 3.3 初始化rosdep
      • 3.4 安装gcc与g++
      • 3.5 源码编译安装libboost1.58
    • 4. ROS Kinetic安装
      • 4.1 创建catkin工作空间
      • 4.2 下载ROS包源码
      • 4.3 安装Assimp依赖
      • 4.4 使用rosdep安装所需依赖
      • 4.3 编译工作空间
      • 4.4 添加环境变量
    • 5. Enjoy!

1. 写在前面

  经论坛网友反馈,后来本方案在编译时存在问题。因为使用麻烦,本人也不再在raspbian上使用ros了。最近,我成功在树莓派4B上安装了Ubuntu mate系统与ROS melodic,全程操作简单无需编译源码,有需要的小伙伴可以移步我新发的博文树莓派4B日志(二) 基于ubuntu server 18.04 安装ubuntu mate并成功配置ROS melodic
  ——大象 2020.5.2

  自从上半年树莓派4发布之后,就迫不及待想买来体验一下,可无奈要准备九月推免,便一直搁置了。经历了半年的起起落落,终于录取到了dream school,第二天就下单了4G版的Raspberry Pi 4B。
  由于树莓派4的Ubuntu Mate还没有出,就只好在Raspbian系统下安装ROS,整个过程陆续经历了一周,前前后后踩了不少坑,现把总结的流程整理上传。

2. 树莓派4安装Raspbian Buster

  这一步相对来说比较顺利,只要耐心安装即可。以下是网上找到的较好的教程与下载链接:

  • 树莓派4B新手篇:安装官网Raspbian Buster系统及基础配置
  • 官网使用说明
  • 官方镜像下载

  补充:系统运行流畅度很大程度取决于SD卡的质量,个人使用的是三星的EVO Plus,UHS等级为U3,容量128g,实测写入速度超过70M/s,还是很不错的。

3. 准备工作

3.1 添加ROS仓库

$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
$ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

更新软件包

$ sudo apt-get update
$ sudo apt-get upgrade

3.2 安装Bootstrap依赖

$ sudo apt-get install -y python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential cmake

3.3 初始化rosdep

$ sudo rosdep init
$ rosdep update

3.4 安装gcc与g++

由于Raspbian Buster系统中默认安装了8.3.0版本的GNU,这导致在编译ROS源码的时候会出现一些错误。为避免该情况的发生,可在编译时使用5版本的GNU,若有需要,编译完后可切换回去。

$ sudo apt-get install gcc-5 g++-5

Linux系统下gcc与g++版本切换可参考:ubuntu系统的gcc版本切换
本人用的方法比较粗暴,直接在/usr/bin目录下将gcc与g++的快捷方式指向gcc-5与g+±5,这样也是可以的

安装完后查询当前版本:

$ gcc -v

3.5 源码编译安装libboost1.58

ROS Kinetic中大部分包使用的boost版本为1.58,如果使用apt-get安装,在链接ROS核心库 librosconsole 时会发生错误,故需要从源码安装libboost1.58。这个过程会比较漫长,请耐心等待。

  • 下载并解压代码
wget -O boost_1_58_0.tar.bz2 http://sourceforge.net/projects/boost/files/boost/1.58.0/boost_1_58_0.tar.bz2/download
tar --bzip2 -xvf boost_1_58_0.tar.bz2
  • 安装
cd boost_1_58_0
./bootstrap.sh --with-libraries=all --with-toolset=gcc
./b2 toolset=gcc
sudo ./b2 install --prefix=/usr
sudo ldconfig
  • 添加路径
    由于libboost默认将动态链接库装在/usr/lib路径下,而系统的查找路径在/usr/lib/arm-linux-gnueabihf下,故需要将新的路径写入/etc/ld.so.conf.d目录下的配置文件中
cd /etc/ld.so.conf.d && sudo touch mylib.conf && echo '/usr/lib' | sudo tee mylib.conf
sudo ldconfig

4. ROS Kinetic安装

4.1 创建catkin工作空间

$ mkdir -p ~/ros_catkin_ws
$ cd ~/ros_catkin_ws

4.2 下载ROS包源码

  • ROS精简版(推荐
    包含二十多个核心包,不含可视化工具
$ rosinstall_generator ros_comm --rosdistro kinetic --deps --wet-only --tar > kinetic-ros_comm-wet.rosinstall
$ wstool init src kinetic-ros_comm-wet.rosinstall
  • ROS桌面版
    包含一百九十多个常用包,含rqt、rviz等可视化工具以及OpenCV3,但编译过程较为漫长,容易编译出错。推荐先安装精简版,后遇到需要用的包再单独安装。
$ rosinstall_generator desktop --rosdistro kinetic --deps --wet-only --tar > kinetic-desktop-wet.rosinstall
$ wstool init src kinetic-desktop-wet.rosinstall

4.3 安装Assimp依赖

编译collada_urdf 包的时候会需要

mkdir -p ~/ros_catkin_ws/external_src
cd ~/ros_catkin_ws/external_src
wget http://sourceforge.net/projects/assimp/files/assimp-3.1/assimp-3.1.1_no_test_models.zip/download -O assimp-3.1.1_no_test_models.zip
unzip assimp-3.1.1_no_test_models.zip
cd assimp-3.1.1
cmake .
make
sudo make install

4.4 使用rosdep安装所需依赖

$ cd ~/ros_catkin_ws
$ rosdep install -y --from-paths src --ignore-src --rosdistro kinetic -r --os=debian:buster

4.3 编译工作空间

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

若树莓派4的内存为1G或2G,则在编译时可能造成内存耗尽,此时可以使用-j2进行编译,指令如下:

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

编译ROS精简版时,这个过程大约需要15分钟

4.4 添加环境变量

$ echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc

5. Enjoy!

你可能感兴趣的:(树莓派)