OpenNI 再度更新囉!這次離上次的 OpenNI 1.4.0.2 / NITE 1.5.0.1 發布的間隔不到一個月,就再度推出新版,進度算滿快的。而這次的版本編號比較特別,就是 OpenNI 的版本編號終於和 NITE 一樣了!兩者都是 1.5.2.7。相較之下,之前的 NITE 至少都領先 OpenNI 一個次版號,這樣對應的版號相同,應該比較直覺吧? ^^"
有需要的人,一樣可以到 OpenNI 的官方網站下載:http://www.openni.org/Downloads/OpenNIModules.aspx
而由於驅動程式 Sensor 的版本也進版到 5.1.0.25 了,所以如果是要搭配 Kinect 使用的話,可能也還需要等 SensorKinect 更新到對應的版本,才能完全正常運作。而 Heresy 大概試了一下,目前基於 5.0.5.1 的 SensorKinect v0.8 似乎還是可以用,但是有沒有問題就不曉得了。
而主要的更新內容,主要算是錯誤修正、再加上一些穩定性的強化了∼像是之前在 Visual Studio 下,想要對程式進行偵錯時會出現「Xiron OS got an event timeout」的錯誤訊息、而無法執行程式的問題,基本上已經修復了∼不過很遺憾的是,這部份的問題主要似乎是在 Driver 的部分,所以目前在沒有 avin2 的新版 SensorKinect 的情況下,問題依然是存在的。(問題描述:《"Xiron OS got an event timeout" & XnSensorServer.exe》)
另外,目前對於 AMD CPU 的 SSE3 指令集,似乎還是有相容性的問題。不過因為 Heresy 自己沒在用 AMD 的機器,所以也沒碰到就是了。
最後,簡單的更新列表,可以參考《New unstable release – Many improvements and bug fixes! (OpenNI-1.5.2.7, NITE-1.5.2.7, Sensor-5.1.0.25)》一文,基本上包括了:
- NITE skeleton tracking latency, robustness, stability and quality was much improved.
- Many exception/segfaults in NITE were fixed.
- The annoying "event time out" problem many of you encountered is now fixed.
- SceneServer crashes were fixed.
- Calibration events/messages are now working as expected.
完整的列表,可以參考 github 上的更新列表(連結),下面是 Heresy 自己稍微整理一下的內容:
- New API: xnStopSinglePoseDetection.
- PoseDetectionCapability::StopPoseDetection will now return proper errors.
- xnNodeInfoGetTreeStringRepresentation was added to all wrappers.
- Recordings playbacks: make sure seek is also performed in a lock, so it wouldn’t collide with the reader thread.
- Data Dump: Adding frame sync information checks.
- Log: initializing from INI file would reset the output directory.
- Bug Fix:
- Seeking before the first WaitXUpdateAll() caused undetermined behavior.
- The samples cannot be copied to another folder and be compiled.
- Seeking to the current frame did no re-read it, while seeking to another frame did read it. This caused a bug where seeking to the same frame twice would cause it to return twice.
- .Net Wrappers
- Added the DataPtr property to Generator class.
- Added the missing DeviceIdentificationCapability class.
- Added missing enum values.
- Disposing a device node now also destroys the node.
- Fixed a bug where MapGenerator.BytesPerPixel was missing.
- FindExistingNode now returns null instead of throwing an exception if no node exists.
- Projective/RealWorld conversion – added a version which accepts a preallocated array.
- .Net samples will now show their source files in the visual studio project.
- Java Wrappers
- Added missing enum values.
- StartPoseDetection and StopPoseDetection are declared deprecated, and were replaced by startPoseDetection and stopPoseDetection.
- Java UserTracker sample will now draw the limbs only when both joints have a non-zero confidence
- Samples
- NiUserSelection – Enhanced the documentation.
- NiUseExtension sample: added a clear message about the need to register the extension module.
- NiBackRecorder: removed unneeded calls to Release().
- NiConvertXToONI: removed unused seekNode.
- Added option to show low confidence limbs as dotted lines in the user selection sample.
- Linux
- Cross compilation is now based on environment variables.
- keep ref count for the libusb events thread, so it will be shutdown automatically when all read threads have stopped.
- Android:
- makefiles are now compatible to ndk v7.
- Added the NiSimpleSkeleton sample.
- Android UserTracker sample: Adjusted to work without a calibration pose.
- USB Driver version was updated to 3.1.3.1.
- adding support for PrimeSense’s 0601 product ID.