Объекты в ROS могут общаться через так называемые топики (topics). Можно воспринимать это как что-то вроде "чата". Если нода подписана на топик, она будет получать публикуемые в нём сообщения. С другой стороны, нода и сама может публиковать сообщения. Список доступных в данный момент топиков можно получить с помощью команды
rostopic list
Увидеть публикуемые сообщения позволяет команда
rostopic echo топик
Если у вас не запущен пример с черепахой, откройте его с помощью команд (в разных терминалах)
roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtlesim_teleop_key
После этого можно посмотреть какой-либо топик из списка rostopic list, например, координаты черепахи
rostopic echo /turtle1/pose
Команда rostopic также позволяет узнать такие характеристики как:
- rostopic info топик - описание топика;
- rostopic type топик - тип сообщений;
- rostopic hz топик - частота обновления, Гц;
- rostopic bw топик - объём передаваемых данных в единицу времени, байт/с.
Получить наглядное представление о том, кто, с кем и через какие топики общается, позволяет программа rqt_graph. Для примера с черепахой она отобразит следующий граф.
Как видно из рисунка, в данный момент активны 2 нода (teleop_turtle и turtlesim), и управление происходит посредством топика /turtle1/cmd_vel.
Сообщения (messages), которыми обмениваются ноды, представляют собой поименованные поля с заданным типом данных и напоминают то, что в языке С называют "структурой". Команда
rosmsg show тип_сообщения
позволяет отобразить формат. Например,
rosmsg show turtlesim/Color
покажет, что сообщение о цвете состоит из трёх полей (r, g, b), каждое из который представлено типом uint8. Вообще, поля могут быть элементарными типами (int8, bool, string), массивами фиксированной или переменной длины (обозначаются с помощью квадратных скобок []), а также другими сообщениями ROS.
Из консоли можно не только получать, но и публиковать сообщения, для этого служит команда
rostopic pub режим топик тип_сообщения сообщение
Например, следующая команда заставит черепаху непрерывно двигаться по кругу:
rostopic pub -r 1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'
Здесь мы посылаем сообщения с частотой раз в секунду (-r 1) в топик /turtle1/cmd_vel типа geometry_msgs/Twist. Формат сообщения представляет собой комбинацию из двух трёхэлементных векторов, один для линейной скорости, другой для угловой. Их значения указаны в кавычках. Двойная черта не обязательна, она имеет смысл в случае отрицательных чисел.
Ещё одна утилита, rqt_plot, позволяет рассматривать публикуемые данные как график от времени. Если ваша черепаха продолжает кружиться, выполните команду
rqt_plot
В графическом окне будет отображено изменение её координат по осям x и y.
Комментариев нет:
Отправить комментарий