1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xây dựng ứng dụng Robot NAO nhận diện và cầm nắm đồ vật

44 132 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 44
Dung lượng 1,66 MB

Nội dung

TRƯỜNG ĐẠI HỌC LẠC HỒNG KHOA CÔNG NGHỆ THÔNG TIN - - BÁO CÁO NGHIÊN CỨU KHOA HỌC ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG ROBOT NAO NHẬN DIỆN VÀ CẦM NẮM ĐỒ VẬT NGUYỄN TRỌNG TRÍ BIÊN HÒA, THÁNG 11/2017 TRƯỜNG ĐẠI HỌC LẠC HỒNG KHOA CÔNG NGHỆ THÔNG TIN - - BÁO CÁO NGHIÊN CỨU KHOA HỌC ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG ROBOT NAO NHẬN DIỆN VÀ CẦM NẮM ĐỒ VẬT Sinh viên thực hiện: NGUYỄN TRỌNG TRÍ Giáo viên hướng dẫn: Th.S NGUYỄN MINH SƠN BIÊN HÒA, THÁNG 11/2017 LỜI CẢM ƠN Em xin chân thành cám ơn tất giảng viên trường Đại Học Lạc Hồng, thầy cô khoa Công Nghệ Thông Tin giảng dạy hướng dẫn chúng em suốt thời gian chúng em theo học trường Em xin gởi lời cảm ơn đến Th.S Nguyễn Minh Sơn giáo viên tận tình hướng dẫn chúng em hồn thành đề tài nghiên cứu khoa học Em xin gởi lời cám ơn đến Th.S Đỗ Quốc Bảo giáo viên phản biện góp ý giúp chúng em hồn thiện chương trình Ngoài ra, em xin cám ơn thầy Nguyễn Minh Phúc giáo viên chủ nhiệm lớp 13SE111 bạn lớp tồn thể gia đình người thân giúp đỡ, động viên chúng em trình thực đề tài Em xin chân thành gởi lời cám ơn đến Ba Mẹ, Anh Chị Em bên chia sẻ giúp đỡ tài chính, khích lệ tinh thần theo dõi em suốt trình học tập nghiên cứu Với vốn kiến thức cịn hạn chế điều kiện khách quan khơng cho phép, đề tài chúng em khó tránh khỏi thiếu sót chưa đáp ứng đầy đủ yêu cầu Do đó, chúng em hy vọng tiếp tục nhận ý kiến đóng góp hướng dẫn quý thầy cô để đề tài chúng em hoàn thiện Em xin chân thành cảm ơn! Biên Hòa, tháng 11 năm 2017 Sinh viên thực Nguyễn Trọng Trí MỤC LỤC PHẦN MỞ ĐẦU 1 Lý chọn đề tài Mục tiêu nghiên cứu Đối tượng phạm vi nghiên cứu 3.1 Đối tượng nghiên cứu 3.2 Phạm vi nghiên cứu Phương pháp nghiên cứu Kết cấu đề tài CHƯƠNG 1: TỔNG QUAN VÀ CƠ SỞ LÝ THUYẾT VỀ ROBOT NAO 1.1 Giới thiệu Robot NAO 1.1.1 Lịch sử nghiên cứu 1.1.2 Các tính 1.1.3 Cấu hình tổng thể 1.1.4 Cấu hình khớp 1.1.5 Hệ thống thị giác 1.1.6 Âm 10 1.1.7 Phần mềm 10 1.1.8 Cách kết nối NAO 11 1.2 NAOqi 11 1.2.1 Tổng quan NAOqi 11 1.2.2 Tổng quan cấu trúc 14 1.2.3 Sử dụng NAOqi 16 1.3 Tìm hiểu Tensorflow 21 1.3.1 Tensorflow gì? 21 1.3.2 Một số khái niệm tensorflow 21 1.3.3 Giới thiệu số liệu mẫu 24 CHƯƠNG 2: XÂY DỰNG ĐỀ TÀI ỨNG DỤNG CHO ROBOT NAO CẦM NẮM ĐỒ VẬT 25 2.1 Phương thức truyền liệu 25 2.1.1 Paramiko Scp gì? 25 2.1.2 Cài đặt Paramiko Scp 25 2.1.3 Ví dụ sử dụng paramiko scp 27 2.2 Phương pháp xử lí ảnh nhận diện vật Tensorflow 28 2.2.1 Phương pháp xử lí ảnh định vị nhiều đối tượng hình ảnh 28 2.2.2 Nhận dạng hình ảnh tensorflow 30 2.3 Phương hướng hoạt động tay robot NAO 31 2.3.1 Cartesian control làm 31 2.3.2 Hiểu cách thức hoạt động Cartesian control 32 2.3.3 Ví dụ sử dụng Cartesian control 34 CHƯƠNG 3: KẾT LUẬN 35 3.1 Sơ đồ tóm tắt hoạt động 35 3.2 Những đóng góp đề tài vấn đề mà đề tài chưa thực 35 3.2.1 Những đóng góp 35 3.2.2 Những vấn đề chưa thực 36 3.3 Kết luận 36 3.4 Hướng phát triển 36 DANH MỤC BẢNG Bảng 1-1 Các thuật ngữ NAOqi 14 Bảng 1-2 Các tùy chọn NAOqi 20 Bảng 1-3 Các tùy chọn từ xa NAOqi 21 Bảng 1-4 Rank, đơn vị số học ví dụ 22 Bảng 1-5 Shap tensorflow 23 Bảng 1-6 Các kiểu liệu tensorflow 23 DANH MỤC HÌNH Hình 1-1 Robot NAO sử dụng giáo dục Hình 1-2 Robot NAO Hình 1-3 Cấu hình NAO Hình 1-4 Tên vị trí khớp NAO Hình 1-5 Vị trí camera robot NAO Hình 1-6 Cấu hình micro Robot NAO 10 Hình 1-7 Giao tiếp với Robot thông qua kết nối mạng 11 Hình 1-8 Cấu trúc khung NAOqi 14 Hình 1-9 Cài đặt thuộc tính 17 Hình 1-10 Thiết lập hệ thống nâng cao biến mơi trường 17 Hình 1-11 Cửa sổ thiết lập biến môi trường điều chỉnh đường dẫn 18 Hình 1-12 Cài đặt PYTHONPATH 18 Hình 2-1 Các folder file cần cài đặt paramiko scp 26 Hình 2-2 Lệnh minh họa di chuyển file folder để cài đặt paramiko, scp 26 Hình 2-3 Sơ đồ hoạt động paramiko, scp 27 Hình 2-4 Import thư viện paramiko, scp 27 Hình 2-5 Tạo kết nối tới ssh server Ubuntu 27 Hình 2-6 Kết nối tới ssh gửi tệp (ảnh) lên server 27 Hình 2-7 Trup cập vào terminal thực thi lệnh cho server 27 Hình 2-8 Ảnh minh họa đối tượng (đồ vật) chụp từ robot NAO 28 Hình 2-9 Sơ đồ kết xác định đối tượng 30 Hình 2-10 Sơ minh họa định nghĩa đối tượng model tensorflow 30 Hình 2-11 Hệ trục tọa độ (Cartesian) Tay robot NAO 32 Hình 2-12 FRAME robot NAO 33 Hình 3-1 Sơ dồ mô tả tổng quan hoạt động đề tài 35 PHẦN MỞ ĐẦU Lý chọn đề tài Khi người ta sử dụng robot vào trình sản xuất, họ thấy chuyển biến mạnh mẽ khả tăng suất chất lượng sản phẩm rõ rệt:  Giảm chi phí vận hành: tự động hóa công nghiệp giúp giảm thiểu số nhân công cần thiết để vận hành máy móc dẫn đến việc giảm chi phí liên quan đến người tiền lương, tiền bảo hiểm y tế, tiền lương nghỉ lễ, nghỉ ốm, tiền làm thêm hay lương hưu  Tăng suất: Hệ thống tự động hóa cho phép nhà máy họat động 24/7 tuần, tháng chí năm Nhờ vậy, suất sản xuất cải thiện nâng cao đáng kể  Cải thiện chất lượng sản phẩm: tự động hóa có khả giảm sai sót mà người gặp phải Hơn nữa, sản phẩm tạo nên hệ thống tự động hóa có chất lượng đồng  Tăng tính linh hoạt: thêm bước vào quy trình sản xuất, nhà quản lý thường phải hướng dẫn, đào tạo người lao động bước Tuy nhiên, robot hệ thống máy tính hồn tồn lập trình để thực thao tác mà không cần qua đào tạo hay hướng dẫn, nhờ giúp quy trình sản xuất trở nên linh hoạt  Tăng mức độ an tồn: hệ thống tự động hóa thay người môi trường nguy hiểm nước, khu vực có lửa, sở hạt nhân hay vũ trụ Để làm robot tự động làm việc trên, cần có lập trình viên Lập trình viên viết ứng dụng cho robot, ứng dụng giúp robot làm công việc tay chân thay người để gia tăng nâng suất chất lượng Đề tài “Xây dựng ứng dụng robot NAO tự động nhận diện hành động cấm lấy vật” tác giả viết hy vọng góp phần vào cơng cách mạng giúp robot phục vụ cho công việc sản xuất người tốt Mục tiêu nghiên cứu Đề tài thực với mục tiêu xây dựng ứng dụng robot NAO nhận diện cầm nắm đồ vật:  Nhìn – đốn vị trí đồ vật: hiểu áp dụng thư viên Tensorflow vào ứng dụng giúp cho robot phát vật thơng qua ảnh xử lý chụp từ camera robot  Robot NAO tự động di chuyển tay thông minh cầm nắm vật Đối tượng phạm vi nghiên cứu 3.1 Đối tượng nghiên cứu     Các khớp tay camera Robot NAO Thư viên NAOqi (tổng hợp API module để điều khiển robot NAO) Thư viện Tensorflow (thực nhận diện hình ảnh) Ngôn ngữ Python robot NAO Các đối tượng nghiên cứu đề tài 3.2 Phạm vi nghiên cứu Các chương trình ứng dụng cho robot NAO cho hoạt động mang tính chất nghiên cứu để áp dụng robot vào sống Phương pháp nghiên cứu  Xây dựng server xử lý liệu truyền robot NAO  Xử lý ảnh phát đối tượng server  Ứng dụng thư viện NAOqi  Sử dụng thư viện Tensorflow nhận dạng vật để truyền liệu robot NAO  Sử dụng mơ đun thuật tốn để robot di chuyển tay đến vị trí vật cầm Kết cấu đề tài  Chương 1: Tổng Quan Về Lý Thuyết Trong chương này, tác giả trình bày sơ lược robot NAO giới thiệu sở lý thuyết thư viện NAOqi, phần ứng dụng thư viện Tensorflow vào đề tài, cách sử dụng code Python robot để giúp cho người đọc dễ hiểu cấu tạo, cách thức hoạt động robot NAO  Chương 2: Xây Dựng Ứng Dụng Tác giả nêu lên cách xây dựng ứng dụng “robot NAO nhận diện– cầm nắm đồ vật” Nêu cách làm ứng dụng, chức hoạt động thông minh robot trình hoạt động  Chương 3: Kết Luận Tổng kết, đưa kết luận hướng phát triển ứng dụng xây dựng [D0, D1, , [D(n-1)] n n-D tensor n chiều có shap [D0, D1, , [D(n-1)] Bảng 1-5 Shap tensorflow TYPE  Là kiểu liệu số tensor Kiểu liệu Kiểu liệu python DT_FLOAT tf.float32 DT_DOUBLE tf DT_INT8 tf.int DT_INT16 tf.int DT_INT32 tf.int DT_INT64 tf.int DT_UINT8 tf.uint8 DT_STRING tf.string DT_BOOL tf.bool DT_COMPLEX64 tf.complex64 DT_QINT8 tf.qint8 DT_QINT32 tf.qint32 DT_QUINT8 tf.quint8 Bảng 1-6 Các kiểu liệu tensorflow 23 1.3.3 Giới thiệu số liệu mẫu Trong Tensorflow sử dụng nhều liệu mẫu như:  Iris: liệu nhỏ hoa;  MNIST: liệu chữ viết tay  CIFAR-10: tập liệu CIFAR-10 bao gồm 60000 hình ảnh 32x32 màu 10 lớp, với 6000 hình ảnh lớp Có 50000 hình ảnh đào tạo 10000 hình ảnh thử nghiệm Mười tập sữ liệu gồm: máy bay, ô tô, chim, mèo, nai ,ếch, ngựa, tàu chở hàng  CASIA-WebFace: Hiện nay, công nghệ Big Data mạng lưới thần kinh sâu đẩy mạnh phát triển Chính vậy, hiệu nhận biết khn mặt ngày xác Sử dụng dataset lớn không công khai, số nhóm nghiên cứu đạt hiệu suất cao Labeled Faces in the Wild (LFW) đạt từ 97% - 99% Mặc dù có nhiều triển khai mã nguồn mở CNN, khơng có tập liệu khuôn mặt lớn công khai Tình hình tại, tổ chức nghiên cứu nhận diện khuôn mặt công nhận liệu khuôn mặt quan trọng thuật tốn Đây ngun nhân hình thành nên tập liệu CASIA-WebFace Tập liệu CASIA-WebFace nhóm nghiên cứu cách thu thập hình ảnh bán tự động Internet Hiện liệu chứa khoảng 10.575 đối tượng 494.414 hình ảnh  Bộ liệu khuôn mặt MS-Celeb-1M: Tập liệu chưa khoảng 100.000 người tiếng Các hình ảnh thu thập qua internet, người chứa khoảng 100 hình 24 CHƯƠNG 2: XÂY DỰNG ĐỀ TÀI ỨNG DỤNG CHO ROBOT NAO CẦM NẮM ĐỒ VẬT Sơ đồ hoạt động nghiên cứu đề tài “robot NAO nhận diện cầm nắm đồ vật”: Camera NAO Image file Xử lý ảnh Dữ liệu NAO hành động Hệ điều hành Robot NAO (Gentoo Linux) cài đặt hổ trợ nhiều thư viện API, lại có vi xử lý với phần cứng cịn hạn chế Vì vậy, điều làm bất tiện cho người lập trình ứng dụng cơng nghệ vào robot NAO Cũng lí trên, tác giả xây dựng server Ubuntu Linux để xử lý liệu robot NAO truyền lên trả thông tin để robot thực thi 2.1 Phương thức truyền liệu Phương pháp truyền liệu vận hành thông qua sử dụng thư viện Pamikopython Scp 2.1.1 Paramiko Scp gì? Paramiko ứng dụng Python (2.7, 3.4+) giao thức SSHv2, cung cấp chức client server Trong thúc đẩy phần mở rộng Python C cho mật mã học thấp (Mật mã), Paramiko giao diện Python tinh khiết xung quanh khái niệm mạng SSH, tìm hiểu chi tiết cách sử dụng tài liệu API trang tài liệu mã chúng tôi, docs.paramiko.org Scp sử dụng phương thức vận chuyển paramiko để gửi nhận tệp thông qua giao thức scp1 2.1.2 Cài đặt Paramiko Scp Trên Server Ubuntu $ sudo apt-get install python-pip python-dev $ sudo apt-get update $ sudo apt-get install python-paramiko $ sudo pip install scp 25 Trên robot NAO Hệ điều hành NAO hạn chế quyền: không cho cài đặt trực tiếp lệnh terminal Nên, tác giả phải cài đặt thư viện paramiko-python scp robot NAO ảo; sau đó, di chuyển thư viện qua robot NAO thật thư viện sử dụng robot NAO thật  Trên NAO ảo $ sudo easy_install pip $ sudo pip install paramiko $ sudo pip install scp  Trên NAO thật Hình 2-1 Các folder file cần cài đặt paramiko scp A Vào đường dẫn /usr/lib/python2.7/site-packages NAO ảo copy folder file Hình 2-1 qua Nao thật (trong home/nao) Hình 2-2 Lệnh minh họa di chuyển file folder để cài đặt paramiko, scp B Truy cập root terminal NAO thật di chuyển tất folder file (Hình 2-1) lệnh (Hình 2-2) để cài đặt thư viện paramiko-python scp cho NAO thật $python >>import paramiko >>import scp 26 C Chạy python=> kiểm tra thư viện=> không lỗi=> thành cơng 2.1.3 Ví dụ sử dụng paramiko scp Sơ đồ cách sử dụng paramiko, scp truyền liệu trả từ NAO lên server Ubuntu anhnao.jp g Hình 2-3 Sơ đồ hoạt động paramiko, scp  Chú thích Hình 2-4 Import thư viện paramiko, scp Hình 2-5 Tạo kết nối tới ssh server Ubuntu Hình 2-6 Kết nối tới ssh gửi tệp (ảnh) lên server Hình 2-7 Trup cập vào terminal thực thi lệnh cho server 27 2.2 Phương pháp xử lí ảnh nhận diện vật Tensorflow Hình 2-8 Ảnh minh họa đối tượng (đồ vật) chụp từ robot NAO Bộ não chúng tơi làm cho tầm nhìn dễ dàng Nó khơng có khó khăn người nhận sư tử xe tăng, đọc dấu hiệu, nhận khuôn mặt người Nhưng thực vấn đề khó giải với máy tính: chúng dễ dàng não chúng tơi có khả hiểu hình ảnh tốt Nhằm mục đích robot NAO nhận diện đồ vật tầm nhìn (Hình 2-8), tác giả sử dụng phương pháp xử lí ảnh thơng qua server Ubuntu có khả định vị xác định nhiều đối tượng hình ảnh từ robot NAO gửi server Từ đối tượng phát từ ảnh, tác giả sử dụng ứng dụng thư viện tensorflow để nhận diện định nghĩa đối tượng 2.2.1 Phương pháp xử lí ảnh định vị nhiều đối tượng hình ảnh Tác giả ứng dụng thư viện OpenCV (Open Source Computer Vision Library) để xử lý ảnh phổ biến miễn phí, hổ trợ cho ngôn ngữ python2.7 để dễ vận hành lập trình robot NAO Cài đặt OpenCV server Ubuntu Linux $ sudo apt-get install python-opencv $ sudo apt-get install python-scipy $ sudo apt-get install ipython 28 Thuật toán ứng dụng OpenCV #khởi tạo import cv2 image = cv2.imread(".jpg") #làm mờ ảnh img_filt = cv2.medianBlur(image, 5) #xác định biên ảnh edged = cv2.Canny(img_filt, 180, 1) #xử lý cắt ảnh để định vị nhiều đối tượng idx = for i in range(1, 4): #tạo độ liên kết khối pixel kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (i,i)) closed = cv2.morphologyEx(edged, cv2.MORPH_CLOSE, kernel) #tạo mảng chứa đối tượng ảnh _, cnts, _= cv2.findContours(closed.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) #lộc đối tượng ảnh for c in cnts: #định vị tọa độ đối tượng ảnh x,y,w,h = cv2.boundingRect(c) #tạo ảnh lưu ảnh đối tượng dài rộng 60px if w>60 and h>60: idx+=1 new_img=image[y:y+h,x:x+w] cv2.imwrite('image/'+str(i)+"_"+str(idx) + '.png', new_img) 29 Kết Hình 2-9 Sơ đồ kết xác định đối tượng 2.2.2 Nhận dạng hình ảnh tensorflow Như sơ đồ Hình 2-9, hình ảnh cắt riêng biệt đối tượng Mục đích phân tách đối tượng để dễ dàng đĩnh nghĩa đồ vật để đưa thông tin ảnh từ server robot NAO Thực việc định nghĩa đó, tác giả sử dụng model tạo training từ thư viện tensorflow Cách thức hoạt động: truyền hình ảnh đối tượng (đồ vật) cụ thể vào model tensorflow, model cho mãng phần tử liệu gồm : tên định nghĩa độ xác(%) xếp giảm dần theo độ xác Chạy model tensorflow: $ cd models/tutorials/image/imagenet $ python classify_image.py image_file= water bottle (score = 0.48866) nipple (score = 0.31164) Tensorflow water jug (score = 0.09942) pill bottle (score = 0.00812) Petri dish (score = 0.00709) Hình 2-10 Sơ minh họa định nghĩa đối tượng model tensorflow 30 2.3 Phương hướng hoạt động tay robot NAO Trong trình tìm hiểu NAOqi, tác giả chọn lọc phương pháp khả thi cho đề tài xác định phương hướng hoạt động tay robot NAO theo hệ trục tọa độ (Cartesian) Phướng pháp sử dụng Cartesian control NAOqi 2.3.1 Cartesian control làm Các API dành riêng để kiểm soát trực tiếp Effectors robot NAO không gian Cartesian sử dụng giải mã inverse kinematics Mỗi Effector kiểm sốt riêng lẻ, song song với Có hai loại giải pháp biến đổi inverse kinematics(IK) mô-đun ALMotion:  Giải pháp classical IK (thông dụng) sử dụng khớp chuỗi effector để đạt mục tiêu  Giải pháp generalized IK (tổng quát)(còn gọi Kiểm sốt Tồn thân) sử dụng tất khớp robot để đạt mục tiêu Có hai cách kiểm sốt effector:  animation methods (thời gian cố định, blocking function): ALMotionProxy::positionInterpolations() ALMotionProxy::transformInterpolations()  reactive methods (có thể thay đổi chu kỳ ALMotion, non blocking function): ALMotionProxy::setPositions() ALMotionProxy::setTransforms() 31 2.3.2 Hiểu cách thức hoạt động Cartesian control Vị trí định hướng Hình 2-11 Hệ trục tọa độ (Cartesian) Tay robot NAO Cartesian control giúp robot NAO hoạt động cách tự động có chủ đích cách linh hoạt phạm vi không gian không theo khn khổ  Tính chất:  Vị trí di chuyển hoạt động bàn tay robot NAO (tâm trục tọa độ)  Hệ trục tọa độ (Hình 2-11):  Oy: hướng bên phải  Ox: hướng phía trước  Oz: hướng lên  Frames Frame thuộc tính dùng để chọn phạm vi cách thức hoạt động robot NAO Khi tạo lệnh cho robot, cần ý nhiều đến khoảng trống không gian sử dụng để xác định lệnh, sai lầm khơng gian dẫn đến kết thảm khốc (robot bị ngã) 32 Hình 2-12 FRAME robot NAO FRAME_TORSO: có ý nghĩa định hướng của khung thân FRAME_ROBOT: có ý nghĩa định hướng phận cụ thể robot NAO (tay, chân) FRAME_WORLD: có ý nghĩa định hướng robot 33 2.3.3 Ví dụ sử dụng Cartesian control effector = "LArm" #chọn phận hoạt động space = motion.FRAME_ROBOT axisMask = almath.AXIS_MASK_VEL # kiểm sốt vị trí isAbsolute = False #Vị trí bắt đầu hành động currentPos = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0] #Xác định vị trí đến theo Oxyz dx = 0.03 # translation axis X (meters) dy = 0.03 # translation axis Y (meters) dz = 0.00 # translation axis Z (meters) dwx = 0.00 # rotation axis X (radians) dwy = 0.00 # rotation axis Y (radians) dwz = 0.00 # rotation axis Z (radians) targetPos = [dx, dy, dz, dwx, dwy, dwz] #Đi đến mục tiêu quay trở lại path = [targetPos, currentPos] times = [2.0, 4.0] # seconds motionProxy.positionInterpolation(effector, space, path, axisMask, times, isAbsolute) 34 CHƯƠNG 3: KẾT LUẬN 3.1 Sơ đồ tóm tắt hoạt động Hình 3-1 Sơ dồ mô tả tổng quan hoạt động đề tài Yêu cầu:  Vật để bàn có độ cao: 30-40cm  Vật robot NAO cầm có chiều rộng:

Ngày đăng: 16/08/2020, 10:49

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w