orin安装ROS与ROS中opencv版本的问题

ROS的安装

ros的安装过程非常简单,可以参考官方文档,在终端中输入下列命令即可:

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 install curl
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
sudo apt update
sudo apt install ros-noetic-desktop-full
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
sudo apt install python3-rosdep
sudo rosdep init
rosdep update

这一过程中唯一可能出现问题的就是sudo rosdep init
rosdep update中的网络问题。

ROS中opencv版本的问题

在安装了ROS后orin的系统上可能存在三种opencv环境,第一个是orin安装时安装的opencv,一个是安装ROS时安装的opencv,还有就是自身需要的opencv版本。这三个版本可能会有冲突,导致ROS中的opencv无法使用,尤其是cv_bridge可能会出现问题。

这里提供一种解决方案,首先是在刷机后首先卸载自带的opencv,在终端中输入如下指令:

sudo apt-get purge libopencv*
sudo apt autoremove
sudo apt-get update

如果在catkin_make的时候出现如下错误,则可能是自己环境需要的opencv与ROS安装的opencv产生了冲突,导致了cv_bridge的错误,错误显示如下:

/usr/bin/ld: warning: libopencv_imgproc.so.3.3, needed by /usr/local/lib/libopencv_highgui.so.3.3.1, may conflict with libopencv_imgproc.so.4.2
/usr/bin/ld: CMakeFiles/tracker_eco_node.dir/eco_camera.cpp.o: in function `eco::SampleUpdate::SampleUpdate()':
eco_camera.cpp:(.text._ZN3eco12SampleUpdateC2Ev[_ZN3eco12SampleUpdateC5Ev]+0x24): undefined reference to `cv::Mat::Mat()'
/usr/bin/ld: eco_camera.cpp:(.text._ZN3eco12SampleUpdateC2Ev[_ZN3eco12SampleUpdateC5Ev]+0x30): undefined reference to `cv::Mat::Mat()'
/usr/bin/ld: CMakeFiles/tracker_eco_node.dir/eco_camera.cpp.o: in function `eco::ScaleFilter::ScaleFilter()':
eco_camera.cpp:(.text._ZN3eco11ScaleFilterC2Ev[_ZN3eco11ScaleFilterC5Ev]+0x3c): undefined reference to `cv::Mat::Mat()'
/usr/bin/ld: CMakeFiles/tracker_eco_node.dir/eco_camera.cpp.o: in function `Eco_Tracker::Eco_Tracker()':
eco_camera.cpp:(.text._ZN11Eco_TrackerC2Ev[_ZN11Eco_TrackerC5Ev]+0x114): undefined reference to `cv::Mat::Mat()'
/usr/bin/ld: eco_camera.cpp:(.text._ZN11Eco_TrackerC2Ev[_ZN11Eco_TrackerC5Ev]+0x164): undefined reference to `cv::Mat::Mat()'
collect2: error: ld returned 1 exit status
make[2]: *** [tracker_eco/CMakeFiles/tracker_eco_node.dir/build.make:207: /home/rislab/wqb_ws/devel/lib/tracker_eco/tracker_eco_node] Error 1
make[1]: *** [CMakeFiles/Makefile2:1049: tracker_eco/CMakeFiles/tracker_eco_node.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
Invoking "make -j12 -l12" failed

解决方案如下:

首先卸载ROS自己安装的cv_bridge,按照如下命令:

sudo apt-get remove ros-noctic-cv-bridge

然后在github下载对应ROS版本的cv_bridge,进入下载后的文件夹后,执行如下命令:

mkdir build
cd build
cmake ..
make
sudo make install

然后在需要opencv的包的cmakeLists.txt文件中将以下命令加入到find_package之前

set(cv_bridge_DIR /usr/local/share/cv_bridge/cmake)

之后在运行catkin_make就可以了!

但是笔者之后又发现python脚本中import cv_bridge运行会显示没有cv_bridge模块,只要再把ros-noctic-cv-bridge下下来就好了:

sudo apt-get install ros-noctic-cv-bridge
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值