Тема 9: Модуль Turtlebro_py
Это заключительная тема перед финальным проектом. В ней мы подробно рассмотрим все те функции модуля turtlebro_py, которых мы не касались ранее.
Модуль turtlebro_py это "обертка" над Robot Operating System (ROS), которая написана специально для нашего робота TurtleBro, чтобы скрыть сложности ROS, и при этом дать возможность попользоваться роботом всем, вне зависимости от уровня знаний Python.
Robot Operating System это мета-операционная система, управляющая роботами по всему миру. Это стандарт де-факто в коллаборативной и сервисной робототехнике. Она представляет широкие возможности для разработчиков робототехники, но слегка сложновата в освоении. Подробнее про ROS мы поговорим на наших специальных курсах по ней, а сейчас вернемся к модулю turtlebro_py.
Данный пакет представляет из себя аналог стандартного модуля turtle, который используется при обучении Python для школьников. Аналогично с модулем turtle, в котором черепашка выполняет простые команды и рисует геометрические фигуры на экране, с помощью данного пакета, учашиеся смогут управлять роботом TurtleBro (www.trurtlebro.ru), при помощи простых команд, описанных ниже. Данный пакет предполагается использовать для предварительного обучения Python и основам робототехники перед погружением в изучение Robot Operation System (www.ros.org).
Пакет входит в сборку метапакета turtlebro_extra и устанавливается автоматически при установке этого пакета. По умолчанию, данный пакет входит в нашу стандартную образ-сборку. Однако, если по какой-то причине вы хотите переустановить или обновить пакет, выполните команды (на роботе):
Установка пакета
Пакет входит в сборку метапакета turtlebro_extra и устанавливается автоматически при установке этого пакета. Для установки метапакета на роботе выполните команды:
cd ~/catkin_ws/src
git clone https://github.com/voltbro/turtlebro_extra
cd ../
catkin_make --pkg=turtlebro_extraИспользование библиотеки команд
Для работы с роботом импортируйте класс TurtleBro из библиотекyи turtlebro_py в Python, и инстанцируйте этот класс с присвоением ему какого-то имени, например вот так:
from turtlebro_py import TurtleBro
tb = TurtleBro()Для движения робота вперед используйте команду forward, указав в качестве аргумента количество метров на которое вы хотите переместить робота:
tb.forward(0.7) #робот проедет вперед 0.7 метраДля движения робота назад используйте команду backward, указав в качестве аргумента количество метров на которое вы хотите переместить робота:
Для поворота робота направо, (т.е. против часовой стрелки) используйте команду right, указав в качестве аргумента количество градусов на которое вы хотите повернуть робота
Для поворота робота налево, (т.е. по часовой стрелке) используйте команду left, указав в качестве аргумента количество градусов на которое вы хотите повернуть робота
Для того чтобы робот поехал на точку с координатами x, y (в метрах), используйте команду goto, указав в качестве аргументов x и y:
При расчете координат используется правило правой руки.
Для получения текущих координат x, y (в метрах) в системе отсчета связанной с точкой на земле откуда стартовал робот, используйте переменную coords
При расчете координат используется правило правой руки.
Для включения светодиодов на роботе используйте команду color, указав в качестве аргумента цвет светодиодов (red, green, yellow, blue, white, off):
Для определения расстояния до препятствия перед роботом используйте команду distance,
Для определения расстояния до препятствия находящегося на определенном углу, используйте команду distance с аргументом равным градусу по которому вы хотите получить расстояние до препятствия:
Опционально, вы можете указать аргумент = 360 для команды, тогда она вернет массив из 360 точек (по одной на градус) расстояний до препятствий вокруг робота.
Для получения изображения с камеры робота используйте команду save_photo:
Опционально, вы можете указать имя файла в который надо сохранить изображение.
Для получения изображения с камеры робота в виде массива numpy используйте переменную photo:
Для записи звука с камеры робота используйте команду record:
Опционально, вы можете указать время в течение которого записывать звук, а также имя файла в который надо сохранить запись
Для воспроизведения голосом какого-то текста из динамиков робота используйте команду say:
Для вызова написанной вами функции при нажатии на кнопку 24 используйте команду call:
Опционально, вы можете привязать по одной функции на каждую кнопку 22,23,24,25, для этого вызовите команду call с параметрами (имя_функции, номер_кнопки)
Пример кода для езды по квадрату длиной 20 см, со скоростью 0.1 м/с и смены цвета диодов на каждой стороне квадрата:
Использование TurtleNav
Для ознакомления с базовой функциональностью автономной навигации в ROS можно использовать класс TurtleNav из данной библиотеки. Однако для того, чтобы использовать автономную навигацию, ее надо предварительно включить !на роботе! командой roslaunch turtlebro_navigation turtlebro_slam_navigation.launch
Основная команда, которая может использоваться для перемещения робота при помощи автономной навигации это goto, lля того чтобы робот поехал на точку с координатами x, y (в метрах), укажите в качестве аргументов x и y:
При расчете координат используется правило правой руки. Обратите внимание, что теперь робот будет ехать по навигационным целям, при этом он, например, будет объезжать препятствия возникающие у него на пути. Кроме команды goto, вы можете использовать остальные команды передвижения (forward, backward, left, right) и все остальные команды типа photo или say
Last updated