Trong khuôn khổ của đồ án, nhóm sẽ tập trung xây dựng một mô hình xe hoànchỉnh có khả năng tìm đến đích bằng cách nhận biết thông qua cử chỉ của con người.Một điểm mới được nhấn mạnh là
Trang 1TRƯỜNG ĐHSP KỸ THUẬT Độc lập - Tự do - Hạnh phúc
-o0o - -o0o -
KHOA CƠ KHÍ
ĐỒ ÁN TỔNG HỢP ĐỘNG LỰC
Họ và tên sinh viên : Trần Đình Thiên - Trần Văn Trung
: Đoàn Anh Vạn - Lê Hoài Thanh Phú
1 Tên đề tài: Xe Điện Hệ Tự Động Ứng Dụng Camera Kinect
2 Các số liệu ban đầu:
3 Nôi dung các thành phần thuyết minh và tính toán:
Chương 1: Giới thiệu
Chương 2: Tìm hiểu về Kinect
Chương 3: Thư viện xử lý ảnh
Chương 4: Phần mềm LabVIEW
Chương 5: Vi điều khiển Arduino và module điều khiển động cơ L298N
Chương 6: Chương trình điều khiển
Chương 7: Quá trình chế tạo xe điện tự động
4 Chế tạo mô hình: Xe điện hệ tự động ứng dụng Camera Kinect
(ký và ghi rõ họ tên) (ký và ghi rõ họ tên)
Thông qua bộ môn
Ngày 14 tháng 6 năm 2018 Ngày 14 tháng 6 năm 2018
( Ký và ghi rõ họ tên) ( ký và ghi rõ họ tên )
Trang 21 Tên đề tài nghiên cứu: Xe Điện Hệ Tự Động Ứng Dụng Camera Kinect
2 Ngày giao đồ án: 10/01/2018 Ngày nộp đồ án: 15/06/2018
Cán bộ hướng dẫn
Trang 3Lời đầu tiên chúng em xin gửi đến Thầy Ths Hoàng Thắng lời cảm ơn chân thành
và sâu sắc nhất Nhờ có sự hướng dẫn và giúp đỡ tận tình của thầy trong suốt thời gianqua, chúng em đã có thể thực hiện và hoàn thành Đồ Án Tổng Hợp Động Lực Nhữnglời nhận xét, góp ý và hướng dẫn tận tình của Thầy đã giúp chúng em có một địnhhướng đúng đắn trong suốt quá trình thực hiện Đề tài, giúp chúng em nhìn ra đượcnhững ưu khuyết điểm của Đề tài và từng bước hoàn thiện hơn
Đồng thời, chúng em xin trân trọng cảm ơn các Thầy Cô của Trường Đại Học SưPhạm nói chung và của khoa Cơ Khí nói riêng đã dạy dỗ chúng em suốt thời gian ngồitrên ghế giảng đường Những lời giảng của Thầy Cô trên bục giảng đã trang bị chochúng em những kiến thức và giúp chúng em tích lũy thêm những kinh nghiệm
Bên cạnh đó, chúng tôi cũng xin cảm ơn sự hỗ trợ và giúp đỡ của bạn bè trongthời gian học tập tại trường Đại Học Sư Phạm Kỹ Thuật và trong quá trình hoàn thành
Đồ Án Tổng Hợp này
Cuối cùng, chúng con cũng chân thành cảm ơn sự động viên và sự hỗ trợ của giađình và cha mẹ trong suốt thời gian học tập Đặc biệt, chúng con xin gửi lời cảm ơntrân trọng nhất đến cha mẹ, người đã sinh ra và nuôi dưỡng chúng con nên người Sựquan tâm, lo lắng và hy sinh lớn lao của cha mẹ là động lực cho chúng con cố gắnphấn đấu trên con đường học tập của mình.Một lần nữa, chúng con xin gửi đến cha
mẹ sự biết ơn sâu sắc nhất
Đà Nẵng, ngày 15 tháng 06 năm 2018
Trần Đình ThiênTrần Văn TrungĐoàn Anh Vạn
Lê Hoài Thanh Phú
Trang 4Theo dự đoán trong tương lai, xe thông minh sẽ là tâm điểm của một cuộc cáchmạng lớn sau Internet Con người sẽ có nhu cầu sở hữu một chiếc xe thông minh nhưnhu cầu một máy tính PC bây giờ Đề tài đồ án hướng tới việc ứng dụng công nghệ xử
lý ảnh mới cho xe tự hành, tạo tiền đề cho việc xây dừng một chiếc xe hoàn chỉnh, cókhả năng phục vụ cho đời sống con người
Trong khuôn khổ của đồ án, nhóm sẽ tập trung xây dựng một mô hình xe hoànchỉnh có khả năng tìm đến đích bằng cách nhận biết thông qua cử chỉ của con người.Một điểm mới được nhấn mạnh là khối thị giác cho xe, với sự hỗ trợ của thiết bị chơigame Kinect có khả năng khôi phục môi trường phía trước xe dưới dạng 3D, đáp ứngcho sự chính xác cần thiết khi phối hợp với các giải thuật điều khiển và vi điều khiểnArduino
Nhóm sinh viên thực hiện Trần Đình Thiên Trần Văn Trung Đoàn Anh Vạn
Lê Hoài Thanh Phú
Trang 5Chương 1: GIỚI THIỆU 1
1.1 XU HƯỚNG PHÁT TRIỂN CỦA XE TỰ ĐỘNG LÁI TRONG TƯƠNG LAI 1
1.2 NHỮNG VẤN ĐỀ CỦA XE TỰ ĐỘNG LÁI 2
1.3 MỤC ĐÍCH ĐỀ TÀI VÀ PHƯƠNG PHÁP THỰC HIỆN 2
1.3.1 Mục đích đề tài 2
1.3.2 Phương pháp thực hiện 2
Chương 2: TÌM HIỂU VỀ KINECT 3
2.1 GIỚI THIỆU CHUNG 3
2.2 NHỮNG THÀNH PHẦN CHÍNH CỦA KINECT 4
2.3 TÍNH TOÁN ĐỘ SÂU 5
2.4 MỘT SỐ ĐẶC TÍNH KHÁC 8
Chương 3: THƯ VIỆN XỬ LÝ ẢNH 11
3.1 THƯ VIỆN HỖ TRỢ KINECT 11
3.2 SO SÁNH KINECT SDK BETA VÀ OPENNI 12
Chương 4: PHẦN MỀM LabVIEW 14
4.1 GIỚI THIỆU 14
4.2 CHỨC NĂNG CỦA LabVIEW 14
4.3 CÁC PHIÊN BẢN CỦA LabVIEW 15
4.4 XU HƯỚNG CỦA LabVIEW 15
4.5 CÁC ỨNG DỤNG CỦA LabVIEW 15
Chương 5: VI ĐIỀU KHIỂN ARDUINO MEGA VÀ MODULE ĐIỀU KHIỂN ĐỘNG CƠ L298N 19
5.1 GIỚI THIỆU ARDUINO 19
5.1.1 Các khối lệnh cơ bản cho Arduino 20
5.1.2 Sơ đồ các linh kiện của Arduino Mega 24
5.2 MODULE ĐIỀU KHIỂN ĐỘNG CƠ L298N 25
Chương 6: CHƯƠNG TRÌNH ĐIỀU KHIỂN 27
6.1 NỘI DUNG CHƯƠNG TRÌNH ĐIỀU KHIỂN 27
6.2 GIẢI THUẬT CHƯƠNG TRÌNH 27
6.2.1 Kinect 28
6.2.2 Display colour data (U32 to picture): Hiển thị dữ liệu màu (U32 đến hình ảnh) 30
6.2.3 Render 3D skeleton: Render bộ xương 3D 32
6.2.4 Buid Array: Tạo mảng 37
6.3 SƠ ĐỒ PHẦN MỀM 40
Trang 67.1.1 Giai đoạn chuẩn bị vật liệu 44
7.1.2 Phương pháp gia công các chi tiết của các hệ thống trên xe 44
7.2 THÔNG SỐ KỸ THUẬT CỦA XE 44
7.3 QUÁ TRÌNH THỰC HIỆN 45
7.3.1 Tháo và tìm hiểu xe 45
7.3.2 Chế tạo khung xe 49
7.3.3 Tìm hiểu và gắn Arduino,mạch công suất 53
7.3.4 Lắp Kinect và hoàn thành sản phẩm xe 55
7.4 GIAI ĐOẠN CHO XE CHẠY THỬ NGHIỆM, XEM XÉT ĐÁNH GIÁ VÀ BỔ SUNG SỮA CHỮA 57
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 58
TÀI LIỆU THAM KHẢO 59
PHỤ LỤC 1: Kết hợp thư viện OpenNI và Code Laboratories Kinect (CL) để sử dụng chức năng điều khiển động cơ Kinect 60
Trang 8Hình 2.1 Thiết bị Kinect 3
Hình 2.2 Những thành phần chính của Kinect 4
Hình 2.3 Bên trong Kinect: RGB, IR camera và IR projector 5
Hình 2.4 Quá trình thu về bản đồ độ sâu ảnh 5
Hình 2.5 Mẫu hình được chiếu bởi projector và chụp lại bằng IR camera 6
Hình 2.6 Tính toán khoảng cách tới một điểm chiếu từ Projector [5] 7
Hình 2.7 Kinect adapter 10
Hình 4.1 Thu thập dữ liệu tại Cơ quan hàng không và vũ trụ - NASA 16
Hình 4.2 Thu thập dữ liệu từ cảm biến đo gió trong ôtô và thí nghiệm thuật toán chuyển đổi cảm biến 16
Hình 4.3 Giao diện lái ôtô từ xa 17
Hình 4.4 Điều khuyển tay Robot 18
Hình 4.5 Hệ thống lái không trục lái tại phòng thí nghiệm Biorobotics, KUT, Hàn Quốc 18
Hình 5.1 Arduino Mega 19
Hình 5.2 Các khối cơ bản của Arduino 20
Hình 5.3 Khối Init 21
Hình 5.4 Khối Close 22
Hình 5.5 Các khối cơ bản của khối low level 22
Hình 5.6 Các khối lệnh Boolean 23
Hình 5.7 Các khối lệnh so sánh 23
Hình 5.8 Khối lệnh Select 24
Hình 5.9 Sơ đồ linh kiện của Arduino Mega 24
Hình 5.10 Module điều khiển động cơ L298N 25
Hình 6.1 Ví dụ về bộ xương bắt Kinect của chương trình 27
Hình 6.2 Sơ đồ lập trình trên phần mềm LabVIEW (a) 40
Hình 6.3 Sơ đồ lập trình trên phần mềm LabVIEW (b) 41
Hình 6.4 Sơ đồ lập trình trên phần mềm LabVIEW (c) 42
Hình 6.5 Sơ đồ mạch điện của hệ thống xe 43
Hình 7.1 Xe mới hoàn chỉnh 45
Hình 7.2 Hệ thống lái của xe 46
Hình 7.3 Tháo hệ thống đèn trên xe 47
Hình 7.4 Tháo phần gầm xe 48
Hình 7.5 Tìm hiểu và tháo mạch điện 48
Hình 7.6 Khung xe khi tháo hết các chi tiết 49
Hình 7.7 Khung xe mới bằng sắt 50
Hình 7.8 Cắt vỏ xe và ráp khung 51
Hình 7.9 Bọc kẽm thân xe và dán decan 52
Hình 7.10 Mạch Arduino được nối với hệ thống trên xe 53
Trang 9Bảng 2.2 Công suất tiêu thụ trên Kinect 10 Bảng 7.1 Một số chi tiết chính cần sử dụng trong quá trình chế tạo 44
Trang 10Chương 1: GIỚI THIỆU 1.1 XU HƯỚNG PHÁT TRIỂN CỦA XE TỰ ĐỘNG LÁI TRONG TƯƠNG LAI
Dự báo, đến năm 2020, sẽ có 10 triệu xe tự lái chạy trên các đường phố Mộtcuộc chạy đua đang diễn ra sôi động giữa các hãng sản xuất bởi ai cũng muốn nhanhchóng chiếm vị trí "người tiên phong" tại thị trường còn sơ khai nhưng đầy màu mỡnày
Hãng xe Toyota của Nhật Bản đã thử nghiệm thành công công nghệ lái tự độngHighway Teammate, có khả năng chạy và chuyển làn trên đường cao tốc Toyota cũngđầu tư 50 triệu USD để phát triển trí thông minh nhân tạo trên dòng xe của mình Mụctiêu là đưa xe tự lái vào đời thực năm 2020 - năm Tokyo tổ chức Thế vận hộiOlympics
Trong khi đó, hãng Tesla của Mỹ cũng đã phát triển mẫu xe tự lái Model S, tíchhợp hệ thống tự lái "Autopilot" và radar hành trình, giúp vận hành và chuyển làn khi dichuyển trên đường một cách tự động
Hãng Volvo của Thụy Điển đã cho ra mắt mẫu xe hơi tự lái Concept 26 với chứcnăng "Pilot Assist", cho phép xe tự lái với tốc độ 80 dặm/giờ Không chỉ những hãngsản xuất xe truyền thống, giờ đây, cả những gã khổng lồ công nghệ cũng đang chenchân vào thị trường mới đầy tiềm năng này
Hãng Google đã đưa vào thử nghiệm mẫu xe không người lái của mình, tích cáccảm biến, camera, rađa, tia hồng ngoại và hệ thống GPS để phát hiện các vật thể xungquanh Xe ô tô của Google đã thực hiện hơn 1 triệu dặm trên đường mà mà không gặp
sự cố lớn nào
Hãng Apple cũng lên kế hoạch triển khai dự án ôtô điện tự lái mang tên "ProjectTitan", trong khi đó, hãng Uber cũng phối hợp với Đại học Arizona phát triển xe hơi tựlái, không chỉ vận chuyển hành khách mà còn còn thực hiện rất nhiều tác vụ khác, nhưdịch vụ vận chuyển đồ ăn -UberEats, vận chuyển hàng hóa - UberRush
1.2 NHỮNG VẤN ĐỀ CỦA XE TỰ ĐỘNG LÁI
Trang 11lượng Và việc bố trí, lắp đặt các thiết bị tự động lái cũng gặp rất nhiều khó khăn vàthách thức.
1.3 MỤC ĐÍCH ĐỀ TÀI VÀ PHƯƠNG PHÁP THỰC HIỆN
Trang 12Chương 2: TÌM HIỂU VỀ KINECT
2.1 GIỚI THIỆU CHUNG
Hình 2.1 Thiết bị Kinect
Kinect là sản phẩm của Microsoft dựa trên công nghệ camera được phát triển bởiPrimeSense, những sản phẩm đầu tiên được bán tại Mỹ vào ngày 4 tháng 11 năm 2010[1] Kinect được coi như là một thiết bị ngoại vi cho Xbox 360, cho phép giao tiếp vớicong người thông qua các cử chỉ, đem lại những cảm giác thú vị cho người chơi gametrên Xbox Khả năng hiểu được cử chỉ con người của Kinect dựa trên hai đặc tínhchính sau: thông tin về độ sâu(depth map), khả năng phát hiện và bám theo đặc tính cơthể người (body skeleton tracking)
Kinect đang giữ kỷ lục Guiness thế giới về “Thiết bị điện tử được tiêu thụ nhanhnhất” với 8 triệu sản phẩm trong 60 ngày.Mười triệu sản phẩm của Kinect đã đượcphân phối trên thế giới vào ngày 9 tháng 3 năm 2011 Bên cạnh phục vụ cho mục đíchchơi game, sản phẩm Kinect còn được dùng vào mục đích nghiên cứu sử lý ảnh 3D,phát hiện cử chỉ (gesture recognition), bám theo người (body tracking) và nhiều mụcđích khác Lý do chính cho sự thành công của sản phẩm Kinect là giá cả khá rẻ
Trang 142.3 TÍNH TOÁN ĐỘ SÂU
Hình 2.3 Bên trong Kinect: RGB, IR camera và IR projector
Cặp cảm biến IR camera và IR projector sẽ phối hợp với nhau để cho ra gia trị độsâu bằng công nghệ Light Coding của PrimeSense [2]
Hình 2.4 Quá trình thu về bản đồ độ sâu ảnh
Khác với kỹ thuật Stereo Camera với việc dùng cặp camera giống nhau để xây
Trang 15trong Kinect bằng chip 1080 SoC của PrimeSense Công nghệ mới này được cho là
đáp ứng chính xác hơn, giá cả rẻ hơn cho việc sử dụng ở môi trường trong nhà
Projector sẽ chiếu một chùm sáng hồng ngoại, tạo nên những đốm sáng ở khônggian phía trước Kinect, tập hợp đốm sáng này được phát ra là cố định Những đốmsáng này được tạo ra nhờ một nguồn sáng truyền qua lưới nhiễu xạ (diffractiongratings) Tập hợp các đốm sáng này được IR camera chụp lại, thông qua giải thuậtđặc biệt được tích hợp trong PS1080 SoC [4] cho ra bản đồ độ sâu Bản chất của giảithuật này là các phép toán hình học dựa trên quan hệ hai cảm biến IR camera vàProjector mà ta sẽ đề cập sau Hình 2.5 cho ta thấy rõ mẫu hình tập hợp các đốm sáng
từ Projector và được chụp lại bởi camera
Hình 2.5 Mẫu hình được chiếu bởi projector và chụp lại bằng IR camera
Để hiểu cách thức Kinect ước lượng khoảng cách tới vật thể trong môi trườngnhư thế nào, ta quan sát hình 2.6 trong trường hợp phân tích với một điểm đơn giản
Trang 16Hình 2.6 Tính toán khoảng cách tới một điểm chiếu từ Projector [5]
Ta giả sử Projector phát đi một tia sáng dọc đường màu xanh lá, nó sẽ được chụplại dưới dạng một đốm sáng bởi IR camera khi chạm vào bề mặt vật thể trong khônggian Ta xét ba mặt phẳng ở ba khoảng cách khác nhau: mặt phẳng gần Kinect (closeplane), mặt phẳng ở xa Kinect (distant plane) và mặt phẳng tham chiếu (referenceplane) ở giữa hai mặt phẳng trên Trong đó, mặt phẳng tham chiếu ngầm được biếttrước bên trong Kinect với đầy đủ thông tin về khoảng cách Ngoài ra, ta cũng đề cậpthêm mặt phẳng ảnh (image plane) của IR camera, là mặt phẳng hình chiếu của cácđiểm trong không gian thu về bởi IR camera Ta xét trong ba trường khi tia sáng màuxanh lá chạm vào ba điểm trên mặt phẳng lần lượt là A, B, C; ba điểm này được chiếulên mặt phẳng ảnh tương ứng là A’, B’, C’ Quan sát vị trí của A’, B’, và C’ ta có nhậnxét: điểm A gần Kinect ( hay close plane càng gần Kinect) thì A’ càng xa B’ về bênphải; ngược lại, điểm C càng xa Kinect (hay distant plane càng xa Kinect) thì C’ càng
xa B’ về phía bên trái Từ đó: khi ta biết trước hướng, điểm xuất phát của tia sáng từProjector và vị trí B’ là hình chiếu của điểm B trên mặt phẳng tham chiếu lên mặtphẳng ảnh, ta hoàn toàn có thể tính toán được độ sâu ảnh hay khoảng cách tới vật thể.Kinect là điều tương tự với tập hợp các đốm sáng còn lại phát đi từ Projector, với
Trang 17giá trị chênh lệch này được tính bằng đơn vị pixel Tập hợp của tất cả các giá tị chênhlệch từ tập hợp đốm sáng, sẽ tạo nên bản đồ độ chênh lệch (disparity map), giá trị nàycàng lớn thì khoảng cách hay giá trị độ sâu ảnh (depth) càng lớn, từ đó mà ta xây dựngđược bản đồ độ sâu (depth map) với giá trị tính bằng mét thực sự Tuy nhiên, do tậphợp số lượng đốm sáng phát đi từ Projector nhỏ hơn so với tổng số pixel trên mặtphẳng ảnh của IR camera trên một phần giá trị độ sâu ảnh còn lại sẽ được nội suy.Theo tính toán của Nicolas Burrus [6], một trong những người mở đường choviệc tìm hiểu về Kinect qua các thí nghiệm của ông Ông đã có công thức hóa được
quan hệ giữa giá trị khoảng cách thật z tính bằng mét và giá trị độ chênh lệch d:
z=
trong đó d là con số nguyên biểu diễn dưới dạng 11 bit, tức khoảng cách thay đổi
từ 0÷2047 Với kết quả đo đạt thực nghiệm trên thư viện OpenNI, giá trị z biến thiêntrong khoảng cách 0.5÷6.0 mét và bản đồ độ sâu ổn định trong khoảng 0.5÷5.0 mét
Do đó, giá trị d thực sự biến thiên trong khoảng từ 434÷1030 Như vậy, trong khônggian từ 0÷0.5 mét phía trước Kinect, Kinect không thể đưa về bản đồ độ sâu
2.4 MỘT SỐ ĐẶC TÍNH KHÁC
Một số đặc tính khác của Kinect đáng quan tâm: tiêu cự và góc mở camera (field
of view), nguồn cung cấp và công sức tiêu thụ, môi trường hoạt động Kinect là sảnphẩm thương mại của Microsoft nên các thông số kỹ thuật chi tiết không được công
bố Các thông số này được trình bày dưới đây là kết quả đo đạt thực nghiệm:
Trang 18a Tiêu cự, góc mở IR camera và RGB camera:
Hai camera RGB và IR được đặt cách nhau 2.5 cm nên có chút khác nhau ởkhung hình thu về từ hai camera Để đảm bảo khung hình RGB có thể chứa đượckhung hình IR, người ta thiết kế góc mở của RGB camera lớn hơn Điều này cũng dẫnđên tiêu cự của RGB camera nhỏ hơn Các thông số trong bảng 2.1 được đo đạt bằngthực nghiệm:
Bảng 2.1 Góc mở và tiêu cự của RGB và IR camera [3]
b Nguồn cung cấp và công suất tiêu thụ:
Vì Kinect cần nhiều điện năng để hoạt động nên cổng USB của Xbox-360 khôngthể đáp ứng mà phải qua một công chia để chia thành 2 kết nối riêng là USB và kết nốinguồn, giúp cho thiết bị kết nối với Xbox-360 bằng công USB trong khi nguồn điệncần cho Kinect là 12VDC được lấy từ adapter Phiên bản Xbox-360 mới sẽ không cầnadapter vì nó có các AUX port đặc biệt để cung cấp cho cổng kết nối Với kết nối USB
ta hoàn toàn có thể cho Kinect giao tiếp với máy tính
camera IR camera Field of View
(degrees)
Horizontal Vertical Diagonal
Focal length (pixels)
Trang 19Hình 2.7 Kinect adapter
Công suất tiêu thụ đo bằng thực nghiệm:
Bảng 2.2 Công suất tiêu thụ trên Kinect
c Môi trường hoạt động:
Kinect là thiết bị được thiết kế cho việc sử dụng ở môi trường trong nhà (indoor)
Ở môi trường ngoài trời, kết quả thử nghiệm cho bản đồ độ sâu không chính xác vàothời điểm ánh sáng mạnh, nhưng cho kết quả chấp nhận được khi ánh sáng yếu (vàothời điểm buổi chiều tối)
Power consumption (idle)Power consumption (active)
Trang 20Chương 3: THƯ VIỆN XỬ LÝ ẢNH
3.1 THƯ VIỆN HỖ TRỢ KINECT
Ngay khi mới ra đời, Kinect đã được quan tâm bởi rất nhiều nhà phát triển phầnmềm, không chỉ trên mảng phát triển game cho Xbox mà còn trên mảng xử lý ảnh ứngdụng trong tin học, robot, mapping Do đó mà nhiểu thư viện được viết cho Kinect ra
đời Cho đến thời điểm hiện tại, các thư việc đáng chú ý là Libfreenect, Code Laboratories Kinect, Open NI và Kinect SDK beta.
a Libfreenect:
Libfreenect [7] là thư việc được phát triển bởi OpenKinect, do một cộng đồngnhững người quan tấm tới phần cứng Kinect viết ra và chia sẻ Cộng đồng OpenKinectlàm việc hoàn toàn tự nguyện và không vì mục đích lợi nhuận, họ phát triểnLibfreenect thành một mã nguồn mở cho các hệ điều hành khác nhau như Windows,Linux và OS X Hiện tại, Libfreenect được đóng gói cho việc sử dụng trên Python, C,C++, C#, Java JNI, Java JNA, Javascript
b Code Laboratories Kinect:
Code Laboratories Kinect (CL) [8] là một công ty về phần mềm chuyên hỗ trợcác nhà phát triển, lập trình viên khai thác các tính năng của các thiết bị xử lý ảnh.Trong số đó Kinect không phải là ngoại lệ, CL cung cấp cho người sử dụng những tínhnăng cơ bản nhất của Kinect về camera, audio và motor
c OpenNI:
Thư viện OpenNI [9] được xem là thư viện mạnh nhất trước sự có mặt củaKinect SDK beta, thư viện này hỗ trợ đa ngôn ngữ trên nhiều platform khác nhau, giúpcho các lập trình viên có thể viết các ứng dụng trên Kinect rất dễ dàng với tương tác tựnhiên Natural Interaction (NI) Mục đích chính của OpenNI là xây dựng các hàm APIchuẩn, cho phép thư viện có khả năng kết hợp với các middleware nhằm làm tăng sứcmạnh cho Kinect
Trang 21d Kinect SDK beta:
Kinect SDK [10] beta được Microsoft đưa ra vào ngày 16 tháng 6 năm 2011, làmột công cụ lập trình mạnh cho các nhà phát triển Nó cho phép lập tình viên truy xuấttoàn bộ tính năng của thiết bị Kinect Một điều bất tiện là thư viện chỉ hỗ trợ trên công
cụ lập trình của Micrisoft là Visual Studio 2011 với các ngôn ngữ lập trình là C++, C#,Visual Basic Các tính năng nổi bật như: thu ảnh từ các sensor, skeleton tracking vàđiều khiển bằng giọng nói thông qua công cụ nhận biết giọng nói, Windows SpeechRecognition API Phiên bản beta hiện tại chỉ cho phép sử dụng vào mục đích phi lợinhuận, phiên bản thương mại hứa hẹn sẽ sớm ra mắt trong năm 2012 Phiên bản betamới nhất được cập nhật vào ngày 1 tháng 11 năm 2011 với nhiều lỗi được sửa và chạytốt trên Window 8 Developer Preview
Tới thời điểm hiện tại, hai thư viện Open NI và Kinect SDK beta là lựa chọnsáng suốt cho việc lập trình trên Kinect bởi tính năng hỗ trợ mạnh mẽ của hai thư việnnày Mục 3.2 sẽ phân tích và so sánh hai thư viện này và chọn lựa thư viện phù hợpcho đề tài luận văn
3.2 SO SÁNH KINECT SDK BETA VÀ OPENNI
Sau đây là nhận định về ưu, khuyết điểm của hai thư viện trên [11]
a Kinect SDK beta:
Ưu điểm:
+ Hỗ trợ xử lý âm thanh
+ Hỗ trợ động cơ điều khiển góc ngẩng
+ Skeleton tracking ( bám đặc tính cơ thể người): không cần hiệu chỉnhtrước khi bám, vẫn bám tốt trong trương hợp cơ thể người quay theo nhiềuhướng
+ Hỗ trợ truy xuất các sensor của Kinect đồng thời
+ Việc cài đặt đơn giản
Trang 22Khuyết điểm:
+ Chỉ dùng cho mục đích phi thương mại
+ Chỉ hỗ trợ bám toàn thể đặc tính cơ thể người
+ Không hỗ trợ nhận biết địa chỉ
+ Chỉ hỗ trợ trên Win7
+ Không hỗ trợ việc thu ảnh trực tiếp từ IR camera
+ Vùng Kinect không nhìn thấy trong khoảng 0 mét trước Kinect
+ Hỗ trợ truy xuất các sensor của Kinect đồng thời
+ Hõ trợ cho Window, Linux và Mac OSX
+ Cho phép truy xuất hình ảnh thu về từ IR camera
+ Vung Kinect không nhìn thấy trong khoảng chấp nhận được là 0.5 méttrước Kinect
Khuyết điểm:
+ Không hỗ trợ phần xử lý âm thanh cho dãy Microphone
+Skeleton tracking: bám đặc tính cơ thể còn nhiều lỗi và chưa được ổn địnhnhư trên Kinect SDK
+ Không hỗ trợ động cơ điều khiển góc ngẩng
+ Việc cài đặt có phần rối rắm hơn Kinect SDK
Trang 23Chương 4: PHẦN MỀM LabVIEW
4.1 GIỚI THIỆU
LabVIEW (Laboratory Virtual Instrument Engineering Workbench) là một nềntảng thiết kế hệ thống và là môi trường phát triển cho ngôn ngữ lập trình đồ họa.LabVIEW hỗ trợ tạo các ứng dụng với giao diện người dùng chuyên nghiệp một cáchnhanh chóng và hiệu quả, LabVIEW được sử dụng để phát triển các ứng dụng đolường, kiểm thử, và điều khiển tinh vi bằng cách sử dụng các khối lệnh trực quan vàdây nối tín hiệu Ngoài ra, LabVIEW còn có thể được mở rộng cho nhiều nền tảngphần cứng và hệ điều hành khác nhau
Vì LabVIEW là chương trình mô phỏng giao diện và hoạt động của các thiết bịthực, nên chương trình LabVIEW được gọi là VI (virtual instrument) Một chươngtrình VI gồm có Front Panel và Block Diagram Font Panel là giao diện người dùngnơi mà sẽ hiển thị các hình ảnh trực quan để người dùng dễ thao tác còn BlockDiagram là nơi mà chúng ta viết lệnh cho chương trình
4.2 CHỨC NĂNG CỦA LabVIEW
LabVIEW được dùng nhiều trong các phòng thí nghiệm, lĩnh vực khoa học kỹthuật như tự động hóa, điều khiển, điện tử, cơ điện tử, hàng không, hóa sinh, điện tử ysinh, Hiện này ngoài phiên bản LabVIEW cho các hệ điều hành Windows, Linux,hãng NI đã phát triển các module LabVIEW cho máy hỗ trợ cá nhân (PDA)
Chức năng chính của labview có thể tóm tắt như sau:
Thu thập tín hiệu từ các thiết bị bên ngoài như cảm biến nhiệt độ, hình ảnh từwebcam, vận tốc của động cơ,
Giao tiếp với các thiết bị ngoại vi thông qua nhiều chuẩn giao tiếp như RS232,USB, Ethernet,
nghiên cứu hay mục đích của hệ thống mà người lập trình mong muốn
Xây dựng các giao diện người dùng một cách nhanh chóng
Cho phép thực hiện các thuật toán điều khiển như PID một cách nhanh chóngthông qua các chức năng tích hợp sẵn trong LabVIEW
Trang 24 Cho phép kết hợp với các ngôn ngữ lập trình truyền thống như C++, Java
4.3 CÁC PHIÊN BẢN CỦA LabVIEW
Từ khi ra đời đã có nhiệu thay đổi và cải tiến, ngày nay bản mới nhất tính tớitháng 4 năm 2007 là bản LabVIEW 8.2 với nhiều tính năng mới và các mudule cũ vàmới tương thích với phiên bản này như: module mô phỏng quá trình, module xử lýảnh, điều khiển chuyển động, cơ điện tử, công nghệ hóa sinh,
4.4 XU HƯỚNG CỦA LabVIEW
Nhờ tính năng hỗ trợ mạnh và nhanh chóng cho các ứng dụng trong kỹ thuật, lĩnhvực giáo dục nên LabVIEW được dùng nhiều trong các phòng thí nghiệm và trung tâmnghiên cứu cũng như các hệ thống công nghiệp Nhiều trường đại học đã đưaLabVIEW trở thành môn học chính thức
LabVIEW hỗ trợ các giao thức giao tiếp khác nhau như RS232,RS485, TCP /
IP, PCI, PXI, và như vậy
Bạn cũng có thể tạo ra các thực thi độc lập và các thư viện chia sẻ (ví dụ thưviện liên kết rộng DLL), bởi vì LabVIEW là một trình biên dịch 32-bit
LabVIEW đã trở nên phổ biến ở các phòng thí nghiệm ở Nhật, Hàn,Mỹ, Anh,Đức, Phần này trình bày một số ứng dụng của LabVIEW tiêu biểu và các dự án tạicác phòng thí nghiệm trong và ngoài nước mà tác giả cuốn sách này đã tham gia thựchiện dự án
Trang 25Hình 4.1 Thu thập dữ liệu tại Cơ quan hàng không và vũ trụ - NASA
Ứng dụng hình 4.2 này giới thiệu áp dụng của việc sử dụng LabVIEW và cardHocdelam USB 9001 hoặc NI USB 6008 để thực hiện đo tín hiệu, vẽ biểu đồ đặctuyến các cảm biến trong ôtô và thực nghiệm thuật toán chuyển đổi cảm biến nhằm hạgiá thành sửa chữa xe ôtô
Hình 4.2 Thu thập dữ liệu từ cảm biến đo gió trong ôtô và thí nghiệm thuật toán chuyển đổi
cảm biến
Điều khiển xe ô tô từ xa, hình 4.3 là giao diện điều khiển ôtô bảy chỗ (xeCaptival) từ xa được thực hiện bởi thành viên Hocdelam Group tại phòng thí nghiệmBiorobotics, Hàn Quốc Giao diện này hoàn toàn được xây dựng trong môi trường lậptrình LabVIEW có khả năng hiển thị cácthông số và tín hiệu thực như: vận tốc xe, mựcxăng, vị trí tay số của xe,video truyền từ xe qua mạng không dây, âm thanh từ động cơ
Trang 26tỷ lệ thuận với vị trí bướm ga cũng được giả lập làm cho việc điều khiển xe từ xagiống với việc lái xe trực tiếp nhằm nâng cao chất lượng điều khiển xe.
Hình 4.3 Giao diện lái ôtô từ xa
Trang 27Mô phỏng 3D, hình 4.4 mô tả ứng dụng mô phỏng một cánh tay robot đơn giản.
Hình 4.4 Điều khuyển tay Robot
Thu thập hình ảnh và mô phỏng động lực học, hình 4.5 trình bày ứng dụng môphỏng hệ thống lái không trục lái trong ô tô
Trang 28Hình 4.5 Hệ thống lái không trục lái tại phòng thí nghiệm Biorobotics, KUT, Hàn Quốc
Chương 5: VI ĐIỀU KHIỂN ARDUINO MEGA VÀ MODULE ĐIỀU KHIỂN
ĐỘNG CƠ L298N
5.1 GIỚI THIỆU ARDUINO
Trang 29Hình 5.1 Arduino Mega
Arduino Mega2560 là một vi điều khiển
Bao gồm:
- 54 chân digital (15 có thể được sử dụng như các chân PWM)
- 16 đầu vào analog
- 4 UARTs (cổng nối tiếp đầu cứng)
Trang 305.1.1 Các khối lệnh cơ bản cho Arduino
Để lập trình được Arduino trên phần mềm Labview thì từ ứng dụng VI PackageManager ( được cài đặt sẵn khi cài đặt Labview) chúng ta phải cài đặt gói LabviewInterface For Arduino Đây là bộ công cụ hỗ trợ giao tiếp giữa Labview và nền tảng viđiều khiển Arduino
Sau khi cài đặt xong, trên phần mềm Laview bây giờ đã có thêm hàm Arduino hỗtrợ cho chúng ta lập trình
Đây là cửa sổ tích hợp các khối từ gói Arduino:
Hình 5.2 Các khối cơ bản của Arduino
Một khối được chia là hai dãy chân dữ liệu, dãy chân đưa dữ liệu vào hoặc là cácthiết lập ban đầu của tín hiệu và dãy chân đưa dữ liệu ra
Khối Init: Khối này có chức năng sẽ khởi tạo một kết nối tới Arduino Hình sau
sẽ mô tả các cổng kết nối chính của khối Init:
Trang 31Hình 5.3 Khối Init
Khối Init có nhiều chân song để thiết lập cho việc kết nối ta chỉ cần quan tâm:Chân VISA resource: Sẽ lựa chọn cổng COM khi kết nối Arduino với máy tính,tùy vào các máy tính khác nhau mà cổng COM này cũng khác nhau Chân này sẽ thiếtlập cổng COM để giao tiếp giữa Labview và Arduino
Chân Baud Rate: Chân này cho phép lựa chọn tốc độ baud cho Arduino Tùy vàocác ứng dụng khác nhau mà ta lựa chọn tốc độ này cho phù hợp, Arduino hỗ trợ nhiềutốc độ baud khác nhau nhưng giá trị mặc định khi khởi tạo khối là 115200
Chân Board Type: Cho phép chúng ta lựa chọn kiểu module Arduino, ở đây hỗtrợ 3 kiểu là: uno, atmega 328 và mega 2560
Chân Connection Type: Cho phép chọn kiểu kết nối, có 3 chuẩn là: usb/serial,xbee, bluetooth
Chân Arduino Resource để kết nối với các khối khác
Để thiết lập bất kỳ chân nào của một khối ta di chuyển con trỏ chuột tới chân cầnthiết lập rồi click chuột phải sau đó chọn create, ở đây sẽ có ba kiểu thiết lập là:constant (hằng số), control (điều khiển), indicator (hiển thị), tùy vào mục đích mà talựa chọn cho phù hợp
Tiếp theo là khối Close:
Trang 33Một số khối lệnh khác sử dụng trong chương trình :
- Các khối lệnh Boolean
Hình 5.6 Các khối lệnh BooleanCác khối lệnh And, Or, Not, thực hiện các phép toán logic tương ứng là phépAnd, phép Or hay phép Not
Khối lệnh Bool to (0.1) thực hiện chuyển đổi giá trị kiểu Boolean (true và false)sang giá trị 0 và 1
- Các khối lệnh so sánh:
Hình 5.7 Các khối lệnh so sánh
Các khối lệnh so sánh sẽ thực hiện các phép toán so sánh tương ứng như: lớnhơn, bé hơn, bằng, lớn hơn hoặc bằng,
Trang 34Khối lệnh Select:
Hình 5.8 Khối lệnh Select
Phụ thuộc vào giá trị của s là 0 hay 1 mà đầu ra của khối select sẽ nhân giá trị thay f Cụ thể, nếu s có giá trị TRUE thì đầu ra của khối nhận giá trị là t và nếu s có giátrị FALSE thì đầu ra nhận giá trị là f
5.1.2 Sơ đồ các linh kiện của Arduino Mega
Arduino Mega có sơ đồ linh kiện như các hình sau đây:
Trang 355.2 MODULE ĐIỀU KHIỂN ĐỘNG CƠ L298N
Hình 5.10 Module điều khiển động cơ L298N
Module L298N có thể điều khiển 2 động cơ DC hoặc 1 động cơ bước, có 4 lỗnằm ở 4 góc thuận tiện cho người sử dụng cố định vị trí của module
Có gắn tản nhiệt chống nóng cho IC, giúp IC có thể điều khiển với dòng đỉnh đạt2A IC L298N được gắn với các diot trên board giúp bảo vệ vi xử lý chống lại cácdòng điện cảm ứng từ việc khởi động/ tắt động cơ
Trang 36a Các thông số kỹ thuật:
Driver: L298N tích hợp hai mạch cầu H
Điện áp điều khiển: +5V +12V
Dòng tối đa cho mỗi cầu H là: 2V
Điện áp của tín hiệu điều khiển: +5V +7V
Dòng của tín hiệu điều khiển: 0 36Ma
Công suất hao phí: 20W (khi nhiệt độ T=75C)
Nhiệt độ bảo quản: -25C +130
b Công dụng sản phẩm:
IC L298N là một IC tích hợp nguyên khối gồm 2 mạch cầu H bên trong.Với điện áp làm tăng công suất nhỏ như động cơ DC loại vừa
Chức năng các chân của L298:
12V power, 5V power Đây là 2 chân cấp nguồn trực tiếp đến động cơ
Power GND chân này là GND của nguồn cấp cho động cơ
2 Jump A enable và B enable dùng để điều khiển mạch cầu H trong L298 Nếu
ở mức logic “1” (nối với nguồi 5V) cho phép mạch cầu H hoạt động, nếu ởmức logic “0” thì mạch cầu H không hoạt động
4 chân Input: IN1, IN2, IN3, IN4 được nối lần lượt với các chân 5, 7, 10, 12của L298 Đây là các chân nhận tín hiệu điều khiển
được nối với các chân 2, 3, 13, 14 của L298 Các chân này được nối với độngcơ