Тема 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.ruarrow-up-right), при помощи простых команд, описанных ниже. Данный пакет предполагается использовать для предварительного обучения Python и основам робототехники перед погружением в изучение Robot Operation System (www.ros.orgarrow-up-right).

Пакет входит в сборку метапакета 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