Điểm mới của xe tự hành là sử dụng cảm biến Kinect có khả năng khôi phục môi trường phía trước robot dưới dạng 3D từ đó xác định được các thông số cần thiết cho giải thuật điều khiển rob
Trang 11
LỜI MỞ ĐẦU
Các Robot tự hành được ứng dụng trong đời sống ngày càng nhiều như robot vận chuyển hàng hóa, robot kiểm tra nguy hiểm, robot xe lăn cho người khuyết tật Robot phục vụ sinh hoạt gia đình… Điểm hạn chế của các robot tự hành hiện tại là tính thiếu linh hoạt và khả năng thích ứng khi làm việc ở những vị trí khác nhau Từ những lý do đó nảy sinh vấn đề tránh vật cản cho robot tự hành nhằm nâng cao tính linh hoạt cho robot Hầu hết các robot hiện đại đều có một kiểu tránh vật cản nào đó robot xác định vật cản và dừng lại ở khoảng cách ngắn so với vật cản để tránh va chạm, đến các thuật toán tinh tế
hơn, cho phép robot di chuyển theo đường viền quanh vật cản Đề tài “Xe tự hành tránh vật cản” nhằm góp phần giải quyết các vấn đề trên
Chúng em xin gửi lời cảm ơn chân thành đến cô GS.TS Phan Xuân Minh đã giúp
đỡ và giới thiệu chúng em đến thực tập tại trường Cao đẳng nghề công nghệ cao Hà Nội Trong quá trình thực tập, cô đã tận tình định hướng cũng như cung cấp các kiến thức lý thuyết cho chúng em Cô luôn động viên giúp chúng em hoàn thành đợt thực tập
Chúng em cũng xin gửi lời cảm ơn sâu sắc đến trường Cao đẳng nghề công nghệ cao Hà Nội, thầy Ths Ngô Mạnh Tiến, thầy Nguyễn Văn Dũng đã tạo mọi điều kiện thuận lợi đồng thời hướng dẫn tận cho chúng em trong suốt quá trình thực tập
Nhóm sinh viên
Lê Trung Kiên
Lê Thế Huy Hoàng Văn Nghĩa
Trang 22
MỤC LỤC
L ỜI MỞ ĐẦU 1
M ỤC LỤC 2
D ANH MỤC HÌNH VẼ 4
C HƯƠNG 1 G IỚI THIỆU ĐỀ TÀI 5
1.1 Lý do chọn đề tài 5
1.2 Mục đích 5
C HƯƠNG 2 T ỔNG QUAN HỆ THỐNG 6
2.1 Giới thiệu về xe tự hành 6
2.2 Bài toán tránh vật cản 8
2.3 Hệ thống xe tự hành tránh vật cản 9
C HƯƠNG 3 M Ô HÌNH HÓA ĐỐI TƯỢNG XE TỰ HÀNH 10
3.1 Mô hình động học xe robot: 10
3.2 Mô hình động lực học xe robot: 11
3.3 Đánh giá : 13
C HƯƠNG 4 C ẢM BIẾN K INECT 14
4.1 Mục đích 14
4.2 Giới thiệu cảm biến Kinect 14
4.3 Phát hiện vật cản sử dụng Kinect 23
C HƯƠNG 5 M ẠCH ĐIỀU KHIỂN VÀ TRUYỀN THÔNG 27
5.1 i điều hi n MSP43 27
5.3 i điều hi n MSP43 R5 xx-Kit MSP430FR5739 31
5.4 CC3000 36
5.5 Đánh giá 40
Trang 33
K ẾT LUẬN 41
T ÀI LIỆU THAM KHẢO 42
Trang 44
DANH MỤC HÌNH VẼ
Hình 2-1 Asterisk - Robot nhện di chuyển bằng chân………6
Hình 2-2 Curiosity- Robot thăm dò sao Hỏa di chuyển bằng bánh………7
Hình 2-3 Robot cứu hộ di chuyển bằng xích……… 7
Hình 2-4 Sơ đồ tổng quan hệ thống……… ……… 9
Hình 3.1 Gắn tọa độ cho xe Robot……… 10
Hình 4-2 Cảm biến Kinect……… 15
Hình 4-2 Cấu trúc phần cứng của cảm biến kinect………16
Hình 4-3 Nguyên lý cảm biến độ sâu……….18
Hình 4-4 Dữ liệu thu được từ cảm biến Kinect……… 18
Hình 4-5 Bản đồ độ sâu thu được từ Kinect sử dụng OpenNI……… 20
Hình 4.6 Ví dụ ứng dụng thư viện PCL trong việc tách các đối tượng trên mặt bàn……22
Hình 4-7 Sơ đồ xử lý phát hiện vật cản sử dụng Kinect………24
Hình 4-8 Kết quả thu được khi sử dụng qua bộ lọc voxel Grid………26
Hình 4-9 Kết quả phát hiện vật cản sử dụng thư viện PCL……… 27
Hình 5.1 Vi điều khiển MSP430……… 28
Hình 5.2 Các dòng MSP hiện nay……… 29
Hình 5.3 Cấu trúc của MSP430……….30
Hình 5.4 Các module của MSP430………31
Hình 5.5 Cấu trúc Vi điều khiển MSP430FR5739………34
Hình 5.6 Cấu trúc kit phát triển sử dụng VĐK MSP430FR57xx……… 35
Hình 5.7 Cấu trúc CC300……… 38
Hình 5.8 Hình ảnh thực tế CC300 TiWi-SL……….39
Hình 5.9 Cơ chế liên kết giữa Slave và Host MCU……… 39
Hình 5.10 MSP430FR5739 board+CC3000 TiWi-SL……….40
Trang 5Nhằm từng bước tiếp cận và tạo nền tảng cho quá trình nghiên cứu ứng dụng các
công nghệ vào các sản phẩm phù hợp thực thế, nhóm đồ án chúng em đã chọn đề tài:
“ Điều khiển xe tự hành tránh vật cản”
1.2 Mục đích
Xây dựng một xe tự hành hoàn chỉnh có khả năng tìm đến vị trí đặt trước và có khả năng tránh vật cản trong quá trình di chuyển Điểm mới của xe tự hành là sử dụng cảm biến Kinect có khả năng khôi phục môi trường phía trước robot dưới dạng 3D từ đó xác định được các thông số cần thiết cho giải thuật điều khiển robot
Trong khuôn khổ của đợt thực tập tốt nghiệp tại phòng thí nghiệm robot của trường Cao đẳng nghề công nghệ cao Hà Nội, nhóm thực tập chúng em dừng lại ở việc tìm hiểu cấu trúc tổng quan của robot Xây dựng được mô hình động học, động lực học của robot đồng thời tìm hiểu các khối phục vụ cho việc điều khiển robot như khối cảm biến Kinect, các KIT sử dụng chip MSP của TI và các giao thức truyền thông giữa máy tính và KIT
Trang 6Theo lý thuyết, môi trường hoạt động của robot tự hành có thể là đất, nước, không khí, không gian vũ trụ hay sự tổ hợp giữa chúng Địa hình bề mặt mà robot di chuyển trên đó
có thể bằng phẳng hoặc thay đổi, lồi lõm
Theo bộ phận thực hiện chuyển động, ta có thểchia robot tựhành làm 2 lớp: chuyển động bằng chân (legged) và bằng bánh (wheeled)
Hình 2-1 Asterisk - Robot nhện di chuyển bằng chân
Trang 77
Hình 2-2 Curiosity- Robot thăm dò sao Hỏa di chuyển bằng bánh
Loại chuyển động bằng vòng xích (khi cần mô men phát động lớn hay khi cần di chuyển trên vùng đầm lầy, cát và băng tuyết)
Hình 2-3 Robot cứu hộ di chuyển bằng xích
Trang 88
2.2 Bài toán tránh vật cản
Tìm đường (navigation) là một khoa học dẫn hướng robot tự hành di chuyển trong không gian làm việc của nó Trong vấn đề tìm đường, bài toán được quan tâm nhiều nhất
là bài toán tìm đường về đích mà không chạm vào vật cản trên đường đi
Có 2 loại bài toán tìm đường cho robot:
- Bài toán cục bộ (local): Môi trường làm việc của robot hoàn toàn không biết
trước hoặc chỉ biết một phần Robot hoàn toàn nhờ vào sự cảm nhận môi trường trong quá trình di chuyển thông qua cảm biến gắn trên nó để dò đường
- Bài toán toàn cục (Global):Bản đồ môi trường làm việc của robot hoàn toàn được
biết trước, vấn đề chính phải giải quyết là tìm đường đi cho robot trước khi nó
xuất phát
Bài toán toàn cục có lợi thế là biết trước đường đi có tới đích hay không, có thể chọn đường tối ưu trước khi robot khởi hành Tuy nhiên hạn chế là đòi hỏi nhiều tài nguyên để tính toán và yêu cầu cao về độ chính xác của bản đồ môi trường làm việc Việc thay đổi môi trường ví dụ như có vật cản thay phía trước robot khiến robot không hoạt động đúng yêu cầu
Trong trường hợp này, bài toán cục bộ tỏ ra có ưu thế, nó có tính linh hoạt cao như có thể tránh vẩn cản khi vật đó di chuyển Đồng thời yêu cầu tài nguyên phục vụ tính toán thấp hơn Nhược điểm của bài toán này là robot chỉ cảm nhận môi trường qua cảm biến gắn cùng vì thế có thể không hoàn thành việc tới đích mặc dù có đường đi hơn nữa không thể chọn ra được đường đi tối ưu
Trong báo cáo, chúng em tập trung vào giải quyết bài toán cục bộ với cảm biến sử dụng là Kinect Môi trường hoạt động của robot là mặt phẳng giới hạn bởi các bức tường Các vật cản xuất hiện ngẫu nhiên Yêu cầu đặt ra là robot tự động tìm đường về được tới đích mà không chạm vào vật cản
Trang 99
2.3 Hệ thống xe tự hành tránh vật cản
Hệ thống tổng quan bao gồm 4bộ phận chính (Hình 2-4)(1) Bộ cảm biến Kinect, (2) bộ phận chấp hành là các bánh xe có gắn động cơ điện 1 chiều, (3) Laptop,(4) vi điều khiển và driver điều khiển động cơ
Các thành phần phối hợp hoạt động như sau: (1) Cảm biến Kinect liên tục thu thập dữ liệu về hình ảnh, khoảng cách sau đó gửi về (2) Laptop để có thể khôi phục lại không gian 3D trước robot đồng thời sử dụng các thuật toán thích hợp để phát hiện vật cản cũng như tìm được các thông số của vật cản để cung cấp cho thuật toán tránh vật cản.Sau khi các tín hiệu được xử lý thì sẽ tìm ra được quỹ đạo đặt tiếp theo cho robot Quỹ đạo là đầu vào cho bộ điều khiển cài đặt trong vi điều khiển và sau đó chuyển thành các tín hiệu điều khiển động cơ DC Khi di chuyển Kinect lại thu thập các dữ liệu mới và quá trình này được lặp lại
Hình 2-4 Sơ đồ tổng quan hệ thống
Trang 1010
CHƯƠNG 3 MÔ HÌNH HÓA ĐỐI TƯỢNG XE TỰ
HÀNH
3.1 Mô hình động học xe robot:
Hình 3.1 Gắn tọa độ cho xe Robot
Xét xe robot trong không gian làm việc Ta cần sử dụng 3 hệ tọa độ để xác định được
vị trí của xe robot, đối tượng cần bám, các vật cản so với mặt đất, cũng như vị trí tương đối của xe robot, đối tượng cần bám, các vật cản so với nhau 3 hệ tọa độ đó là:
- Hệ tọa độ OXY gắn với mặt đất đóng vai trò là hệ gốc, xác định vị trí tuyệt đối của xe robot,cũng như các đối tượng trên mặt phẳng chuyển động
- Hệ tọa độ Cx y m mgắn với xe robot
- Hệ tọa độ O xy' gắn với cảm biến Kinect, có vai trò xác định vị trí tương đối giữa đối tượng bám, vật cản so với xe robot
Biến điều khiển là vận tốc 2 bánh xe (V t, V p), biến được điều khiển chính là tọa độ của xe (x0,y0) Phương trình động học của xe:
Trang 11V v
V r (3.4)
Trong đó, r là bán ính bánh xe, D là hoảng cách giữa 2 bánh xe
Để đơn giản,trong phạm vi đồ án ta chỉ quan tâm đến 2 chuyển động cơ bản của xe robot:
- Chuyển động tịnh tiến (w=0, v ≠0) :V t =V p xe robot chuyển động tiến hoặc lùi
- Chuyển động quay (w≠0, v =0 ):V t = -V p xe robot chuyển động quay quanh trục đi qua trung điểm 2 bánh xe A
Trang 12Thực tế với đối tượng Robot di động : C q q ( , ) 0 , ( )G q 0 , ( ).J q q0 (3.7)
Từ đó, hệ phương trình động lực học của đối tượng Robot di động được viết lại như sau, với q ( , , ) x y T:
os( )- sin( )m
l
y c m
a I
Trang 13Bộ điều khiển được thiết kế sẽ thực hiện 2 nhiệm vụ :
- Bám vận tốc đặt trước vc : bộ điều khiển sẽ sử dụng mô hình động lực học của xe robot
- Bám quỹ đạo đặt trước qd : bộ điều khiển sẽ sử dụng mô hình động học của xe robot
3.3 Đánh giá :
- Trong thời gian thực tập, chúng em đã thu được một số kết quả như sau:
Tìm hiểu được cơ bản về lý thuyết xe robot,tìm hiểu,xây dựng được mô hình động học,mô hình động lực học cho xe robot
Tìm hiểu được về nguyên lý điều khiển xe robot, bước đầu xây dựng được cấu trúc hệ thống điều khiển xe robot
- Trong thời gian hoàn thành đồ án, chúng em sẽ hoàn thiện hệ thống điều khiển, cài đặt bộ điều khiển với thuật toán “bám mục tiêu + tránh vật cản” chạy thử nghiệm trên xe robot
Trang 14Việc phát hiện vật cản sử dụng Kinect được xem là sự kết hợp giữa xử lý ảnh và
và phương pháp đo đạc khoảng cách bằng sóng hồng ngoại Kết quả thu về chính xác, ổn định hơn so với các phương pháp phổ biến như sử dụng cảm biến siêu âm hay sử dụng xử
Trang 1515
Kinect được coi như là một thiết bị ngoại vi cho Xbox 360, cho phép giao tiếp với con 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 game trên Xbox Khả năng hiểu được cử chỉ con người của Kinect dựa trên hai đặc tính chính sau: thông tin về độ sâu ảnh (depth map), khả năng phát hiện và bám theo đặc tính cơ thể người (body skeleton tracking)
Bên cạnh phục vụ cho mục đích chơi game, sản phẩm Kinect còn được dùng vào mục đích nghiên cứu xử 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ẻ (khoảng 140$ trên 1 sản phẩm) cho thiết bị có khả năng cung cấp các thông tin 3D với chất lượng chấp nhận được
4.2.1 Cấu trúc phần cứng
Hình 4-2 Cấu trúc phần cứng của cảm biến kinect
Bên trong Kinect bao gồm 1 camera RGB, cảm biến độ sâu , một dãy các microphone và
1 động cơ điều khiển góc nâng
Camera RGB
Là một camera có 3 kênh dữ liệu có độ phân giải 1280x960 Camera này có khả năng chụp lại ảnh ảnh mầu
Trang 16Ngoài ra Kinect còn có 1 cảm biến đo gia tốc để xác định hướng và 1 động cơ dùng để điều khiển góc ngẩng camera
Trong số những cảm biến kể trên của Kinect, cảm biến độ sâu có khả năng ứng dụng cao trong đề tài robot tránh vật cản
4.2.2 Nguyên lý cảm biến độ sâu
Cặp cảm biến IR camera và IR projector sẽ phối hợp với nhau để tạo ra giá trị độ sâu bằng công nghệ Light Coding của PrimeSense
Kĩ thuật Light Coding dùng nguồn sáng hồng ngoại chiếu liên tục kết hợp với một camera hồng ngoại để tính khoảng cách Việc tính toán này được thực hiện bằng chip PS1080 Soc của PrimeSen
Projector sẽ chiếu một chùm sáng hồng ngoại, tạo nên những đốm sáng ở không gian phía trước Kinect, tập hợp đốm sáng được phát ra này là cố định Những đốm sáng này được tạo ra nhờ một nguồn sáng truyền qua lưới nhiễu xạ (diffraction gratings) 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 cho ra bản đồ độ sâu Bản chất của giải thuật này là các phép toán hình học dựa trên quan hệ giữa hai cảm biến IR camera và Projector
Trang 1717
Hình 4-3 Nguyên lý cảm biến độ sâu
4.1.3 Các dữ liệu đo từ cảm biến
Hình 4-4 Dữ liệu thu đƣợc từ cảm biến Kinect
Trang 1818
Các cảm biến của Kinect được điều khiển đồng thời thu thập và xử lý dữ liệu thông qua chip PS1080 có tần số 12MHz, sau đó được lưu trữ vào bộ nhớ Flash Các dữ liệu này có thể truyền vào máy tính thông qua cổng USB 2.0
Các tín hiệu thu thập bao gồm dữ liệu về độ sâu, màu sắc và âm thanh trong đó tín hiệu về độ sâu là dữ liệu quan trọng có nhiều dụng
Sở dĩ dữ liệu về chiều độ sâu có tầm quan trọng như vậy bởi nó giúp việc nhận dạng các vật thể đơn giản hơn nhiều so với xử lý ảnh thông thường Các thuật toán xử lý ảnh thông thường dựa vào sự tương đồng về mầu sắc, tuy nhiên, có thể những vật có mầu sắc tương tự nhau nhưng không cùng một vật thể hoặc các phần của cùng một đối tượng nhưng có mầu khác nhau,do vậy gây khó khăn trong quá trình nhận dạng Trong khi đó, với thông tin về độ sâu, các vật thể được phân biệt với nhau thông qua vị trí Những điểm có khoảng cách gần nhau có xu hướng cùng một đối tượng mà không phân biệt mầu sắc Chỉ khi độ sâu giảm đột ngột như ở cạnh và ở một số phần nhỏ của đối tượng thì khi
đó, hình ảnh trên bản đồ độ sâu mới có sự thay đổi
Một ưu điểm nữa của bản đồ độ sâu đó là dữ liệu có thể được nén cao hơn so với ảnh mầu thông thường do đó thích hợp trong việc truyền dẫn nhanh tín hiệu Các thuật toán nhận dạng đối với ảnh độ sâu đơn giản hơn và thậm chí có thể tái tạo lại vật thể 3D (Bộ thư viện mã nguồn mở hỗ trợ thuật toán trên là PCL)
Từ những phân tích trên ta có thể thấy được những ưu điểm của bản đồ độ sâu và nó rất thích hợp để ứng dụng trong các đề tài về robot tự hành
4.2 Các thư viện xử lý ảnh cho Kinect
Hiện nay có nhiều bộ thư viện được viết cho Kinect Nổi bật trong số đó là 2 bộ thư viện mã nguồn mở OpenNI và bộ thư viện Kinect SDK của Microsoft
Trong đồ án này, nhóm sinh viên đã sử dụng thư viện OpenNI Đây là bộ thư viện
mã nguồn mở, dùng được trên nhiều hệ điều hành khác nhau Thư viện được xây dựng hỗ trợ đầy đủ các nhu cầu cơ bản khi sử dụng Kinect trong đồ án xe tự hành tránh vật cản
Trang 1919
Mục đính chính khi sử dụng bộ thư viện OpenNI là thu được bản đồ độ sâu (Depth
Map) mang thông tin về khoảng cách từ các vật thể trong không gian phía trước cảm biến
Kinect.OpenNI cho phép thu bản đồ độ sâu trong giới hạn từ 0.5-5m phía trước Kinect
Hình 4-5 Bản đồ độ sâu thu đƣợc từ Kinect sử dụng OpenNI
Để phát huy tối đa khả năng của Kinect, nhóm sinh viên kết hợp thêm bộ thư viện
xử lý ảnh 3D là PCL
PCL là thư viện hỗ trợ xử lý ảnh 3D, được xây dựng với 14 module thực hiện các
thuật toán khác nhau
- Module PCL_Common: Chứa cấu trúc dữ liệu và phương thức được sử dụng bởi
phần lớn các thư viện trong PCL
- Module Features: Chứa các cấu trúc dữ liệu và cơ chế tính toán, ước lượng 3D từ
các dữ liệu điểm PCD
- Module PCL_filters : Chứa các kỹ thuật loại bỏ nhiễu
- Module Geometry: Chứa tất cả các cấu trúc dữ liệu và giải thuật để tính toán hình
học
- Module PCL_IO: Chứa các hàm và các lớp để đọc và ghi dữ liệu dạng PCD, có
thể thu thập dữ liệu từ nhiều nguồn khác nhau (Trong đồ án này dùng Kinect)
- Module PCL_Kdtree:Thư viện cung cấp cấu trúc dữ liệu Kd_tree, sử dụng
FLANN giúp nhanh chóng tìm kiếm vùng gần nhất (nearest neighbors searches)
Trang 2020
- Module PCL_Keypoint: Là thư viện chứa thực thi của 2 thuật toán nhận dạng
“Point clound keypoint”.Key Point (hay interest point) là các điểm trong ảnh hoặc trong point cloud mà có tính chất ổn định, riêng biệt và có thể dễ dàng phát hiện
ra Thông thường số lượng Key Point nhỏ hơn tổng số điểm trong cloud
- PCL_Octree: Chứa các thuật toán hiệu quả để tạo nên một cấu trúc dữ liệu phân
cấp từ dữ liệu point cloud Nó cho phép phân vùng không gian, downsampling (giảm số lượng các mẫu do đó tăng tốc độ tính toán) và thực hiện các phép toán
tìm kiếm trong tập dữ liệu PointCloud
- Module registrantion (PCL_registration): Kết hợp các bộ dữ liệu vào một mô
hình chung, thống nhất thường được thực hiện bằng một kỹ thuật gọi là registration.Ý tưởng chính là xác định các điểm tương ứng trong bộ dữ liệu và tìm một chuyển đổi khoảng cách tối thiểu các điểm tương ứng
- Module PCL_sample_consensus:Thư viện pcl_sample_consensus có khả năng
tách các nhóm điểm có cùng tính chất (Sample Consensus hay SAC) giống như thuật toán RANSAC (Tìm kiếm đường thẳng trong tập hợp các điểm) Các nhóm điểm có thể là các mặt phẳng, mặt cầu, trụ Thư viện này rất thích hợp trong các ứng dụng dò tìm các đối tượng như tường, cửa, các vật trên bàn…
- PCL_Search: Cung cấp các phương pháp tìm kiếm lân cận (nearest neighbors)
bằng cách sử dụng các cấu trúc dữ liệu khác nhau
- Module PCL_Segmentation: Chứa các thuật toán để phân chia Point Cloud thành
các nhóm riêng biệt Các thuật toán này thích hợp nhất khi xử lý các point Cloud bao gồm các vùng không gian bị cô lập Trong trường hợp như vậy, các clustering thường chia nhỏ để sau đó có thể xử lý độc lập
- Module PCL_surface: Là thư viện thích hợp cho việc xây dựng lại các bề mặt từ
dữ liệu quét 3D Các đối tượng chính gồm vỏ, bề mặt lưới, bề mặt nhẵn hay bình thường Khi có nhiễu có thể làm mịn và lấy mẫu lại
- Module PCL_visualization: Thư viện được tạo ra có thể nhanh chóng hiển thị các
kết quả thuật toán trên dữ liệu 3D
Trang 2121
Hình 4.6 Ví dụ ứng dụng thƣ viện PCL trong việc tách các đối tƣợng trên mặt bàn
Kiểu dữ liệu cơ bản trong PCL là PointCloud
Vd: cloud.width=640;// Tao ra 640 diem tren mot dong
Height (int): Tương tự width nhưng đối với cột trong ma trận điểm
Nếu hieght=1 thì dữ liệu không được tổ chức (có thể dùng tính chất này để kiểm tra một tập dữ liệu có được tổ chức hay không)
Trang 22- pcl::PointXYZRGBAChứa thông tin vệ tọa độ và mầu sắc dạng RGB và mật độ
của điểm cần biểu diễn
Trang 2323
4.3 Phát hiện vật cản sử dụng Kinect
Hình 4-7 Sơ đồ xử lý phát hiện vật cản sử dụng Kinect
Khối đầu tiên có nhiệm vụ thu về bản đồ độ sâu từ Kinect Việc này cần sự hỗ trợ của OpenNI Các khối còn lại sử dụng thư viện PCL có nhiệm vụ xử lý dữ liệu thu được để tách ra thành từng nhóm điểm đại diện cho những đối tượng tương ứng
Sau đây là hoạt động cụ thể của từng khối
4.3.1 Thu thập dữ liệu từ Kinect:
Để đọc dữ liệu thu được từ Kinect, chúng ta có thể sử dụng OpenNIGrabber, đây là một lớp có sử dụng thư viện OpenNI có sẵn trong PCL
Các bước thực hiện như sau:
Bước 1: Khai báo
#include <pcl/io/openni_grabber.h>
Bước 2: Tạo một Grabber mới:
Bước 3: Tạo callback function:
boost :: function < void(const pcl :: PointCloud < pcl :: PointXYZRGBA >:: ConstPtr & > f
// cloud_cb_ l{ h{m dùng để xử lý dữ liệu nhận về, ở ví dụ n{y cloub_cb_ để hiển thị //ra m{n hình.
Ở các lệnh trên, dữ liệu ta thu về từ Kinect có định dạng PointXYZRGBA, có thể sửa lại lệnh để thu về các loại dữ liệu khác Cụ thể như sau:
Trang 2424
Dữ liệu thu về làđiểm ảnh mầu 3D pointXYZRGB:
void ( const boost::shared_ptr<const pcl::pointCloud <pcl::pointXYZRGB>>&)
- Dữ liệu thu về làđiểm ảnh không mầu 3D pointXYZ:
void ( const boost::shared_ptr<const pcl::pointCloud <pcl::pointXYZ>>&)
- Dữ liệu thu về làảnh RGB từ camera :
void ( const boost::shared_ptr< openNI_wrapper::Image>&)
- Dữ liệu thu về là bản đồđộ sâu:
void ( const boost::shared_ptr< openNI_wrapper::DepthImage>&)
Bước 4: Kết nối hàm callback với dữ liệu cần quan tâm và nhận dữ liệu, dừng dữ liệu:
Tập hợp các điểm gần nhau sẽ chỉ lấy một điểm đại diện
Các hàm PCL cung cấp cho bộ lọc bao gồm:
- pcl::VoxelGrid<PointType> grid_;Khai báo một bộ lọc VoxtelGrid có tên là grid_, PointType là các kiểu biểu diễn điểm như PointXYZ, PointXYZRGB…
- grid_.setLeafSize (leaf_size_x, leaf_size_y, leaf_size_z);Chọn mật độ điểm theo các chiều lần lượt là X,Y,Z Đơn vị là Met
- grid_.setFilterFieldName (field_name); : Chiều cần giới hạn ví dụ giới hạn theo chiều Z
- grid_.setFilterLimits (min_v, max_v);Thiết lập khoảng giới hạn hoảng giới hạn
Thử nghiệm với các thông số
double min_v = 0.5, max_v = 1.5;
std::string field_name ( "z" );
double leaf_x = 0.02, leaf_y = 0.02, leaf_z = 0.02;
Trang 2525
Ta thu được kết quả sau:
Hình 4-8 Kết quả thu đƣợc khi sử dụng qua bộ lọc voxel Grid
4.3.3 Plannar segmentation
Plannar segmentation sẽ tách các point cloud có cấu trúc phẳng, sau đó tách ra point cloud có tổng số điểm lớn nhất, bằng giải thuật RANSAC (RANdom SAmple Consensus)
4.3.4 Euclidean cluster extraction
Euclidean cluster extraction làm công việc tách các point cloud có mặt trên nền nhà, tập hợp các điểm gần nhau sẽ được nhóm lại thành một point cloud hay cluster, mỗi cluster đại diện một vật thể
Như vậy dữ liệu sau khi nhận về từ Kinect sẽ được lọc qua bộ lọc Voxel Grid để giảm mật độ điểm ảnh nhằm tăng tốc độ xử lý.Sau khi lọc dữ liệu, ta sẽ tiến hành phân tích các
dữ liệu về vật thể có thể tách ra thành các nhóm điểm đại diện cho vật thể (Object Clusters) Quá trình này sử dụng các công cụ Plannar Segmentation, Euclidean Cluster Extraction Mỗi nhóm điểm đại diện cho một vật cản và cung cấp thông tin giúp nhận dạng vật cản, tính toán kích thước, khoảng cách đến vật cản để có thể tính toán tránh vật cản
Kết hợp các module lại với nhau ta thu được kết quả:
Trang 2626
Hình 4-9 Kết quả phát hiện vật cản sử dụng thƣ viện PCL
Trong đó, các điểm ảnh được phân chia thành 3 phần Nhóm mầu xanh dương đại diện cho mặt sàn Nhóm mầu đỏ là nhóm ảnh đại diện cho vật thể gần Kinect nhất Nhóm xanh lá cây đại diện cho các vật thể còn lại
Riêng đối với nhóm gần nhất, ta xấp xỉ vật thể thành một hình hộp chữ nhật bao quanh với các thông số hoàn toàn xác định Từ đó có thể coi như nhận dạng vật thể đủ yêu cầu cung cấp cho thuật toán tránh vật cản
Trang 2828
5.1.2 Các d ng 43 hiện nay
Hình 5.2 Các dòng MSP hiện nay
Trang 30- Thiết bị đo:đồng hồ điện,đo khí gas,đo lưu lượng
- ng dụng không dây:Các cảm biến từ xa,bộ điều khiển,v.v
- Thiết bị y tế:Đo lượng glucozo trong máu,nhiệt kế,các thiết bị cấy mô
- Cảm biến và an ninh:máy dò khói,máy dò chuyển động
- Các thiết bị điện:ngoại vi PC,chăm sóc cá nhân,điều khiển từ xa, điều khiển động cơ:các loại động cơ bước,BLDC,DC trong các máy in ,quạt ,ăng ten ,đồ chơi…
5.1.6 Các tr nh phát triển
- Code Composer Studio IDE
- IAR Embedded Workbench
- Mã nguồn mở MSPGCC and MSPDEBUG
Trang 31Lợi ích của FRAM:
- Năng lượng tiêu thụ siêu thấp:
Chế độ hoạt động bình thường 100 A MHz
Chế độ ghi <250 lần so với ghi Flash
- Tốc độ ghi dữ liệu:nhanh hơn 100 lần so với Flash
Tốc độ Fram max 2000kB s
Tốc độ Flash max 12kB s
- Độ bền khả năng ghi không giới hạn:chịu được 10^15 lần chu trình ghi
Cấu trúc MSP430FR5739
Trang 3232
Hình 5.5 Cấu trúc Vi điều khiển MSP43 FR5739
5.3.2 Kit MSP430FR5739: là 1 kit phát triển cho các thiết bị sử dụng VĐK
MSP430FR57xx
Hình 5.6 Cấu trúc kit phát triển sử dụng VĐK MSP43 FR57xx
Trang 3333
Các thành phần của kit:
- Tích hợp MSP430FR5739:
16 KB FRAM/1KB FRAM
Kiến trúc RISC 16 bit up tới 8MHz
2 Timer A,3 Timer B
1 khối USCI(UART SPI IrDA I2C)
4 mode để test tính năng FRAM
o Mode 1-Tốc độ ghi max
o Mode 2-Đánh giá tốc độ ghi Flash
o Mode 3-Lấy mẫu nhanh với ghi dùng bộ đo gia tốc
o Mode 4-Lấy mẫu nhanh với ghi dùng nhiệt kế
o Mode 1 và 2 bao gồm các tính năng ULP tắt led và tối ưu năng lượng
o Tài liệu kit MSP430FR5739: http://www.ti.com/tool/msp-exp430fr5739
5.3.3 ch điều khiển
a Mạch điều khiển chính: sử dụng kit MSP430FR5739
Trang 3434
Hình 5.7 Sơ đồ nguyên lí m ch điều khiển chính
b Mạch công suất:
-Mạch cầu H: Mạch cầu H là mạch sử dụng để băm xung điện áp một chiều và đảo chiều
quay động cơ Gồm 4 con MOSFET IRF3205 Q1,Q2,Q3,Q4, có tác dụng đóng cắt để
điều khiển chiều động cơ và mạch kích cho 4 con FET này dùng tụ Boottrap Ta dùng 2
tín hiệu PWM để điều khiển là PWM 1 và 2.PWM1 điều khiển Q1 và Q3 PWM2 điều
khiển Q2 và Q4
Muốn kích FET dẫn thì Vgs >0 Đối với Q3 và Q4 thì đơn giản vì chân S đã nối xuống
GND, muốn kích ta chỉ cần cấp xung kích vào chân G là được Nhưng với Q1 và Q2,
chân S có thế không cố định Vì vậy muốn kích phải cấp nguồn kích độc lập vào 2 chân
Trang 3535
G và S Kỹ thuật Boottrap giúp ta chỉ cần sử dụng 1 nguồn để kích 4 FET Và sử dụng IC IR2184 triệt tiêu trùng dẫn, 2 tụ C4 và C5 đóng vai trò làm 2 nguồn kích cho Q1 và Q2 Các diode D1 ,D2 là để tránh tụ boottrap xả ngược lại, và phải đáp ứng nhanh kịp với xung kích Điện trở R_shunt để hạn dòng cho FET khi xảy ra hiện tượng trùng dẫn
Hình 5.8 M ch cầu H
-Khối cách ly OPTO: Khối này có công dụng cách ly mạch cầu H với vi điều khiển, vì khi điều khiển động cơ bằng chân PWM khả năng có những xung không mong muốn dội
từ mạch công suất về vi điều khiển thường làm hư chân PWM Khi có xung PWM mức
1 cấp vào opto làm con led phát quang => con trans dẫn và đưa mức 1 ra output Khi có xung từ công suất dội về tới trans của opto thì không qua được, ko làm ảnh hưởng tới vi điều khiển
Trang 3636
Hình 5.9 Khối OPTO
5.4 CC3000
5.4.1 C ng nghệ ifi
- Định nghĩa:Wi-Fi (Wireless Fidelity) hay mạng 802.11 là hệ thống mạng không
dây sử dụng sóng vô tuyến, giống như điện thoại di động, truyền hình và
radio.Wifi có thể được truy cập dưới dạng không có mật khẩu (cho truy cập tự do)
hoặc mã hóa WPA WPA2
- Có 4 chuẩn Wifi thông dụng hiện nay là 802.11a b g n:
u điểm:giá thành thấp,tầm phủ sóng rộng ,không dễ bị che khuất
Nhược điểm:tốc độ thấp,có thể bị nhiễu bởi các thiết bị gia dụng cùng sử
dụng tần số 2,4GHz
- Hoạt động:Truyền thông qua mạng wifi là truyền thông RF 2 chiều:
Thiết bị adapter không dây chuyển đổi dữ liệu sang tín hiệu RF và phát đi
bằng 1 ăng-ten
Thiết bị router không dây nhận những tín hiệu này và giải mã chúng,nó gửi
thông tin tới Internet thông qua kết nối Ethernet
Qui trình này cũng hoạt động chiều ngược lại,router nhận thông tin từ Internet,chuyển
chúng thành tín hiệu RF và gửi đến adapter không dây của máy tính
- Sóng Wifi:các sóng Wifi gần giống với các sóng RF dùng cho các thiết bị cầm
tay,điện thoại di động và các thiết bị khác.Nó có thể truyền và nhận sóng
Trang 37 Dùng chuẩn 802.11
Chuẩn 802.11b :phát tín hiệu ở tần số 2.4GHz,xử lí đến 11 megabit s ,sử dụng mã hóa CCK
Chuẩn 802.11g:phát tín hiệu ở tần số 2.4GHz ,tốc độ xử lí đạt 54 megabit s,sử dụng mã hóa OFDM
Chuẩn 802.11a:phát tín hiệu ở tần số 5GHz ,tốc độ xử lí đạt 54 megabit s,sử dụng mã OFDM
Trang 3838
CC3000 là 1 bộ xử lí mạng không dây độc lập giúp đơn giản hóa việc kết nối Internet dùng công nghệ Wifi.Nó giúp giảm các phần mềm của MCU,thích hợp cho các ứng dụng nhúng sử dụng MCU low-cost/low-power
Trang 3939
- Cấu hình wifi đơn giản dùng smartphone,PC hoặc may tính bảng
CC3000 TiWi-SL:đây là 1 module hỗ trợ chuẩn Wifi 802.11b g.Module này đóng vai trò
là Slave giao tiếp với 1 Host MCU thông qua SPI nhờ 1 ăng-ten trên board,thường dùng trong các ứng dụng liên kết với kit MSP430FR5739
Hình 5.11 Hình ảnh thực tế CC3 TiWi-SL
Hình 5.12 Cơ chế liên kết giữa Slave và Host MCU
Trang 40-Vấn đề chưa làm được: cài đặt thuật toán điều khiển,truyền thông giữa máy tính và kit,cách truyền phát Wifi giữa kit MSP430FR5739 tới máy tính thông qua CC3000
-Hướng tiếp tục :thiết kế phần mạch công suất để điều khiển động cơ,cài đặt thuật toán điều khiển,kết nối được phát Wifi