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
и вставим в него следующее содержание:
1.3.2 Разъяснения Файла Запуска
Теперь, давайте разберём xml-код файла запуска.
Здесь мы начинаем файл запуска с тега launch, так что файл определяется как Файла Запуска.
Здесь мы создаём две группы пространств имён turtlesim1 и turtlesim2, а так же узел turtlesim с названием sim. Это позволяет нам запустить два симулятора без конфликта имен.
Здесь мы создаём подражающий узел mimic с входной и выходной Темами, переименоваными в turtlesim1 и turtlesim2. Это переименовывание приведет к тому, что turtlesim2 будет подражать turtlesim1.
Это закрывающий 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, так как на следующих уроках они нам пока не понадобятся.
Ссылки
http://www.ros.org/wiki/ROS/Tutorials/UsingRxconsoleRoslaunch