由于采用raspberry pi 4b为最新版本,暂无适配的Ubuntu Mate镜像。而ros系统较适合用于Ubuntu系统安装和使用。
但ros官网也提供了raspberry 的官方系统Raspbian buster的安装说明,但步骤麻烦,安装时间较长,同时安装过程中也会存在各种问题。
本文依照自己的raspberry pi 4b版本参考官网安装流程安装。
lsb_release -a
本raspberry pi 4b 安装官方版本Raspbian buster
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
其中运行sudo rosdep init
会出现如下错误。
sudo rosdep init ERROR: cannot download default sources list from:
参考博客,
打开/etc/hosts文件,并在末尾添加如下语句:
151.101.84.133 raw.githubusercontent.com
再次运行,完美解决
mkdir -p ~/ros_catkin_ws
cd ~/ros_catkin_ws
建议安装ros_robot 或 ros_comm,因为树莓派性能问题,不建议安装desktop。因为不需要在树莓派上运行rviz等界面操作。后续有另一篇文档会说明在x86系统上连接树莓派进行rviz等操作。
rosinstall_generator robot --rosdistro kinetic --deps --wet-only --tar > kinetic-ros_comm-wet.rosinstall
wstool init src kinetic-robot-wet.rosinstall
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
要根据系统版本Raspbian buster,进行选择,否则可参考官方修改下面指令中–os=内容
cd ~/ros_catkin_ws
rosdep install -y --from-paths src --ignore-src --rosdistro kinetic -r --os=debian:buster
由于我的系统是Raspbian buster,因此一定要执行以下命令,即更换libboost1.67库,否则编译时一定会会出现"'boost/tr1/unordered_set.hpp' file not found"
错误,已经亲身经历,编译失败后,重新编译是重头进行编译的,非常浪费时间。
sudo apt remove libboost1.67-dev
sudo apt autoremove
sudo apt install -y libboost1.58-dev libboost1.58-all-dev
sudo apt install -y g++-5 gcc-5
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 10
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 20
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30
sudo update-alternatives --set cc /usr/bin/gcc
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30
sudo update-alternatives --set c++ /usr/bin/g++
sudo apt install -y python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential cmake
编译时还会遇到 tf失败,出现error ,如/home/pi/ros_catkin_ws/src/geometry2/tf2/src/buffer_core.cpp:126:34: error: ‘logWarn’ was not declared in this scope
请提前修改/usr/include/console_bridge/console.h文件,在此文件的开头增加如下定义
#define logWarn CONSOLE_BRIDGE_logWarn
#define logError CONSOLE_BRIDGE_logError
#define logDebug CONSOLE_BRIDGE_logDebug
#define logInform CONSOLE_BRIDGE_logInform
sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/kinetic
编译安装时间较久,约120个包。
永久source,可使每次打开终端自动source
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc