在上一篇文章——在Raspberry Pi上安装ROS Package 中,我加入了openni2_camera
和openni2_launch
,你如果按照我的步骤一步一步来,编译到某一步骤,肯定会碰到编译错误的,哈哈,所以我在上一篇文章末尾留了一句“预知后事如何,请听下回分解”。
上一篇文章中需要安装的 Package 需要依赖 OpenCV 和 OpenNi2,凡是涉及到图像,肯定是依赖 OpenCV的,openni2_camera
还要依赖OpenNi2
. rosdep
没有解决好这两个依赖问题,所以就出现编译错误。因此需要手动安装libopencv
和OpenNI2
安装OpenCV
由于indigo-custom_ros.rosinstall
中包含了和图像处理有关的 Package,没有OpenCV库,它们无法编译成功。在 Raspberry Pi 上编译安装 OpenCV 据说需要 10 个小时,但我们只需要一些库文件就够了,而且 Raspbian 的软件仓库中有:
$ sudo apt-get install libopencv-dev
安装OpenNI2
1. 编译安装
OpenNI2 库 Raspbian 软件仓库中没有,安装起来就要麻烦一些。首先,安装一些依赖:
$ sudo apt-get install git g++ make python libusb-1.0-0-dev libudev-dev pkg-config
clone OpenNI2:
$ git clone https://github.com/OpenNI/OpenNI2
$ cd OpenNI2
修改ThirdParty/PSCommon/BuildSystem/Platform.Arm
文件:
$ vim ThirdParty/PSCommon/BuildSystem/Platform.Arm
将
CFLAGS += -march=armv7-a -mtune=cortex-a9 -mfpu=neon -mfloat-abi=softfp #-mcpu=cortex-a8
替换成:
CFLAGS += -march=armv7-a -mtune=cortex-a9 -mfpu=neon -mfloat-abi=hard
然后编译:
PLATFORM=Arm make
编译结束之后,安装:
cd /Packaging/Linux
sudo ./install.sh
将library
和include
拷贝到系统目录中去:
sudo cp -r Include /usr/include/openni2
sudo cp -r Bin/Arm-Release/OpenNI2 /usr/lib/
sudo cp Bin/Arm-Release/libOpenNI2.* /usr/lib/
2. 新建一个.pc
文件
新建一个package config
文件:
sudo vim /usr/lib/pkgconfig/libopenni2.pc
填入下面的内容,以配置编译时需要的库设置:
prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include/openni2
Name: OpenNI2
Description: A general purpose driver for all OpenNI cameras.
Version: 2.2.0.0
Cflags: -I${includedir}
Libs: -L${libdir} -lOpenNI2 -L${libdir}/OpenNI2/Drivers -lDummyDevice -lOniFile -lPS1080.so
通过这个文件,pkg-config
能够输出编译器、链接器需要的参数以及已安装软件包的版本信息。检测一下能否被正确找到:
$ pkg-config --modversion libopenni2
如果版本号是2.2.0.0
,没问题。
3. 测试
接下来测试是否安装成功。首先,安装CORE_SAMPLES
,在Makefile
最后一行添加:
core_samples: $(CORE_SAMPLES)
编译:
PLATFORM=Arm make core_samples
将 Xtion 接上,运行:
./Bin/Arm-Release/SimpleRead
如果你能看到传感器的数据,并且当手在摄像头前方摆动时,数据在变化,则安装成功了。
编译
再回到 Workspace,编译安装:
$ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/indigo
在 ROS 里测试一下 Xtion:
$ roscore &
$ roslaunch openni2_launch openni2.launch
查看/camera/rgb/image_raw
话题,如果看到了彩色图像,则安装成功了!
参考连接
- https://dobots.nl/2014/05/05/asus-xtion-using-openni2-and-ros-on-udoo/
- Installing ROS Indigo on Raspberry Pi
- pkg-config