Mục lục:
- Quân nhu
- Bước 1: Thiết lập mọi thứ
- Bước 2: Hiểu cách hoạt động của bộ điều khiển
- Bước 3: Tạo giao diện ROS-MATLAB
- Bước 4: Lấy địa chỉ IP
- Bước 5: Tạo GUI cho Bộ điều khiển
- Bước 6: Lập trình các nút có thể chỉnh sửa GUI
- Bước 7: Lập trình các nút đẩy GUI
- Bước 8: Thiết lập cấu hình mạng trên ROS PC (Linux)
- Bước 9: Chạy bộ điều khiển
Video: Bộ điều khiển ROS Robotic dựa trên Matlab: 9 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:32
Kể từ khi tôi còn là một đứa trẻ, tôi đã luôn mơ ước được trở thành Người Sắt và tôi vẫn làm như vậy. Iron Man là một trong những nhân vật hoàn toàn có thể xảy ra trên thực tế và đơn giản là tôi khao khát trở thành Iron Man vào một ngày nào đó ngay cả khi mọi người cười nhạo tôi hoặc nói rằng điều đó là không thể bởi vì "điều đó chỉ là không thể cho đến khi ai đó làm được điều đó" -Arnold Schwarzenegger.
ROS là một khuôn khổ mới nổi được sử dụng để phát triển các hệ thống rô bốt phức tạp. Các ứng dụng của nó bao gồm: Hệ thống lắp ráp tự động, Điện thoại, Cánh tay giả và Máy móc hạng nặng của ngành công nghiệp.
Các nhà nghiên cứu và kỹ sư tận dụng ROS để phát triển các nguyên mẫu, trong khi các nhà cung cấp khác nhau sử dụng nó để tạo ra sản phẩm của họ. Sử dụng MATLAB để tạo liên kết giao diện với ROS là một cách tiếp cận mới có thể giúp các nhà nghiên cứu, kỹ sư và nhà cung cấp phát triển các giải pháp mạnh mẽ hơn.
Vì vậy, hướng dẫn này là về cách tạo Bộ điều khiển ROS Robotic dựa trên Matlab, đây sẽ là một trong số rất ít các hướng dẫn về điều này trên mạng và trong số rất ít các hướng dẫn ROS. Mục tiêu của dự án này là thiết kế một bộ điều khiển có thể điều khiển bất kỳ ROS-rô bốt nào được kết nối với mạng của bạn. Vậy hãy bắt đầu!
tín dụng chỉnh sửa video: Ammar Akher, tại [email protected]
Quân nhu
Các thành phần sau được yêu cầu cho dự án:
(1) ROS PC / Robot
(2) Bộ định tuyến
(3) PC với MATLAB (phiên bản: 2014 trở lên)
Bước 1: Thiết lập mọi thứ
Đối với hướng dẫn này, tôi đang sử dụng Ubuntu 16.04 cho máy tính linux và ros-kinetic của mình, vì vậy để tránh nhầm lẫn, tôi khuyên bạn nên sử dụng ros kinetic và ubuntu 16.04 vì nó hỗ trợ tốt nhất cho ros-kinetic. Để biết thêm thông tin về cách cài đặt ros kinetic, hãy truy cập https://wiki.ros.org/kinetic/Installation/Ubuntu. Đối với MATLAB, bạn có thể mua giấy phép hoặc tải xuống phiên bản đường mòn từ đây.
Bước 2: Hiểu cách hoạt động của bộ điều khiển
Một máy tính chạy bộ điều khiển robot trên MATLAB. Bộ điều khiển lấy địa chỉ IP và cổng của máy tính / rô bốt ros.
Chủ đề ros được sử dụng để giao tiếp giữa bộ điều khiển và máy tính / rô bốt ros, chủ đề này cũng được bộ điều khiển lấy làm đầu vào. Modem được yêu cầu để tạo một mạng LAN (mạng cục bộ) và là thứ gán địa chỉ Ip cho tất cả các thiết bị được kết nối với mạng của nó. Do đó máy tính / rô bốt ros và máy tính chạy bộ điều khiển phải được kết nối với cùng một mạng (tức là mạng của modem). Vì vậy, bây giờ bạn đã biết "cách nó hoạt động", hãy chuyển sang "cách nó được xây dựng"…
Bước 3: Tạo giao diện ROS-MATLAB
Giao diện ROS-MATLABInterface là một giao diện hữu ích cho các nhà nghiên cứu và sinh viên để tạo mẫu các thuật toán rô bốt của họ trong MATLAB và thử nghiệm nó trên rô bốt tương thích với ROS. rô bốt hỗ trợ ROS hoặc trong các trình mô phỏng rô bốt như Gazebo và V-REP.
Để cài đặt hộp công cụ hệ thống rô bốt trên MATLAB của bạn, chỉ cần đi tới tùy chọn Tiện ích bổ sung trên thanh công cụ và tìm kiếm hộp công cụ rô bốt trong trình khám phá tiện ích bổ sung. Bằng cách sử dụng hộp công cụ robot, chúng tôi có thể xuất bản hoặc đăng ký một chủ đề, chẳng hạn như nút ROS và chúng tôi có thể biến nó thành một chủ ROS. Giao diện MATLAB-ROS có hầu hết các chức năng ROS mà bạn có thể yêu cầu cho các dự án của mình.
Bước 4: Lấy địa chỉ IP
Để bộ điều khiển hoạt động, bạn bắt buộc phải biết địa chỉ ip của rô bốt / máy tính ROS của mình và máy tính chạy bộ điều khiển trên MATLAB.
Để lấy ip máy tính của bạn:
Trên Windows:
Mở dấu nhắc lệnh và nhập lệnh ipconfig và ghi lại địa chỉ IPv4
Đối với Linux:
Gõ lệnh ifconfig và ghi lại địa chỉ inet. Bây giờ bạn đã có địa chỉ ip, đã đến lúc xây dựng GUI…
Bước 5: Tạo GUI cho Bộ điều khiển
Để tạo GUI, hãy mở MATLAB và nhập hướng dẫn vào cửa sổ lệnh. Điều này sẽ mở ra ứng dụng hướng dẫn mà chúng tôi sẽ tạo GUI của mình. Bạn cũng có thể sử dụng trình thiết kế ứng dụng trên MATLAB để thiết kế GUI của mình.
Chúng tôi sẽ tạo tổng cộng 9 nút (như trong hình):
6 nút nhấn: Foward, Backward, Left, Right, Connect to Robot, Disconnect
3 nút có thể chỉnh sửa: Ros pc ip, cổng và tên chủ đề.
Các nút có thể chỉnh sửa là các nút sẽ lấy ip của máy tính ROS, cổng của nó và tên Chủ đề làm đầu vào. Tên Chủ đề là những gì mà bộ điều khiển MATLAB và rô bốt / máy tính ROS giao tiếp với nhau. Để chỉnh sửa chuỗi trên nút có thể chỉnh sửa, nhấp chuột phải vào nút >> vào thuộc tính Thanh tra >> Chuỗi và chỉnh sửa văn bản của nút.
Khi GUI của bạn hoàn tất, bạn có thể lập trình các nút. Đây là nơi mà niềm vui thực sự bắt đầu…
Bước 6: Lập trình các nút có thể chỉnh sửa GUI
GUI được lưu dưới dạng tệp.fig nhưng mã / chức năng gọi lại được lưu ở định dạng.m. Tệp.m chứa mã cho tất cả các nút của bạn. Để thêm chức năng gọi lại vào các nút của bạn, hãy nhấp chuột phải vào nút> > Xem các cuộc gọi lại >> cuộc gọi lại. Thao tác này sẽ mở tệp.m cho GUI của bạn đến nơi nút cụ thể đó được xác định.
Lệnh gọi lại đầu tiên mà chúng tôi sẽ viết mã là cho nút có thể chỉnh sửa IP ROS. Trong hàm edit1_Callback, hãy viết đoạn mã sau:
function edit1_Callback (hObject, eventdata, handle)
ros_master_ip toàn cầu
ros_master_ip = get (hObject, 'String')
Ở đây, hàm được định nghĩa là edit1_Callback, nói đến nút có thể chỉnh sửa đầu tiên. Khi chúng ta nhập địa chỉ IP từ mạng ROS vào nút có thể chỉnh sửa này, nó sẽ lưu trữ địa chỉ IP dưới dạng một chuỗi trong một biến toàn cục có tên là ros_master_ip.
Sau đó, ngay dưới _OpeningFcn (hObject, eventdata, handle, varargin) xác định như sau (xem hình):
ros_master_ip toàn cầu
global ros_master_port
teleop_topic_name toàn cầu
ros_master_ip = '192.168.1.102';
ros_master_port = '11311';
teleop_topic_name = '/ cmd_vel_mux / input / teleop';
Bạn chỉ cần mã hóa cứng toàn cầu ip ros-pc (ros_master_ip), cổng (ros_master_port) và tên Chủ đề Teleop. Điều này có nghĩa là nếu bạn để trống các nút có thể chỉnh sửa, các giá trị được xác định trước này sẽ được sử dụng khi bạn kết nối.
Lệnh gọi lại tiếp theo mà chúng ta sẽ viết mã là cho nút Cổng có thể chỉnh sửa.
Trong hàm edit2_Callback, hãy viết mã sau:
function edit2_Callback (hObject, eventdata, handle)
global ros_master_port
ros_master_port = get (hObject, 'String')
Ở đây, hàm được định nghĩa là edit2_Callback, nó đề cập đến nút có thể chỉnh sửa thứ hai. Khi chúng ta nhập cổng của máy tính / robot ros tại đây từ mạng ROS trong nút có thể chỉnh sửa này, nó sẽ lưu trữ cổng dưới dạng một chuỗi trong một biến toàn cục có tên là ros_master_port.
Tương tự, lệnh gọi lại tiếp theo mà chúng ta sẽ viết mã là cho nút có thể chỉnh sửa Tên chủ đề.
Trong hàm edit3_Callback, hãy viết đoạn mã sau:
function edit3_Callback (hObject, eventdata, handle)
teleop_topic_name toàn cầu
teleop_topic_name = get (hObject, 'String')
Tương tự như ros_master_port, điều này cũng được lưu trữ dưới dạng chuỗi trong một biến toàn cục.
Tiếp theo, chúng ta sẽ xem xét các chức năng gọi lại cho các nút nhấn…
Bước 7: Lập trình các nút đẩy GUI
Các nút nhấn mà chúng tôi đã tạo trước đây là những nút chúng tôi sẽ sử dụng để di chuyển, kết nối và ngắt kết nối robot khỏi bộ điều khiển. Các lệnh gọi lại của nút nhấn được định nghĩa như sau:
ví dụ. function pushbutton6_Callback (hObject, eventdata, handle)
Lưu ý: tùy thuộc vào thứ tự mà bạn tạo các nút nhấn, chúng sẽ được đánh số tương ứng. Do đó, hàm pushbutton6 trong tệp.m của tôi có thể là Chuyển tiếp trong khi trong tệp.m của bạn, nó có thể là Quay lại, vì vậy hãy ghi nhớ điều đó. Để biết chức năng chính xác cho nút nhấn của bạn, chỉ cần nhấp chuột phải vào >> Xem lệnh gọi lại >> lệnh gọi lại và nó sẽ mở ra chức năng cho nút nhấn của bạn nhưng đối với hướng dẫn này, tôi giả sử nó giống như của tôi.
Đối với nút Kết nối với rô bốt:
Trong hàm pushbutton6_Callback (hObject, eventdata, handle):
function pushbutton6_Callback (hObject, eventdata, handle) global ros_master_ip
ros_master_port toàn cầu
teleop_topic_name toàn cầu
robot toàn cầu
velmsg toàn cầu
ros_master_uri = strcat ('https://', ros_master_ip, ':', ros_master_port)
setenv ('ROS_MASTER_URI', ros_master_uri)
rosinit
robot = rospublisher (teleop_topic_name, 'shape_msgs / Twist');
velmsg = rosmessage (người máy);
Lệnh gọi lại này sẽ thiết lập biến ROS_MASTER_URI bằng cách nối ros_master_ip và cổng, sau đó lệnh rosinit sẽ khởi tạo kết nối. Sau khi kết nối, nó sẽ tạo một nhà xuất bản của hình học_msgs / Twist, sẽ được sử dụng để gửi tốc độ lệnh. Tên chủ đề là tên mà chúng tôi đưa ra trong hộp chỉnh sửa. Sau khi kết nối thành công, chúng ta sẽ có thể thao tác với các nút nhấn Forward, Backward, Left, Right.
Trước khi thêm callbacks vào mông đẩy Forward, Backward, chúng ta cần khởi tạo tốc độ của vận tốc tuyến tính và vận tốc góc.
Do đó bên dưới _OpeningFcn (hObject, eventdata, handle, varargin) xác định như sau (xem hình):
global left_spinVelocity global right_spinVelocity
chuyển tiếp toàn cầu
lạc hậu toàn cầu
left_spinVelocity = 2;
right_spinVelocity = -2;
forwardVelocity = 3;
lùi lại Vận tốc = -3;
Lưu ý: tất cả các vận tốc đều tính bằng rad / s
Bây giờ các biến toàn cục đã được định nghĩa, chúng ta hãy lập trình các nút chuyển động.
Đối với nút Tiến:
function pushbutton4_Callback (hObject, eventdata, handle) global velmsg
robot toàn cầu
teleop_topic_name toàn cầu
chuyển tiếp toàn cầu
velmsg. Angular. Z = 0;
velmsg. Linear. X = forwardVelocity;
gửi (rô bốt, khóa dán);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', true);
Tương tự cho nút Backward:
function pushbutton5_Callback (hObject, eventdata, handle)
velmsg toàn cầu
robot toàn cầu
lạc hậu toàn cầu
teleop_topic_name toàn cầu
velmsg. Angular. Z = 0;
velmsg. Linear. X = backVelocity;
gửi (rô bốt, khóa dán);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', true);
Tương tự cho nút bên trái: function pushbutton3_Callback (hObject, eventdata, handle)
robot vận tốc toàn cầu global left_spinVelocity
teleop_topic_name toàn cầu
velmsg. Angular. Z = left_spinVelocity;
velmsg. Linear. X = 0;
gửi (rô bốt, khóa dán);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', true);
Tương tự đối với nút bấm Bên phải:
robot toàn cầu velmsgglobal
global right_spinVelocity
teleop_topic_name toàn cầu
velmsg. Angular. Z = right_spinVelocity;
velmsg. Linear. X = 0;
gửi (rô bốt, khóa dán);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', true);
Khi tất cả các chức năng gọi lại đã được thêm và các tệp được lưu, chúng tôi có thể kiểm tra bộ điều khiển của mình.
Bước 8: Thiết lập cấu hình mạng trên ROS PC (Linux)
Chúng tôi sẽ thử nghiệm bộ điều khiển trên máy tính ros (Linux), điều này sẽ yêu cầu thiết lập cấu hình mạng. Nếu bạn cũng đang chạy bộ điều khiển trên máy tính linux, bạn cũng sẽ phải thiết lập cấu hình mạng ở đó.
Cấu hình mạng:
Mở cửa sổ đầu cuối của bạn và nhập gedit.bashrc
Khi tệp được mở, hãy thêm những thứ sau:
Cấu hình máy #Robot
xuất ROS_MASTER_URI = https:// localhost: 11311
Địa chỉ #IP của nút chính ROS
xuất ROS_HOSTNAME =
xuất ROS_IP =
echo "ROS_HOSTNAME:" $ ROS_HOSTNAME
echo "ROS_IP:" $ ROS_IP
echo "ROS_MASTER_URI:" $ ROS_MASTER_URI
Bạn phải làm theo bước này mọi lúc do việc gán IP động.
Bước 9: Chạy bộ điều khiển
Chúng tôi sẽ kiểm tra bộ điều khiển của mình trên một bot Turtle ở Gazebo.
Để cài đặt Gazebo, vui lòng tham khảo
Để cài đặt bot Turtle, vui lòng tham khảo
Mở thư mục mà bạn đã lưu các tệp.fig và.m của mình trên MATLAB và nhấn Run (như trong hình). Thao tác này sẽ mở bộ điều khiển trên PC. Trước khi nhấn kết nối, hãy đảm bảo rằng trình mô phỏng bot rùa của bạn đang hoạt động.
Để kiểm tra mô phỏng TurtleBot của bạn:
Mở Terminal trên máy tính Ros và nhập: $ roslaunch rùabot_gazebo rùabot_world.launch. Điều này sẽ mở ra một mô phỏng của Turtlebot trên PC đó. Tên chủ đề của TurtleBot là / cmd_vel_mux / input / teleop, mà chúng tôi đã cung cấp trong ứng dụng. Bot rùa của bạn sẽ bắt đầu di chuyển khi bạn nhấn Tiến lên, Lùi lại, v.v.
Để xem vận tốc tuyến tính và góc:
Mở một thiết bị đầu cuối mới và nhập lệnh: $ rostopic echo / cmd_vel_mux / input / teleop
Và bạn đã có, Bộ điều khiển ROS Robotic dựa trên Matlab của riêng bạn. Nếu bạn thích tài liệu hướng dẫn của tôi, hãy bình chọn cho nó trong Cuộc thi Tác giả Lần đầu tiên và chia sẻ nó với càng nhiều người càng tốt. Cảm ơn bạn.
Đề xuất:
Bộ điều khiển từ xa dựa trên LoRa - Điều khiển thiết bị từ khoảng cách lớn: 8 bước
Bộ điều khiển từ xa dựa trên LoRa | Điều khiển thiết bị từ khoảng cách lớn: Này, có chuyện gì vậy, các bạn! Akarsh từ CETech. Trong dự án này, chúng tôi sẽ tạo ra một điều khiển từ xa có thể được sử dụng để điều khiển nhiều loại công cụ như đèn LED, động cơ hoặc nếu chúng ta nói về cuộc sống hàng ngày của chúng ta, chúng ta có thể điều khiển thiết bị gia đình của mình
Điều khiển nhiệt độ điều khiển từ xa IR dựa trên Arduino tự động: 7 bước
Điều khiển nhiệt độ điều khiển từ xa IR dựa trên Arduino tự động: Này, có chuyện gì vậy, các bạn! Akarsh từ CETech. Bạn cảm thấy mệt mỏi khi thức dậy giữa giấc ngủ say chỉ vì nhiệt độ phòng của bạn quá thấp hoặc quá cao do điều hòa Dumb AC. Sau đó, dự án này là dành cho bạn. Trong dự án này, chúng tôi sẽ thực hiện
Bộ điều khiển trò chơi tự làm dựa trên Arduino - Bộ điều khiển trò chơi Arduino PS2 - Chơi Tekken với tự làm trò chơi Arduino: 7 bước
Bộ điều khiển trò chơi tự làm dựa trên Arduino | Bộ điều khiển trò chơi Arduino PS2 | Chơi Tekken với Bàn điều khiển Arduino tự làm: Xin chào các bạn, chơi game luôn thú vị nhưng chơi với Bộ điều khiển trò chơi tùy chỉnh tự làm của riêng bạn sẽ thú vị hơn
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
Cách chế tạo Robot điều khiển di động - Dựa trên DTMF - Không có Vi điều khiển & Lập trình - Kiểm soát từ mọi nơi trên thế giới - RoboGeeks: 15 bước
Cách chế tạo Robot điều khiển di động | Dựa trên DTMF | Không có Vi điều khiển & Lập trình | Kiểm soát từ mọi nơi trên thế giới | RoboGeeks: Muốn tạo ra một robot có thể được điều khiển từ mọi nơi trên thế giới, Hãy làm điều đó