目的
本文主要介绍ROS机器人操作系统中主要开发环境的搭建过程。
注意:以下操作尽量在系统原本的空间中,不要在conda建立的虚拟空间中操作。
环境搭建找到正确的路线后,几乎是分分钟就能完成的事,但是实际上由于机器配置问题、版本问题、翻墙下载问题等等,需要耗费几天的时间去寻找原因并测试,所以很有必要对某个项目的开发环境,做个从零开始的配置记录,方便后续在新机器上,能够在半天内将环境和源代码复现。
1 Ubuntu系统安装
后续要使用ROS软件系统,以及OpenVino库,最好安装Ubuntu18.04版,原因不赘述。
基于win10系统安装Ubuntu系统基本没问题,资料好找,只是旧电脑磁盘碎片整理很花时间(几个小时以上),推荐使用SmartDefrag软件,简单易懂易用,比win10自带的功能好很多。
注意事项:
- 比如硬盘剩余200GB空间,磁盘碎片整理后,划分空闲磁盘区大概只能划分50%,如果划分空间超过50%,win10会报错:空间不足。
- 有些Ubuntu安装方法没有指引安装英伟达显卡驱动,这可能导致进入Ubuntu系统时,总是卡在登录输入密码界面进不去。我是登录不进桌面界面后,在Ctrl+alt+F2功能下(以命令行模式登入系统),使用命令行安装的英伟达显卡驱动。安装方法网上找到的资料,按照一步步操作按照没遇到什么问题。
2 安装Ubuntu常用软件和包
常见的如:VSCODE,anaconda,CMAKE等等。这些东西编译和安装方法都很简单不会出异常,也可以要用的时候再去安装。
备注:为anaconda添加中科大源(清华的源好像没更新了)
- 下载anaconda后,终端中输入:conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
- 设置搜索时显示通道地址:conda config --set show_channel_urls yes
3 安装realsense SDK并测试(此SDK并不一定要安装)
在ros-realsense(大概几十MB)中,包含了realsense SDK(大概1GB)中核心组件,如果只是用realsense的数据源,并不需要去安装原版的SDK!如果想安装,方法如下:
这个SDK安装要选对参考资料,我第一天找的两个安装资料,一步步操作最后总报错。后来换了如下这个链接,什么都没改动,一步步直接装好了:
https://www.cnblogs.com/tzbubble/p/13040323.html
-------------20210715分界线--------------------
在笔记本上部署时,上述链接指导安装时出现一些问题,重新撰写下流程:
- 去https://github.com/IntelRealSense/librealsense 下载源码,并放到某路径下,待会编译。
- 安装依赖环境
- sudo apt-get install libusb-1.0-0-dev libglfw3-dev libgtk-3-dev
- 将英特尔服务器添加到存储库列表中(作者原来那个不行了,需要使用下面这个)
- sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo $(lsb_release -cs) main" -u
- 注册服务器的公钥(作者原来那个不行了,需要使用下面这个)
- sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE
- 刷新apt列表
- sudo apt-get update
- 安装相关包
- sudo apt-get install librealsense2-dkms
- sudo apt-get install librealsense2-utils
- 检查安装
- modinfo uvcvideo | grep "version:" (终端会返回相关版本信息)
- 建立编译目录
- cd librealsense
- mkdir build
- cd build
- 使用cmake进行编译
- cmake ..
- make -j8 (多核编译)
- sudo make install
- 使用例程进行测试
- cd examples/capture
- ./rs-caputure
注意:
- 建议在打开终端的初始路径(有个“~”)下去执行安装操作,这样软件会安装在/home/你主机名/librealsense文件夹中。
4 编译安装OpenCV 4.5.1和OpenCV_Contrib库,并测试
编译安装OpenCV同样遇到一点麻烦,参考了几个博客,并手动下载了一些东西放在某路径后,最终才得以成功。
主要参考的博客:
https://blog.csdn.net/weixin_45873781/article/details/109370712 (流程参考,demo测试代码参考)
https://blog.csdn.net/z1314520cz/article/details/103501274 (在cmake或make操作前,需要去参考)
https://blog.csdn.net/u011736771/article/details/85960300 (在cmake或make操作前,需要去参考)
https://blog.csdn.net/PecoHe/article/details/97476135 (pkg-config 问题的解决办法)
https://www.cnblogs.com/fx-blog/p/8213704.html(辅助参考编译流程)
具体编译安装流程:
- 我是在CSDN下载的OpenCV 4.5.1.zip及其对应的OpenCV_Contrib.zip。
- 然后按照第一个链接博客中流程去操作(我同时参考了第5个和第4个)。
- 如果执行cmake或make命令时,遇到问题(大概率会遇到和我一样的问题),那么就用第2和第3个博客链接中的方法操作。手动下载boostdesc_bgm.i等文件的地址是:https://download.csdn.net/download/u011736771/12152001 (需要CSDN会员或积分,当然评论里也有人直接公开了自己盘备份的下载地址),下载该压缩包后,将里面两个文件夹内文件单独拿出来,将奇怪的前缀名删除,然后将这些文件放到~/opencv_contrib/modules/xfeatures2d/src/内。这样执行“make”时,就不会报错没有这些文件了。
- 在第一个链接查看OpenCV版本时,那行代码可能提示没有此命令什么点,这个问题就参考第4个链接博客中的方法即可解决。(注意修改版本号)
- 测试OpenCV能否使用时,在VScode中,代码#include <opencv2/opencv.hpp>底下会有红线,表示找不到此库,这并不是没安装好OpenCV,而是vscode这个代码编辑器没配置OpenCV路径而已。直接按照第一个链接博客中编译程序那个语句执行,如果生成了test2可执行程序并能运行图片成功,就表示OpenCV安装好了。
备注:在机器人上部署时,编译OpenCV又遇到额外两个问题:
-
报错 fatal error: opencv2/xfeatures2d.hpp: No such file or directory
-
解决办法:cmake时指定:-D BUILD_opencv_xfeatures2d=OFF。参考:https://www.jianshu.com/p/bf8533725b16或https://github.com/opencv/opencv_contrib/issues/1534
-
- In file included from /home/moi/yinming/OpenCV/opencv-4.5.1/modules/python/src2/cv2.cpp:38:0:
/home/moi/yinming/OpenCV/opencv-4.5.1/build/modules/python_bindings_generator/pyopencv_generated_include.h:178:34: fatal error: opencv2/sfm/robust.hpp: No such file or directory- 解决办法:在opencv_contrib-4.1.1/modules/hdf/include/opencv2/hdf/hdf5.hpp 文件中修改第40行 添加#include "/usr/include/hdf5/serial/hdf5.h"。参考:https://blog.csdn.net/sheqianweilong/article/details/102646929
5 编译安装PCL库,并测试
官方推荐的在Linux系统安装方法是:
- 新建一个终端
- 输入:sudo apt-get install libpcl-dev
我的在安装过程中,没有报任何错。当然更多的安装方法,可以参考如下:
- Ubuntu16.04 下安装点云库 PCL https://zhuanlan.zhihu.com/p/144885134
- 在自己的工程文件中使用 PCL https://zhuanlan.zhihu.com/p/149591434
直接安装好库后,使用的上述第2个链接中main.cpp代码和CMakeLists.txt代码测试PCL是否安装成功。
我在测试中,直接按照上述方法编译demo报错了,后来详细研读后,尝试将作者CMakeLists.txt中:
find_package(PCL REQUIRED COMPONENTS common io)
这一句替换为:
find_package(PCL REQUIRED)
即将PCL所有库模块都找到。只要改动这一句,自己在build文件夹内放入一张PCD文件后,就能编译和运行通过,程序返回你那PCD文件总的点云个数。
6 安装ROS
网上很多教程,但是最精简、最靠谱的参考安装方法如下:
Ubuntu18.04 melodic 安装与下载ROS(超详细教程):https://www.guyuehome.com/10082
备注:
如果不能翻墙,可能会遇到某几个文件不好下载的问题,上面链接中提到的两个方法,我是通过增加DNS通过的,当然也不是一次性通过的,具体试了多少次命令也忘了。
7 安装realsense-ros,并测试
安装方法参照官网:https://github.com/IntelRealSense/realsense-ros中方法1(使用apt-get直接安装)
具体过程:
- 新建终端
- 执行:export ROS_VER=melodic
执行:sudo apt-get install ros-$ROS_VER-realsense2-camera
测试:
新建终端,并执行:
roslaunch realsense2_camera rs_camera.launch- 再新建一个终端,并执行:rviz
- 在弹出的rviz软件中,左下角有个‘Add’,然后在弹框中选择‘By topic’选择数据源,这样就能看到realsense实时采集的数据了。(具体rviz使用方法还需要多了解)
备注:
- 如果运行roslaunch realsense2_camera rs_camera.launch时,报如下错误:
- "failed to open usb interface: 0, error: RS2_USB_STATUS_ACCESS"
- 解决方法:把99-realsense-libusb.rules放到/etc/udev/rules.d文件夹内,需要重新拔插一次realsense! (https://github.com/IntelRealSense/realsense-ros/issues/1408)
- 自己在安装realsense-ros时,刚开始用的源码编译安装方法,遇到‘
/home/xxx/catkin_ws/devel/lib/librealsense2_camera.so:
undefined symbol
’这样的错误,花了1天时间全网和GitHub上搜集答案,但依旧没能解决。最终
换用apt-get方式安装realsense-ros后,才没出现这个问题。
在使用apt-get方式安装realsense-ros后,由于不清楚
rviz中还有Add数据源,又花了1个多小时去查找问题,以为apt-get方式安装的realsense-ros方式也不行。最终还是别人偶然帮我操作了下rviz,才让数据源在rviz中出现。。。。。
8 安装Openvino
- 官网下载离线安装包。
- 解压:tar -xvzf l_openvino_toolkit_p_2021.4.582.tgz
- cd l_openvino_toolkit_p_2021.4.582
- sudo ./install_GUI.sh 一路next安装
- cd /opt/intel/openvino_2021/deployment_tools/model_optimizer(openvino跟CUDA一样,有个动态链接文件夹(用于区分多版本安装问题),这个openvino_2021就是动态链接文件夹)
- sudo -E ./install_openvino_dependencies.sh
- gedit ~/.bashrc
- 把如下两行放置到bashrc文件尾
- source /opt/intel/openvino_2021/bin/setupvars.sh
- source /opt/intel/openvino_2021/opencv/setupvars.sh
- source ~/.bashrc 激活环境
-
cd /opt/intel/openvino_2021/deployment_tools/model_optimizer/install_prerequisites
-
sudo ./install_prerequisites_onnx.sh(配置onnx依赖,用于onnx转IR)