QUÁ TRÌNH HÌNH THÀNH VÀ PHÁT TRIỂN CỦA MICROSOFT KINECT
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA KHOA HỌC MÁY TÍNH
TIẾU LUẬN PHƯƠNG PHÁP LUẬN
SÁNG TẠO KHOA HỌC:
QUÁ TRÌNH HÌNH THÀNH
VÀ PHÁT TRIỂN CỦA MICROSOFT KINECT
Giảng viên hướng dẫn: GS TS HOÀNG VĂN KIẾM Học viên thực hiện: NGUYỄN PHƯƠNG ANH Lớp: Cao học Khóa 6 MSHV: CH1101159
TP Hồ Chí Minh, tháng 04 năm 2012
Trang 2Em xin bày tỏ lòng biết ơn sâu sắc đến GS TS Hoàng Văn Kiếm, trưởng bộ môn Kỹ thuật phần mềm khoa Công Nghệ Phần Mềm, trường Đại học Công Nghệ Thông Tin, ĐHQG TP.HCM đã tận tình hướng dẫn, cung cấp kiến thức, truyền đạt những kinh nghiệm quí báu giúp em hoàn thành tốt bài tiểu luận này
Xin cám ơn cha, mẹ, các anh, chị em trong gia đình đã hỗ trợ, lo lắng và động viên Đồng thời, xin cám ơn tất cả các bạn đã ủng hộ, giúp đỡ chúng tôi trong quá trình thực hiện bài tiểu luận này
Dù đã có nhiều cố gắng nhưng chắc chắn sẽ không tránh khỏi những thiếu sót,
em rất mong nhận được sự đóng góp ý kiến của các Thầy giáo, Cô giáo và các bạn để
đề tài này được hoàn thiện hơn
Em xin chân thành cảm ơn!
Tp Hồ Chí Minh, tháng 04 năm 2012
Học viên
Trang 3(Của giảng viên hướng dẫn)
Trang 4
LỜI NÓI ĐẦU 1
CHƯƠNG 1: TÌM HIỂU MICROSOFT KINECT 2
1 Giới thiệu về Microsoft Kinect 2
2 Lịch sử phát triển 2
3 Cấu trúc phần cứng của Kinect 4
4 Cấu trúc của Kinect SDK 6
CHƯƠNG 2: CÂU CHUYỆN BÍ MẬT VỀ SỰ PHÁT TRIỂN KINECT 8
CHƯƠNG 3: KẾT LUẬN 15
PHỤ LỤC 16
TÀI LIỆU THAM KHẢO 18
MỤC LỤC HÌNH ẢNH Hình 1: Thiết bị Microsoft Kinect 2
Hình 2: Gian hàng của Microsoft tại triển lãm E3 - 2009 3
Hình 3: Cấu trúc phần cứng bên trong Kinect 4
Hình 4: Lưới hồng ngoại phát ra từ Kinect 5
Hình 5: Bản đồ chiều sâu của hình ảnh thu về thể hiện bằng màu gradient từ trắng(gần) đến xanh dương(xa) 5
Hình 6: Microsoft Kinect sau khi được tháo rời hoàn toàn 6
Hình 7: Phần cứng và phần mềm của Kinect tương tác với một ứng dụng 6
Hình 8: Cấu trúc ứng dụng Kinect để phát triển ứng dụng trên Kinect SDK 7
Trang 5LỜI NÓI ĐẦU
Kể từ khi máy tính cá nhân được phát triển, máy tính được sản xuất hướng tới người dùng phổ thông nhiều hơn Điều đó thúc đẩy tương tác người-máy cũng được phát triển theo những hình thức ngày càng đơn giản hơn và tự nhiên hơn Trong lịch sử máy tính hiện đại đã có 2 cuộc cách mạng lớn về thiết bị đã dẫn tới những thay đổi của tương tác người-máy, và sắp tới có thể là cuộc cách mạng của thiết bị Kinect và các thiết bị tương tự
Nỗ lực sớm nhất của việc thay đổi tương tác người-máy là vào năm 1880, khi Herman Hollerith làm việc ở Cục điều tra dân số Hoa Kì, tìm cách xử lý dữ liệu dân số bằng máy Kết quả là máy tính sử dụng bìa đục lỗ đã được tạo ra, đem tới một phương thức thao tác đơn giản hơn với dữ liệu Sau này, bàn phím tồn tại cùng với sự phát triển của các máy tính hiện đại Nhưng 2 điều vừa nêu vẫn chưa phải là những cuộc cách mạng vì bìa đục lỗ quá phức tạp và thao tác với các phím mũi tên trên bàn phím vẫn chưa quen thuộc với thói quen tự nhiên của con người
Cho tới năm 1983, chuột máy tính đầu tiên được giới thiệu cùng với máy Lisa của Apple Đi kèm đó là sự xuất hiện của giao diện người dùng đồ hoạ (Graphical User Interface - GUI) Và đây là cuộc cách mạng đầu tiên trong tương tác người-máy Chuột máy tính sau đó đã trở nên không thể thiếu với hầu hết máy tính cá nhân
Cuộc cách mạng tiếp theo là sự phổ biến nhanh chóng và mạnh mẽ của công nghệ cảm ứng đa điểm, dẫn đầu bởi thiết bị di động mang tính cách mạng iPhone của Apple Cảm ứng đa điểm cho phép tương tác người-máy thông qua chạm và vuốt trên màn hình cảm ứng Công nghệ này đã thay đổi hoàn toàn tư duy cũ của thời đại máy tính cá nhân, và đã loại bỏ hẳn bàn phím cứng trên nhiều thiết bị di động lẫn máy tính
Thiết bị Kinect cũng có thể là cuộc cách mạng tiếp theo Khi Microsoft giới thiệu,
họ coi đây là một thiết bị cách mạng trong lĩnh vực trò chơi và giải trí Microsoft phát hành Kinect như là một cảm biến gắn thêm vào Xbox 360 và phát triển các game tương tác bằng cử chỉ cơ thể trên hệ máy Xbox Nhưng ngay sau đó, người dùng và các lập trình viên thế giới đã tìm thấy sự thú vị trong việc phát triển các ứng dụng tương tác với máy tính cá nhân sử dụng Kinect và đã bắt tay vào nghiên cứu và ứng dụng thiết bị này trong nhiều lĩnh vực khác nhau
Câu chuyện về quá trình thành và phát triển Kinect là một câu chuyện kể về sự tìm tòi sáng tạo, không ngừng vươn lên, không nản lòng khi đối mặt với khó khăn của đội ngũ kỹ sư Microsoft Đây sẽ là một bài học bổ ích cho những cá nhân, tổ chức đang tham gia công tác nghiên cứu khoa học và sáng tạo
Trang 6CHƯƠNG 1: TÌM HIỂU MICROSOFT KINECT
1 Giới thiệu về Microsoft Kinect:
Hình 1: Thiết bị Microsoft Kinect Kinect là một thiết bị đầu vào có khả năng cảm nhận chuyển động được tạo ra bởi Microsoft dùng cho dòng sản phẩm chính là máy chơi game Xbox 360 và máy tính chạy hệ điều hành Windows
Kinect có thiết kế tương tự một webcam và là một thiết bị ngoại vi cho máy Xbox
360, nó cho phép người dùng điều khiển và tương tác với máy Xbox 360 không cần sử dụng thiết bị điều khiển mà thông qua chính những chuyển động tự nhiên của cơ thể bao gồm cử chỉ và giọng nói Mục đích chính của dự án này là để tăng trải nghiệm của người chơi khi sử dụng Xbox 360 Phiên bản dành cho hệ điều hành Windows được phát hành ngày 01/02/2012
Kinect được phát hành vào ngày 04/11/2010 tại Bắc Mỹ, 10/11/2010 tại Châu Âu, 18/11/2010 tại Úc, New Zealand, Singapore và ngày 20/11/2010 tại Nhật Bản Kinect được bán chung một gói với máy Xbox 360 và game Kinect Adventures
Trong 60 ngày đầu tiên, Microsoft đã bán được hơn 8 triệu sản phẩm Kinect và Kinect được ghi nhận vào sách kỷ lục thế giới cho danh hiệu “Sản phẩm điện tử tiêu dùng có tốc độ tiêu thụ nhanh nhất thế giới” Tính đến tháng 01/2012, Microsoft đã bán được 18 triệu Kinect
Microsoft cũng đã đưa ra bộ công cụ hỗ trợ lập trình (Software Development Kit – SDK) cho Kinect trên hệ điều hành Windows 7 vào ngày 16/06/2011 Bộ SDK này cho phép lập trình viên có thể xây dựng các ứng dụng tương tác với Kinect bằng các ngôn ngữ C++/CLI, C# hoặc Visual Basic NET
2 Lịch sử phát triển:
Kinect lần đầu tiên được giới thiệu vào ngày 01/06/2009 tại triển lãm E3 dưới tên
mã là Project Natal Theo truyền thống lấy tên thành phố để đặt tên mã của Microsoft,
Trang 7Project Natal được lấy tên từ thành phố Natal của Brazil để ghi công Alex Kipman – một giám đốc của Microsoft, người đã khai sinh ra dự án và cũng là một người có gốc Brazil Natal nghĩa là “một cuộc sống mới” với ngụ ý của Microsoft là “sự ra đời của một hệ thống giải trí gia đình mới”
Hình 2: Gian hàng của Microsoft tại triển lãm E3 - 2009
Ba game đã được trình diễn tại Microsoft‟s E3 2009 Media Briefing là Ricochet, Paint Party và Milo & Kate Một bản demo cho game Burnout Paradise cũng được trình diễn bên ngoài Microsoft‟s Media Briefing Tại E3 2009, công nghệ nhận dạng khung xương cho phép ghi nhận được 4 người cùng lúc với 48 điểm xương trên cơ thể người tại mức 30Hz
Trong quá trình phát triển, đội phát triển đã thử nghiệm nhiều trên game khác nhau
để nâng cao khả năng của Kinect Tiêu biểu là Beautiful Katamari và Space Invaders Extreme, vốn đã được biểu diễn tại Tokyo Game Show tháng 09/2009 Giám đốc sáng tạo Kudo Tsunoda của Microsoft cho biết việc đưa hệ thống điều khiển của Kinect vào các game cũ thông qua hệ thống cập nhật phần mềm tự động gặp rất nhiều khó khăn Kinect ban đầu được thiết kế riêng một bộ vi xử lý riêng nhưng đến tháng 01/2010, các thao tác xử lý được đảm nhận trực tiếp bởi một nhân của bộ vi xử lý Xbox 360′s Xenon CPU Alex Kipman cho biết Kinect sẽ chiếm 10-15% tài nguyên của Xbox 360 Ngày 13/06/2010, Microsoft mở hội nghị “World Premiere „Project Natal‟ for the Xbox 360 Experience” tại Galen Center Tại đây Project Natal đã có tên gọi chính thức
là Kinect, vốn là sự kết hợp giữa “kinetic” (chuyển động) và “connect” (kết nối), cũng
Trang 8chính là mục tiêu mà thiết bị hướng tới Microsoft cũng đã thông báo ngày phát hành tại Bắc Mỹ là 4/11/2010 Và cũng tại đây, Microsoft đã giới thiệu một thiết kế mới của Xbox 360 tương thích hoàn toàn với Kinect
Ngày 16/06/2011, Microsoft chính thức phát hành bộ công cụ phát triển phần mềm phi thương mại cho Kinect Tiếp theo, ngày 01/02/2012 Microsoft chính thức phát hành phiên bản thương mại của bộ công cụ phát triển phần mềm Kinect cho hơn 300 công ty của 25 nước trên toàn thế giới
3 Cấu trúc phần cứng của Kinect:
Hình 3: Cấu trúc phần cứng bên trong Kinect Kinect được tạo ra dựa trên 2 nền tảng chính bao gồm nền tảng phát triển công nghệ phần mềm của Rare – một nhánh của bộ phận phát triển game của Microsoft và công nghệ camera đo chiều sâu của hãng PrimeSense tại Israel – một hãng đã phát triển thành công hệ thống có khả năng hiểu được những chuyển động xác định và dùng
nó để điều khiển các thiết bị điện tử
Kinect được thiết kế theo cấu trúc một thanh ngang kết nối với một trụ nhỏ bằng một trục cơ đứng nhằm mục đích cho phép camera có thể điều chỉnh góc nhìn lên trên hoặc xuống dưới vị trí của camera Thiết bị bao gồm camera ảnh RGB, một bộ cảm biến chiều sâu hình ảnh và một bộ microphone ghi nhận âm thanh đa chiều, tất cả được vận hành bởi một phần mềm độc quyền Bộ microphone của Kinect có khả năng xác định vị trí nguồn âm thanh và lọc nhiễu Các thành phần này của Kinect cung cấp khả năng theo dõi chuyển động toàn cơ thể người dùng trong không gian 3 chiều, nhận diện khuôn mặt và nhận diện giọng nói
Trang 9Hình 4: Lưới hồng ngoại phát ra từ Kinect
Hình 5: Bản đồ chiều sâu của hình ảnh thu về thể hiện bằng màu gradient từ trắng(gần)
đến xanh dương(xa)
Bộ cảm biến chiều sâu của Kinect bao gồm một máy chiếu hồng ngoại cùng một
bộ phận cảm biến CMOS đơn sắc cho phép Kinect có thể ghi nhận hình ảnh 3 chiều dưới bất kỳ điều kiện ánh sáng nào Tầm hoạt động của bộ cảm biến chiều sâu này có thể điều chỉnh được, phần mềm của Kinect có thể tự xác định vùng cảm biến dựa trên gameplay và môi trường vật lý xung quanh người chơi qua đó loại bỏ những nội thất trong phòng hoặc các vật cản trở tầm hoạt động
Kinect được Microsoft đăng kí độc quyền cùng với bộ phần mềm cho phép hệ thống có thể nhận biết cử chỉ, khuôn mặt, giọng nói một cách vượt bậc Theo như các thông tin của các hãng bán lẻ, Kinect có thể ghi nhận 6 người cùng lúc kể cả hai người đang chơi để phân tích chuyển động của 20 khớp xương mỗi người chơi
Trang 10Bộ cảm biến hình ảnh Kinect có dữ liệu video đầu ra với frame rate là 30Hz, độ phân giải 32-bit VGA (640×480px) Bộ cảm biến chiều sâu có độ phân giải 16-bit QVGA (320×240px với độ sâu 65,536 mỗi pixel) và có tầm hoạt động thực tế là từ 1.2 đến 3.5 mét Kinect có góc quan sát là 57° theo trục ngang và 43° theo trục dọc, trong khi đó trục cơ đứng có thể nghiêng lên xuống 27° Bộ microphone bao gồm 4 microphone riêng lẻ cho phép Kinect ghi nhận và xử lý âm thanh dưới dạng 16-bit với tần số trung bình là 16 kHz
Hình 6: Microsoft Kinect sau khi được tháo rời hoàn toàn Kinect cần nhiều điện năng để hoạt động nên cổng USB của Xbox 360 không thể đáp ứng mà phải qua một adapter để chia thành 2 kết nối riêng là USB và kết nối nguồn, giúp cho thiết bị sẽ kết nối với Xbox 360 bằng cổng USB trong khi nguồn điện
sẽ được lấy từ bo mạch của Xbox qua đường AC adapter Phiên bản Xbox 360 mới sẽ không cần adapter vì nó có các AUX port đặc biệt để cung cấp cho cổng kết nối
4 Cấu trúc của Kinect SDK:
Microsoft cung cấp bộ thư viện lập trình để giúp các lập trình viên sử dụng các dữ liệu ngôn ngữ tự nhiên của cơ thể trong thời gian thực
Hình 7: Phần cứng và phần mềm của Kinect tương tác với một ứng dụng
Trang 11Các thành phần của SDK được thể hiện trong hình sau:
Hình 8: Cấu trúc ứng dụng Kinect để phát triển ứng dụng trên Kinect SDK
Các thành phần của SDK được thể hiện trong hình trên bao gồm:
- Phần cứng: Các thành phần của phần cứng, bao gồm các bộ cảm biến Kinect và cổng USB mà thông qua đó cảm biến được kết nối với máy tính
- Trình điều khiển Kinect: Các trình điều khiển của Windows 7 cho bộ cảm biến Kinect đã được cài đặt theo SDK Trình điều khiển này hỗ trợ:
o Các cảm biến microphone của Kinect như các thiết bị âm thanh chuẩn, bạn có thể truy cập thông qua các API âm thanh tiêu chuẩn trong Windows
o Truyền dữ liệu hình ảnh bình thường và hình ảnh dạng chiều sâu
o Cho phép một ứng dụng sử dụng nhiều hơn một cảm biến Kinect được kết nối với máy tính
o NUI API: Một tập hợp các API để lấy dữ liệu từ các cảm biến hình ảnh
và điều khiển các thiết bị Kinect
o KinectAudio DMO: Khả năng xử lý âm thanh bao gồm loại bỏ tiếng ồn
và tiếng vang, hình thành chùm tia để xác định nguồn âm thanh, và tích hợp với các hàm API nhận dạng giọng nói của Windows
o Các API chuẩn trong Windows 7: Các bộ thư viên về âm thanh, lời nói,
và đa phương tiện như mô tả trong Windows 7 SDK và Microsoft Speech SDK
Windows components 1
2
3
5 4
Kernel-mode drivers for Kinect for Windows
DMO codec for mic array
Applications
Kinect for
Windows SDK
User-created components USB Hub
Windows Core Audio and Speech APIs
Device
setup Video stream control Audio stream control
WinUSB device stack WinUSB camera stack USBAudio audio stack
NUI API A/V capture and transcoding
Media Foundation | DirectShow
User Mode Kernel Mode
Kinect sensor
Hardware Device
access
Trang 12CHƯƠNG 2: CÂU CHUYỆN BÍ MẬT VỀ SỰ PHÁT TRIỂN
KINECT
Vào giữa năm 2007, Don Mattrick – người phụ trách kinh doanh giải trí tương tác của Microsoft ở Redmond – Washington đã đưa ra yêu cầu về một hướng phát triển mới cho sản phẩm Xbox 360 Trong một buổi họp hoạch định chiến lược, Marc Whitten, phó giám đốc điều hành Xbox live đã giải thích rằng họ sẽ phải thay đồi nền tảng tương tác với Xbox Sau đó, họ đưa ra một danh sách vắn tắt các yêu cầu: điều khiển bằng chuyển động, nhận diện khuôn mặt, nhận dạng giọng nói và tương thích với các sản phẩm Xbox đã có trên thị trường Ý tưởng này đã ứng dụng nguyên tắc kết hợp trong tư duy sáng tạo nhằm mục đích kết hợp đồng thời cả 3 tính năng nhận dạng cho ra một sản phẩm duy nhất
Vấn đề được đưa ra không chỉ có tính mơ mộng, trên thực tế việc hiện thực nó là hoàn toàn bất khả thi Việc tìm một chiếc camera có thể nhìn một căn phòng thì rất đơn giản Để có 1 sản phẩm cụ thể có khả năng giải mã được các chi của người dùng và giọng nói dành cho 40 triệu người dùng Xbox là cả một giấc mơ Để hiện thực hóa sản phẩm này, thiết bị phần cứng đòi hỏi phải có một phần mềm có khả năng phân tích hơn
1023 trường hợp cần xử lý bao gồm cả cử chỉ và giọng nói trong cùng một lúc mà không gây ra bất kỳ hiện tượng trễ nào
Dù sao chăng nữa, các phần riêng lẻ của sản phẩm mới gần như đã có sẵn Trung tâm nghiên cứu của Microsoft ở Bắc Kinh đã đạt được một số thành tựu nhất định trong việc nhận dạng khuôn mặt Trung tâm nghiên cứu Redmond đã phát triển phần mềm nhận dạng giọng nói từ nhiều thập niên trước Và các kỹ sư phần cứng tại trung tâm Redmond đã rất bận rộn với việc tạo ra các bản mẫu cho các bộ điều khiển dựa trên gia tốc và chuyển động để chuẩn bị cho những sự đổi mới ở tương lai Họ đã ứng dụng nguyên tắc sao chép trong tư duy sáng tạo nhằm ứng dụng những công trình nghiên cứu đã có và tích hợp vào một sản phẩm mới Tuy nhiên, nó vẫn luôn đòi hỏi một sự nghiên cứu thấu đáo và chạy thử trước khi bất kỳ ai có thể khẳng định rằng nó
có chạy được hay không hoặc là có tạo ra lợi nhuận hay không Vấn đề lớn nhất gặp phải ở đây là: việc này chưa được thực hiện ở bất kỳ nơi nào trên cả thế giới
Alex Kipman, 31 tuổi là người được giao nhiệm vụ hiện thực hóa yêu cầu của Mattrick Kipman đến từ Natal tại Brazil với 16 bằng sáng chế tại Microsoft tính từ khi ông bắt đầu làm việc vào năm 2001 Kipman cho rằng việc đầu tiên phải làm là nghiên cứu khả năng máy học: khả năng huấn luyện máy tính dự đoán
Nhóm của Kipman bao gồm 15 người bắt đầu trải qua quá trình huấn luyện với các
kỹ năng hoàn toàn mới nhằm làm phong phú phương pháp suy nghĩ và sáng tạo Khóa huấn luyện này được huấn luyện bởi các họa sĩ, nhạc sĩ, nhà thiết kế, nghiên cứu viên,