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

来源:互联网 发布:最好用黑客linux系统 编辑:程序博客网 时间:2024/06/14 23:18

首先要配置好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.bashroslaunch kinect2_bridge kinect2_bridge.launch//然后再开一个终端source devel/setup.bashrosrun kinect2_viewer kinect2_viewer

OK了

0 0
原创粉丝点击