7. Kết cấu của đề tài
2.3 Ứng dụng TensorFlow vào Robot NAO
Hình ảnh được lấy trên sever của Robot NAO nằm trong thư mục lưu trữ hình ảnh của Robot. Mặc định, hình sau khi chụp từ Robot NAO sẽ được lưu ở đường dẫn “home/nao/recordings/cameras/”.
Gói “scp” được cài đặt ở trên sẽ hỗ trợ cho quá trình truyền hình ảnh từ sever Robot NAO đến sever chứa thư viện TensorFlow để xử lý.
Hình 2-4: Gửi ảnh từ sever NAO lên sever chứa thư viện TensorFlow
2.3.2Xử lý hình ảnh
Hình ảnh sau khi được gửi đến sever sẽ được TensorFlow xử lý qua 2 bước:
Bước 1: cắt hình ảnh với những đồ vật có trong hình bằng cách chạy file Python “object_detection_cut_final” được tạo trên sever.
Hình 2-5: Câu lệnh chạy file Python cắt hình ảnh bo theo vật
Bước 2: hình sau khi được cắt sẽ được thư viện TensorFlow xử lý nhận diện đồ vật đó là gì qua file Python tên “copy_loaiDoVat_Copy”
Hình 2-6: chạy file Python “copy_loaiDoVat_Copy” để nhận diện đồ vật
2.3.3Kết quả trả về
Kết quả trả về sẽ là tên của đồ vật có trong hình. Lúc này, chỉ cần kiểm tra trong hình cắt ra có tên sọt rác hay không và gửi lệnh hành động tiếp theo cho Robot thực thi.
Hình 2-7: NAO có thể nhìn và phát hiện ra sọt rác nhờ thư viện TensorFlow
2.4 Tiểu kết
Đối với thư viện TensorFlow, kiến thức, ứng dụng trong nó là vô cùng rộng lớn. Tác giả chỉ tìm hiểu một phần về công nghệ xử lý, nhận diện đồ vật trong ảnh từ thư viện TensorFlow và đã áp dụng, chuyển thể nó sang sử dụng cho Robot NAO thành công, phù hợp với vấn đề cần thực hiện trong đề tài nghiên cứu khoa học của mình.
Chương 3: XÂY DỰNG HỆ THỐNG NHẬN DẠNG ĐỐI TƯỢNG VÀ DI CHUYỂN ĐẾN ĐỐI TƯỢNG
Từ những kiến thức có được sau khi tìm hiểu về cấu tạo robot, sử dụng chương trình Choregraphe, thư viện TensorFlow. Tác giả bắt đầu thực hiện “xây dựng hệ thống nhận dạng đối tượng và di chuyển đến đối tượng trên nền tảng Robot NAO” với đối tượng cụ thể là sọt rác.
3.1 Tổng quan về cách thức hệ thống hoạt động
Hình 3-2: Sơ đồ thuật toán Robot NAO di chuyển đến đối tượng sọt rác
3.2 Robot NAO nhận diện sọt rác
Như đã nêu ở chương 2, trong mục ứng dụng TensorFlow vào Robot NAO. Chức năng nhận diện sọt rác được xử lý trên thư viện TensorFlow. Để có được hình ảnh chụp từ camera của robot, tác giả đã biên dịch, chuyển thể hai hộp chức năng trong Choregraphe sang code Python thuần để có thể chụp được tấm hình rõ nhất và xử lý.
3.2.1Hướng nhìn của NAO
Hình 3-3: Hộp “Look At”
Hộp “Look At” có chức năng điều chỉnh tầm nhìn của Robot trong chương trình Choregraphe.
File Python “look_at” với chức năng điều chỉnh tầm nhìn của robot NAO và khóa cố định đầu của robot lại.
3.2.2Chụp hình
Hình 3-5: Hộp “Take Picture”
Tác giả sử dụng hộp “Take Picture” để tham khảo và viết ra một đoạn code riêng cho Python về chức năng chụp hình.
Chức năng chụp hình này sẽ được thực thi sau chức năng khóa cố định hướng nhìn của Robot. Đảm bảo sẽ cho ra tấm hình chụp không nhòe, rõ nét để công việc xử lý ảnh trên thư viện TensorFlow nhận diện ra sọt rác tốt nhất có thể.
Nhận được dữ liệu hình ảnh từ thư viện TensorFlow trả về, Robot NAO sẽ bắt đầu thực thi hành động tiếp theo.
3.3 NAO xoay đúng hướng tới sọt rác
Sau khi đã xác định được hình ảnh chứa sọt rác. Thư viện OpenCV được cài đặt cùng trên sever chứa thư viện TensorFlow sẽ thực thi công việc xác định tọa độ trung tâm của sọt rác nhờ việc tính điểm ảnh Pixels. NAO sẽ xoay tới vị trí gần trung tâm sọt rác.
Công việc tiếp theo, Robot NAO chỉ cần di chuyển theo hướng thẳng là đến được vị trí của sọt rác.
3.4 NAO di chuyển đến vị trí sọt rác
Trong Choregraphe có hộp “Move Toward” hỗ trợ quá trình Robot NAO di chuyển tới liên tục.
Hình 3-8: Hộp “Move Toward”
Vấn đề ở đây là điều kiện dừng của Robot. Làm thế nào để khi Robot NAO di chuyển đến được vị trí của sọt rác sẽ dừng lại. Cấu tạo Robot NAO đóng vai trò quan trọng trong việc giải quyết vấn đề này.
Tác giả sử dụng các cảm biến được gắn trên ngực của Robot để giúp phát hiện vật cản phía trước. Do không gian thực nghiệm nghiên cứu là trong một phòng trống không có vật cản, nên vật cản ở đây chắc chắn là sọt rác khi NAO di chuyển tới theo hướng sọt rác.
Hình 3-8 mô tả thuật toán khi robot phát hiện vật cản ở trước với khoảng cách 0.5m sẽ dừng lại. Tiếp đến, NAO sẽ di chuyển thêm 0.25m để đến gần sọt rác hơn, đủ tầm tay để NAO có thể bỏ rác vào sọt.
3.5 Hành động tay của Robot
Bao gồm tất cả hành động từ cầm, nắm, đưa tay lên, đưa tay ngang cho rác vào sọt. Dùng trình NAO 3D để xem hành động tay cùng các góc độ tay của Robot.
Hình 3-10: Dùng trình NAO 3D xem tọa độ các khớp tay NAO Hình 3-9: Thuật toán di chuyển và phát hiện vật cản
RElbowRoll: khuỷu tay giữa để gập tay.
Hình 3-11: Khuỷu tay giữa hoạt động gập tay
RShoulderRoll: khuỷu vai di chuyển theo chiều ngang.
Hình 3-12: Khuỷu vai phải đưa tay sang ngang
RShoulderPitch: khuỷu vai di chuyển theo chiều đứng.
RElbowYaw: khuỷu tay giữa để xoay tay.
Hình 3-14: Khuỷu tay với chức năng
RWristYaw: khớp cổ tay.
Hình 3-15: Xoay khớp cổ tay
RHand: hành động các ngón tay của robot.
Tác giả tính toán các khớp tay trên trình giả lập:
Hình 3-17: Sáu khớp tay Robot NAO
Quy đổi các góc độ khớp tay sang đơn vị radian áp dụng vào thuật toán:
Hình 3-18: Thuật toán tay Robot NAO
Hình 3-17 mô tả các thuật toán chuyển động khớp tay của Robot bằng cách gọi hàm hành động “motion” theo cú pháp truyền tên khớp, góc độ khớp cử động, thời gian thực thi.
3.6 Kết quả
Qua quá trình nghiên cứu, tìm hiểu, kết hợp những chức năng, ứng dụng nhỏ lại với nhau. Tác giả đã bước đầu xây dựng thành công “Hệ Thống Nhận Dạng Đối Tượng Và Di Chuyển Đến Đối Tượng Trên Nền Tảng Robot NAO”. Khi chạy ứng dụng, Robot NAO sẽ có khả năng tự động tìm vị trí đối tượng (là sọt rác) và đi đến vị trí nó.
Hình 3-19: Robot NAO cầm rác
Hình 3-21: NAO bỏ rác vào sọt
3.7 Tiểu kết
Như vậy có thể nói “Hệ Thống Nhận Dạng Đối Tượng Và Di Chuyển Đến Đối Tượng Trên Nền Tảng Robot NAO” của tác giả cơ bản đã đáp ứng đầy đủ những yêu cầu đặt ra và hoàn thành bước đầu xây dựng hệ thống. Bản demo ứng dụng, Robot sẽ hoạt động đi tìm đối tượng là sọt rác trong phòng và di chuyển đến đúng vị trí đối tượng.
Tác giả đã kết hợp từ chương trình Choregraphe, code Python, thư viện TensorFlow, OpenCV, tạo nên một hệ thống nhận dạng và đi đến đối tượng trên nền tảng Robot NAO dù chưa được hoàn hảo, nhưng giúp Robot NAO có được khả năng thông minh hơn như xác định hướng, di chuyển đến đúng nơi cần đến.
Kết luận
Đề tài nghiên cứu với mục tiêu “Xây Dựng Hệ Thống Nhận Dạng Đối Tượng Và Di Chuyển Đến Đối Tượng Trên Nền Tảng Robot NAO” đã hoàn thành.
Với yêu cầu đặt ra xây dựng một hệ thống giúp Robot NAO thông minh hơn, cơ bản tác giả đã đáp ứng được yêu cầu. Cùng với đó, bài báo cáo cung cấp thêm về cấu tạo, cũng như cách sử dụng Robot NAO để những sinh viên khóa sau có thể tiếp cận NAO một cách nhanh chóng hơn, dành nhiều thời gian tập trung hơn vào đề tài của mình để xây dựng nên một hệ thống, ứng dụng hoàn hảo hơn.
Việc xây dựng hệ thống nhận dạng đối tượng và di chuyển đến đối tượng trên nền tảng Robot NAO của tác giả sử dụng từ những ứng dụng có sẵn hỗ trợ cho quá trình lập trình trên Choregraphe, cho đến cái mới như dùng code Python để tạo thuật toán Robot NAO di chuyển và dừng lại khi phát hiện vật cản tạo điểm nhấn nổi bật cho đề tài.
Tuy nhiên, trong giới hạn về mặt kiến thức và thời gian, hệ thống của tác giả chưa thật sự hoàn hảo.
Trong thời gian tới, đề tài cần mở rộng thêm về chức năng cũng như sự liên kết chặt chẽ hơn giữa các hành động để Robot NAO có thể hoạt động tốt hơn.
Tài liệu tham khảo Tài liệu Internet
[1]Robot Nao, ngày truy cập 01/07/2017,
https://www.youtube.com/watch?v=2STTNYNF4lk
[2]Robot tìm Cup trong mê cung, ngày truy cập 15/07/2017,
http://chungta.vn/tin-tuc/cong-nghe/robot-tim-cup-trong-me-cung-28860.html [3]Trang bị Robot gần 20.000 USD phục vụ giảng dạy và nghiên cứu, ngày truy cập
20/07/2017,
https://lhu.edu.vn/112/30491/Trang-bi-Robot-gan-20000-USD-phuc-vu-giang- day-va-nghien-cuu.html
[4]Using NAO: introduction to interactive humanoid robots, ngày truy cập 10/08/2017,
http://www.educationnt.net/skills2021/wp-content/uploads/2016/07/Table-of- Content-TEXTBOOK-KI-SUNG-SU-2013-hdef.pdf
[5]Installing TensorFlow on Ubuntu, ngày truy cập 01/09/2017,
https://www.tensorflow.org/install/install_linux
[6]Image-net: Large Scale Visual Recognition Challenge 2015, ngày truy cập 01/09/2017, http://image-net.org/challenges/LSVRC/2015/