2011-10-09 21 views
56

Chúng khác nhau ở đâu?Kinect SDK chính thức so với các giải pháp thay thế nguồn mở

Ưu điểm của việc chọn libfreenect hoặc OpenNI + SensorKinect, ví dụ, trên SDK chính thức và ngược lại là gì?

Nhược điểm là gì?

+4

Tôi đang biên soạn danh sách bên dưới. Có bất kỳ lĩnh vực cụ thể quan tâm cho sự khác biệt? –

+0

Không thực sự. Một nhóm bạn bè và tôi đã nghĩ đến việc phát triển một ứng dụng nhỏ của kinect, có thể sẽ sử dụng các kỹ thuật thực tế tăng cường. –

+0

Vấn đề là, một số người trong chúng ta sử dụng Linux/Mac và tôi có một vấn đề với việc viết mã mà sẽ bắt buộc phải khóa cửa sổ. –

Trả lời

55

Xin lưu ý rằng câu trả lời dưới đây là theo ngày và một số dữ kiện có thể rất lạc hậu trong tương lai gần. Trạng thái hiện tại của Kinect SDK chính thức là beta 1.00.12.

Sự khác biệt rõ ràng đầu tiên là SDK chính thức được nhóm nghiên cứu của Microsoft duy trì trong khi OpenKinect là một SDK nguồn mở được duy trì bởi cộng đồng nguồn mở. Cả hai đều có khuyết điểm và ưu điểm của nó.

  • SDK chính thức được phát triển bởi Microsoft mà còn phát triển phần cứng và do đó nên biết thông tin nội bộ về thiết bị mà xã hội mã nguồn mở phải đảo ngược kỹ sư. Rõ ràng đây là lợi thế của Microsoft.
  • Microsoft đang đổ nhiều tiền vào thiết bị này và tôi chắc chắn rằng họ sẽ làm những gì họ cảm thấy là cần thiết để giữ cho SDK của họ tăng lên ngang hàng. Có nền kinh tế đằng sau nó mang lại nhiều lợi thế.
  • Mặt khác, đừng bao giờ đánh giá thấp sức mạnh của xã hội nguồn mở: "Cộng đồng OpenKinect bao gồm hơn 2000 thành viên đóng góp thời gian và mã của họ cho Dự án. Các thành viên của chúng tôi đã tham gia Dự án này với sứ mệnh tạo ra tốt nhất có thể bộ ứng dụng cho Kinect OpenKinect là một cộng đồng "nguồn mở" thực sự! " - http://openkinect.org/wiki/Main_Page.
  • OpenKinect được phát hành lâu trước khi SDK chính thức là thiết bị kinect bị tấn công vào ngày đầu tiên hoặc ngày thứ hai phát hành. Kudos để OpenKinect!

ngôn ngữ lập trình được hỗ trợ:

  • Official SDK: C++, C#, hoặc Visual Basic bằng cách sử dụng Microsoft Visual Studio 2010.
  • OpenKinect: Python, C, C++, C#, Java, Lisp và nhiều hơn nữa! Rõ ràng là không yêu cầu Visual Studio. hệ thống

điều hành hỗ trợ:

  • SDK chính thức: chỉ cài đặt trên Windows 7.
  • OpenKinect: chạy trên Linux, OS X và Windows

lợi thế rõ ràng OpenKinect.

Giấy phép:

  • SDK chính thức ở trạng thái beta hiện tại của nó chỉ để thử nghiệm. SDK đã được phát triển đặc biệt để khuyến khích việc khám phá và thử nghiệm rộng rãi bởi các cộng đồng học thuật, nghiên cứu và đam mê. ứng dụng thương mại không được phép. Tuy nhiên, lưu ý rằng điều này có thể sẽ thay đổi trong các bản phát hành sau của SDK.Truy cập vào số FAQ để biết thêm thông tin
  • Trình mở ứng dụng OpenKinect được mở để sử dụng cho mục đích thương mại, nhưng các nguồn trực tuyến cho biết rằng nó có thể không đơn giản như vậy. Tôi sẽ xem xét kỹ các điều khoản trước khi phát hành bất kỳ ứng dụng thương mại nào với nó. Đọc Kinect – Licensing implications of open hardware projects để biết thêm thông tin.

Tài liệu và hỗ trợ:

  • SDK chính thức: tài liệu tốt và cung cấp một OpenKinect support forum
  • : dường như có một danh sách gửi thư, twitter và irc. nhưng không có diễn đàn chính thức/QA? Tài liệu trên trang web không phải là phong phú như tôi muốn nó được.

Device hiệu chuẩn:.

thiết bị Kinect khác nhau có thể khác nhau đôi chút tùy thuộc vào hàng loạt mà họ được sản xuất tại Như vậy thiết bị cân chỉnh đôi khi được yêu cầu. Nhưng:

  • SDK chính thức không cung cấp bất kỳ cài đặt hiệu chuẩn nào nhưng tôi chưa cần phải hiệu chỉnh thiết bị mà tôi đang làm việc. Theo một cái gì đó tôi đọc trực tuyến (liên kết bị mất) tại thời gian sản xuất các thông số hiệu chuẩn được ghi vào thiết bị kinect, do đó, với hiệu chuẩn SDK chính thức là không cần thiết.
  • Tính năng OpenKinect hiệu chỉnh thiết bị: http://openkinect.org/wiki/Calibration. Vì vậy, tôi tin rằng bạn nên hiệu chỉnh thiết bị của bạn nếu bạn đi với OpenKinect.

Nếu đúng là hiệu chuẩn chỉ cần thiết cho OpenKinect, đây là một lợi thế lớn cho SDK chính thức vì việc phân phối và cài đặt các ứng dụng mà không cần phải dễ dàng hơn.


Cá nhân, sau một thử thất bại với các OpenKinect SDK tôi đã đi với SDK chính thức, mà

  1. đi kèm với trình điều khiển được cài đặt ra khỏi hộp
  2. đi kèm với ví dụ và mã cho dễ dàng tham gia kinh doanh
  3. Tất cả trong tất cả: Tôi có thể bắt đầu phát triển của riêng mình trong vòng 15 phút hoặc lâu hơn.
  4. Bây giờ, sau khi làm việc với Kinect trong một vài tháng, tôi phải nói rằng tôi khá hài lòng với API được cung cấp. Tuy nhiên, tôi không thể so sánh nó với SDK OpenKinect như tôi thực tế chưa bao giờ làm việc đó (nhưng có lẽ nó không cho nó một thử công bằng).

UPDATE: Tính đến ngày 01 tháng hai 2012 có một giấy phép thương mại cho SDK chính thức: "Các giấy phép thương mại cho phiên bản này cho phép phát triển và phân phối các ứng dụng thương mại SDK trước là một phiên bản beta. và kết quả là chỉ thích hợp cho nghiên cứu, thử nghiệm và thử nghiệm, và không phù hợp để sử dụng với một sản phẩm thương mại cuối cùng, giấy phép mới sẽ cho phép các nhà phát triển tạo và bán ứng dụng Kinect cho Windows để kết thúc khách hàng sử dụng Kinect Phần cứng Windows trên nền tảng Windows." Developer Frequently Asked Questions

+3

Bạn cũng có thể nêu bật một số khó khăn mà bạn gặp phải khi thử OpenKinect SDK? Dựa trên chức năng, thiết kế, tính dễ sử dụng và tính ổn định, bạn có nói OpenKinect kém hơn so với SDK chính thức không? – greatwolf

+3

@VictorT .: Tôi đã thử trước mùa hè, tôi không nhớ chi tiết về sự thất bại. Tôi nghĩ rằng đó là các trình điều khiển mà tôi đã không cài đặt được. Với sdk chính thức, tuy nhiên, đây chỉ là một nhấp đúp chuột (sau khi cài đặt Windows 7, tất nhiên :)). –

3

tôi sẽ khuyên khuôn khổ Cinder. (Libcinder.org)

Nó hỗ trợ cả OpenNI và Kinect develoment, nếu bạn đang sử dụng C++. Nó bây giờ hỗ trợ Kinect SDK 1.7 và OpenNI 2, thông qua những Cinderblocks:

MS Kinect SDK 1.7 (ổn định) https://github.com/BanTheRewind/Cinder-MsKinect

OpenNI 2/NITE 2.2 (alpha) https://github.com/wieden-kennedy/Cinder-OpenNI

Cả hai đều có thể theo dõi xương ngoài boz, OpenNI có khả năng theo dõi tối đa sáu bộ xương cùng một lúc. OpenNI 2 đang tăng nhanh trên Kinect, mặc dù Kinect mới có thể sẽ thay đổi khi nó ra mắt vào tháng tới. Tuy nhiên các nguyên tắc cơ bản cơ bản không có khả năng thay đổi. Hạn chế chính với bản phát hành ban đầu của OpenNI là nó yêu cầu kích hoạt toàn bộ cơ thể để nhận ra người dùng, là bộ ngắt giao dịch cho nhiều ứng dụng - tuy nhiên điều này dường như đã được giải quyết trong các phiên bản mới hơn và OpenNI 2 cũng hỗ trợ theo dõi tay mạnh mẽ ở cự ly gần, mặc dù nó vẫn đòi hỏi một cử chỉ tập trung ban đầu. Nếu bạn làm việc trên Mac hoặc Linux, nó là lựa chọn duy nhất của bạn.

+0

Tôi đang sử dụng repo wieden-kennedy nhưng tôi vẫn không thể làm cho nó nhận ra kinect. Tuy nhiên nó sẽ làm việc với một xtion. – Kat

5

Theo giải thích của Avada Kedavra trong anh/cô answer, đây là một số khác biệt thú vị:

  • hỗ trợ hệ điều hành: bạn chỉ có thể sử dụng Microsoft SDK trên Windows, trong khi các giải pháp mã nguồn mở thường có khả năng làm việc trên các hệ điều hành khác;
  • ngôn ngữ lập trình: bạn có lựa chọn rộng hơn với giải pháp nguồn mở, trong khi Microsoft chỉ hỗ trợ C++ và C# (Visual Basic không được hỗ trợ nhiều hơn với SDK 2.0);
  • tài liệu và hỗ trợ: Microsoft cung cấp diễn đàn tốt và tài liệu được thực hiện tốt (với nhiều mẫu); nhưng có một số giải pháp nguồn mở được ghi chép lại;
  • giấy phép: Microsoft ít hoặc độc quyền hơn, nguồn mở ít hoặc miễn phí hơn. Cũng nên xem xét rằng các ý tưởng nguồn mở đôi khi được các công ty lớn mua lại, và biến đổi thành một cái gì đó không còn cởi mở nữa. Có lẽ bạn sẽ không phải là trường hợp, nhưng hãy ghi nhớ sự kiện bổ sung này.

Theo ý kiến ​​cá nhân của tôi, sự khác biệt quan trọng nhất giữa giải pháp mã nguồn mở và Microsoft SDK là có liên quan chặt chẽ với các thuật toán xương theo dõi.

Trong khi dữ liệu độ sâu và RGB có thể được cung cấp hiệu quả bởi cả API mở/API miễn phí và Microsoft SDK, việc triển khai khả năng theo dõi xương không chỉ là vấn đề kỹ thuật đảo ngược.

Để thực hiện thuật toán như vậy, nhà phát triển phải có năng lực mạnh mẽ trong lĩnh vực nhận dạng mẫu và học máy, và tôi khá chắc chắn rằng loại kiến ​​thức đó có sẵn trong cộng đồng nguồn mở. Nhưng việc thực hiện theo dõi xương dựa trên thuật toán "được đào tạo", đòi hỏi nhiều thử nghiệm để thu thập số lượng dữ liệu rất lớn. Những dữ liệu này sau đó được sử dụng để "đào tạo" thuật toán, có thể nhận ra các khớp xương.

Nhận đủ dữ liệu, nhưng cũng điều chỉnh và sử dụng đúng cách, đòi hỏi nhiều thời gian và tiền bạc. Các nhà nghiên cứu và nhà phát triển của Microsoft đang trong các điều kiện tốt nhất để làm việc trên loại công cụ này, đơn giản chỉ vì đó là công việc của họ.

Trong những kinh nghiệm trước đây của mình, tôi nhận thấy rằng các giải pháp nguồn mở cung cấp khả năng theo dõi xương tốt, nhưng chúng không ở cùng mức độ mà Microsoft cung cấp với SDK của nó. Hãy nhớ rằng Microsoft SDK cung cấp rất nhiều khả năng bổ sung, như nhận diện khuôn mặt hoặc định hướng chung, và một số tiện ích rất hữu ích nếu bạn muốn xây dựng một giao diện đồ họa nhanh chóng. Vì vậy, những gì tôi đề nghị là: nếu bạn đang làm việc trên một dự án mà bạn chỉ cần độ sâu và/hoặc dữ liệu RGB, hoặc nếu bạn có nhu cầu sử dụng một ngôn ngữ lập trình không được hỗ trợ bởi Microsoft SDK, thì bạn nên chọn giải pháp nguồn mở. Nếu không, Microsoft SDK sẽ là lựa chọn tốt nhất của tôi.

Các vấn đề liên quan