- install.sh - прописываются символические ссылки из папки проекта в папку с исхдоными кодами решений ROS (обычно catkin_ws)
- run.sh - запуск решения
rostopic pub -1 /cmd_vel geometry_msgs/Twist -- '[1.0, 0.0, 0.0]' '[0.0, 0.0, 0.0]'
Телеуправление роботом можно осуществить с использованием библиотеки teleop_twist_keyboard.
Для запуска перемещения робота используется топик 'cmd_vel'. Сообщения передаются в формате Twist, имеющим два свойства linear и angular с типом Vector3, соответствующие линейной и угловой скорости.
Т.к. используется робот с обычной автомобильной кинематикой, то можно устанавливать свойство x для линейной скорости и свойство z для угловой. Значения для linear.x и angular.z должны быть в интервале [-1;1]:
- -1 для линейной скорости - это движение назад с максимальной скоростью, ограниченной программными средствами (~9 км/ч);
- 1 для линейной скорости - движение вперед с максимальной скоростью;
- 0 для линейной скорости - остановка робота;
- -1 для угловой скорости - поворот колес на максимально допустимый угол вправо;
- 1 для угловой скорости - поворот колес на максимально допустимый угол влево;
- 0 для угловой скорости - колеса направлены вдоль оси робота (движение вперед).
Пример публикации сообщений типа Twist для python и для C++. Необходимо помнить про названия топиков (в текущем решении это 'cmd_vel').
Изображения с камеры публикуются в формате Image в два топика: image_top и image_bottom:
- image_top это изображение с камеры, которая "смотрит" на дорожные знаки и светофор.
- image_bottom это изображение с камеры, которая "смотрит" на линии дорожной разметки.
Для преобразования сообщения Image в тип изображения OpenCV используется библиотка cv_bridge. Ее особенность в том, что она не всегда стабильно работает на python3, при этом на python2 проблем не возникает. Версии python конкретного файла можно указывать в заголовке каждого python скрипта (shebang):
Python2:
#!/usr/bin/python
# -*- coding: utf-8 -*-
Python3:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
На роботе предусмотрено две кнопки: зеленая для подачи команды на старт выполнения роботом задания и красная для экстренной остановки робота.
Участникам понадобится только зеленая кнопка, она двухпозиционная. При ее включении генерируется сообщение с текстом 'START' в топике 'cmd' и при ее отключении генерируется сообщение 'STOP' в этом же топике.
Робот не начнет движение ни при каких условиях, пока не нажата зеленая кнопка. Участникам соревнований необходимо предусмотреть средства для запуска своих алгоритмов при нажатии на зеленую кнопку. Пример есть в файле move_node.py.
Для того, чтобы можно было тестировать свои алгоритмы распознавания на реальных данных с робота, предлагается использовать bag файлы, хранящие запись со всех топиков робота в процессе его тестового запуска. Данный механизм реализован в библиотеке rosbag.
Тестовые rosbag файлы выкладываются тут: https://yadi.sk/d/APE45bWswA_2UA.
- 2020-08-12-09-26-15.bag.zip - тестовый проезд по корридору. Работают 2 камеры и лидар.