Mục lục:

Robot Nao bắt chước các chuyển động bằng Kinect: 7 bước
Robot Nao bắt chước các chuyển động bằng Kinect: 7 bước

Video: Robot Nao bắt chước các chuyển động bằng Kinect: 7 bước

Video: Robot Nao bắt chước các chuyển động bằng Kinect: 7 bước
Video: Xé toạc không gian bằng MẮT của bạn | khanhtrungsi 2024, Tháng mười một
Anonim
Robot Nao bắt chước các chuyển động bằng Kinect
Robot Nao bắt chước các chuyển động bằng Kinect

Trong phần hướng dẫn này, tôi sẽ giải thích cho bạn cách chúng tôi để một robot Nao bắt chước các chuyển động của chúng tôi bằng cách sử dụng cảm biến động năng. Mục tiêu thực tế của dự án là mục đích giáo dục: một giáo viên có khả năng ghi lại một số động tác nhất định (ví dụ: một điệu nhảy) và có thể sử dụng các đoạn ghi âm này để cho trẻ em trong lớp học bắt chước robot. Bằng cách thực hiện toàn bộ từng bước có thể hướng dẫn này, bạn sẽ có thể tạo lại toàn bộ dự án này.

Đây là một dự án liên quan đến trường học (NMCT @ Howest, Kortrijk).

Bước 1: Kiến thức cơ bản

Để tạo lại dự án này, bạn phải có một số kiến thức cơ bản:

- Kiến thức cơ bản về python

- Kiến thức cơ bản về C # (WPF)

- Kiến thức lượng giác cơ bản

- Kiến thức về cách thiết lập MQTT trên Raspberry Pi

Bước 2: Thu thập các vật liệu cần thiết

Vật liệu cần thiết cho dự án này:

- Raspberry Pi

- Cảm biến Kinect v1.8 (Xbox 360)

- Nao rô bốt hoặc rô bốt tàn bạo (Choregraph)

Bước 3: Cách thức hoạt động

Image
Image
Làm thế nào nó hoạt động
Làm thế nào nó hoạt động

Cảm biến kinect được kết nối với máy tính chạy ứng dụng WPF. Ứng dụng WPF gửi dữ liệu đến ứng dụng Python (robot) bằng MQTT. Các tệp cục bộ sẽ được lưu nếu người dùng chọn như vậy.

Giải thích chi tiết:

Trước khi chúng tôi bắt đầu ghi, người dùng phải nhập địa chỉ ip của nhà môi giới MQTT. Bên cạnh đó, chúng tôi cũng cần chủ đề mà chúng tôi muốn xuất bản dữ liệu. Sau khi nhấn bắt đầu, ứng dụng sẽ kiểm tra xem kết nối có thể được thiết lập với nhà môi giới hay không và nó sẽ cung cấp cho chúng tôi phản hồi. Không thể kiểm tra xem chủ đề có tồn tại hay không, vì vậy bạn hoàn toàn chịu trách nhiệm về chủ đề này. Khi cả hai đầu vào đều OK, ứng dụng sẽ bắt đầu gửi dữ liệu (tọa độ x, y & z tạo thành từng khớp) từ khung đang được theo dõi đến chủ đề trên MQTT broker.

Vì rô bốt được kết nối với cùng một nhà môi giới MQTT và đã đăng ký về cùng một chủ đề (điều này cũng phải được nhập trong ứng dụng python) nên ứng dụng python bây giờ sẽ nhận dữ liệu từ ứng dụng WPF. Sử dụng lượng giác và các thuật toán tự viết, chúng tôi chuyển đổi các coördinate thành góc và radian, chúng tôi sử dụng để quay các động cơ bên trong robot trong thời gian thực.

Khi người dùng ghi xong, anh ta nhấn nút dừng. Bây giờ người dùng nhận được một cửa sổ bật lên hỏi anh ta có muốn lưu bản ghi âm hay không. Khi người dùng nhấn nút hủy, mọi thứ sẽ được đặt lại (dữ liệu bị mất) và một bản ghi mới có thể được bắt đầu. Nếu người dùng muốn lưu bản ghi âm, họ nên nhập tiêu đề và nhấn 'lưu'. Khi nhấn 'lưu', tất cả dữ liệu thu được sẽ được ghi vào tệp cục bộ bằng cách sử dụng đầu vào tiêu đề làm tên tệp. Tệp cũng được thêm vào listview ở phía bên phải của màn hình. Bằng cách này, sau khi nhấp đúp vào mục nhập mới trong chế độ xem danh sách, tệp sẽ được đọc và gửi đến nhà môi giới MQTT. Do đó, robot sẽ phát đoạn ghi âm.

Bước 4: Thiết lập Nhà môi giới MQTT

Thiết lập nhà môi giới MQTT
Thiết lập nhà môi giới MQTT

Để giao tiếp giữa kinect (dự án WPF) và rô bốt (dự án Python), chúng tôi đã sử dụng MQTT. MQTT bao gồm một nhà môi giới (một máy tính linux trên đó phần mềm mqtt (ví dụ: Mosquitto)) đang chạy và một chủ đề mà khách hàng có thể đăng ký (họ nhận được thông báo từ chủ đề) và xuất bản (họ đăng thông báo về chủ đề đó).

Để thiết lập nhà môi giới MQTT, chỉ cần tải xuống toàn bộ hình ảnh jessie này. Đây là một bản cài đặt rõ ràng cho bạn Raspberry Pi với một nhà môi giới MQTT trên đó. Chủ đề là "/ Sandro".

Bước 5: Cài đặt Kinect SDK V1.8

Để kinect hoạt động trên máy tính của bạn, bạn phải cài đặt Microsoft Kinect SDK.

Bạn có thể tải về tại đây:

www.microsoft.com/en-us/download/details.a…

Bước 6: Cài đặt Python V2.7

Robot hoạt động với khung NaoQi, khung này chỉ khả dụng cho python 2.7 (KHÔNG PHẢI 3.x), vì vậy hãy kiểm tra phiên bản python bạn đã cài đặt.

Bạn có thể tải xuống python 2.7 tại đây:

www.python.org/downloads/release/python-27…

Bước 7: Mã hóa

Mã hóa
Mã hóa
Mã hóa
Mã hóa
Mã hóa
Mã hóa

Github:

Ghi chú:

- Mã hóa với kinect: trước hết bạn tìm kiếm kinect được kết nối. Sau khi lưu cái này bên trong một thuộc tính, chúng tôi đã bật màu và dòng xương trên kinect. Colorstream là video trực tiếp, trong khi khung xương có nghĩa là một bộ xương của người trước máy ảnh sẽ được hiển thị. Colorstream không thực sự cần thiết để dự án này hoạt động, chúng tôi chỉ kích hoạt nó bởi vì việc ánh xạ bitmapping từ dòng xương sang dòng màu trông rất mượt!

- Trong thực tế, nó thực sự là dòng xương thực hiện công việc. Bật dòng xương có nghĩa là bộ xương của người đang được theo dõi. Từ bộ xương này, bạn nhận được tất cả các loại thông tin, ví dụ. định hướng xương, thông tin chung,… Chìa khóa cho dự án của chúng tôi là thông tin chung. Sử dụng tọa độ x-y & z của từng khớp từ khung xương được theo dõi, chúng tôi biết mình có thể làm cho rô-bốt di chuyển. Vì vậy, cứ sau 0,8 giây (sử dụng bộ đếm thời gian), chúng tôi xuất bản tọa độ x, y & z của từng khớp cho nhà môi giới mqtt.

- Vì dự án python có mã hóa con trên nhà môi giới mqtt, giờ đây chúng tôi có thể tích lũy dữ liệu bên trong dự án này. Bên trong mỗi khớp của robot là hai động cơ. Những động cơ này không thể được điều khiển bằng cách sử dụng trực tiếp các tọa độ x, y & z. Vì vậy, bằng cách sử dụng lượng giác và một số nhận thức thông thường, chúng tôi đã chuyển đổi tọa độ x, y & z của các khớp thành các góc có thể hiểu được đối với rô bốt.

Vì vậy, về cơ bản cứ mỗi 0,8 giây, dự án WPF xuất bản tọa độ x, y & z của mỗi khớp. Do đó, bên trong dự án python, các coordiant này được chuyển đổi thành các góc, sau đó được gửi đến các động cơ tương ứng của robot.

Đề xuất: