Thanks for the questions. I’ll answer yours then add two more relevant ones.
1. What benefits does the Astra SDK provide over OpenNI2?
Astra SDK has improved internal architecture over OpenNI2 that minimizes data copies and latency, and is also completely extensible for future stream types through plugins. The API for Astra SDK is also cleaner and simpler than OpenNI. Astra SDK also has several interesting capabilities that OpenNI does not. For example, the SDK architecture is set up to support multiple applications simultaneously. (Our roadmap includes an Astra server/daemon process in the future so multiple applications can access data over IPC on the same machine or TCP from remote machines.)
OpenNI2 is rather a large, complex codebase for what it does, so it is hard to maintain and hard to extend. No one is actively developing OpenNI2. As far as I know, only Orbbec and Occipital are doing minimal bug fixes, for our own needs.
2. Can I use the Astra SDK on Linux?
Yes, it compiles and runs today on Linux and Android! In fact, our continuous integration server includes Ubuntu 14.04 along side OSX and VS2013/VS2015. We simply have not had enough time to create pre-compiled binary releases for the different varieties of Linux. You can compile Astra SDK from source on github for your platform, though.
Astra SDK continuous integration platforms
3. Why did Orbbec create Astra SDK?
We know many people have existing investments into OpenNI and just need new sensors. Accordingly, we designed Astra and Astra S to be OpenNI compatible due to current customer demand. However, due to the architecture of OpenNI, it would take significant time and resources to maintain and update it for sensor with capabilities beyond what PrimeSense released. This includes Astra Pro, with the 720p UVC color camera, as well as future sensors that we release with even better capabilities.
Astra SDK is the solution for this.
We recommend that any new application development use Astra SDK.
4. Why does Astra SDK require OpenNI to compile?
Now that you know the above, you can understand some of the technical decisions we made in order to ship the sensors and Astra SDK quicker. Specifically, because Astra is fully OpenNI compatible, we decided to use OpenNI as a intermediate layer to access data and expose it through Astra SDK.
This is only a temporary step. We fully plan to remove the OpenNI requirement with an updated driver layer that supports Astra and Astra Pro separate from OpenNI. This will make compiling and installing Astra SDK easier, and will also improve performance and memory usage because the data streams won’t need to go through the OpenNI layers anymore.
This is also why Astra Pro color camera isn’t exposed properly through Astra SDK. OpenNI doesn’t support UVC, and we haven’t written the custom driver layer yet that would replace OpenNI. We have limited development resources, so have to focus on the most critical features. Currently we are finishing up our skeleton tracking effort and expect to return to improving the SDK and drivers soon.
So, you can chose to use OpenNI or Astra SDK depending upon your needs. But I’ll reiterate here - all of our investments are building upon the Astra SDK and we expect that our future sensors will only be fully supported through Astra SDK. Astra SDK is the best choice for future-proofing your development work.