#################################### ##FILL ME IN #################################### ## links to any required tutorials ## note.0= [[ROS/Tutorials/UnderstandingServicesParams|Understanding ROS services and parameters]] ## descriptive title for the tutorial ## title = Using rqt_console and roslaunch ## multi-line description to be displayed in search ## description = This tutorial introduces ROS using [[rqt_console]] and [[rqt_logger_level]] for debugging and [[roslaunch]] for starting many nodes at once. If you use `ROS fuerte` or ealier distros where [[rqt]] isn't fully available, please see this page with [[ROS/Tutorials/UsingRxconsoleRoslaunch|this page]] that uses old `rx` based tools. ## the next tutorial description ## next = ## links to next tutorial ## next.0.link= [[ROS/Tutorials/UsingRosEd|Using rosed]] ## next.1.link= ## what level user is this tutorial for ## level= BeginnerCategory #################################### <> <> == Prerequisites rqt and turtlesim package == The tutorial uses both the {{{rqt}}} and {{{turtlesim}}} packages. To do this tutorial, please install both packages, if you have not yet done so. {{{ $ sudo apt-get install ros--rqt ros--rqt-common-plugins ros--turtlesim }}} Replace with the name of your [[Distributions |ROS distribution]] (e.g. indigo, jade, kinetic, lunar...). '''NOTE:''' you may have already built rqt and turtlesim for one of the previous tutorials. If you are not sure, installing them again will not hurt anything. == Using rqt_console and rqt_logger_level == `rqt_console` attaches to ROS's logging framework to display output from nodes. `rqt_logger_level` allows us to change the verbosity level (DEBUG, WARN, INFO, and ERROR) of nodes as they run. Now let's look at the turtlesim output in `rqt_console` and switch logger levels in `rqt_logger_level` as we use turtlesim. Before we start the turtlesim, '''in two new terminals''' start `rqt_console` and `rqt_logger_level`: {{{ $ rosrun rqt_console rqt_console }}} {{{ $ rosrun rqt_logger_level rqt_logger_level }}} You will see two windows popup: {{attachment:rqt_console(start).png|rqt_console(start).png}} {{attachment:rqt_logger_level.png}} Now let's start turtlesim in a '''new terminal''': {{{ $ rosrun turtlesim turtlesim_node }}} Since the default logger level is INFO you will see any info that the turtlesim publishes when it starts up, which should look like: {{attachment:rqt_console(turtlesimstart).png|rqt_console(turtlesimstart).png}} Now let's change the logger level to Warn by refreshing the nodes in the rqt_logger_level window and selecting Warn as shown below: {{attachment:rqt_logger_level(error).png|rqt_logger_level(error).png}} Now let's run our turtle into the wall and see what is displayed in our 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 }}} {{attachment:rqt_console(turtlesimerror).png|rqt_console(turtlesimerror).png}} === Quick Note about logger levels === Logging levels are prioritized in the following order: {{{ Fatal Error Warn Info Debug }}} `Fatal` has the highest priority and `Debug` has the lowest. By setting the logger level, you will get all messages of that priority level or higher. For example, by setting the level to `Warn`, you will get all `Warn`, `Error`, and `Fatal` logging messages. Let's `Ctrl-C` our turtlesim and let's use `roslaunch` to bring up multiple turtlesim nodes and a mimicking node to cause one turtlesim to mimic another: === Using roslaunch === `roslaunch` starts nodes as defined in a launch file. Usage: {{{ $ roslaunch [package] [filename.launch] }}} First go to the `beginner_tutorials` package we [[ROS/Tutorials/CreatingPackage|created]] and [[ROS/Tutorials/BuildingPackages|built]] earlier: {{{ $ roscd beginner_tutorials }}} If `roscd` says something similar to ''roscd: No such package/stack 'beginner_tutorials' '', you will need to `source` the environment setup file like you did at the end of the [[catkin/Tutorials/create_a_workspace|create_a_workspace]] tutorial: {{{ $ cd ~/catkin_ws $ source devel/setup.bash $ roscd beginner_tutorials }}} Then let's make a launch directory: {{{ $ mkdir launch $ cd launch }}} NOTE: The directory to store launch files doesn't necessarily have to be named `launch`. In fact you don't even need to store them in a directory. `roslaunch` command automatically looks into the passed package and detects available launch files. However, this is considered good practice. === The Launch File === Now let's create a launch file called turtlemimic.launch and paste the following: {{{ #!python block=launch }}} === The Launch File Explained === Now, let's break the launch xml down. <> Here we start the launch file with the launch tag, so that the file is identified as a launch file. <> Here we start two groups with a namespace tag of turtlesim1 and turtlesim2 with a turtlesim node with a name of sim. This allows us to start two simulators without having name conflicts. <> Here we start the mimic node with the topics input and output renamed to turtlesim1 and turtlesim2. This renaming will cause turtlesim2 to mimic turtlesim1. <> This closes the xml tag for the launch file. === roslaunching === Now let's `roslaunch` the launch file: {{{ $ roslaunch beginner_tutorials turtlemimic.launch }}} Two turtlesims will start and in a '''new terminal''' send the `rostopic` command: ''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 }}} You will see the two turtlesims start moving even though the publish command is only being sent to turtlesim1. {{attachment:mimic.png}} We can also use [[rqt_graph]] to better understand what our launch file did. Run [[rqt]]'s main window and select ''Plugins > Introspection > Node Graph'': {{{ $ rqt }}} Or simply: {{{ $ rqt_graph }}} {{attachment:mimiclaunch.jpg}} Now that you have successfully used rqt_console and roslaunch, let's learn about [[ROS/Tutorials/UsingRosEd|editor options for ROS]]. You can `Ctrl-C` all your turtlesims, as you will not need them for the next tutorials. == Video Demonstration == Watch the video below to have deeper understanding of launch Files . <> ## AUTOGENERATED DO NOT DELETE ## TutorialCategory ## ROSTutorialCategory ## TutorialTurtlesim