ROS - Урок 8 - Использование rxconsole и roslaunch


Содержание

1. Использование rxconsole и roslaunch

Описание: Данный урок знакомит с использованием таких полезных утилит ROS, как rxconsole и rxloggerlevel для отладки, и roslaunch для запуска нескольких узлов одновременно.

1.1 Сборка пакетов rxtools и turtlesim

На этом уроке используются два пакета: rxtools и turtlesim. Поэтому, для выполнения заданий этого урока, необходимо собрать оба пакета.

$ rosdep install rxtools turtlesim
$ rosmake rxtools turtlesim


Примечание: возможно, вы уже собирали rxtools и turtlesim на предыдущих уроках. Если вы не уверены, то новая сборка не должна им повредить.

1.2 rxconsole и rxloggerlevel

rxconsole подключается к фреймворку логирования ROS, для отображения вывода от узлов. rxloggerlevel позволяет нам менять уровень выдаваемой информации (DEBUG, WARN, INFO, и ERROR) от работающих узлов.

Теперь, давайте посмотрим на выдачу от turtlesim в rxconsole и переключение уровня в rxloggerlevel, как мы используем turtlesim. Прежде чем мы запустим turtlesim, в двух новых терминалах нужно запустить rxconsole и rxloggerlevel:
$ rxloggerlevel

$ rxconsole

Вы увидите два появившихся окна:




Теперь давайте запустим turtlesim в новом терминале:
$ rosrun turtlesim turtlesim_node


Так как, по-умолчанию, уровень логирования INFO вы увидите информационные сообщения, выдаваемые turtlesim при запуске; они выглядят приблизительно так:


Теперь, давайте изменим уровень логирования на WARN, путем обновления узлов в окне rxloggerlevel окна (кнопка «Refresh Nodes») и выбрав Warn, как показано ниже:


Теперь, давайте запустим нашу черепаху в стену и посмотрим, что отображается в нашей rxconsole:
rostopic pub turtle1/command_velocity turtlesim/Velocity -r 1 -- 2.0  0.0



1.2.1 Заметка об уровнях логгированя (logger levels)

Приоритеты уровней логгирования располагаются в следующем порядке:
Fatal
Error
Warn
Info
Debug


Сообщения о фатальных ошибках (Fatal) имеют самый высокий приоритет, а отладочные (Debug), соответственно, самый низкий. Установив уровень логгирования, вы получаете все сообщения, заданного уровня приоритета или выше. Например, установив уровень Warn, вы получите все сообщения типа Warn, Error, и Fatal.

Нажмём Ctrl-C для остановки нашего turtlesim и используем roslaunch для запуска нескольких узлов turtlesim и подражающего узла, чтобы один turtlesim подражал другим:

1.3 roslaunch

roslaunch запускает узлы, которые задаются в файле запуска (launch file).

Использование:
$ roslaunch [package] [filename.launch]


Прежде всего, мы должны создать файл запуска (launch file). Перейдём в наш тестовый пакет beginner_tutorials и создадим каталог запуска, в котором создим файл запуска:
$ roscd beginner_tutorials 
$ mkdir launch
$ cd launch


Если команде roscd не удаётся найти директорию пакета beginner_tutorials, значит вы забыли установить переменную ROS_PACKAGE_PATH в своём терминале. Тогда последовательность команд будет выглядеть следующим образом:
$ export ROS_PACKAGE_PATH=~/ros_tutorials:$ROS_PACKAGE_PATH
$ roscd beginner_tutorials 
$ mkdir launch
$ cd launch


1.3.1 Файл Запуска (Launch File)

Теперь, давайте создадим файл запуска с именем turtlemimic.launch
$ touch turtlemimic.launch


и вставим в него следующее содержание:
<launch>

  <group ns="turtlesim1">
    <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
  </group>

  <group ns="turtlesim2">
    <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
  </group>

  <node pkg="turtlesim" name="mimic" type="mimic">
    <remap from="input" to="turtlesim1/turtle1"/>
    <remap from="output" to="turtlesim2/turtle1"/>
  </node>

</launch>


1.3.2 Разъяснения Файла Запуска

Теперь, давайте разберём xml-код файла запуска.

<launch>


Здесь мы начинаем файл запуска с тега launch, так что файл определяется как Файла Запуска.
<group ns="turtlesim1">
    <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
  </group>

  <group ns="turtlesim2">
    <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
  </group>


Здесь мы создаём две группы пространств имён turtlesim1 и turtlesim2, а так же узел turtlesim с названием sim. Это позволяет нам запустить два симулятора без конфликта имен.

<node pkg="turtlesim" name="mimic" type="mimic">
    <remap from="input" to="turtlesim1/turtle1"/>
    <remap from="output" to="turtlesim2/turtle1"/>
  </node>


Здесь мы создаём подражающий узел mimic с входной и выходной Темами, переименоваными в turtlesim1 и turtlesim2. Это переименовывание приведет к тому, что turtlesim2 будет подражать turtlesim1.

</launch>


Это закрывающий xml-тег для файла запуска.

1.3.3 roslaunching

Теперь, давайте запустим получившийся файл запуска с помощью roslaunch:
$ roslaunch beginner_tutorials turtlemimic.launch


Запустятся два окна turtlesim, в новом терминале выполним команду:
$ rostopic pub turtlesim1/turtle1/command_velocity turtlesim/Velocity -r 1 -- 2.0  -1.8


Вы увидите что обе черепахи начали движение, хотя команда была опубликована только для turtlesim1.


Воспользуемся rxgraph, чтобы лучше понять, что сделал наш файл запуска:
$ rxgraph




Теперь, когда вы успешно использовали rxconsole и roslaunch, давайте узнаем о опциях редактора ROS. Вы можете остановить все ваши turtlesim с помощью Crtl-C, так как на следующих уроках они нам пока не понадобятся.

Ссылки:
www.ros.org/wiki/ROS/Tutorials/UsingRxconsoleRoslaunch
  • 0
  • 1 октября 2011, 13:17
  • noonv

Комментарии (0)

RSS свернуть / развернуть

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.