If you'd like to integrate a new module into OpenNI that provides depth, you would have to write a class that inherits from xn::ModuleDepthGenerator and put that in a dll/shared library. You can have a look at the sample called NiSampleModule under OpenNI's Samples directory to see how to do that. The same goes for any other type of generator in OpenNI (scene analyzer, skeleton, etc).
The xn::DepthGenerator class is what an application can use to get the depth map. The OpenNI framework will know how to give it data from either the depth module you wrote or from our (PrimeSense's) depth generator module (But our depth generator is the best! ;).
Hope that answers your question,
Alon
Hi there,
Regards,
Philip
--
You received this message because you are subscribed to the Google Groups "OpenNI" group.
To post to this group, send email to openn...@googlegroups.com.
To unsubscribe from this group, send email to openni-dev+...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/openni-dev?hl=en.
NITE can only work with PrimeSense's Sensor, not with any depth generator in general.
Alon
-----Original Message-----
From: openn...@googlegroups.com [mailto:openn...@googlegroups.com] On Behalf Of theowl84
Sent: Tuesday, December 21, 2010 4:21 PM
To: OpenNI
Hi!
Regards,
Matthias
--
Surely that is not true, otherwise what is the point of OpenNI?
Exactly. If NITE (an OpenNI module) only works with the Sensor implementation of the Depth generator, then something is seriously wrong with either NITE, OpenNI, or both, and it hurts the credibility of OpenNI.
Especially if this is the case, I'd rather start fresh with a community-driven technical standard rather than use a de facto standard of a single API implementation.
Josh
Hi guys,
This is a great discussion and I totally believe we should continue this thread and make sure everyone agree and are aligned with the results of this discussion!
OpenNI:
OpenNI’s goal is to make sure that ANY application developed on top of OpenNI does not break when being used with ANY OpenNI compliant device and middleware.
Devices / middlewares that are supported today:
Skeleton (as user)
HandPoint
Gestures
SceneAnalyzer
Depth
Image
Audio
As far as the application cares, it doesn’t matter whether the skeleton was created with a depth map or an RGB camera or for that matter a motion capture device. As long as the Skeleton is OpenNI compliant the application will run.
Same goes for applications that use the depth or depth and image, as long as those use OpenNI any device that supports Image and depth and is OpenNI compliant will enable that application to work.
The standard does not define the separation between the device and the driver/middleware – for example it does not manage any USB protocol (such as UVC or UAC). So a possible OpenNI compliant middleware can be an OpenCV module that creates depth from two RGB cameras.
Summary: the relationship between the different modules of OpenNI was intentionally left undefined in order to be able to support any constellation of devices / middleware as the goal of the standard is to create Natural Interaction APIs.
One of the goals of OpenNI IS TO PROMOTE competition on all the different layers and make sure that any vendor can implement any interface without dependencies. This does not mean that any vendor must make any part their solution be a general module that supports all other devices (think of PS move for example, they can implement an OpenNI skeleton without having depth! We don’t want to limit such a possible solution!)
NITE / PrimeSense’s PSDK:
The PSDK of PrimeSense implements the Depth and Image portions of OpenNI using the hardware and implements the Skeleton, SceneAnalyzer, HandPoint and Gestures portion using the NITE middleware.
Any application that uses OpenNI and uses any of these modules can use PrimeSense’s implementation of OpenNI. It doesn’t mean that any device that implements depth will have PrimeSense’s skeleton work out of the box (most likely a ToF depth will not be compatible due to the nature of the data and of course a PS move driver cannot be used to make PrimeSense’s skeleton work)
Having said that, I’ve already asked that PrimeSense will help to articulate how NITE is using the PSDK to extract the extra juice and get better performance (up to a level of IP regarding the skeletal extraction algorithms).
Please note that PrimeSense did mention from the beginning the NITE is designed and meant to run solely on PrimeSense’s SoC based devices.
From NITE’s license agreement: copy and distribute the end-user version of the NITE SDK in object code format to be used with Applications (“NITE”) on hardware produced, licensed by, or available under authority of PrimeSense or containing the chip validly associated with PrimeSense technology (“Authorized Hardware”) pursuant to an online end-user license agreement with PrimeSense (“EULA”);
One quick note – I personally, both as the OpenNI community manager and as the founder of PrimeSense promote creation of an alternative skeleton that can run on all devices. I’ve even approached people who discussed creation of an alternative skeleton and expressed the fact that we can support them
PrimeSense is a commercial entity with a business model of selling hardware components (chips). I’ve been working very hard on getting the company to open it’s middleware to the community and I am still working on making sure OpenNI gets a consortium ASAP. NITE is PrimeSense’s implementation for some of the OpenNI capabilities and I believe that most people will agree that it does a good job there.
I would like to open the following subject to discussion though: Do you believe that we need to make the certification of OpenNI to include also the protocol between the different middlewares and the devices? If so does OpenNI need to also define a depth protocol over USB? (like UVC and UAC?)
So far my goal in OpenNI was to lead a standard so that applications can be deployed everyone and with every device that supports the OpenNI implementation of the required modules. In the longer term I would like to make sure all vendors will want to support OpenNI as every application out there will run with their HW, and every application developer will want to work with OpenNI because it knows it will run on the largest installed based possible.
The business models I had in mind that could stimulate each of the different vendors:
1. HW – don’t worry about middleware and applications, you don’t need to create your own content as it’s already out there.
2. Middleware – create device agnostic middleware and provide the best performance, this will make people want to buy a license to your middleware as it provides the best solution in the market
3. Applications – Any application using OpenNI can know his application will work with any device but can still choose preferred middleware / HW configurations (hence the production chains in OpenNI)
I think this can be a great discussion and I look forwards to hear you opinion!
Thanks!
TamirB.
Thank you for the insights and for the comments.
I'll try to answer both of your general questions:
1. Where is PrimeSense heading with this / what's the strategy.
2. OpenNI - is it what you were looking for or not.
I'll start with the second as it's more relevant to this forum:
OpenNI is still in alpha stages and I believe we will see modifications made to it in the future due to requirements and updates both given by the community and provided by the parties that work on this standard. It's not a secret that it was released a bit earlier than expected and thus not as well cooked as one would expect, but on the other hand it leaves it more open to opinions / modifications that you (personally and cadet project) can influence. I can't tell you not to chose your own path with your own framework, I can tell you that the goal of OpenNI was to make sure that the market won't be segmented/fragmented and that's why it's open source. We are working very hard to also make sure it will be managed in an open source format (we are not there yet)
With regards to PrimeSense - one must remember that the business model for PrimeSense is selling HW components to companies that build a 3D sensor using the PrimeSense reference design (basically selling chips and optical elements). In order to push the market forwards PrimeSense is selling HW to developers / partners to extend the general understanding of what can be done with the technology and to help grow the market faster.
The PSDKs are being sold in two general channels:
1. To OpenNI community developers - for the Price of $200 + shipment and handling, this does not include any support packages from PrimeSense.
2. To PrimeSense's partners - these are commercial entities that show a roadmap to developing an application for the living room usage*
*if you are asking why that is interesting for PrimeSense: PrimeSense is working with more companies to bring this technology to consumers in the forms of gesture controlled media centers.
I know that OpenNI might suffer a bit from lack of documentation (being worked on) and some maturity / communication problems. OpenNI is mainly driven these days by PrimeSense and Willow Garage... I can't speak for our partners at Willow Garage (who have been doing an amazing work as far as I can tell) but for PrimeSense it's a very busy time with CES just around the corner. I believe you will see a far greater effort being made on OpenNI in the coming up few months once CES has passed.
Please don't hesitate to email me here or directly to my email for any question / collaborations... I think joining forces on OpenNI is better than having two different efforts.
I hope this helps
TamirB
ta...@openni.org
hi all,
> > driver/middleware - for example it does not manage any USB protocol (such as
> > One quick note - I personally, both as the OpenNI community manager and as
> > the founder of PrimeSense promote creation of an alternative skeleton that
> > can run on all devices. I've even approached people who discussed creation
> > of an alternative skeleton and expressed the fact that we can support them
>
> > PrimeSense is a commercial entity with a business model of selling hardware
> > components (chips). I've been working very hard on getting the company to
> > open it's middleware to the community and I am still working on making sure
> > OpenNI gets a consortium ASAP. NITE is PrimeSense's implementation for some
> > of the OpenNI capabilities and I believe that most people will agree that it
> > does a good job there.
>
> > I would like to open the following subject to discussion though: Do you
> > believe that we need to make the certification of OpenNI to include also the
> > protocol between the different middlewares and the devices? If so does
> > OpenNI need to also define a depth protocol over USB? (like UVC and UAC?)
>
> > So far my goal in OpenNI was to lead a standard so that applications can be
> > deployed everyone and with every device that supports the OpenNI
> > implementation of the required modules. In the longer term I would like to
> > make sure all vendors will want to support OpenNI as every application out
> > there will run with their HW, and every application developer will want to
> > work with OpenNI because it knows it will run on the largest installed based
> > possible.
>
> > The business models I had in mind that could stimulate each of the
> > different vendors:
>
> > 1. HW - don't worry about middleware and applications, you don't
> > need to create your own content as it's already out there.
>
> > 2. Middleware - create device agnostic middleware and provide the
> > best performance, this will make people want to buy a license to your
> > middleware as it provides the best solution in the market
>
> > 3. Applications - Any application using OpenNI can know his
--