很喜欢导航里的一句话,你已偏离路线,已为你重新规划,请在合适的位置选择掉头。可是啊,人生无退路
Orbbec Gemini相机 SDK适配笔记
关于RGBD相机选型(奥比中光)
这篇文章对SDK的目录结构和若干文件做解答。
https://developer.orbbec.com.cn/download.html?id=64
SDK的链接位置
对于我们单纯的使用相机来讲,获得数据流是最重要的事情
官方提供的是OpenNI的接口,接下来就探索一下相关的资源,接着就是在ARM的设备上面的安装使用。
先附上SDK的地址:
https://developer.orbbec.com.cn/develop_details.html?id=2
就是这个了
因为这个是一个开源的魔改版本(其实也不是魔改版本):
https://github.com/OpenNI/OpenNI2
位置在此
有机会的话,做下差异性检查(对比以前的版本和奥比的差异)
还要注意这句话,RGB的读取使用OpenCV
Arm平台下的例子
在这里
看下安装的要求,其实都是可以的啦
其实我后面觉得是1G的运行内存的意思
下载这个就好
https://developer.orbbec.com.cn/download.html?id=64
如果是使用树莓派或者是Jetson Nano,请来这个地址下载我指的东西
东西不大,是阿里云托管的
解压的内容物,还是很清晰的结构
这些so库就是编译好的二进制库,需要放在我们的动态库的链接位置
需要注意的一点是:
可能需要USBLib的驱动,什么RGBD的相机在Linux下没什么驱动问题。
https://sourceforge.net/projects/libusb/files/libusb-1.0/
直接下载
- Linux:
- LibUSB 1.0.x
sudo apt-get install libusb-1.0-0
- LibUDEV
sudo apt-get install libudev0
- FreeGLUT3
sudo apt-get install freeglut3
你需要安装以上三个库来辅助我们的OpenNI运行,如果想要编译OpenGL的话,你最后一个库需要安装开发版。
sudo apt-get install freeglut3-dev
OpenNI的编译需要下面这些库的安装
Linux
-----
- GCC 4.x
sudo apt-get install g++
- Python 2.6+/3.x
sudo apt-get install python
- LibUSB 1.0.x
sudo apt-get install libusb-1.0-0-dev
- LibUDEV
sudo apt-get install libudev-dev
- JDK 6.0
sudo apt-get install openjdk-6-jdk
- FreeGLUT3
sudo apt-get install freeglut3-dev
- Doxygen
sudo apt-get install doxygen
- GraphViz
sudo apt-get install graphviz
至于编译的时候就更加的简单了~在OpenNI的目录下
make
如果是交叉编译的话
- ARM_CXX=<path to cross-compilation g++>
- ARM_STAGING=<path to cross-compilation staging dir>
先定义环境变量
PLATFORM=Arm make
然后因为是使用的CMake,所以就执行上面的。
https://structure.io/openni
我找了一下OpenNI的官网,发现其实是有第二代的SDK
这个里面有个SDK叫结构SDK,也不知道能不能用
也可以注册为一个开发者,来下载额外的SDK
这里就下载了一个
这是目录结构
还有的doc
看来也用不上,就此为止啦
但是SDK里面还有ROS的例子,我觉得我完全可以移植
上面看的这个SDK是OpenNI的升级SDK,而下面这个才是我们使用的SDK,也就是一代。
https://structure.io/openni
地址在此
我们在这里可以下载到一个zip的文件,用浏览器打开
找到index的文件,打开就好了
乍一看,和我们的奥比的SDK文档一样(怕不是一样吧)。我看了一下,应该是全部都一样。
我觉得这个设置是很有必要的。
继续读:
安装SDK的说法,在编写我们的RGBD应用的时候,在编写的时候都要像这样:
加上第二个这样的头文件
头文件位置在此
这个是我从OpenNI的头文件里面找到的其它头
这里的宏写的是支持的平台
在实例里面都可以看到这个error的方法
咋说呢,就是驱动相机的时候,先要初始化呗~然后其实就是驱动的事情,如果这个驱动没有安装好,就用不了,可是我们也不知道哪里的毛病,所以就相当于是个日志的打印。
API
函数的样子
函数的说明
OpenNI的头文件
所有的类声明
下篇继续~