Mục lục:

Điều khiển bằng tay robot với EMG: 7 bước
Điều khiển bằng tay robot với EMG: 7 bước

Video: Điều khiển bằng tay robot với EMG: 7 bước

Video: Điều khiển bằng tay robot với EMG: 7 bước
Video: Hai học sinh lớp 8 phát minh "Cánh tay robot điều khiển bằng suy nghĩ" - Tin Tức VTV24 2024, Tháng mười một
Anonim
Image
Image
Thu nhận tín hiệu
Thu nhận tín hiệu

Dự án này cho thấy sự kiểm soát của bàn tay robot (sử dụng bàn tay nguồn mở trongMoov) với 3 thiết bị uECG nguồn mở được sử dụng để đo và xử lý hoạt động của cơ (điện cơ đồ, EMG). Nhóm của chúng tôi có một câu chuyện dài với bàn tay và sự kiểm soát của họ, và đây là một bước đi đúng hướng:)

Quân nhu

3x thiết bị uECG 1x Arduino (tôi đang sử dụng Nano nhưng hầu hết các thiết bị khác sẽ hoạt động) 1x mô-đun nRF24 (bất kỳ thiết bị chung nào sẽ làm được) 1x PCA9685 hoặc trình điều khiển servo tương tự1x trongMoov hand5x servo lớn (xem hướng dẫn inMoov để biết các loại tương thích) Nguồn điện 1x 5V có khả năng 5A trở lên hiện tại

Bước 1: Thu nhận tín hiệu

Kiểm soát dựa trên EMG - hoạt động điện của cơ bắp. Tín hiệu EMG được ba thiết bị uECG thu được (tôi biết, nó được cho là một màn hình ECG, nhưng vì nó dựa trên một ADC chung, nó có thể đo bất kỳ ký hiệu sinh học nào - bao gồm cả EMG). Đối với xử lý EMG, uECG có một chế độ đặc biệt trong đó nó gửi dữ liệu phổ 32-bin và trung bình "cửa sổ cơ" (cường độ phổ trung bình từ 75 đến 440 Hz). Hình ảnh phổ trông giống như các mẫu màu xanh lam thay đổi theo thời gian. Ở đây tần số nằm trên trục tung (trên mỗi ô trong số 3 ô, tần số thấp ở dưới cùng, tần số cao ở trên cùng - từ 0 đến 488 Hz với các bước ~ 15 Hz), thời gian theo chiều ngang (dữ liệu cũ ở bên trái tổng thể ở đây khoảng 10 giây trên màn hình). Cường độ được mã hóa bằng màu: xanh lam - thấp, xanh lá cây - trung bình, vàng - cao, đỏ - thậm chí cao hơn.

Bước 2: Tín hiệu đơn giản hóa

Tín hiệu đơn giản hóa
Tín hiệu đơn giản hóa

Để nhận dạng cử chỉ đáng tin cậy, cần có một PC xử lý thích hợp các hình ảnh quang phổ này. Nhưng để kích hoạt đơn giản các ngón tay robot, chỉ cần sử dụng giá trị trung bình trên 3 kênh là đủ - uECG cung cấp một cách thuận tiện nó ở các byte gói nhất định để Arduino sketch có thể phân tích cú pháp. Các giá trị này trông đơn giản hơn nhiều - Tôi đã đính kèm biểu đồ các giá trị thô từ Máy vẽ nối tiếp của Arduino. Biểu đồ màu đỏ, xanh lá cây, xanh lam là các giá trị thô từ 3 thiết bị uECG trên các nhóm cơ khác nhau khi tôi đang bóp ngón cái, đeo nhẫn và ngón giữa tương ứng. Đối với mắt của chúng tôi, các trường hợp này rõ ràng là khác nhau, nhưng chúng tôi cần phải biến những giá trị đó thành "điểm ngón tay" bằng cách nào đó để một chương trình có thể xuất giá trị tới các servo. Vấn đề là, các tín hiệu từ các nhóm cơ là "hỗn hợp": trong trường hợp thứ nhất và thứ ba, cường độ tín hiệu màu xanh lam là như nhau - nhưng màu đỏ và màu xanh lá cây khác nhau. Trong trường hợp thứ 2 và thứ 3, tín hiệu màu xanh lá cây giống nhau - nhưng màu xanh lam và màu đỏ khác nhau.

Bước 3: Xử lý tín hiệu

Xử lý tín hiệu
Xử lý tín hiệu

Để "bỏ trộn" những tín hiệu này, tôi đã sử dụng một công thức tương đối đơn giản:

S0 = V0 ^ 2 / ((V1 * a0 + b0) (V2 * c0 + d0)), trong đó S0 - điểm cho kênh 0, V0, V1, V2 - giá trị thô cho các kênh 0, 1, 2 và a, b, c, d - các hệ số mà tôi đã điều chỉnh theo cách thủ công (a và c là từ 0,3 đến 2,0, b và d là 15 và 20, bạn vẫn cần phải thay đổi chúng để điều chỉnh cho vị trí cảm biến cụ thể của mình). Điểm số tương tự cũng được tính cho kênh 1 và 2. Sau đó, các bảng xếp hạng gần như tách biệt hoàn hảo. Đối với các cử chỉ tương tự (lần này là ngón đeo nhẫn, giữa và sau đó là ngón cái), tín hiệu rõ ràng và có thể dễ dàng chuyển thành các chuyển động của servo chỉ bằng cách so sánh với ngưỡng

Bước 4: Sơ đồ

Sơ đồ
Sơ đồ

Sơ đồ khá đơn giản, bạn chỉ cần mô-đun nRF24, PCA9685 hoặc bộ điều khiển I2C PWM tương tự và nguồn điện 5V cường độ cao đủ để di chuyển tất cả các servo này cùng một lúc (vì vậy nó yêu cầu công suất định mức ít nhất 5A để hoạt động ổn định).

Danh sách kết nối: chân 1 nRF24 (GND) - chân 2 GNDnRF24 của Arduino (Vcc) - chân 3,3vnRF24 của Arduino 3 (Kích hoạt chip) - Chân D9nRF24 của Arduino 4 (SPI: CS) - Chân D8nRF24 của Arduino 5 (SPI: SCK) - của Arduino D13nRF24 pin 6 (SPI: MOSI) - Arduino's D11nRF24 pin 7 (SPI: MISO) - Arduino's D12PCA9685 SDA - Arduino's A4PCA9685 SCL - Arduino's A5PCA9685 Vcc - Arduino's 5V Các kênh PCA 0-4, trong ký hiệu ngón tay cái của tôi - kênh 0, ngón trỏ - kênh 1, v.v.

Bước 5: Vị trí cảm biến EMG

Vị trí cảm biến EMG
Vị trí cảm biến EMG
Vị trí cảm biến EMG
Vị trí cảm biến EMG

Để có được kết quả đọc hợp lý, điều quan trọng là phải đặt các thiết bị uECG, thiết bị ghi lại hoạt động của cơ, ở đúng vị trí. Mặc dù có nhiều tùy chọn khác nhau ở đây, nhưng mỗi tùy chọn yêu cầu cách tiếp cận xử lý tín hiệu khác nhau - vì vậy với mã của tôi, tốt nhất nên sử dụng vị trí tương tự như ảnh của tôi., do đó, một trong các cảm biến được đặt ở đó và tất cả chúng đều được đặt gần khuỷu tay (các cơ có phần lớn cơ thể của chúng ở khu vực đó, nhưng bạn muốn kiểm tra chính xác vị trí của mình - có một sự khác biệt khá lớn)

Bước 6: Mã

Trước khi chạy chương trình chính, bạn sẽ cần phải tìm ID đơn vị của các thiết bị uECG cụ thể của mình (nó được thực hiện bằng cách bỏ ghi chú dòng 101 và bật từng thiết bị, bạn sẽ thấy ID của thiết bị hiện tại trong số những thứ khác) và điền chúng vào mảng unit_ids (dòng 37). Khác với điều này, bạn muốn chơi với các hệ số công thức (dòng 129-131) và kiểm tra nó trông như thế nào trên máy vẽ nối tiếp trước khi gắn nó vào tay robot.

Bước 7: Kết quả

Với một số thử nghiệm mất khoảng 2 giờ, tôi đã có thể có được hoạt động khá đáng tin cậy (video cho thấy một trường hợp điển hình). Nó hoạt động không hoàn hảo và với quá trình xử lý này chỉ có thể nhận ra các ngón tay mở và đóng (và thậm chí không phải từng ngón tay trong số 5, nó chỉ phát hiện 3 nhóm cơ: ngón cái, trỏ và giữa, ngón đeo nhẫn và ngón út với nhau). Nhưng "AI" phân tích tín hiệu lấy 3 dòng mã ở đây và sử dụng một giá trị duy nhất từ mỗi kênh. Tôi tin rằng có thể làm được nhiều hơn thế bằng cách phân tích hình ảnh quang phổ 32-bin trên PC hoặc điện thoại thông minh. Ngoài ra, phiên bản này chỉ sử dụng 3 thiết bị uECG (kênh EMG). Với nhiều kênh hơn, có thể nhận ra các mẫu thực sự phức tạp - nhưng tốt, đó là điểm của dự án, để cung cấp một số điểm khởi đầu cho bất kỳ ai quan tâm:) Điều khiển bằng tay chắc chắn không phải là ứng dụng duy nhất cho hệ thống như vậy.

Đề xuất: