7.10 Телеоперация вашего робота
Last updated
Last updated
Всегда полезно поддерживать какое-то ручное управление вашим роботом, особенно при тестировании нового кода. Мы видели, что базовый контроллер для робота подписывается на тему / cmd_vel и отображает любые опубликованные там сообщения Twist в сигналы двигателей. Если мы можем использовать устройство дистанционного управления, такое как джойстик или игровой контроллер, для публикации сообщений Twist по теме / cmd_vel, мы можем использовать его для телеуправления роботом. (Это еще один хороший пример того, как ROS позволяет нам абстрагироваться от базового оборудования.)
К счастью, пакет turtlebot_teleop уже содержит узлы для отправки команд Twist через клавиатуру, джойстик или контроллер PS3. Чтобы получить требуемые пакеты ROS, выполните команду:
Перед телеоперацией реального робота, попробуйте его с помощью симулятора ArbotiX. Поднимите поддельный TurtleBot, если он еще не запущен:
И это RViz еще не работает, запустите его сейчас:
Теперь давайте взглянем на дистанционное управление имитируемого робота с помощью клавиатуры или джойстика.
Пакет turtlebot_teleop включает файл keyboard_teleop.launch, который был скопирован в каталог rbx1_nav / launch, чтобы мы могли редактировать пару параметров, описанных ниже. Используйте следующую команду для запуска этой копии файла запуска:
Затем вы должны увидеть следующие инструкции на экране вашего терминала:
Наведите курсор на окно терминала Teleop, попробуйте нажать букву i. Вы должны увидеть, как фальшивый TurtleBot продвигается вперед в RViz. Обратите внимание, что если вы прекратите нажимать, робот замедлится и остановится. Попробуйте некоторые другие ключи, чтобы убедиться, что все работает.
Если вы посмотрите на файл keyboard_teleop.launch в каталоге rbx1_nav / launch, то увидите, что узел teleop клавиатуры принимает два параметра: scale_linear и scale_angular для определения линейной и угловой скорости робота по умолчанию. При первом тестировании телеоперации на реальном роботе рекомендуется установить эти значения меньше значений по умолчанию, чтобы робот двигался медленно. К сожалению, на момент написания этой статьи в пакете turtlebot_teleop была ошибка, препятствующая чтению двух параметров узлом keyboard_teleop, поэтому в настоящее время эти параметры будут игнорироваться.
Если у вас есть джойстик или игровая панель, вы можете использовать файл joystick_teleop.launch в пакете turtlebot_teleop. Мы сделали локальную копию этого файла в каталоге rbx1_nav / launch, чтобы различные параметры можно было редактировать в соответствии с вашими потребностями. Следующее описание относится конкретно к беспроводной игровой площадке Logitech.
Для использования телеопа джойстика выполните следующую команду:
Если вы получили ошибку, такую как:
[ERROR] [1332893303.227744871]: Couldn't open joystick /dev/input/js0. Will retry every second.
тогда ваш джойстик или игровая панель либо не подключены к USB-порту, либо не распознаются Ubuntu. Если вы не получили никаких ошибок, нажмите кнопку «Мертвец» (см. Примечание ниже) и попробуйте переместить джойстик или левую ручку на игровой клавиатуре.
ПРИМЕЧАНИЕ. Если вы используете игровую панель Logitech, вы должны сначала нажать и удерживать кнопку правого указательного пальца, прежде чем робот отреагирует на левую ручку переключателя. Эта кнопка называется переключателем «мертвец», поскольку робот перестанет двигаться, если вы отпустите ее.
Вы можете отредактировать файл joystick_teleop.launch, чтобы изменить масштабные коэффициенты для линейной и угловой скорости. Вы также можете отобразить переключатель мертвецов на другую кнопку. Чтобы узнать номера, соответствующие каждой кнопке, попробуйте программу jstest:
Затем нажмите различные кнопки и посмотрите на цифры в нижней части экрана, чтобы увидеть, какая из них переключается с «выключено» на «включено». Введите Ctrl-C, чтобы закрыть тестовый экран.
Вы можете настроить интерфейс с помощью следующей команды:
Чтобы переместить вашего робота, нажмите и удерживайте красную точку с помощью мыши . Затем переместите, переместите точку в направление, в котором вы хотите, чтобы ваш робот двигался. Старайтесь не перемещать его слишком далеко, так как скорость робота зависит от расстояния от источника. Если вы используете симулятор Pi Robot, вы также увидите элементы управления для суставов рук, как показано ниже:
Чтобы переместить одно из соединений в симуляторе, установите флажок рядом с именем сервопривода, затем используйте ползунок.
7.10.4 Телеоперация TurtleBot с использованием интерактивных маркеров
Метапакет Turtlebot включает в себя очень интересный пакет интерактивных маркеров, который позволяет перемещать настоящего робота, перетаскивая элементы управления в RViz. Инструкции по его использованию представлены на вики-странице turtlebot_interactive_markers, хотя эта страница не обновлялась с Groovy. (Нажмите на вкладку Groovy в верхней части страницы, как только она появится.)
Чтобы установить пакет для ROS Indigo, выполните команду:
Чтобы попробовать это с поддельным TurtleBot, выполните следующие команды:
Откройте RViz с помощью предварительно сконфигурированного файла конфигурации interactive_markers.rviz:
Наконец, откройте файл interactive_markers.launch в пакете rbx1_nav:
Этот файл запуска был скопирован из пакета turtlebot_interactive_markers и немного изменен для работы с поддельным TurtleBot.
Вернувшись в RViz, нажмите кнопку Взаимодействовать вдоль верхней панели инструментов. Экран RViz должен выглядеть следующим образом:
Нажмите на красные стрелки, чтобы переместить поддельного робота вперед или назад и поверните синее кольцо, чтобы повернуть робота.