KinectV2在ROS下使用的一些问题(iai_kinect2)

首先要配置好ROS环境,以及编译好libfreenect2,具体可看我之前的一篇博客JetsonTX1+Turtlebot+KinectV2配置小结

编译 iai_kinect2:

    cd ~/testRosKinect/src/
    git clone https://github.com/code-iai/iai_kinect2.git
    cd iai_kinect2
    cd ~/testRosKinect
    catkin_make -DCMAKE_BUILD_TYPE="Release"

编译时遇到的问题:
1. 首先要去设置~/testRosKinect/src/iai_kinect2/kinect2_bridge/CMakeLists.txt中之前编译好的libfreenect2的include和lib路径
2. 错误:

在JetsonTX1上:No rule to make target /usr/lib/arm-linux-gnueabihf/libopencv_ts.so.2.4.8', needed by/home/ubuntu/testRosKinect/devel/lib/kinect2_bridge/kinect2_bridge
在主机上:No rule to make target /usr/lib/x86_64-linux-gnu/libopencv_ts.so.2.4.8', needed by/home/pc/testRosKinect/devel/lib/kinect2_bridge/kinect2_bridge

这个问题真的是很麻烦,因为在ros包中(具体在/opt/ros/indigo/share/cv_bridge/cmake/cv_bridgeConfig.cmake中)默认的cv_bridge所去找的都是系统库目录下(/usr/lib/x86_64-linux-gnu)的libopencv2.4.8。

尝试修改了cv_bridgeConfig.cmake这个文件,把路径和版本都指向我的opencv,可是这并没有什么卵用,可能ros里面还有其他的地方写了相关的东西,猜想ros是默认你装opencv是用的是sudo apt-get install libopencv-dev的方法,如果你是自己编译源码装的opencv就会有问题。(本质原因还是没搞明白,如果有朋友知道请一定要告诉我!!!被这个搞的真是有点无语!!!)

解决方法:
将自己编译的opencv的lib文件拷贝到/usr/lib/x86_64-linux-gnu下(软链接不要拷)。然后我的是opencv2.4.13,所以把后缀名改成2.4.8的(比如libopencv_videostab.so.2.4.13 改成 libopencv_videostab.so.2.4.8,同理其它),最后注意一下软链接要重新做一下。然后就可以了。

对了,因为opencv默认编译出来的libopencv_ts是静态链接库libopencv_ts.a,而这个iai_kinect2需要动态库libopencv_ts.so(想不明白,这个只是opencv的test,为什么需要链接这个库。。。),所以在编译opencv的时候去修改~/opencv-2.4.13/modules/ts/CMakeLists.txt,然后

set(OPENCV_MODULE_TYPE SHARED)

编译成功后我用ldd ~/testRosKinect//devel/lib/kinect2_bridge/kinect2_bridge去看链接了哪些库,结果显示根本没有之前报错的那些库,但是那些报错的那些库不解决又编译成功不了,WTF,也是很无奈。我还是没找到问题所在,希望知道的朋友指教,感激不尽。

测试

source devel/setup.bash
roslaunch kinect2_bridge kinect2_bridge.launch
//然后再开一个终端
source devel/setup.bash
rosrun kinect2_viewer kinect2_viewer

OK了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值