Ubuntu16.04_ROS_kinetic下如何使用OpenCV2.4进行编译

1、背景

       由于之前是在ROS indigo下编译相关的包的,而且indigo默认使用OpencCV2.4.8进行编译,所以相关的自己写的一些package都是基于OpenCV2.4实现的;由于自己买了新电脑,Ubuntu14.04各种对新电脑硬件支持不好;被迫无奈用Ubuntu16.04,由于ubuntu16不支持ROS-indigo,所以自然而然的用了ROS-kinetic;最终本能的反应就是在ROS-kinetic下编译自己之前相关的包;但是由于ROS-kinetic默认使用OpenCV3.2.0,导致自己的包不能顺利编译通过,作为一个研发狗,哪能容忍有这么big的一个bug存在;翻遍了国内的所有解决方案,没一个能解决问题的,那么下面重点来了,这里寄出终极杀招,各位还没出坑的小伙伴接招吧!

2、解决方案


步骤 1) 下载ROS package 包opencv2_catkin和catkin_simple,也可以直接 利用git clone + 网址下载下来,直接点开两个包的超链接即可到达网址;

步骤 2)建立ROS工作空间OpenCV2_ws,相信对来看这个博客的小伙伴都很容易,这里不再多说;

步骤 3)把步骤 1)下载好的两个package放到OpenCV2_ws工作空间下;

步骤 4) catkin_make进行编译,特别值得注意的是,cakin_make过程中会自动下载opencv2.4.13,而且下载经常中断,这时候你要保证200%的耐心,Ctrl+C停止编译同时再次catkin_make,直至下载进度条100%完成,同时会启动自动编译;此过程您启动catkin_make十次以上或者更多纯属正常;如下面附图所示:


Ubuntu16.04_ROS_kinetic下如何使用OpenCV2.4进行编译_第1张图片


步骤 5)将你要编译的package例如leg_detection放入OpenCV2_ws这个空间;

步骤 6)同时在你的包例如leg_detection的cmakelist.txt文件中加入

find_package(catkin REQUIRED COMPONENTS
  opencv2_catkin
)
Ubuntu16.04_ROS_kinetic下如何使用OpenCV2.4进行编译_第2张图片


步骤 7) 同时在你的包例如leg_detection的package.xml文件中加入
opencv2_catkin
opencv2_catkin
Ubuntu16.04_ROS_kinetic下如何使用OpenCV2.4进行编译_第3张图片


步骤 8)此时您便可以愉快的直接在终端输入catkin_make编译您的package了, 如下图

Ubuntu16.04_ROS_kinetic下如何使用OpenCV2.4进行编译_第4张图片

3、总结

       因为国内相关的解决资料太少,本人也花了半天的时间解决此bug,希望能对后面各位遇到这个bug的小伙伴有所帮助;同事其他包的编译同理,只需把opencv2_ws下的相关文件拷贝到对应的空间下即可,这个问题就留给各位小伙伴可以自行摸索吧!






你可能感兴趣的:(ROS)