На второй день интенсива был запланирован еще один топик – ROS. Но в связи с большим объемом работ данная тема была перенесена на домашнее изучение. ROS (Robot Operating System) – это система для написания ПО для роботов. Т.е. с помощью ROS мы будем разрабатывать пакеты (или прикладное ПО) для кибер-физических систем.
Покажем, как работает ROS на примере черепашки (turlesim).
Для удобства ставим терминальный мультиплексор tmux. Подробнее как тут.
Далее, чтобы начать работать с ROS, запускаем roscore.
В новом терминале запускаем ноду turtlesim:
Пробуем поуправлять черепашкой вручную. Для этого в новом терминале запускаем turtle_teleop_key и с помощью стрелок на клавиатуре двигаем черепашку:
Далее устанавливаем динамический граф того, что происходит в системе через rqt_graph:
Чтобы «послушать» данные, опубликованные в топике /turtle1/cmd_vel, используем rostopic echo.
Переходим в терминал turtle_teleop_key. На левой части консоли видим результаты вывода команды rostopic echo, в правой части - управляем черепашкой с помощью стрелочек:
Возвращаемся к rqt_graph, обновляем и видим, что наша нода, вызванная командой rostopic echo, теперь тоже подписана на топик /turtle1/cmd_vel:
Переходим ROS messages. Коммуникация между нодами происходит посредством обмена сообщениями между publisher (в нашем случае turtle_teleop_key) и subscriber (в нашем случае turtlesim_node). Для коммуникации необходимо, чтобы сообщения имели одинаковый тип. Это означает, что тип топика определяется типом сообщения, опубликованного в нем. Чтобы определить тип сообщения используем rostopic type.
Попробуем опубликовать сообщение через rostopic pub /turtle/cmd_vel:
Чтобы посмотреть данные, опубликованные turtlesim, используем rostopic echo /turtle1/pose:
Далее мы можем посмотреть эти данные в виде графика с помощью rqt_plot:
В появившемся окне rqt_plot можно ввести /turtle1/pose/x и /turtle1/pose/y, после чего будет построен график.
Что дальше?
Следующим этапом будем работать над симуляцией умного города - чат Робономики.