树莓派4B安装ROS(Kinetic版本)

  • Post author:
  • Post category:其他




ROS安装



树莓派系统
Distributor ID:	Raspbian
Description:	Raspbian GNU/Linux 10 (buster)
Release:	10
Codename:	buster


安装 boosttrap 依赖
sudo apt-get install python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential


初始化 rosdep
sudo rosdep init
rosdep update

这边需要说明下,执行sudo rosdep init时,如果不翻墙,很大可能会失败



创建 catkin 工作空间
mkdir ~/ros_catkin_ws
cd ~/ros_catkin_ws


下载 ROS 功能包清单文件
rosinstall_generator desktop --rosdistro kinetic --deps --wet-only --tar > kinetic-desktop-wet.rosinstall
wstool init -j8 src kinetic-desktop-wet.rosinstall

有3个选择

1、

Desktop-Full

:ROS, rqt, rviz, robot-generic libraries, 2D/3D simulators, navigation and 2D/3D perception

2、

Desktop

: ROS, rqt, rviz, and robot-generic libraries

3、

ROS-Comm

:ROS package, build, and communication libraries. No GUI tools

这边选择

Desktop

版本

执行完命令后,会开始同步安装ROS需要的功能包,下载的功能包在

~/ros_catkin_ws/src



如果下载失败,或者中断,可以执行以下命令继续更新

wstool update -j 4 -t src


解决功能包依赖
rosdep install --from-paths src --ignore-src --rosdistro kinetic -y

执行完后会自动去下载缺少的依赖软件



去除 libboost1.67 ,安装 libboost1.58
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


编译、安装 ROS(Desktop版本有191个包)
sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/kinetic



编译报错处理



1. 编译报错(python-empy)

CMake Error at cmake/empy.cmake:29 (message):
  Unable to find either executable 'empy' or Python module 'em'...  try
  installing the package 'python-empy'
Call Stack (most recent call first):
  cmake/all.cmake:164 (include)
  CMakeLists.txt:8 (include)


解决办法

sudo apt-get install python-empy



2. 编译报错(opencv)



2.1 找不到 cuda.hpp 文件
In file included from /home/pi/ros_catkin_ws/src/opencv3/modules/stitching/include/opencv2/stitching.hpp:49:0,
                 from /home/pi/ros_catkin_ws/src/opencv3/modules/stitching/src/precomp.hpp:59,
                 from /home/pi/ros_catkin_ws/build_isolated/opencv3/install/modules/stitching/opencv_stitching_pch_dephelp.cxx:1:
/home/pi/ros_catkin_ws/src/opencv3/modules/stitching/include/opencv2/stitching/detail/matchers.hpp:52:42: fatal error: opencv2/xfeatures2d/cuda.hpp: No such file or directory
compilation terminated.


解决办法

一般cuda.hpp文件在

你的路径/opencv3/opencv_contrib/xfeatures2d/include/opencv2/xfeatures2d/cuda.hpp

可以使用

find

命令查找

sudo find / -name "cuda.hpp"

然后直接在报错的文件上添加cuda.hpp文件的绝对路径

#  include "opencv2/xfeatures2d/cuda.hpp"
改为
#  include "你的路径/opencv3/opencv_contrib/xfeatures2d/include/opencv2/xfeatures2d/cuda.hpp/opencv2/xfeatures2d/cuda.hpp"

找不到文件

opencv2/xfeatures2d.hpp



opencv2/xfeatures2d/nonfree.hpp

等的错误都可以用这种方式来解决



2.2 缺少 *.i 文件
/home/pi/ros_catkin_ws/src/opencv3/opencv_contrib/xfeatures2d/src/boostdesc.cpp:646:37: fatal error: boostdesc_bgm.i: No such file or directory
compilation terminated.


解决办法

下载缺少的文件,放在

opencv3/opencv_contrib/xfeatures2d/src

curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_lbgm.i > 0ae0675534aa318d9668f2a179c2a052-boostdesc_lbgm.i
curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_256.i > e6dcfa9f647779eb1ce446a8d759b6ea-boostdesc_binboost_256.i
curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_128.i > 98ea99d399965c03d555cef3ea502a0b-boostdesc_binboost_128.i
curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_064.i > 202e1b3e9fec871b04da31f7f016679f-boostdesc_binboost_064.i
curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm_hd.i > 324426a24fa56ad9c5b8e3e0b3e5303e-boostdesc_bgm_hd.i
curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm_bi.i > 232c966b13651bd0e46a1497b0852191-boostdesc_bgm_bi.i
curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm.i > 0ea90e7a8f3f7876d450e4149c97c74f-boostdesc_bgm.i
curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_120.i > 151805e03568c9f490a5e3a872777b75-vgg_generated_120.i
curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_64.i > 7126a5d9a8884ebca5aea5d63d677225-vgg_generated_64.i
curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_48.i > e8d0dcd54d1bcfdc29203d011a797179-vgg_generated_48.i
curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_80.i > 7cd47228edec52b6d82f46511af325c5-vgg_generated_80.i

新建文件,把以上代码复制到空文件下,保存,文件格式为sh,如

download.sh

,之后执行

./download.sh

即可下载到当前文件夹



2.3 cv2.cpp 文件报错
/home/pi/ros_catkin_ws/src/opencv3/modules/python/src2/cv2.cpp:885:34: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
     char* str = PyString_AsString(obj);


解决办法

打开

cv2.cpp

文件,在出错的地方修改以下代码

char* str = PyString_AsString(obj);
改为
char* str = const_cast<char *>(PyString_AsString(obj));



3.编译报错(qt_gui_cpp)

Traceback (most recent call last):
  File "/opt/ros/kinetic/share/python_qt_binding/cmake/sip_configure.py", line 85, in <module>
    sip_dir, sip_flags = get_sip_dir_flags(config)
  File "/opt/ros/kinetic/share/python_qt_binding/cmake/sip_configure.py", line 65, in get_sip_dir_flags
    raise FileNotFoundError('The sip directory for PyQt5 could not be located. Please ensure' +
NameError: global name 'FileNotFoundError' is not defined


解决办法

sudo apt-get install pyqt5-dev



4.编译报错(tf2)

/home/pi/ros_catkin_ws/src/geometry2/tf2/src/buffer_core.cpp:126:34: error: ‘logWarn’ was not declared in this scope
     logWarn("%s",ss.str().c_str());


logWarn



logError

等未定义


解决办法

编辑

/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



5.编译报错(rviz)

-- Checking for modules 'OGRE;OGRE-Overlay'
--   No package 'OGRE' found
--   No package 'OGRE-Overlay' found
-- Checking for module 'OGRE'
--   No package 'OGRE' found
CMake Error at /usr/share/cmake-3.13/Modules/FindPkgConfig.cmake:452 (message):
  A required package was not found
Call Stack (most recent call first):
  /usr/share/cmake-3.13/Modules/FindPkgConfig.cmake:622 (_pkg_check_modules_internal)
  CMakeLists.txt:53 (pkg_check_modules)


-- Configuring incomplete, errors occurred!

这种情况是缺少

OGRE

,直接去官方下载、安装

OGRE

源码


解决办法


ogre(github)

,选择

1.8.0

版本下载(其他版本可能会编译失败),下载完ogre源码后,解压到文件夹,如

ogre

,安装编译

ogre

源码所需依赖

sudo apt install build-essential automake libtool libfreetype6-dev libfreeimage-dev libzzip-dev libxrandr-dev libxaw7-dev freeglut3-dev libgl1-mesa-dev libglu1-mesa-dev libpoco-dev libtbb-dev doxygen libcppunit-dev

接下来编译

ogre

源码

cd ogre
mkdir build && cd build
cmake ..
make -j4
sudo make install



运行报错处理



RVIZ启动报错

error while loading shared libraries: libXXX.so.X: cannot open shared object file: No such file


解决办法

sudo ldconfig



参考链接


http://wiki.ros.org/kinetic/Installation/Source



http://wiki.ros.org/ROSberryPi/Installing%20ROS%20Kinetic%20on%20the%20Raspberry%20Pi



https://blog.csdn.net/weixin_44152895/article/details/102882502



https://blog.csdn.net/l1216766050/article/details/79774219



https://blog.csdn.net/hejinwei_1987/article/details/7685522



https://eleccelerator.com/wiki/index.php?title=Raspbian_Buster_ROS_RealSense#Problem:_logWarn_or_logError_not_declared_in_scope



https://blog.csdn.net/qq_33662995/article/details/98658661



https://blog.csdn.net/yjk13703623757/article/details/53217377



附件


百度网盘

提取码:b6a3

包含

树莓派系统



opencv源码



ogre1.8.1源码



boost_*.i

等文件



附件2


百度网盘

提取码:f2ak

附件2为树莓派系统(buster)+ ROS(kinetic)的压缩镜像



版权声明:本文为hua_lun_tong_xue原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。