当前位置:首页  <  应用教程  <  【创客学堂】基于Kinect的实例教程及硬件介绍(一)...
【创客学堂】基于Kinect的实例教程及硬件介绍(一)
编辑:Xtm 2014-08-01 浏览次数:969

阅读适合人群

    对硬件开发感兴趣,对算法感情趣,对新事物充满好奇心,对软件编程有着深深的沉迷,对大学的生活不想浑浑噩噩的度过的同学们,都可以参加进来!

   你最好对Kinect有比较基础的了解。

   你需要具备基本的C语言知识,了解基本就行,不用太深。

   你需要具备硬件的原理,结构,电路等基本思想,大体来说就是你要具备这样的本领,看见一个模块,你要大体知道他能做什么,就算不知道,你也有意识想去知道,并且很快通过找资料的方式很快驱动这个硬件,或者是你有很强烈的想法,这样也足够。

写作缘由

    我认为在国内没有比较好的,全面的,适合初学者的类似教程的文章供Kinect爱好者学习,这篇文章不敢说是什么什么大神,大作,只是自己的一点感悟,一点当初的倔强,倔强在哪里呢?最初的时候完全迷茫的学习这个东西,不但走了没有必要的弯路,还在家那个身上折磨自己好久,真心的不知道你没有没有这杨一种心情,做什么事情很茫然,是那种毫无头绪的茫然,然后只能靠自己,.更坑的是这个Kinect它完全是E文的资料,完全是E文的文章.。 自从那几个煎熬的晚上,我就发誓,我要是做出来了,成功了,咱就要出一篇教程,救出那些向我一样茫然的孩子们(热泪盈眶)  !    

   Processing是面向对象很强的一个开发环境,这个环境很适合快速开发,我认为Kinect的开发没有必要去查大量的Windows MSDN,了解他的API接口,在C#或者是C++环境下写着不是很人性的代码,Processing是很人性的自然的人机交互语言.所以我选择了Processing

    先说一下它能实现什么功能?我打算以图文并茂的方式来为大家讲解。笔者真心希望以后有人真的能够学习这个东西,并且能很好的掌握Kinect,能给自己带来很多快乐!

我主要带领大家做什么

一 、基于kinect的体感直升飞机

体感直升飞机

二 、基于Kinect和Processing的体感双足类人形机器人

 

    体感双足类人型机器人

 

体感双足类人型机器人

Kinect硬件构成及原理

    Kinect一定是硬件了,硬件的话一定是死的,然后我们要使用它,就要给他注入灵魂,让它为我们工作,现在来看直接为我们工作的是操作系统,也就是平时所说的Windows,macOS,linux啦,这样的话我们就需要一个桥梁,这个桥梁起到促进两者沟通的目的,在多种需求要求的大趋势下桥梁应运而生,产生了中间产物SimpleOpenNI。同时也有Windows Kinect SDK 原理上两者是相同的.具体说明请看图。

    Kinect 软件架构层次图:

 Kinect 软件架构层次图

硬件原理框图

    对硬件更兴趣朋友一定会很好奇这个传感器是什么芯片的,什么原理的,这里我也要简单的说说,因为本人也是对这方面有着发自内心的好奇心的。

    处理芯片:这款传感器芯片厂商是PrimeSense, PrimeSense是以色列特拉维夫的三维传感公司,公司产品PrimeScene是在运算,图像解析,数据处理方面鼎鼎有名的芯片厂商,他的产品不能被复制,以处理速度快,稳定性好,价格昂贵著称.另外SimpleOpenNI 也是PrimeScene发起的,当然这个是非营利的,开源的。

    PrimeSense才确认为微软提供了其三维测量技术,在PrimeSense公司的主页上提到其使用的是一种光编码(light coding)技术。不同于传统的ToF或者结构光测量技术,light coding使用的是连续的照明(而非脉冲),也不需要特制的感光芯片,而只需要普通的CMOS感光芯片,这让方案的成本大大降低。Light coding,顾名思义就是用光源照明给需要测量的空间编上码,说到底还是结构光技术。但与传统的结构光方法不同的是,他的光源打出去的并不是一副周期性变化的二维的图像编码,而是一个具有三维纵深的“体编码”。这种光源叫做激光散斑(laser speckle),是当激光照射到粗糙物体或穿透毛玻璃后形成的随机衍射斑点。这些散斑具有高度的随机性,而且会随着距离的不同变换图案。也就是说空间中任意两处的散斑图案都是不同的。只要在空间中打上这样的结构光,整个空间就都被做了标记,把一个物体放进这个空间,只要看看物体上面的散斑图案,就可以知道这个物体在什么位置了。当然,在这之前要把整个空间的散斑图案都记录下来,所以要先做一次光源的标定。

    在PrimeSense的专利上,标定的方法是这样的:每隔一段距离,取一个参考平面,把参考平面上的散斑图案记录下来。假设Natal规定的用户活动空间是距离电视机1米到4米的范围,每隔10cm取一个参考平面,那么标定下来我们就已经保存了30幅散斑图像。需要进行测量的时候,拍摄一副待测场景的散斑图像,将这幅图像和我们保存下来的30幅参考图像依次做互相关运算,这样我们会得到30幅相关度图像,而空间中有物体存在的位置,在相关度图像上就会显示出峰值。把这些峰值一层层叠在一起,再经过一些插值,就会得到整个场景的三维形状了。

硬件原理框图

    The Kinect is a sensor released by Microsoft to be used with the XBox.(Kinect是微软发布的题干传感器主要用于Xbox) Its original design was to allow players to interact with a game without having to hold a device like a controller or a Wii remote. (这台设备最初被设计制造是因为微软想让人们更轻松的在游戏之间互动,完全脱离手柄或者是像Wii一样的移动无线设备)Quickly after its release, libraries emerged that allow the data from the Kinect to be understood by a computer and not need an XBox.(Kinect一发布,大量的函数(基于库的)可以调用Kinect数据,并且在计算机上有很好的应用,Kinect不再是Xbox,也就是不再是游戏机了)

   The Kinect is a combination of a video such as would be used as a webcam and a depth camera. (kibect由一个像网络摄像头还像深度摄像头一样的东西组成)The webcam records the colour video outputting a two-dimensional array of RGB values for each frame.( 摄像头记录彩色视频,输出一个二维数组,二维数组在每一帧中包含来自被映射物体的RGB值。) Depth camera consists of two parts: an emitter that outputs infrared light and a camera that reads in the reflected infrared light and computes how far away each pixel is. The depth camera then outputs a two dimensional array of distances for each frame.( 深度相机由两部分组成:输出红外线发射器,一个相机,读入反射的红外线和计算每个像素有多远。深度相机然后输出一个二维数组每一帧的距离。)

    关于Kinect只提示到这里了,小伙伴们有不懂的地方望自行搜索。有问题才能有进步!

 

需要的基本器材及准备

   这是一个教程,需要这样的原材料:

1.Kinect For Windows 一个(最好是开发板的因为真样的话显着很专业,也可以是华硕的体感器)价格在1700左右,Xtion要便宜得多,价格具体不记得了,貌似600+

2.还有笔记本电脑一台,就是你们用来打游戏的就行,这个东西不吃你的资源

3.还有就是通畅的网络,在100K就可以,还有就是翻墙,.翻墙软件的话推荐SoftEther VPN Client 管理工具 免费的VPN毕竟不多,速度稳定性还好,最大的优点就是方便

4.硬件的话可以有选择性的,可以是单片机(51,AVR,Arduino,ARM,任何PI任何duido都可以)最主要的就是和他们通信,串口通讯,COM口

5.最后最重要的一点就是:: 有了梦想就去做,人生就是要有挑战才能变得精彩。

    关于Kinect硬件构成及原理小编就给大家介绍到这了,后续小编还会继续为大家讲解SimpleOpenNI 0.27 版本Processing 平台搭建的具体操作过程,喜欢的小伙伴们敬请期待吧!

    相关文章:什么是Processing?爱上Processing从今天开始!

   Processing:让编程成为一种艺术(谢作如)