Intel RealSense3D的原理以及与Kinect想比有什么优点

Intel RealSense3D的原理以及与Kinect想比有什么优点,第1张

RealSense3D是一套感知计算解决方案,包括世界上最小的3D摄像头,模块比两个硬币摞起来还薄,除了硬件外,英特尔还将提供驱动及软件等全套开发工具,开发者可以自由开发应用。RealSense3D配有深度传感器和全1080p彩色镜头,能够精确识别手势动作、面部特征、前景和背景,进而让设备理解人的动作和情感。

在python中numpy是很好用的数据处理包。不了解你说的数据结构但是可以尝试把数据转成numpy的md数组格式。之后可以在数组中进行检查看是不是所有的三通道都相等。如果说这样的话那么理论上三通道和三通道代表的信息都是一样的,直接在里面切片不会影响结果。

1 如果一个非微软的Kinect驱动安装在你的Windows PC上,那么请卸载它,再安装

微软的Kinect驱动,否则可能Kinect不工作;

2 务必给Kinect连接外接电源—如果你想让Kinect全力工作的话;如果Kinect只依靠

通过USB端口提供的电源,那么它只能发挥最小限度的功能; 3 播放标准的音频和视频,不需要特定的软件;

4 如果你使用USB hub的话,那么Kinect将是接在USB hub上的唯一设备。如果你有

多个Kinect,请把它们连接到不同的USB Controllers。如果2台Kinect连接到了一个USB端口上,那么只有一个能正常工作; 5 Kinect内置了一个风扇来防止过热。风扇是由Kinect的固件控制的,一旦温度达到

90摄氏度,摄像头就会关闭。没有提供能控制风扇的API 6 合理的光照—不能太强也不能太弱,对于RGB摄像头是非常重要的。白炽光、荧光

灯和自然光照没有问题。切忌用强烈的光连续照射摄像头,这会“弄瞎”摄像头的。 7 深度传感器在普通和弱光下工作正常,只是在接近黑暗的光照下会增加信号中的噪声。

8 深度传感器是通过反射光来分析深度信息的。因此,强反射的(如镜子,打磨的金属)、强吸光的物体可能不会被识别的非常好。

加载完驱动后,现在开始设置你的开发环境。如果你使用的是Visual Studio,请阅读下面的开发环境设置知识来帮助你创建你的第一个C#或C++应用程序。

Kinect+Unity3D 体感游戏开发 — Kinect SDK v15,给出几种方案,我做了相应尝试,现在也进行一下总结:

1、Zigfu的ZDK

以前用OpenNI的时候用过,没想到能够支持Kinect,于是很高兴的下好了trial版本,果然能用,不过发现一下子能打开Kinect设备,一下子不能打开Kinect设备,很是困惑,后面发现360安全卫士及360杀毒把Kinect服务当木马的提示,果断设置为信任,也把360安全卫士和360杀毒退出,在测试打开Kinect设备成功率高的多,但依然会有失败的。

2、CMU的封装

这套在看这篇文章是先下到,只支持Kinect SDK 10,本想修改一下用起来,但是懒的基因没有马上动手,而是再Google下,找到了这边文章,下载替换文件,看了一下,Kinect SDK 15跟Kinect SDK 16还是有区别,用了一下果然也是用不起来。

3、adevine1618开发的插件

缺点有说不在维护,所以就没有去试了。

4、根据Zigfu自己写一套C#类库

前面说到Zigfu的打开不稳定,于是想自己写一套能够同时支持Kinect和OpenNI的封装。没花多长时间,总结了一下需要各抽象层就动手写了骨骼数据方面,于是放到Unity进行测试。发现MonoDevelop编译没有问题,在Editor下确提示编译出错。这篇文章有提到:Unity35 只支持到Net 35, 而Kinect SDK v15 最低要求是Net 40 所以直接在Unity中使用v15的assembly是不行的。不过我尝试才真正体会到真的是不行,在VS2012中改成Net 35的话,编译又通不过,改成Net 40编译通过,在Unity中又通不过,默认是Net 45。很好奇Zigfu是如何做到的,ZDK下有Kinect10dll及OpenNINet的引用,也是用C#写的一套类库啊,难道是Kinect SDK 15,而且用的是Net 35?用Kinect SDK 15的话,为何CMU的封装(替换文件了)有如何跑不起来?

5、Unity Plugin方式,用C++写DLL

这个动手写以前就肯定是可行的,但还是动手写了一下做了测试,发现Kinect 红外灯能够点亮了。这样比CMU封装更有好处,按更自然的C++方式来实现,仅导出需要的接口就好了。

这么多方案下,最希望是能够把Zigfu实现能够把Kinect面部识别等更多功能放进去,当然是需要Unity能够支持Net 45了,目前方案是Unity Plugin方式了,把需求放到C++中去完成好了。

千层山 万重浪 比不过县城一碗汤 多加辣 不要糖 没事儿别看老板娘

血过眉 眼飙泪 不吃完夜宵不许醉 别追别追别追我叫你别追 今夜我陪你化成灰

使用的模型为waffle_pi,目的是在turtlebot3上使用深度相机kinect而不是激光雷达来进行空间信息的获取,从而实现相应算法如rtabmap。

①构建kinect描述文件kinect_gazeboxacro

位于turtlebot3_description/urdf文件夹下

②添加kinect外观文件,kinectjpg Kinecttga Kinectdae

位于turtlebot3_description/meshes/urdf文件夹下

③将kinect放到底盘上,改写turtlebot3_waffle_piurdfxacro文件

根据kinect_gazeboxacro的定义,调用kinect要定义prefix即命名前缀,设置为kinect,还要定义kinect在三个轴上的初始位置,即文件中的kinect_offset_x、kinect_offset_y、kinect_offset_z

④缩放,若无kinect_gazeboxacro文件中的scale,即尺度缩放,kinect和整个turtlebot差不多大,所以选取04作为缩放尺度

⑤查看,运行turtlebot3_gazebo中的turtlebot3_worldlaunch

可以看到,此时已出现kinect,且位置正确。

①修改turtlebot3_waffle_pigazeboxacro文件,将原有的激光雷达模块注释掉,如图

②修改turtlebot3_waffle_piurdfxacro文件,将原有的激光雷达模块注释掉,如图

可以看到,激光雷达已经移除

①安装rtabmap

②编写rtabmap启动文件,即rtabmap_demolaunch

里面添加robot_state_publisher节点来发布xacro中定义好的机器人的相对关节信息

③启动turtlebot3的仿真环境

④启动键盘控制节点

⑤启动rtabmap建图

⑥通过键盘控制机器人运动,实时三维建图

创建TransformListener对象监听坐标系变换,这里需要sleep 2s用于tf缓冲。

可以通过以下API获取tf变换,保存在TransformListener对象中,通过lookupTransform获取:

发现rviz能识别自定义的base_link,world以及kinect_frmae_optical(urdf里面定义的),但是不能获取frame与frame之间的变换关系(TF显示不出frame的信息),我在想应该少了一个joint_states发布器,于是在launch中包含下面的节点:

无法加载插件,很明显是缺少库,参考以下网址发现在之前网页里有依赖库的安装 >

以上就是关于Intel RealSense3D的原理以及与Kinect想比有什么优点全部的内容,包括:Intel RealSense3D的原理以及与Kinect想比有什么优点、数据集是Kinect获取的三通道深度图,怎么变成单通道且无信息损失、如何使用Kinect Sensor等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9623222.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存