Raspbian安装ROS系统Kinectic|树莓派4B安装ros使用OpenCV(全流程)

前言

树莓派4B最高拥有4Gb的RAM,对于承担图像处理任务的嵌入式设计是个性价比很高的选择。众所周知,ROS系统对Ubuntu系统最友好,但是由于树莓派4暂时还无法使用Ubuntu MATE,所以不得不在树莓派的原生系统Raspbian上安装和使用ROS系统。本文安装过程中遇到最主要的问题就是自动安装Opencv3时失败,所以是在安装的时候有两个策略:1,先配置好OpenCV的环境再进行ROS安装 2.在安装的时候先删掉OpenCV的部分,安装完成后再进行OpenCV的单独安装

↓单独安装OpenCV3的详细方法看我下面这篇↓
在树莓派4 Raspbian buster 上安装OpenCV3

文章目录

  • 前言
  • 0.准备工作
    • 查看Raspbian系统的版本
    • 使用自带的VNC Viewer远程控制树莓派(可选)
  • 1.预安装
    • 1.1设置ROS存储库(此处)
    • 1.2安装引导依赖项
    • 1.3初始化rosdep ,rosdep用来管理ros中的依赖包
  • 2.安装ROS Kinetic
    • 2.1创建工作空间
    • 2.2结构依赖项
      • 2.2.1安装不可直接安装的包
      • 2.2.1-安装遇到的问题
      • 2.2.2使用rosdep解构函数库
    • 2.3建立catkin工作空间
      • 2.3.1删除opencv3的库
      • 2.3.2安装boost工具库 (必须安装boost1.58版本,否则到安装rospack的时候会断掉)
  • 2.3.3安装所有下载的库
    • 2.3遇到的问题(重要:问题高发区)
    • 2.4安装opencv3
    • 2.5结束安装,source环境

0.准备工作

查看Raspbian系统的版本

Rapbian也和Debian系统一样有不同的版本,如Buster,Jessie, Stretch,了解自己版本对于后面解决问题有帮助。目前树莓派官网上提供的Raspbian为Buster,也可通过终端查看,输入如下命令:在VERSION_CODENAME行即可看到

$ cat /etc/os-release

使用自带的VNC Viewer远程控制树莓派(可选)

在大多数情况下,我们的树莓派占用了屏幕导致很多不方便(尤其是在用使用台式电脑)。raspbian系统自带了VNC远程控制,只要让树莓派联网就可以像我们的电脑上使用虚拟机一样使用树莓派。
总体来说只需要两步
1.在树莓派中把 VNC使能打开,即如图中的Pi Configuration中VNC打开即可。
Raspbian安装ROS系统Kinectic|树莓派4B安装ros使用OpenCV(全流程)_第1张图片
2.在pc上安装VNC Viwer ,直接百度找第一个官网下载正版免费注册使用。同时在PC和树莓派上登陆自己的账号就可以无线连接。注意再次登录的时候输入的username和password是树莓派的用户名和密码。
Raspbian安装ROS系统Kinectic|树莓派4B安装ros使用OpenCV(全流程)_第2张图片
如果出现鼠标无法移出虚拟框的情况,按F8,把relactive pointer motion关掉就行。

1.预安装

1.1设置ROS存储库(此处)

对于Stretch版本的系统,需要安装dirmngr库,其他版本也可以检查是否安装

$ sudo apt-get install dirmngr

设置软件源

$ 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

设置完成,更新Debian库

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

1.2安装引导依赖项

有时候此项会安装失败,因为网络有时候不稳定,查看信息确保安装成功(不成功就多试几次)

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

1.3初始化rosdep ,rosdep用来管理ros中的依赖包

$ sudo rosdep init
$ rosdep update

2.安装ROS Kinetic

2.1创建工作空间

在开发中我们也常常使用catkin make创建工作空间,此处可以理解为使用同样的工具构建整个ROS系统。
国际惯例,名称为ros_catkin_ws (如果要用别名称的也没什么问题,不过后面有时候要注意以下)

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

使用wstool获取ROS的核心程序包:这里有两个版本可以选择,任选一个

ROS-COMM 官网上推荐,只有核心的功能(没有GUI工具,比如rqt,rviz之类的图形界面)

$ rosinstall_generator ros_comm --rosdistro kinetic --deps --wet-only --tar > kinetic-ros_comm-wet.rosinstall
$ wstool init src kinetic-ros_comm-wet.rosinstall

ROS-Desktop 强烈不建议安装这这个,因为到最后安装核心包的时候会安装opencv ,但是它自己安装会缺少很多东西,会导致失败而且后面其他的核心包也会停止安装。我捣鼓三天,二十多个小时也没有安装好Desktop

$ rosinstall_generator desktop --rosdistro kinetic --deps --wet-only --tar > kinetic-desktop-wet.rosinstall
$ wstool init src kinetic-desktop-wet.rosinstall

使用wstool命令行的时候要等待一会,尤其是下载OpenCV的时候 。如果下载意外中断了,使用
$ wstool update -j4 -t src
命令去恢复下载 !!!这很重要!!!不要忽视,可能会导致灾难性错误
直到显示update complete才可以

2.2结构依赖项

2.2.1安装不可直接安装的包

这个包是关于URTF格式文件建模的,安装是存在部分问题如果用不着直接跳到2.2.1最后一行命令,用来省略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

2.2.1-安装遇到的问题

在cmake .后发现报错

– Building a non-boost version of Assimp.
– Looking for ZLIB…
– Checking for module ‘zzip-zlib-config’
No package ‘zzip-zlib-config’ found
– Found ZLIB: optimized;/usr/lib/arm-linux-gnueabihf/libz.so;debug;/usr/lib/arm-linux-gnueabihf/libz.so
– Checking for module ‘minizip’
No package ‘minizip’ found
– Configuring done
– Generating done
– Build files have been written to: /home/pi/ros_catkin_ws/external_src/assimp-3.1.1

安装minizip包后没有变化,而且make是满篇警告 。官方说:如果有问题出现,可以跳过这个无法安装的库:(???我也不是很懂,不知道他们什么时候把这个洞装上)

↓省略URDF部分安装的命令↓

$ rosinstall_generator desktop --rosdistro kinetic --deps --wet-only --exclude collada_parser collada_urdf --tar > kinetic-desktop-wet.rosinstall

2.2.2使用rosdep解构函数库

不同的raspbian版本对应不同:
Raspbian Stretch:

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

Raspbian Jessie:

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

Raspbian =Buster:

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

解释–from path选项表示我们希望安装整个包目录的依赖项,在本例中是src。
–ignore src选项向rosdep表明,它不应该尝试从包管理器在src文件夹中安装任何ros包,因为我们是自己构建的,所以不需要安装。
–rosdistro选项,因为我们还没有一个ros环境设置,所以我们必须向rosdep指出我们正在为哪个版本的ros构建。
最后,-y选项向rosdep表明,我们不想被来自包管理器的太多提示所困扰。
(如果安装了apt get中需要vtk7的任何东西,例如libpcl,rosdep可能无法安装vtk6。在再次调用rosdep之前,只需使用sudo apt get remove libvtk7 dev libvtk7 qt dev来删除与vtk7相关的包。请在rosdep完成后立即重新安装vtk7和其他软件包。)

2.3建立catkin工作空间

2.3.1删除opencv3的库

打开~/ros_catkin_ws/src文件夹,把opencv3的库给删除掉(因为不删掉99%会出错,而且opencv3的库安装不上,排在后面的大部分库都安装不上,导致功亏一篑。opencv3我们后面手动安装上就可以了)

2.3.2安装boost工具库 (必须安装boost1.58版本,否则到安装rospack的时候会断掉)

下载地址:https://sourceforge.net/projects/boost/files/boost/1.58.0/boost_1_58_0.tar.bz2/download

(注意给终端权限)安装参考:https://blog.csdn.net/cj1937007583/article/details/74235844

2.3.3安装所有下载的库

当软件包下载完成,下面的命令将把ros安装在/opt/ros/kinetic (如果遇到问题中断了,解决后可以把这个目录删掉重新执行,有时多装几次内存明显小很多)

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

注意上面命令很可能出现内存不够的错误,对于4G的RAM来说没有问题,如果有问题的话可以选择两线程的编译即:上面默认是 -j4 四线程
$ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/kinetic -j2

看见最后一行:
#All required rosdeps installed successfully

2.3遇到的问题(重要:问题高发区)

注意!!!检查一下/opt/ros/kinetic文件夹是否存在,不存在的话就再运行一下上面的安装命令
这个很重要,它有时候会没安装也会显示成功
问题1.如果在安装的过程中缺少库,就要补装然后再运行,最有可能缺少 gstreamer系列的库
对于gstreamer库缺少,最暴力的方法就是直接安装所有libstreamer系列

sudo apt-get install libgstreamer*  

问题2.如果有关于vtk的问题,比如找不到/usr/bin/vtk之类,正常是已经有了vtk,需要把文件地址映射:`

sudo ln -s /usr/bin/vtk6 /usr/bin/vtk	

问题3.opencv部分
<== Failed to process package ‘opencv3’:

https://blog.csdn.net/wuyanmin1995/article/details/81060991

问题4.qt_gui_cpp安装失败
可以直接按照opencv的方法删掉qt_gui_core,毕竟树莓派用qt开发很少
也可以试试
sudo apt-get install libpthread-workqueue-dev

2.4安装opencv3

见 ttps://blog.csdn.net/qq_22945165/article/details/84312374

2.5结束安装,source环境

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

你可能感兴趣的:(ROS,计算机视觉)