[Documentation] [TitleIndex] [WordIndex

Note: This tutorial assumes that you have completed the previous tutorials: building a ROS package.
(!) Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.

Tìm hiểu về nút ROS

Description: Hướng dẫn giới thiệu về khái niệm đồ thị trong ROS và thảo luận dùng công cụ dòng lệnh roscore, rosnode, and rosrun.

Tutorial Level: BEGINNER

Next Tutorial: Tìm hiểu về ROS topics

Chuẩn bị

Trong hướng dẫn này, chúng ta sẽ sử dụng trình giả lập, hãy cài đặt nó bằng cách sử dụng

$ sudo apt-get install ros-<distro>-ros-tutorials

Thay thế '<distro>' bằng tên của phiên bản ROS của bạn (ví dụ. indigo, jade, kinetic)

Tổng quan về khái niệm

Nút

Một nút thực ra là một tập tin thực thi trong một gói ROS. Các nút ROS sử dụng thư viện bởi ROS để giao tiếp với các nút khác. Các nút có thể xuất bản hoặc đăng ký một chủ đề. Các nút cũng có thể cung cấp hoặc sử dụng một trình phục vụ.

Thư viện Client

Thư viện ROS client cho phép nút được viết trong các ngôn ngữ khác nhau để giao tiếp:

roscore

roscore là nút đầu tiên bạn phải chạy khi dùng ROS.

Thử chạy:

$ roscore

Bạn sẽ thấy giống như sau:

Nếu roscore không khởi tạo, bạn có thể có vấn đề về cấu hình mạng. Xem Thiết đặt mạng - Cấu hình máy

Nếu roscore không khởi tạo và gửi thông báo thiếu quyền truy cập, có lẽ thư mục ~ / .ros sở hữu bởi root, thay đổi quyền sở hữu thư mục đó bằng:

$ sudo chown -R <your_username> ~/.ros

Dùng rosnode

Mở một terminal mới, và hãy sử dụng rosnode để xem những gì roscore đã thực thi ...

Chú ý: Khi mở một thiết bị đầu cuối mới, môi trường của bạn được đặt lại và tập tin ~ / .bashrc của bạn được lấy ra. Nếu bạn gặp rắc rối khi chạy các lệnh như rosnode, bạn có thể cần thêm một số tập tin thiết lập môi trường vào ~ / .bashrc của bạn.

Rosnode hiển thị thông tin về các nút ROS hiện đang chạy. Lệnh rosnode list liệt kê các nút đang hoạt động này:

$ rosnode list

Điều này cho thấy rằng chỉ có một nút chạy: rosout. Nút này luôn luôn chạy khi nó thu thập và ghi lại thông tin gỡ lỗi của các nút. Lệnh rosnode info trả về thông tin về một nút cụ thể.

$ rosnode info /rosout

Điều này cho chúng ta biết thêm một số thông tin về rosout, chẳng hạn như nó xuất bản / rosout_agg.

Bây giờ xem thêm những nút khác. Chúng ta sẽ dùng rosrun để chạy những nút khác.

Dùng rosrun

Rosrun cho phép bạn sử dụng tên gói để chạy trực tiếp một nút bên trong một gói (mà không cần phải biết đường dẫn gói).

Dùng:

$ rosrun [package_name] [node_name]

Bay giờ chúng ta có thể chạy nút turtlesim_node trong gói turtlesim.

Sau đó, trong một terminal mới:

$ rosrun turtlesim turtlesim_node

Bạn sẽ thấy cửa sổ turtlesim:

Chú ý: Cửa sổ turtle có thể trông không giống nnư trên máy bạn. Điều này là do có nhiều loại many types of turtle !

Trong một terminal mới:

$ rosnode list

Bạn sẽ thấy giống như sau :

Một chức năng mạnh mẽ trong ROS đó là bạn có thể đặt tên lại từ command-line.

Đóng cửa sổ turtlesim để dừng nút (hoặc quay trở lại terminal rosrun turtlesim và sử dụng ctrl-C). Bây giờ chúng ta hãy chạy lại nó, nhưng lần này sử dụng Remapping Argument để thay đổi tên của nút:

$ rosrun turtlesim turtlesim_node __name:=my_turtle

Nếu ta quay trở lại dùng rosnode list:

$ rosnode list

Chú ý : Nếu bạn vẫn thấy /turtlesim trong danh sách, có thể là bạn đã dừng nút trong terminal sử dụng ctrl-C thay vì đóng cửa sổ, hoặc bạn không có biến môi trường $ ROS_HOSTNAME được định nghĩa như mô tả trong Cài đặt Mạng - Cấu hình Máy đơn. Bạn có thể thử xóa danh sách rosnode với: $ rosnode cleanup

Chúng ta sẽ thấy nút mới / my_turtle. Hãy sử dụng một lệnh rosnode khác, ping, để kiểm tra rằng nó đã được chạy:

$ rosnode ping my_turtle

Review

Tổng kết lại:

Bây giờ bạn đã hiểu cách các nút ROS hoạt động, hãy xem how ROS topics work. Bạn cũng có thể nhấn Ctrl-C để dừng turtlesim_node.


2019-10-12 13:16