Основы программировния морских роботов

Основы ROS

logo
smtu logo

План занятия

  • Общие сведения о ROS

  • Установка ROS2

  • Базовый пример

  • Ноды и топики

  • Консольные инструменты

  • remaping

  • Работа в симуляторе

Общие сведения о ROS

  • не ОС а framewrok

  • модульная структура (принуждает писать код лучше)

  • использует Яндекс, Starline и сотни других компаний

  • https://robots.ros.org/

  • большое сообщество разработчиков (>30к репозиториев на github)

jazzy small
robonaut

Выдающиеся модули: tf2

tf2 complex

Выдающиеся модули: movit

Выдающиеся модули: nav2

Установка ROS2

https://docs.ros.org/en/jazzy/Tutorials/Beginner-CLI-Tools.html

Базовый пример: turtlesim

$ ros2 run turtlesim turtlesim_node
$ ros2 run turtlesim turtle_teleop_key
teleop key
TurtleSim

rqt_graph

$ rqt_graph

Node, topic, publisher, subscriber

nodes2

Алан Кей (приблизительно в 1967)

Я представлял объекты как биологические клетки и/или отдельные компьютеры в сети, способные общаться только при помощи сообщений Источник

Alan Kay

Кратко:

  • message - сообщение, пакет данных определенного формата

  • topic - канал обмена message одного типа

  • publisher - тот кто отправляет сообщениями в topic

  • subscriber - тот кто читает сообщениями из topic

  • namespace - способ группировать имена node, topic для избегания конфликтов (что-то вроде папок)

Инструменты

ros2 node

$ ros2 node list
$ ros2 node info /turtlesim

ros2 topic

$ ros2 topic list
$ ros2 topic info /turtle1/cmd_vel
$ ros2 topic echo /turtle1/cmd_vel

Пример описания сообщения

Усложняем: джойстик

$ ls /dev/input/js*
$ ros2 run joy joy_node --ros-args -p dev:="/dev/input/js0"
$ ros2 topic list
$ ros2 topic info /joy
$ ros2 topic echo /joy
ps joy

Преобразуем тип данных

$ sudo apt install ros-jazzy-joy ros-jazzy-teleop-twist-joy
$ ros2 run teleop_twist_joy teleop_node
$ rqt_graph

Как есть

joy topic wrong

Как надо

joy topic right

Remaping

$ $ ros2 run teleop_twist_joy teleop_node --ros-args \
  --remap cmd_vel:=/turtle1/cmd_vel \
  -p axis_linear.x:=4 -p axis_angular.yaw:=3 \
  -p scale_linear.x:=1.0 -p scale_angular.yaw:=1.0 \
  -p require_enable_button:=false

Работаем с симулятором

Скачиваем и запускаем

https://sdb.smtu.ru/nextcloud/s/dX2Dw6kR62kKW95

Телеуправление: подготовка

Телеуправление: remap в топик /ws/twist_pilot

ros2 run turtlesim turtle_teleop_key \
  --ros-args -r /turtle1/cmd_vel:=/ws/twist_pilot

Усложняем: джойстик

$ ros2 topic list
$ ros2 run teleop_twist_joy teleop_node --ros-args --remap cmd_vel:=/ws/twist_pilot

remap: добавляем черепаху

ros2 run turtlesim turtlesim_node --ros-args -r /turtle1/cmd_vel:=/ws/twist_pilot

Смотрим rqt_graph

Сегодня я многое понял

  • Установка ROS2

  • Что такое ROS и почему он нужен?

  • Простой пример

  • Консольные инструменты

  • remaping

  • Управление симулятором

common:KyleBroflovski

Дополнительные материалы

Установка ROS2 https://docs.ros.org/en/jazzy/Installation/Ubuntu-Install-Debs.html

https://docs.ros.org/en/jazzy/Installation/Ubuntu-Install-Debs.html

Официальная справка https://docs.ros.org/en/jazzy/Tutorials/Beginner-CLI-Tools.html

https://docs.ros.org/en/jazzy/Tutorials/Beginner-CLI-Tools.html

Домашнее задание

  • установить пакет mouse_teleop (ros-jazzy-mouse-teleop)

  • установить пакет twist_stamper (ros-jazzy-twist-stamper)

  • пробросить управление от мышки к черепахе и к катамарану в симуляторе, чтобы управлять черепахой и катамараном

  • склонировать репозиторий 3 https://sdb.smtu.ru/gitlab/marinerobotics/lesson-03

  • в файле lesson_03.sh указать список команд, которые нужно ввести в различных консолях, чтобы всё заработало

  • работаем как и ранее - в своей ветке

Подсказки

hw result
ros2 run twist_stamper twist_unstamper --ros-args \
 -r cmd_vel_in:=/mouse_vel -r cmd_vel_out:=/turtle1/cmd_vel