经论坛网友反馈,后来本方案在编译时存在问题。因为使用麻烦,本人也不再在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,整个过程陆续经历了一周,前前后后踩了不少坑,现把总结的流程整理上传。
这一步相对来说比较顺利,只要耐心安装即可。以下是网上找到的较好的教程与下载链接:
补充:系统运行流畅度很大程度取决于SD卡的质量,个人使用的是三星的EVO Plus,UHS等级为U3,容量128g,实测写入速度超过70M/s,还是很不错的。
$ 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
$ sudo apt-get install -y python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential cmake
$ sudo rosdep init
$ rosdep update
由于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
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
/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
$ mkdir -p ~/ros_catkin_ws
$ cd ~/ros_catkin_ws
$ rosinstall_generator ros_comm --rosdistro kinetic --deps --wet-only --tar > kinetic-ros_comm-wet.rosinstall
$ wstool init src kinetic-ros_comm-wet.rosinstall
$ rosinstall_generator desktop --rosdistro kinetic --deps --wet-only --tar > kinetic-desktop-wet.rosinstall
$ wstool init src kinetic-desktop-wet.rosinstall
编译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
$ cd ~/ros_catkin_ws
$ rosdep install -y --from-paths src --ignore-src --rosdistro kinetic -r --os=debian:buster
$ 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分钟
$ echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc