Mục lục:
- Bước 1: Thêm Gripper
- Bước 2: Xây dựng cánh tay
- Bước 3: Giao diện MoveIt RobotCommander
- Bước 4: Mã Arduino cho Bộ điều khiển Robot
- Bước 5: (Tùy chọn) Tạo trình cắm IKfast
- Bước 6: Thử nghiệm Ramp
Video: ROS MoveIt Cánh tay rô bốt Phần 2: Bộ điều khiển rô bốt: 6 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:33
github.com/AIWintermuteAI/ros-moveit-arm.git
Trong phần trước của bài viết, chúng tôi đã tạo các tệp URDF và XACRO cho cánh tay robot của mình và khởi chạy RVIZ để điều khiển cánh tay robot của chúng tôi trong môi trường mô phỏng.
Lần này chúng ta sẽ làm điều đó với cánh tay robot thực sự! Chúng tôi sẽ thêm bộ kẹp, viết bộ điều khiển rô bốt và (tùy chọn) tạo bộ giải động học nghịch đảo IKfast.
Geronimo!
Bước 1: Thêm Gripper
Việc thêm gripper lúc đầu hơi rắc rối nên mình đã bỏ qua phần này trong bài viết trước. Rốt cuộc thì mọi chuyện không khó như vậy.
Bạn sẽ cần sửa đổi tệp URDF của mình để thêm các liên kết và khớp nối.
Tệp URDF đã sửa đổi cho rô bốt của tôi được đính kèm vào bước này. Về cơ bản nó tuân theo logic tương tự như phần cánh tay, tôi chỉ thêm ba liên kết mới (vuốt_base, vuốt_r và vuốt_l) và ba khớp mới (khớp5 là cố định, và khớp6, khớp7 là khớp quay vòng).
Sau khi sửa đổi tệp URDF của mình, bạn cũng cần cập nhật gói được tạo MoveIt và tệp xacro bằng cách sử dụng trợ lý thiết lập MoveIt.
Khởi chạy trợ lý thiết lập bằng lệnh sau
roslaunch moveit_setup_assistant setup_assistant.launch
Nhấp vào Chỉnh sửa Cấu hình MoveIt Hiện có và chọn thư mục có gói MoveIt của bạn.
Thêm bộ kẹp nhóm lập kế hoạch mới (với các liên kết và khớp nối cho bộ kẹp) và cũng là một bộ tạo hiệu ứng cuối. Cài đặt của tôi nằm trong ảnh chụp màn hình bên dưới. Lưu ý rằng bạn không chọn bộ giải động học cho bộ kẹp, nó không cần thiết. Tạo gói và ghi đè lên các tệp.
Chạy
catkin làm
lệnh trong không gian làm việc catkin của bạn.
Được rồi, bây giờ chúng ta có một cánh tay với một cái kẹp!
Bước 2: Xây dựng cánh tay
Như tôi đã đề cập trước khi mô hình 3D cánh tay được thực hiện bởi Juergenlessner, cảm ơn bạn vì một tác phẩm tuyệt vời. Hướng dẫn lắp ráp chi tiết có thể được tìm thấy nếu bạn làm theo liên kết.
Tôi đã phải sửa đổi hệ thống điều khiển. Tôi sử dụng Arduino Uno với lá chắn Cảm biến để điều khiển servos. Tấm chắn cảm biến giúp ích rất nhiều trong việc đơn giản hóa hệ thống dây điện và cũng giúp dễ dàng cung cấp nguồn điện bên ngoài cho Servos. Tôi sử dụng bộ đổi nguồn 12V 6A có dây thông qua mô-đun bước xuống (6V) với Tấm chắn cảm biến.
Một lưu ý về servos. Tôi sử dụng MG 996 HR servos mua từ Taobao, nhưng chất lượng thực sự tệ. Đó chắc chắn là hàng nhái giá rẻ của Trung Quốc. Cái cho khớp khuỷu tay không cung cấp đủ mô-men xoắn và thậm chí bắt đầu bốc khói khi chịu tải nặng. Tôi đã phải thay thế servo khớp khuỷu tay bằng MG 946 HR từ một nhà sản xuất có chất lượng tốt hơn.
Câu chuyện ngắn - mua Servos chất lượng. Nếu khói ma thuật thoát ra từ các Servos của bạn, hãy sử dụng các Servos tốt hơn. 6V là một điện áp rất an toàn, không tăng nó. Nó sẽ không làm tăng mô-men xoắn, nhưng có thể làm hỏng các servo.
Cách đấu dây cho servos như sau:
cơ sở 2
vai2 4 vạc1 3
khuỷu tay 6
cái kẹp 8
cổ tay 11
Hãy thoải mái thay đổi nó miễn là bạn cũng nhớ thay đổi bản phác thảo Arduino.
Sau khi bạn hoàn thành phần cứng, chúng ta hãy xem bức tranh lớn hơn!
Bước 3: Giao diện MoveIt RobotCommander
Thế bây giờ thì thế nào? Tại sao bạn vẫn cần MoveIt và ROS? Bạn không thể chỉ điều khiển cánh tay thông qua mã Arduino trực tiếp?
Có, bạn có thể.
Được rồi, bây giờ làm thế nào về việc sử dụng GUI hoặc mã Python / C ++ để cung cấp tư thế rô bốt? Arduino có thể làm được điều đó không?
Đại loại. Để làm được điều đó, bạn sẽ cần phải viết một bộ giải chuyển động học nghịch đảo sẽ tạo tư thế rô bốt (tọa độ dịch và quay trong không gian 3D) và chuyển đổi nó thành các thông báo góc chung cho các servo.
Mặc dù bạn có thể tự làm, nhưng đó là một đống việc phải làm. Vì vậy, MoveIt và ROS cung cấp một giao diện đẹp mắt cho trình giải IK (động học nghịch đảo) để thực hiện tất cả các công việc nâng cao lượng giác nặng nề cho bạn.
Câu trả lời ngắn gọn: Có, bạn có thể làm một cánh tay robot đơn giản sẽ thực hiện một bản phác thảo Arduino được mã hóa cứng để chuyển từ tư thế này sang tư thế khác. Nhưng nếu bạn muốn làm cho robot của mình thông minh hơn và thêm khả năng thị giác máy tính, MoveIt và ROS là cách để đi.
Tôi đã tạo một sơ đồ rất đơn giản giải thích cách hoạt động của khung công tác MoveIt. Trong trường hợp của chúng tôi, nó sẽ đơn giản hơn nữa, vì chúng tôi không có phản hồi từ các servo của chúng tôi và sẽ sử dụng chủ đề / Joint_states để cung cấp bộ điều khiển robot với các góc độ cho Servos. Chúng ta chỉ thiếu một thành phần là bộ điều khiển robot.
Chúng ta đang chờ đợi điều gì? Hãy viết một số bộ điều khiển robot, vì vậy robot của chúng ta sẽ… bạn biết đấy, dễ điều khiển hơn.
Bước 4: Mã Arduino cho Bộ điều khiển Robot
Trong trường hợp của chúng tôi, Arduino Uno chạy một nút ROS với rosserial sẽ là bộ điều khiển robot. Mã phác thảo Arduino được đính kèm trong bước này và cũng có sẵn trên GitHub.
Nút ROS chạy trên Arduino Uno về cơ bản đăng ký chủ đề / JointState được xuất bản trên máy tính chạy MoveIt và sau đó chuyển đổi các góc khớp từ mảng từ radian sang độ và chuyển chúng sang servos bằng cách sử dụng thư viện Servo.h tiêu chuẩn.
Giải pháp này hơi khó hiểu và không giống như cách nó được thực hiện với các robot công nghiệp. Tốt nhất là bạn nên xuất bản quỹ đạo chuyển động trên chủ đề / FollowJointState và sau đó nhận phản hồi về chủ đề / JointState. Nhưng trong tay chúng tôi, các servos sở thích không thể cung cấp phản hồi, vì vậy chúng tôi sẽ chỉ đăng ký trực tiếp chủ đề / JointState, được xuất bản bởi nút FakeRobotController. Về cơ bản, chúng ta sẽ giả định rằng bất kỳ góc độ nào mà chúng ta đã truyền tới servos đều được thực thi một cách lý tưởng.
Để biết thêm thông tin về cách hoạt động của rosserial, bạn có thể tham khảo các hướng dẫn sau
wiki.ros.org/rosserial_arduino/Tutorials
Sau khi tải bản phác thảo lên Arduino Uno, bạn sẽ cần kết nối nó bằng cáp nối tiếp với máy tính đang chạy cài đặt ROS của mình.
Để hiển thị toàn bộ hệ thống, hãy thực hiện các lệnh sau
roslaunch my_arm_xacro demo.launch rviz_tutorial: = true
sudo chmod -R 777 / dev / ttyUSB0
rosrun rosserial_python serial_node.py _port: = / dev / ttyUSB0 _baud: = 115200
Giờ đây, bạn có thể sử dụng các điểm đánh dấu tương tác trong RVIZ để di chuyển cánh tay robot đến một tư thế và sau đó nhấn Plan and Execute để nó thực sự di chuyển vào vị trí.
Ảo thuật!
Bây giờ chúng tôi đã sẵn sàng để viết mã Python cho thử nghiệm đoạn đường nối của chúng tôi. Chà, gần như…
Bước 5: (Tùy chọn) Tạo trình cắm IKfast
Theo mặc định, MoveIt đề xuất sử dụng bộ giải động học KDL, công cụ này không thực sự hoạt động với ít hơn 6 nhánh DOF. Nếu bạn theo dõi chặt chẽ hướng dẫn này thì bạn sẽ nhận thấy rằng mô hình cánh tay trong RVIZ không thể thực hiện một số tư thế cần được hỗ trợ bởi cấu hình cánh tay.
Giải pháp được đề xuất là tạo bộ giải động học tùy chỉnh bằng OpenRave. Nó không khó lắm, nhưng bạn sẽ phải xây dựng nó và nó phụ thuộc từ nguồn hoặc sử dụng bộ chứa docker, tùy theo cách nào bạn thích.
Quy trình này được ghi lại rất đầy đủ trong hướng dẫn này. Nó được xác nhận là hoạt động trên máy ảo chạy Ubuntu 16.04 và ROS Kinetic.
Tôi đã sử dụng lệnh sau để tạo bộ giải
openrave.py --database inversekinearies --robot = arm.xml --iktype = translate3d --iktests = 1000
và sau đó chạy
rosrun moveit_kinearies create_ikfast_moveit_plugin.py test_robot arm my_arm_xacro ikfast0x1000004a. Translation3D.0_1_2_f3.cpp
để tạo trình cắm MoveIt IKfast.
Toàn bộ thủ tục hơi tốn thời gian, nhưng không quá khó nếu bạn làm theo hướng dẫn chặt chẽ. Nếu bạn có thắc mắc về phần này, vui lòng liên hệ với tôi trong phần bình luận hoặc PM.
Bước 6: Thử nghiệm Ramp
Bây giờ chúng tôi đã sẵn sàng để thử kiểm tra đoạn đường nối, mà chúng tôi sẽ thực thi bằng cách sử dụng API ROS MoveIt Python.
Mã Python được đính kèm với bước này và cũng có sẵn trên kho lưu trữ github. Nếu bạn không có đoạn đường nối hoặc muốn thử một bài kiểm tra khác, bạn sẽ cần thay đổi các tư thế robot trong mã. Đối với lần thực thi đầu tiên đó
rostopic echo / rviz_moveit_motion_planning_display / robot_interaction_interactive_marker_topic / feedback
trong thiết bị đầu cuối khi đã chạy RVIZ và MoveIt. Sau đó di chuyển robot với các điểm đánh dấu tương tác đến vị trí mong muốn. Các giá trị vị trí và hướng sẽ được hiển thị trong thiết bị đầu cuối. Chỉ cần sao chép chúng sang mã Python.
Để thực hiện chạy thử nghiệm đoạn đường nối
rosrun my_arm_xacro pick / pick_2.py
với RVIZ và nút rosserial đã chạy.
Hãy theo dõi phần thứ ba của bài viết, nơi tôi sẽ sử dụng camera âm thanh nổi để phát hiện đối tượng và thực hiện đường ống chọn và đặt cho các đối tượng đơn giản!
Đề xuất:
Điều khiển Cánh tay Robot bằng TLV493D, Cần điều khiển và Arduino: 3 bước
Điều khiển Cánh tay Robot Với TLV493D, Cần điều khiển và, Arduino: Một bộ điều khiển thay thế cho robot của bạn với cảm biến TLV493D, một cảm biến từ tính với 3 bậc tự do (x, y, z) với những thứ này, bạn có thể điều khiển các dự án mới của mình với giao tiếp I2C trên bộ vi điều khiển và bảng điện tử mà Bast P
Điều khiển bằng cử chỉ đơn giản - Điều khiển đồ chơi RC của bạn bằng chuyển động của cánh tay: 4 bước (có hình ảnh)
Điều khiển bằng cử chỉ đơn giản - Điều khiển đồ chơi RC của bạn bằng chuyển động của cánh tay: Chào mừng bạn đến với 'ible' # 45 của tôi. Cách đây một thời gian, tôi đã tạo một phiên bản RC hoàn chỉnh của BB8 bằng cách sử dụng các phần Lego Star Wars … https://www.instructables.com/id/Whats-Inside-My-R…Khi tôi thấy nó thú vị như thế nào Force Band do Sphero tạo ra, tôi nghĩ: " Ok, tôi c
Làm thế nào để điều khiển Cánh tay robot cỡ lớn công suất cao 4dof với Điều khiển từ xa Arduino và Ps2 ?: 4 bước
Làm thế nào để điều khiển cánh tay robot kích thước lớn công suất cao 4dof với điều khiển từ xa Arduino và Ps2?: Bộ này sử dụng động cơ công suất cao mg996, nó cần dòng điện cao, chúng tôi đã kiểm tra rất nhiều nguồn điện đầu vào. Chỉ có bộ chuyển đổi 5v 6a mới hoạt động. Và Bảng arduino cũng hoạt động trên cánh tay robot 6dof.end: viết mua SINONING Một cửa hàng đồ chơi tự làm
ESP8266 RGB LED STRIP Điều khiển WIFI - NODEMCU làm điều khiển từ xa hồng ngoại cho dải đèn Led được điều khiển qua Wi-Fi - Điều khiển điện thoại thông minh RGB LED STRIP: 4 bước
ESP8266 RGB LED STRIP Điều khiển WIFI | NODEMCU làm điều khiển từ xa hồng ngoại cho dải đèn Led được điều khiển qua Wi-Fi | Điều khiển bằng điện thoại thông minh RGB LED STRIP: Xin chào các bạn trong hướng dẫn này, chúng ta sẽ học cách sử dụng gật đầu hoặc esp8266 làm điều khiển từ xa IR để điều khiển dải LED RGB và Nodemcu sẽ được điều khiển bằng điện thoại thông minh qua wifi. Vì vậy, về cơ bản bạn có thể điều khiển DÂY CHUYỀN LED RGB bằng điện thoại thông minh của mình
Điều khiển cánh tay robot với Zio bằng bộ điều khiển PS2: 4 bước
Điều khiển cánh tay robot bằng Zio bằng bộ điều khiển PS2: Bài đăng trên blog này là một phần của Series Zio Robotics. Giới thiệu Đây là phần cuối cùng của bài đăng 'Điều khiển cánh tay robot bằng Zio'. Trong hướng dẫn này, chúng tôi sẽ thêm một bộ phận khác vào Cánh tay robot của chúng tôi. Các hướng dẫn trước đây không bao gồm cơ sở cho