5.1.1. Kết quả nhận diện con ngƣời
Nhận diện và di chuyển theo con ngƣời là mục tiêu mà đề tại hƣớng đến. Ở đây, để nhận dạng đƣợc con ngƣời chúng ta sử dụng Camera Kinect và gói thƣ viện Openni_tracker để hỗ trợ. Camera Kinect nhận dạng con ngƣời bằng cách đọc toạ độ trên khung xƣơng mà con ngƣời tạo ra, vậy đầu tiên muốn có khung xƣơng đó chúng ta phải thực hiện động tác nhƣ hình 5.1.
56 Sau khi thực hiện đúng động tác, camera Kinect sẽ nhận dạng đƣợc khung xƣơng nhƣ hình 5.2 và tọa độ các vị trí trên khung xƣơng nhƣ hình 5.3.
Hình 5.2: Camera Kinect nhận dạng được khung xương
57
a. Khoảng cách nhận diện của camera Kinect:
Trên lý thuyết:
Camera Kinect có thể nhận biết đƣợc vật thể trong khoảng cách 0.4m => 8m nhƣ hình 5.4.
Hình 5.4: Khoảng cách Kinect đo được trên lý thuyết
Trên thực tế:
- Khoảng cách xa nhất camera Kinect có thể nhận dạng đƣợc: Với điều kiện trong nhà:
Trong môi trƣờng ánh sáng trong nhà thì camera Kinect có thể nhìn thấy con ngƣời ở khoảng cách 4.1m, kết quả đƣợc minh chứng ở hình 5.5.
Hình 5.5: Khoảng cách xa nhất camera Kinect đo được trong điều kiện trong
58 Với điều kiện ngoài trời khi không có nắng:
Trong môi trƣờng ngoài trời khi không có nắng thì camera Kinect có thể nhận dạng con ngƣời ở khoảng cách 1.8m, kết quả đƣợc minh chứng ở hình 5.6.
Hình 5.6: Khoảng cách xa nhất đo được trong điều kiện ngoài trời không có nắng
Với điều kiện ngoài trời khi có nắng:
Trong môi trƣờng ngoài trời khi có nắng thì camera Kinect không thể nhận dạng đƣợc con ngƣời, kết quả đƣợc minh chứng ở hình 5.7.
Hình 5.7: Khoảng cách xa nhất Kinect đo được trong điều kiện ngoài trời có
59 Với điều kiện không có ánh sáng:
Trong môi trƣờng không có ánh sáng (buổi tối) thì camera Kinect có thể nhận dạng đƣợc con ngƣời ở khoảng cách 4.2m, kết quả đƣợc minh chứng ở hình 5.8.
Hình 5.8: Khoảng cách xa nhất camera Kinect đo được trong điều kiện không
có ánh sáng
- Khoảng cách gần nhất camera Kinect nhận diện đƣợc ngƣời: Với điều kiện trong nhà:
Trong môi trƣờng ánh sáng trong nhà thì camera Kinect có thể nhận dạng con ngƣời ở khoảng cách 0.6m, kết quả đƣợc minh chứng ở hình 5.9.
60 Với điều kiện ngoài trời khi không có nắng:
Trong môi trƣờng ánh sáng ngoài trời thì camera Kinect có thể nhận dạng con ngƣời ở khoảng cách 0.4m, kết quả đƣợc minh chứng ở hình 5.10.
Hình 5.10: Khoảng cách gần nhất camera Kinect đo được trong điều kiện
ngoài trời không có nắng
Với điều kiện ngoài trời khi có nắng:
Trong môi trƣờng ngoài trời khi có nắng, camera Kinect không thể nhận dạng đƣợc ngƣời, kết quả đƣợc minh chứng ở hình 5.11.
Hình 5.11: Khoảng cách gần nhất camera Kinect đo được trong điều kiện
61 Với điều kiện không có ánh sáng:
Trong môi trƣờng không có ánh sáng, camera Kinect có thể nhận dạng con ngƣời ở khoảng cách 0.9m, kết quả đƣợc minh chứng ở hình 5.12.
Hình 5.12: Khoảng cách gần nhất camera Kinect đo được trong điều kiện
không có ánh sáng
b. Góc nhận diện của camera Kinect:
Trên lý thuyết:
Góc nhận diện của camera Kinect là 430 chiều dọc và 570 chiều ngang. Trên thực tế:
- Góc lớn nhất camera Kinect có thể nhận dạng ngƣời: Với điều kiện trong nhà:
Trong môi trƣờng trong nhà, góc lớn nhất camera Kinect có thể nhận dạng là 350, kết quả đƣợc minh chứng ở hình 5.13.
62
Hình 5.13: Góc lớn nhất camera Kinect đo được trong điều kiện trong nhà
Với điều kiện ngoài trời không có nắng:
Trong môi trƣờng ngoài trời không có nắng, góc lớn nhất camera Kinect có thể nhận dạng là 330, kết quả đƣợc minh chứng ở hình 5.14.
Hình 5.14: Góc lớn nhất camera Kinect đo được trong điều kiện ngoài trời
63 Với điều kiện ngoài trời có nắng:
Trong môi trƣờng ngoài trời có nắng, góc lớn nhất camera Kinect có thể nhận dạng là 00(không nhận dạng đƣợc ngƣời), kết quả đƣợc minh chứng ở hình 5.15.
Hình 5.15: Góc lớn nhất Kinect đo được trong điều kiện ngoài trời có nắng
Với điều kiện không có ánh sáng:
Trong môi trƣờng không có ánh sáng, góc lớn nhất camera Kinect có thể nhận dạng là 340, kết quả đƣợc minh chứng ở hình 5.16.
64 - Góc nhỏ nhất camera Kinect có thể nhận dạng ngƣời:
Với điều kiện trong nhà:
Trong môi trƣờng trong nhà, góc nhỏ nhất camera Kinect có thể nhận dạng là −290, kết quả đƣợc minh chứng ở hình 5.17.
Hình 5.17: Góc nhỏ nhất camera Kinect đo được trong điều kiện trong nhà
Với điều kiện ngoài trời không có nắng:
Trong môi trƣờng ngoài trời không có nắng, góc nhỏ nhất camera Kinect có thể nhận dạng là −290, kết quả đƣợc minh chứng ở hình 5.18.
Hình 5.18: Góc nhỏ nhất camera Kinect đo được trong điều kiện ngoài trời
65 Với điều kiện ngoài trời có nắng:
Trong môi trƣờng ngoài trời có nắng, góc nhỏ nhất camera Kinect có thể nhận dạng là 00( không nhận dạng đƣợc ngƣời ), kết quả đƣợc minh chứng ở hình 5.19.
Hình 5.19: Góc nhỏ nhất Kinect đo được trong điều kiện ngoài trời có nắng
Với điều kiện không có ánh sáng:
Trong môi trƣờng ngoài không có ánh sáng, góc nhỏ nhất camera Kinect có thể nhận dạng là −280, kết quả đƣợc minh chứng ở hình 5.20.
66 Từ những số liệu thu thập ta thấy Kinect hoạt động phụ thuộc vào điều kiện môi trƣờng, ta có thể thấy rõ hơn ở bảng 5.1.
Bảng 5.1:Bảng thu thập dữ liệu của Kinect trong các điều kiện môi trƣờng khác nhau. Trong nhà Không có nắng Có nắng Không có ánh sáng Khoảng cách max 4.1 m 1.8 m 0 4.2 m Khoảng cách min 0.6 m 0.4 m 0 0.9 m Góc max 350 330 0 340 Góc min -290 -290 0 -280
Từ bảng thống kê trên chúng ta có thể nhận xét rằng Kinect làm việc tốt nhất trong điều kiện môi trƣờng trong nhà với khoảng cách từ 0.6m – 4,1m và góc từ 350- -290 (phù hợp với tiêu chuẩn lý thuyết của Camera Kinect ) nên chúng ta có thể sử dụng đề tài này cho các hỗ trợ cần thiết trong nhà. Ngoài ra, với số liệu trên chúng ta còn thấy rằng Kinect có thể hoạt động đƣợc ở môi trƣờng thiếu ánh sáng do đó làm tăng thêm tính ứng dụng cho đề tài là có thể sử dụng vào việc vận chuyển đồ ở những nơi thiếu ánh sáng nhƣ nhà kho…
5.1.2. Kết quả quá trình điều khiển Robot
Điều khiển Robot là quá trình thu thập dữ liệu ngõ vào từ Camera Kinect bằng gói thƣ viện Openni_tracker để xử lí và đƣa ra ngõ ra là PWM_left và PWM_right để điều khiển động cơ giúp Robot chuyển động nhƣ mong muốn, muốn điều khiển đƣợc hai động cơ thì cần phải điều khiển thông qua Angular_kinect (góc) và Linear_kinect(khoảng cách). Và khi điều khiển hai thành phần này chúng ra dùng thuật toán PID mà cụ thể ta chỉ thay đổi thành phần KP trong thuật toán PID để làm tăng tốc độ đáp ứng của hệ thống cụ thể đƣợc trình bày ở phần dƣới.
a. Điều khiển Angular của Robot.
- Sự thay đổi của Angular_Kinect ảnh hƣởng đến sự thay đổi vận tốc của bánh xe trái (V_left) và bánh xe phải (V_right).
67 Khi Angular_Kinect nhỏ tức là khi đó con ngƣời đang đi chuyển về bên trái của Robot thì khi đó tốc độ bánh xe bên phải sẽ lớn hơn tốc độ của bánh xe bên trái để Robot có thể xoay theo ngƣời sang trái, theo nhƣ kết quả hình 5.21.
Hình 5.21: Tốc độ của 2 bánh xe khi Angular_Kinect nhỏ.
Khi Angular_Kinect lớn:
Khi Angular_Kinect lớn tức là khi đó con ngƣời đang đi chuyển về bên phải của Robot thì khi đó tốc độ bánh xe bên trái sẽ lớn hơn tốc độ của bánh xe bên phải để Robot có thể xoay theo ngƣời sang phải, theo nhƣ kết quả hình 5.22.
68 Để so sánh vận tốc của hai bánh xe khi Angular_Kinect thay đổi thì chúng ta có biểu đồ nhƣ sau:
Hình 5.23:Biểu đồ vận tốc khi con người đứng ở giữa Kinect.
69
Hình 5.25: Biểu đồ vận tốc khi con người đứng bên trái Kinect.
Từ ba biểu đồ trên cho chúng thấy đƣợc sự ảnh hƣởng rất lớn của Angular_Kinect đến tốc độ của hai bánh xe. Ở hình 5.23 là hình đồ thị khi con ngƣời đứng ở giữa Kinect tƣơng ứng Argular_Kinect xấp xỉ bằng 0 thì tốc độ hai bánh xe của Robot cũng xấp xỉ bằng nhau và lúc đó Robot sẽ chuyển động đi thẳng. Ở hình 5.24 là khi con ngƣời đứng lệch về bên phải thì ta thấy tốc độ bánh xe trái sẽ chuyển động nhanh hơn tốc độ bánh xe phải lúc này Robot sẽ rẽ phải còn ở hình 5.25 là khi ngƣời đi lệch về bên trái thì ta thấy tốc độ bánh xe phải sẽ nhanh hơn tốc độ bánh xe trái lúc đó Robot sẽ rẽ trái.
- Xét sự ảnh hƣởng của Kp_Angular đến sự thay đổi tốc độ của bánh xe. Với Kp_Angular = 2
70 Với Kp_Angular = 6
Hình 5.27: Tốc độ của 2 bánh xe khi Kp_Angular bằng 6.
Từ hình 5.26, 5.27 có thể cho chúng ta thấy đƣợc sự thay đổi của Kp_Angular ảnh hƣởng rất lớn đến sự đáp ứng về tốc độ của bánh xe Robot mà cụ thể là khi Kp_Angular càng lớn thì tốc độ đáp ứng của tốc độ hai bánh xe càng nhanh.
- Xét sự di chuyển của con ngƣời thay đổi theo thời gian để thấy đƣợc ảnh hƣởng của Angular_Kinect.
Cụ thể ở đây khi con ngƣời di chuyển liên tục từ trái qua phải thì tốc độ của hai bánh xe cũng thay đổi, khi con ngƣời ở bên trái thì V_right sẽ lớn hơn V_left lúc này Robot sẽ xoay trái, khi di chuyển đến giữa thì tốc độ hai bánh xe sẽ bằng nhau lúc này Robot sẽ đi thẳng và khi con ngƣời di chuyển sang đến bên phải thì V_left sẽ lớn hơn V_right lúc này Robot sẽ xoay phải, sự thay đổi này thể hiện ở hình 5.28.
71
Hình 5.28: Sự thay đổi tốc độ bánh xe khi con người di chuyển từ trái sang
phải.
b. Điều khiển Linear của Robot.
- Sự thay đổi của Linear_Kinect ảnh hƣởng đến sự thay đổi vận tốc của bánh xe trái (V_left) và bánh xe phải (V_right).
Nếu ở mục a chúng ta xét về sự thay đổi của Angular_Kinect là sự thay đổi về góc thì ở phần này chúng ta xét về sự thay đổi của Linear_Kinect là sự thay đổi về di chuyển thẳng của Robot.
Khi Linear_Kinect nhỏ:
Khi Linear_Kinect nhỏ tức là khi đó con ngƣời di chuyển về gần Robot hơn, lúc này tốc độ của hai bánh xe bằng nhau và khi con ngƣời đứng đúng vị trí giới hạn (0,5m) của Robot thì khi đó tốc độ hai bánh xe bằng 0 và Robot đứng yên nhƣ hình 5.29.
72
Hình 5.29: Tốc độ của 2 bánh xe khi Linear_Kinect nhỏ.
Khi Linear_Kinect lớn:
Khi Linear_Kinect lớn tức là khi con ngƣời di chuyển ra xa Robot, theo phƣơng thẳng thì lúc đó tốc độ hai bánh xe lớn và bằng nhau, nếu đi chuyển ra xa hơn so với tầm nhìn của Kinect thì Robot không còn nhận thấy con ngƣời nữa và khi đó Robot sẽ đứng lại, theo kết quả nhƣ hình 5.30.
73 Để so sánh tốc độ hai bánh xe khi Linear_Kinect thay đổi thì chúng ta có biểu đồ nhƣ sau:
Hình 5.31: Biểu đồ thể hiện tốc độ 2 bánh xe khi con người di chuyển lại gần
Robot.
Hình 5.32: Biểu đồ thể hiện tốc độ 2 bánh xe khi con người di chuyển ra xa
Robot.
Từ hình 5.31, 5.32 cho chúng ta thấy đƣợc khi Linear_Kinect thay đổi thì hai bánh xe Robot luôn có tốc độ bằng nhau. Đối với hình 5.32 thì khi chúng ta đứng gần Robot với khoảng cách nhỏ hơn hoặc bằng 0,5m thì lúc này tốc độ hai bánh xe bằng 0 và Robot đứng yên. Với hình 5.32 thì khi chúng ta di chuyển ra xa Robot thì càng di chuyển tốc độ của hai bánh xe càng tăng. Từ đó chúng ta nhận thấy rằng
74 Linear_Kinect chỉ điều khiển tốc độ bánh xe Robot dựa vào khoảng cách giữa Robot và con ngƣời chứ không giống nhƣ Angular_Kinect là điều khiển tốc độ bánh xe dựa vào góc quay.
- Xét sự ảnh hƣởng của Kp_Linear đến sự thay đổi tốc độ của bánh xe. Khi Kp_Linear = 0.1
Hình 5.33: Tốc độ của 2 bánh xe khi Kp_Linear bằng 0.1.
Khi Kp_Linear = 0.5
75 Từ hình 5.33, 5.34 chúng ta có thể thấy đƣợc Kp_Linear ảnh hƣởng rất lớn đến sự thay đổi tốc độ của hai bánh xe, khi Kp_Linear càng lớn thì sự thay đổi càng nhanh. Ban đầu khi ta đứng yên tùy theo khoảng cách mà Robot sẽ chạy nhanh hay chậm, nhƣng khi chúng ta di chuyển ra xa thì tốc độ của hai bánh xe Robot bắt đầu tăng.
- Xét sự di chuyển của con ngƣời thay đổi theo thời gian để thấy đƣợc ảnh hƣởng của Linear_Kinect.
Cụ thể ở đây khi con ngƣời liên tục di chuyển lại gần hoặc ra xa Robot thì tốc độ hai bánh xe sẽ bằng nhau và hai tốc độ này sẽ cùng tăng hoặc cùng giảm tuyến tính theo sự thay đổi của con ngƣời, theo kết quả nhƣ hình 5.35.
Hình 5.35: Sự thay đổi tuyến tính của tốc độ của bánh xe khi con người di
chuyển.
5.2. Nhận xét và tổng hợp
Trong suốt gần bốn tháng nghiên cứu, bằng sự nổ lực tìm hiểu tài liệu chuyên môn, tài liệu tiếng Anh, tài liệu trên internet, cùng với sự giúp đỡ, hƣớng dẫn tận tình của Thầy Nguyễn Tấn Nhƣ, nhóm đã hoàn thành đƣợc đề tài tốt nghiệp của mình với mô hình Robot di chuyển đƣợc theo con ngƣời. Với kết quả đƣợc phân tích ở phần trên chúng ta có thể thấy đƣợc Robot đã hoạt động ổn định và đúng theo yêu cầu của đề tài. Kết quả chạy trên thực tế cũng đánh giá đúng những gì đã thực hiện trên mô phỏng, theo kết quả nhƣ hình 5.36.
76
Hình 5.36: Kết quả thực tế và mô phỏng của đề tài.
Bên cạnh đó khi con ngƣời di chuyển trong phạm vi nhận dạng của Camera Kinect thì Robot sẽ di chuyển theo và khi con ngƣời di chuyển ra ngoài tầm kiểm soát của Camera Kinect thì Robot sẽ đứng lại. Với kết quả này thì chứng tỏ Camera Kinect đã tracking đƣợc khung xƣơng của con ngƣời. Ngoài ra, nhóm đã tìm hiểu đƣợc các chức năng hoạt động của một số linh kiện có trong đề tài, lập trình ứng dụng đƣợc kit Arduino, tìm hiểu và ứng dụng thành công hệ điều hành ROS vào điều khiển thực tế.
Tuy nhiên, do kiến thức của nhóm còn hạn hẹp nguồn tài liệu chủ yếu từ nƣớc ngoài nên trong quá trình hoạt động đề tài vẫn còn những hạn chế là Robot chƣa hoạt động tốt nhất trên bề mặt không bằng phẳng, khối lƣợng Robot còn nặng ảnh hƣởng đến việc di chuyển. Chƣa khai thác hết chức năng của Camera Kinect.
77
Chƣơng 6
KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN
6.1. Kết luận
Sau một thời gian nghiên cứu, với sự cố gắng và nổ lực của từng thành viên trong nhóm, sự phân chia công việc hợp lí và sự phối hợp nhịp nhàng giữa hai thành viên của nhóm kết quả là đồ án đã hoàn thành đúng thời gian qui định và các yêu cầu đặt ra của đồ án là Robot có thể nhận diện và di chuyển theo ngƣời trên hệ điều hành ROS. Dù vậy nhƣng kết quả cũng chỉ dừng lại ở mức cơ bản mang tính chất nền tảng chủ yếu dựa vào các thƣ viện có sẵn trên cộng đồng ROS hỗ trợ. Và qua đồ án nhóm đã học đƣợc nhiều kiến thức và rút ra nhiều kinh nghiệm quý báu cũng nhƣ là cách phối hợp khi làm việc nhóm, cách bố trí thời gian hợp lí, và hiểu rõ hơn