Note: This tutorial assumes that you have completed the previous tutorials: Understanding ROS services and parameters. |
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. |
Dùng rqt_console và roslaunch
Description: Hướng dẫn dùng ROS rqt_console và rqt_logger_level để gỡ rối và roslaunch để khởi chạy nhiều nút một lúc. Nếu bạn dùng ROS fuerte hoặc bản cũ hơn thì rqt không có sẵn, xem trang này với this page dùng rx cũ hơn .Tutorial Level: BEGINNER
Next Tutorial: Using rosed
Contents
Yêu cầu cài đặt sẵn gói rqt và turtlesim
Hướng dẫn dùng cả hai gói rqt và turtlesim. Để làm theo hướng dẫn này, hãy cài cả hai gói, nếu bạn chưa có hãy chạy.
$ sudo apt-get install ros-<distro>-rqt ros-<distro>-rqt-common-plugins ros-<distro>-turtlesim
Thay thế <distro> với tên phiên bản ROS đang dùng (ví dụ. indigo, jade, kinetic).
Chú ý: bạn phải bạn có thể đã cài rqt và turtlesim thông qua hướng dẫn trước. Nếu bạn không chắc, cài đặt lại sẽ không ảnh hưởng đến gói khác.
Dùng rqt_console và rqt_logger_level
Rqt_console gắn với khung làm việc ROS (ROS's logging framework) để hiển thị đầu ra từ các nút. Rqt_logger_level cho phép chúng ta thay đổi mức độ verbosity (DEBUG, WARN, INFO, và ERROR) của các nút khi chúng chạy.a Bây giờ chúng ta hãy nhìn vào đầu ra turtlesim trong rqt_console và chuyển đổi mức logger trong rqt_logger_level khi chúng ta sử dụng turtlesim. Trước khi chúng ta bắt đầu turtlesim, trong hai thiết bị đầu cuối mới bắt đầu rqt_console và rqt_logger_level:
$ rosrun rqt_console rqt_console
$ rosrun rqt_logger_level rqt_logger_level
Bạn sẽ thấy hai cửa sổ mở ra.
Hãy bắt đầu turtlesim trong một terminal:
$ rosrun turtlesim turtlesim_node
Mặc định logger level là INFO bạn sẽ thấy bất cứ thông tin turtlesim xuất bản khi bắt đầu, trông giống như sau:
Bây giờ hãy thay đổi mức logger thành Warn bằng cách làm mới các nút trong cửa sổ rqt_logger_level và chọn Warn như hình dưới đây:
Bây giờ chúng ta hãy chạy turtle vào tường và xem những gì được hiển thị trong rqt_console:
For ROS Hydro and later,
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 0.0}}'
For ROS Groovy and earlier,
rostopic pub /turtle1/command_velocity turtlesim/Velocity -r 1 -- 2.0 0.0
Chý ý về logger levels
Thứ tự được ưu tiên theo thứ tự sau:
Fatal Error Warn Info Debug
Fatal có độ ưu tiên cao nhất và Debug có mức thấp nhất. Bằng cách thiết lập mức logger, bạn sẽ nhận được tất cả các tin nhắn có mức độ ưu tiên đó hoặc cao hơn. Ví dụ, bằng cách thiết lập mức độ để Warn, bạn sẽ nhận được tất cả các thông báo cảnh báo, lỗi, và Fatal.
Hãy Ctrl-C turtlesim và chúng ta hãy sử dụng Roslaunch để đưa ra nhiều nút turtle và một nút bắt chước để làm cho một con turtle bắt chước một con turtle khác:
Dùngroslaunch
roslaunch bắt đầu một nút như định nghĩa trong tập tin launch.
Dùng:
$ roslaunch [package] [filename.launch]
First go to the beginner_tutorials package we created and built earlier:
$ roscd beginner_tutorials
Nếu roscd thông báo giống như roscd: Không tìm thấy gói (node/stack) 'beginner_tutorials' , bạn cần thiết đặt mã nguồn trong tập tin môi trường giống như trong cuối hướng dẫn create_a_workspace :
$ cd ~/catkin_ws $ source devel/setup.bash $ roscd beginner_tutorials
Tạo một thư mục launch:
$ mkdir launch $ cd launch
- LƯU Ý: Thư mục lưu trữ các tệp khởi chạy không nhất thiết phải được đặt tên là khởi chạy. Trong thực tế, bạn thậm chí không cần phải lưu trữ chúng trong một thư mục. Lệnh roslaunch tự động tìm kiếm gói đã được thông qua và phát hiện các tệp khởi chạy có sẵn. Tuy nhiên, đặt tên thư mục launch là một thực hành tốt.
Tập tin Launch
Bây giờ chúng ta hãy tạo một tệp launch tên là turtlemimic.launch và với các dòng sau:
1 <launch>
2
3 <group ns="turtlesim1">
4 <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
5 </group>
6
7 <group ns="turtlesim2">
8 <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
9 </group>
10
11 <node pkg="turtlesim" name="mimic" type="mimic">
12 <remap from="input" to="turtlesim1/turtle1"/>
13 <remap from="output" to="turtlesim2/turtle1"/>
14 </node>
15
16 </launch>
Gải thích về tập tin Launch
Bây giờ, phân tích tập tin xml. Error: No code_block found Đây là nhãn bắt đầu tập tin launch, như vậy tập tin sẽ được nhận diện nhiư là tập tin launch.
Error: No code_block found Ở đây sẽ bắt đầu hai nhóm với một nhãn namespace của turtlesim1 và turtlesim2 với một nút turtlesim với một tên sim. Điều này cho phép khởi chạy hai mô phỏng với tên khác nhau.
Error: No code_block found Ở đây chúng ta bắt đầu nút bắt chước với các chủ đề đầu vào và đầu ra đổi tên thành turtlesim1 và turtlesim2. Việc đổi tên này sẽ làm cho turtle 2 bắt chước turtle1.
Error: No code_block found Đóng lại xml tag cho tập tin launch.
roslaunching
Bây giờ chúng ta hãy kích hoạt tập tin khởi chạy:
$ roslaunch beginner_tutorials turtlemimic.launch
Hai turtlesims sẽ bắt đầu và trong một terminal mới gưởi lệnh rostopic:
For ROS Hydro and later,
$ rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'
For ROS Groovy and earlier,
$ rostopic pub /turtlesim1/turtle1/command_velocity turtlesim/Velocity -r 1 -- 2.0 -1.8
Bạn sẽ thấy hai turtlesims bắt đầu di chuyển ngay cả khi lệnh publish chỉ được gửi đến turtlesim1.
Chúng ta có thể dùng rqt_graph để hiểu rõ hơn những gì launch đã thực hiện . Chạy rqt's cửa sổ chính và chọn rqt_graph:
$ rqt
Hoặc đơn giản:
$ rqt_graph
Bây giờ bạn đã thành công trong việc sử dụng rqt_console và roslaunch, chúng ta hãy tìm hiểu về các tùy chọn biên tập cho ROS editor options for ROS. Bạn có thể Ctrl-C tất cả các turtlesims của bạn, vì bạn sẽ không cần chúng cho các hướng dẫn tiếp theo.