系列文章目录
麦轮小车的基本环境使用(1)
麦轮小车的基本环境使用(2)
麦轮小车的基本环境使用(3)
ROS空间移植记录(一)
ROS空间移植记录(二)
ROS空间移植记录(三)
文章目录
- 系列文章目录
- 前言
- 一、ROS工作空间遇到问题(2)
- 1.1.Could not find a package configuration file provided by “async_web_server_cpp”
- 1.2.Unable to find the requested Boost libraries : boost_python37
- 1.3.Project 'cv_bridge' can not find opencv
- 1.4.not find libopencv_objdetect.so.3.2.0
- 1.5.make[2]: *** No rule to make target '/usr/lib/x86_64-linux-gnu/libGL.so'
- 1.6.Ubuntu 18.04 ———(Intel RealSense D435i)安装相机的驱动librealsense + realsense-ros
- 1.7.error: ‘find_if’ was not declared in this scope texture_frame_itr = find_if(frameset.begin(), frameset.end(), [&texture_source_id, &available_formats] (rs2::frame f)
- 总结
前言
这篇是记录树莓派ROS工作空间移植到Jetson TX的过程记录,因为两者系统差距比较小,改动较小和相关依赖包安装,当前篇的主要问题是延续上一篇的内容继续进行运行环境的配置,继续安装存在差异的依赖包,消除CPP版本差异问题,openCV路径差异问题。
(因为是很久之前做的学习和移植记录,所以不够完备,欢迎讨论)
一、ROS工作空间遇到问题(2)
1.1.Could not find a package configuration file provided by “async_web_server_cpp”
解决方法:
sudo apt-get install ros-melodic-async-web-server-cpp
1.2.Unable to find the requested Boost libraries : boost_python37
解决方法:
sed -i '11,12 s/^/#/' cv_bridge/CMakeLists.txt
参考:
GitHub:
https://github.com/ros-perception/vision_opencv/issues/341
ROS.answers:
https://answers.ros.org/question/344951/could-not-find-the-following-boost-libraries-boost_python3/
1.3.Project ‘cv_bridge’ can not find opencv
因为jetson系列的板子的自带的opencv4版本,路径名称与树莓派上的不同,所以需要修改路径信息,以便工作空间能够找到。
解决方法一(修改文件路径:):
/opt/ros/melodic/share/cv_bridge/cmake/cv_bridgeConfig.cmake
修改行(96):
set(_include_dirs “include;/usr/include;/usr/include/opencv”)
修改为下列样子:
set(_include_dirs “include;/usr/include;/usr/include/opencv4”)
方法二(手动链接文件索引):
树莓派上的路径名称是在/usr/include/opencv,但在jetson系统上它的路径名称为/usr/include/opencv4/opencv2
在不重写配置文件的情况下解决这个问题的最快方法是对目录进行符号链接:
sudo ln -s /usr/include/opencv4/opencv2/ /usr/include/opencv
1.4.not find libopencv_objdetect.so.3.2.0
make[2]: *** No rule to make target ‘/usr/lib/aarch64-linux-gnu/libopencv_objdetect.so.3.2.0’, needed by ‘/home/sikong/catkin_ws/devel/lib/libDepthImageToLaserScan.so’. Stop.
解决方法:
sudo apt install libopencv3.2
1.5.make[2]: *** No rule to make target ‘/usr/lib/x86_64-linux-gnu/libGL.so’
很多 Linux环境下出现此类Bug时,一般大部分原因是因为make 编译的时候, 动态链接库的链接性中断 ,因此 解决方案为添加symlink(符号链接) .
1)搜索libGL.so文件路径。如本机中路径为:/usr/lib/libGL.so
2)建立symlink: `
sudo ln -s /usr/lib/libGL.so.1 /usr/lib/x86_64-linux-gnu/libGL.so`
为了方便区分选择libGL.so.1
3)如果出现错误: ln: failed to create symbolic link ‘/usr/lib/x86_64-linux-gnu/libGL.so’ : File exists 则删除已有链接:
sudo rm /usr/lib/x86_64-linux-gnu/libGL.so
4)然后重新执行步骤2建立symlink.
参考:
https://blog.csdn.net/wuguangbin1230/article/details/77816299
1.6.Ubuntu 18.04 ———(Intel RealSense D435i)安装相机的驱动librealsense + realsense-ros
Realsense-ros安装:
建立工作空间(如果已经建立可以跳过):
1)mkdir -p ~/catkin_ws/src
2)cd ~/catkin_ws/src/
3)catkin_init_workspace
4)cd …
5)catkin_make
6)echo “source ~/catkin_ws/devel/setup.bash” >> ~/.bashrc
7)source ~/.bashrc
建立好工作空间后:在catkin_ws/src/下载源程序:
8)cd src
9)git clone https://github.com/intel-ros/realsense.git
Catkin_make编译:
10)cd …
11)catkin_make
安装测试librealsense SDK 2.0
方法一:
-
下载安装包
1)git clone https://github.com/IntelRealSense/librealsense.git
2)cd librealsense
更新软件源,获取最新的稳定的内核,可以用uname -r查看内核,满足4.8及以上就行,有时候会在这里出错,如果内核版本不够高的话。 -
更新依赖库
3)sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade -
安装依赖库
安装一些编译所需的依赖,不同版本系统安装依赖不同,以ubuntu18.04为例需要安装的是:
4)sudo apt-get install libudev-dev pkg-config libgtk-3-dev
5)sudo apt-get install libusb-1.0-0-dev pkg-config
6)sudo apt-get install libglfw3-dev
7)sudo apt-get install libssl-dev -
运行脚本
进入到librealsense文件夹目录下,运行Intel Realsense 的许可脚本
8)./scripts/setup_udev_rules.sh -
下载并编译内核模块
9)./scripts/patch-realsense-ubuntu-lts.sh
这一步要很长时间,连外网会快点。
另外,执行sudo dmesg | tail -n 50可以看到新的uvcvideo驱动已经登记了。
6.编译SDK2.0
10)cd librealsense
11)mkdir build
12)cd build
13)cmake …/ -DBUILD_EXAMPLES=true
14)make
15)sudo make install
- 测试
测试SDK2.0是否成功安装,使用usb3.0接口连上相机,进入到build/examples/capture文件夹中,执行
16)cd examples/capture
17)./rs-capture
参考:
博客:
https://blog.csdn.net/qq_38364548/article/details/124784454
Github :
https://github.com/IntelRealSense/realsense-ros
问题参考?:
catkin_make for realsense failing because of compilation issues:
GitHub:
https://github.com/IntelRealSense/realsense-ros/issues/513
1.7.error: ‘find_if’ was not declared in this scope texture_frame_itr = find_if(frameset.begin(), frameset.end(), [&texture_source_id, &available_formats] (rs2::frame f)
解决方法:
需要在 find_if
的每个实例前面加上 std::
总结
当前篇的主要问题是延续上一篇的内容继续进行运行环境的配置,继续安装存在差异的依赖包,消除CPP版本差异问题,openCV路径差异问题,至此工作空间运行环境问题已经解决,但是使用仍旧不方便,需要继续搭建运行环境,下一篇将说明提供便捷性的运行环境搭建。