
Mục đích thiết kế dự án : Các cánh tay robot được sử dụng rộng rãi trong nhiều kịch bản Industry 4.0 khác nhau, chẳng hạn như tạo ra các nhà máy thông minh với sự kết nối của các hệ thống có thể trao đổi dữ liệu, tích hợp toàn bộ chuỗi sản xuất và đưa ra các quyết định phi tập trung. Chúng tôi muốn tạo ra một phần mềm điều khiển cánh tay robot đơn giản (có giao diện người dùng) cho phép người dùng điều khiển từ xa Braccio++ Robot Arm thông qua cổng Serial, UDP hoặc TCP và cho phép cánh tay robot thực hiện một số chuỗi hành động phức tạp (chẳng hạn như gắp một hộp và chuyển các hộp lên băng chuyền vải). Chương trình được thiết kế và triển khai cho các mục đích dưới đây:
-
Kiểm thử : Dành cho người dùng muốn thử, học và kiểm tra cánh tay robot Braccio++ của họ.
-
Giáo dục : Dành cho giảng viên các khóa học ICS / IOT để trình bày các trường hợp sử dụng cánh tay robot hoặc sử dụng cho các buổi thực hành/thí nghiệm/bài tập liên quan đến robot / điều khiển tự động.
-
Phát triển/Trình diễn : Dành cho những người muốn xây dựng các kịch bản phức tạp hơn như mô hình nhà máy thông minh để trình diễn và nghiên cứu.
# Author: Yuancheng Liu
# Version: v_0.2.0
# Created: 2023/09/01
# Copyright: Copyright (c) 2023 LiuYuancheng
# License: MIT License
1. Giới thiệu
1.1 Tổng quan dự án
Braccio_Plus_Robot_Arm_Controller cung cấp firmware Arduino và chương trình điều khiển dựa trên giao diện người dùng để người dùng điều khiển từ xa cánh tay robot Braccio ++ thông qua cổng Serial, UDP hoặc TCP và cho phép robot thực hiện một số hành động/nhiệm vụ phức tạp. Đây là một ví dụ để cánh tay robot thực hiện nhiệm vụ chuyển hộp (gắp một hộp nhỏ và đặt vào một hộp lớn hơn):

Để xem toàn bộ video HD, vui lòng tham khảo liên kết này: Liên kết video trực tuyến
1.2 Giới thiệu kiến thức nền tảng
-
Industry 4.0 : Industry 4.0, hay Cách mạng Công nghiệp lần thứ 4, đã trở thành hiện thực nhờ sự phát triển của các công nghệ mới như hệ thống vật lý-không gian mạng, Internet of Things, điện toán đám mây, điện toán nhận thức và Artificial Intelligence.
-
Braccio ++ Robot Arm : Arduino Braccio ++ mang đến vô số khả năng mở rộng ngay từ đầu, bao gồm một Braccio Carrier mới với màn hình LCD, động cơ servo RS485 mới và trải nghiệm được nâng cao hoàn toàn. Để biết giới thiệu chi tiết, vui lòng tham khảo trang web chính thức của Braccio: https://store.arduino.cc/products/braccioplusplus
1.3 Giới thiệu chi tiết dự án
Braccio_Plus_Robot_Arm_Controller bao gồm hai phần:
Firmware Arduino Braccio ++ : Chương trình firmware chạy trên Arduino Nano RP2040 Connect của Braccio để chấp nhận các yêu cầu điều khiển từ bộ điều khiển, sau đó điều khiển các động cơ servo Braccio++ để cánh tay robot hoàn thành hành động.
Giao diện người dùng điều khiển Braccio ++ : Bộ điều khiển với giao diện người dùng đồ họa (GUI) để người dùng điều khiển từ xa cánh tay robot thông qua kết nối có dây (giao tiếp Serial) hoặc kết nối không dây (giao tiếp WIFI TCP/UDP). Nó sẽ cung cấp các chức năng dưới đây cho người dùng:
-
Hiển thị vị trí / trạng thái chiết áp thời gian thực cho sáu bộ phận chuyển động của cánh tay robot Braccio++ (
gripper,wristRoll,wristPitch,elbow,shoulder,base) . -
Điều khiển 6 động cơ servo (M1 ~ M6) để di chuyển cánh tay.
-
Cho phép người dùng đặt lại vị trí cánh tay robot Braccio++, và tải "playbook" hành động của cánh tay để cánh tay hoàn thành một số hành động phức tạp.
Đây là ảnh chụp màn hình giao diện người dùng của Braccio ++ Controller UI:

version v0.1.1
2. Thiết kế chương trình
Phần này sẽ giới thiệu thiết kế chi tiết của firmware Arduino Braccio ++ và Braccio ++ Controller UI. Sơ đồ luồng công việc của hai chương trình được hiển thị dưới đây:

2.1 Firmware Arduino Braccio ++
Firmware Arduino Braccio ++ sẽ được nạp/ghi vào bo mạch Arduino Nano RP2040 trên bộ phận mang Arduino của cánh tay robot Braccio++, nó bao gồm 2 phần chính:
-
Mô-đun xử lý giao tiếp : Đối với các firmware khác nhau (
Braccio_serial_comm.ino,Braccio_tcp_comm.ino,Braccio_udp_comm.ino), chúng sẽ cung cấp các trình xử lý giao thức giao tiếp khác nhau để nhận yêu cầu điều khiển từ bộ điều khiển và phản hồi kết quả / trạng thái thực thi hành động. -
Mô-đun xử lý yêu cầu người dùng : dựa trên yêu cầu gửi từ bộ điều khiển, chương trình chính của firmware sẽ gọi các API khác nhau để điều khiển cánh tay robot và các thành phần khác trên bo mạch mang Arduino (chẳng hạn như màn hình LCD mini và đèn LED).
2.2 Giao diện người dùng điều khiển Braccio ++
Người dùng sẽ sử dụng Braccio ++ Controller UI để điều khiển từ xa cánh tay robot, chương trình sẽ chạy trên máy tính của người dùng với 2 luồng song song:
-
Luồng GUI : Giao diện người dùng để xử lý hành động điều khiển của người dùng.
-
Luồng quản lý yêu cầu & phản hồi : chuyển đổi hành động của người dùng thành lệnh yêu cầu điều khiển cánh tay robot, gửi yêu cầu đến firmware Arduino Braccio ++ và hiển thị dữ liệu phản hồi / kết quả thực thi hành động lên giao diện người dùng.
Chi tiết thiết kế giao diện người dùng được hiển thị dưới đây:

Các yêu cầu điều khiển của người dùng sẽ được đưa vào hàng đợi hành động của trình quản lý tác vụ của bộ điều khiển và gửi đến cánh tay robot Braccio ++ theo trình tự FIFO, do đó người dùng có thể thay đổi góc động cơ một cách linh hoạt khi cánh tay đang di chuyển. Khi cánh tay hoàn thành một hành động, nó sẽ gửi lại phản hồi hoàn thành hành động, sau đó bộ điều khiển sẽ lấy một tác vụ mới ra khỏi hàng đợi và gửi đến cánh tay robot Braccio ++ (cho đến khi không còn tác vụ mới nào trong hàng đợi hành động). Nếu người dùng nhấn nút đặt lại, hàng đợi tác vụ sẽ được xóa ngay lập tức và chương trình sẽ gửi lệnh đặt lại đến cánh tay robot Braccio ++. Để giám sát vị trí cánh tay robot, góc của từng bộ phận cánh tay và giá trị đọc từ chiết áp sẽ được hiển thị trên bảng điều khiển của bộ phận cánh tay tương ứng.
Sơ đồ thời gian UML về hành động của người dùng, trạng thái bộ điều khiển và trạng thái thực thi firmware Braccio ++ được hiển thị dưới đây:

Quan trọng : Khi người dùng tải một playbook hành động vào bộ điều khiển và nhấn nút "execute", nếu hàng đợi tác vụ đầy hoặc không có đủ chỗ để lưu tất cả các hành động trong playbook, chương trình sẽ "chờ" cho đến khi hàng đợi có đủ chỗ để chứa tất cả các hành động trong playbook, sau đó đưa tất cả các hành động trong playbook vào hàng đợi và gửi đến Arduino.
2.3 Định dạng lệnh/tin nhắn giao tiếp Serial
Các byte yêu cầu / phản hồi giao tiếp sẽ tuân theo định dạng dưới đây (Chuỗi => byte theo mã hóa "utf-8")
| STT | Mô tả | Nguồn | Đích | Định dạng | Tin nhắn ví dụ |
|---|---|---|---|---|---|
| 1 | Lấy tất cả dữ liệu chiết áp | Bộ điều khiển | Arduino | POS |
POS |
| 2 | Phản hồi giá trị đọc của tất cả chiết áp | Arduino | Bộ điều khiển | POS: |
POS:157.5;157.5;157.5;157.5;157.5;90;117422.00 |
| 3 | Di chuyển động cơ servo đến góc cụ thể | Bộ điều khiển | Arduino | MOV |
MOVgrip120.5 |
| 4 | Động cơ servo đã quay xong | Arduino | Bộ điều khiển | MOV |
MOVgripDone |
| 5 | Đặt lại cánh tay robot | Bộ điều khiển | Arduino | RST |
RST |
| 6 | Lỗi thực thi hoặc lỗi lệnh | Arduino | Bộ điều khiển | error/ notSupportAct |
error/ notSupportAct |
Tất cả các khóa ID động cơ là chuỗi 4 ký tự và ánh xạ được hiển thị dưới đây:
gripper = grip
wristRoll = wrtR
wristPitch = wrtP
elbow = elbw
shoulder = shld
base = base
3. Cài đặt chương trình
Người dùng cần hoàn thành phần cài đặt chương trình / môi trường trước khi sử dụng chương trình, chẳng hạn như lắp ráp cánh tay robot, cài đặt thư viện cần thiết cho chương trình và IDE chỉnh sửa chương trình.
Lắp ráp cánh tay robot Braccio++
Làm theo liên kết dưới đây để lắp ráp cánh tay robot Braccio++ và kết nối Arduino Nano với máy tính bằng cáp micro USB.
https://docs.arduino.cc/retired/getting-started-guides/Braccio
Nếu bạn đang sử dụng hệ điều hành Windows, vui lòng chọn Device manager => COM port, ghi lại số cổng COM sau đó đặt băng thông COM Serial thành 9600 .
3.2 Cài đặt Firmware Arduino Braccio ++
Môi trường phát triển/thực thi: C++
Thư viện/Phần mềm bổ sung cần thiết: Arduino IDE 2.2.1
Phần cứng cần thiết:
Danh sách tệp chương trình:
| Tệp chương trình | Môi trường thực thi | Mô tả |
|---|---|---|
src\Braccio_src\Braccio_serial_comm.ino |
C++ | Firmware Arduino Braccio ++ cung cấp giao tiếp cổng Serial COM [kết nối có dây]. |
src\Braccio_src\Braccio_tcp_comm.ino |
C++ | Firmware Arduino Braccio ++ cung cấp giao tiếp mạng TCP [kết nối không dây]. (đang phát triển) |
src\Braccio_src\Braccio_tcp_comm.ino |
C++ | Firmware Arduino Braccio ++ cung cấp giao tiếp mạng UDP [kết nối không dây]. (đang phát triển) |
3.3 Cài đặt giao diện người dùng điều khiển Braccio ++
Môi trường phát triển/thực thi: python 3.7.4+
Thư viện/Phần mềm bổ sung cần thiết:
-
Thư viện giao tiếp cổng Serial: pySerial
Phần cứng cần thiết: cáp micro USB để kết nối với Arduino
Danh sách tệp chương trình:
| Tệp chương trình | Môi trường thực thi | Mô tả |
|---|---|---|
src\Controllers\BraccioController.py |
python | Khung giao diện người dùng điều khiển chính. |
src\Controllers\BraccioControllerPnl.py |
python | Mô-đun này sẽ cung cấp bảng điều khiển hiển thị thanh trượt động cơ và giá trị đọc chiết áp cho bộ điều khiển. |
src\Controllers\BraccioCtrlGlobal.py |
python | Mô-đun này được sử dụng làm tệp cấu hình cục bộ để đặt các hằng số, tham số toàn cục sẽ được sử dụng trong các mô-đun khác. |
src\Controllers\BraccioCtrlManger.py |
python | Mô-đun này là trình quản lý giao tiếp và dữ liệu để kết nối với Arduino nhằm gửi yêu cầu điều khiển và lấy dữ liệu chiết áp. |
src\Controllers\serialCom.py |
python | Mô-đun này sẽ kế thừa mô-đun serial của python với chức năng tự động tìm kiếm và kết nối cổng serial. |
src\Controllers\Scenario\* |
json | Thư mục lưu trữ playbook tác vụ. |
4. Sử dụng chương trình
Sau khi hoàn thành phần cài đặt chương trình, bạn có thể bắt đầu sử dụng cánh tay robot Braccio++ với các bước dưới đây:
4.1 Nạp Firmware Arduino Braccio ++
Nếu đây là lần đầu tiên bạn sử dụng cánh tay robot Braccio ++, bạn cần tải lên/ghi chương trình firmware vào Arduino. Mở Arduino IDE, nhấp vào biểu tượng thư viện sau đó tìm kiếm từ khóa "Braccio ++" và cài đặt thư viện API Braccio ++ (hiện tại chúng tôi đặc biệt khuyên bạn nên sử dụng web-IDE để không cần khắc phục sự cố phiên bản thư viện):

Sau đó mở tệp Braccio_serial_comm.ino (File => Open => chọn tệp ino), nhấp vào nút biên dịch. Chờ một lát, sau khi biên dịch xong, nhấn nút "upload (->)" để chuyển firmware đã biên dịch sang Arduino:

Chạy chương trình điều khiển cánh tay robot
Sau khi nạp firmware và kết nối cánh tay với máy tính của bạn, mở thư mục "Controllers" và chạy chương trình giao diện người dùng điều khiển bằng lệnh dưới đây:
python BraccioController.py
Kết nối với Arduino Braccio ++
Trong menu thả xuống lựa chọn giao tiếp ở trên cùng của giao diện người dùng, chọn loại kết nối:

Khi bộ điều khiển kết nối thành công với Arduino Braccio ++, chỉ báo kết nối sẽ chuyển từ màu xám sang màu xanh lá cây và tất cả các giá trị đọc của chiết áp và vị trí động cơ sẽ hiển thị trên giao diện người dùng:

Để làm cho một động cơ cụ thể quay đến một góc / vị trí nào đó, hãy kéo thanh trượt của bộ điều khiển động cơ liên quan, khi bạn nhả thanh trượt, yêu cầu di chuyển góc / vị trí sẽ được gửi đến cánh tay robot:

Sau đó bạn có thể thấy cánh tay robot Braccio ++ sẽ bắt đầu di chuyển. (Kiểm tra chi tiết từ video trong Liên kết video trực tuyến)
4.4 Làm cho cánh tay robot thực hiện hành động phức tạp
Chúng tôi cũng cung cấp chức năng cho phép người dùng thiết lập/chỉnh sửa một "playbook" để cánh tay thực hiện một số hành động phức tạp như gắp một hộp nhỏ và đặt vào một hộp lớn khác.
Bạn có thể tham khảo ví dụ vẫy tay trong thư mục Scenarios, tất cả các playbook đều ở định dạng JSON. Người dùng có thể tạo tệp playbook của riêng mình và thêm hành động theo định dạng dưới đây:
{
"act": "MOV",
"key": "grip",
"val": "220"
},
-
Hiện tại, một playbook hỗ trợ người dùng đặt tối đa 50 hành động.
Sau khi người dùng chỉnh sửa xong playbook, trong giao diện người dùng, chọn nút "Load Action Scenario", một hộp thoại chọn playbook sẽ hiển thị (playbook mới của bạn sẽ hiển thị trong danh sách):

Chọn playbook sau đó nhấn nút "OK". Sau đó bạn có thể thấy playbook của mình sẽ hiển thị trong "Current scenario: xxx.json", khi bạn nhấn nút "Execute Scenario", playbook của bạn sẽ được cánh tay robot thực thi.

Nếu bạn chỉnh sửa tệp playbook (chẳng hạn như thêm hành động), bạn không cần khởi động lại bộ điều khiển hoặc liên quan đến playbook của mình, chỉ cần nhấn lại nút "Execute Scenario", hành động mới được thêm vào của bạn sẽ được cánh tay robot thực thi.
Nếu bạn muốn đưa cánh tay robot về vị trí ban đầu, hãy nhấn nút "Reset Position".
Vấn đề và Giải pháp
Tham khảo doc/ProblemAndSolution.md
Mã nguồn và cài đặt dự án
Để kiểm tra mã nguồn, vui lòng tham khảo liên kết:
https://github.com/LiuYuancheng/Braccio_plus_robot_arm_control
Loại giấy phép :
MIT License
Thanks for spending time to check the article detail, if you have any question and suggestion or find any program bug, please feel free to message me. Many thanks if you can give some comments and share any of the improvement advice so we can make our work better ~
Last edit by LiuYuancheng([email protected]) at 05/11/2023, if you have any problem, please send me a message.
No comment for this article.