Симуляционные модели роботов для ROS (часть 1)

Материал из RoboWiki
Перейти к навигации Перейти к поиску

Программное моделирование в ROS может помочь вам узнать, как заставить роботов «думать». В конце концов, это большой скачок от создания роботов, ездящих по линии в сторону, к созданию автономных машин. Возможно, одной из самых больших проблем в создании полезных роботов является проблема создания программного обеспечения. С помощью ROS вы сможете разобраться в таких основных вопросах, как использование сенсоров для определения местоположения робота (очувствление), разработка стратегий для определения действий робота (планирование), и затем вычисление команд, необходимых для корректной работы робота (действие).

В этом уроке мы разработаем модель робота с нуля (ну...если сравнивать с уроками по уже готовым моделям Turtlebot'а). Есть несколько причин, почему вам следует пойти по этому пути.

  1. Вы будете моделировать своего собственного робота, редактируя модель URDF (так вы гарантированно не застрянете, как это может случиться при работе с Turtlebot'ом)
  2. Доступная разработка алгоритмов, которые можно подключать как к программным роботам (моделям), так и к реальным роботам (чрезмерная отработка на оборудовании приводит к его износу)
  3. Воздействие на архитектуру робота в ROS (чтобы избежать повторения ошибок проектирования, о которых уже узнали другие)

Обзор: Моделирование

Цель: Создание URDF модели в симуляторе Gazebo, доступном для ROS.

Ссылки: Есть несколько полезных руководств. У меня ни одно из них безупречно не работало. Возможно, они давно не обновлялись, хотя с другой стороны, возможно это я не правильно следовал инструкциям:

Результат: простая модель дифференциального привода, созданная с нуля, которая моделируется в Gazebo и визуализируется в rviz.

Код репозитория (хранилища):

git clone -b base https://github.com/richardw05/mybot_ws.git

Видео-мануал

Совместимость

Этот мануал конечно же со временем устареет, поэтому ниже приведены характеристики компьютера, на котором выполнялась работа:

Программное обеспечение

  • ROS: Kinetic
  • OS: Ubuntu 16.04
  • OS: Gazebo 7.0.0

Аппаратное обеспечение

  • RAM: 8GB DDR4
  • SSD: Samsung EVO
  • CPU: Intel i5
  • GPU: GTX 750ti

Структура каталогов

Большинство учебных пособий сошлись на следующей структуре рабочей области:

  • mybot_ws
    • src
      • mybot_control
        • config
          • mybot_control.yaml
        • launch
          • mybot_control.launch
        • CMakeLists.txt
        • package.xml
      • mybot_description
        • launch
          • mybot_rviz.launch
        • urdf
          • macros.xacro
          • macros.xacro
          • mybot.gazebo
          • mybot.xacro
        • CMakeLists.txt
        • package.xml
      • mybot_gazebo
        • launch
          • mybot_world.launch
        • worlds
          • mybot.world
        • CMakeLists.txt
        • package.xml

Краткое пояснение:

  1. mybot_description определяет всю структуру робота в виде звеньев и соединений (шарниров) и может запустить модель в rviz.
  2. mybot_gazebo запускает модель в среде Gazebo и содержит различные моделируемые "миры" (среды).
  3. mybot_control (не используется) позволяет контролировать соединения (шарниры) нашей модели, чтобы она могла перемещаться.

Чтобы создать базовый каркас структуры каталогов, мы начинаем с рабочего пространства {WORKSPACE} _ws, где устанавливаем {WORKSPACE}=mybot.

cd ~
mkdir mybot_ws
cd mybot_ws
catkin init
mkdir src
catkin build
echo "source ~/mybot_ws/devel/setup.bash" >> ~/.bashrc # Adds workspace to search path

В папке src находятся три основных пакета: {MODEL} _control, {MODEL} _description, {MODEL} _gazebo. Мы устанавливаем {MODEL}=mybot. Создадим пакет: catkin_create_pkg {PKG_NAME}{PKG_DEPENDENCIES}. В этом случае у нас нет {PKG_DEPENDENCIES}="".

cd ~/mybot_ws/src/
catkin_create_pkg mybot_control
catkin_create_pkg mybot_description
catkin_create_pkg mybot_gazebo

Создание модели робота (URDF)

В ~/mybot_ws/src/mybot_description/urdf есть четыре файла:

  • mybot.xacro: основной файл, который загружает остальные три файла и содержит только такие элементы URDF, как соединения и ссылки
  • mybot.gazebo: содержит специфичные для gazebo ярлыки, обернутые в gaz
  • materials.xacro: сопоставляет строки с цветами
  • macros.xacro: макросы для упрощения

Запуск моделей

Загрузите симулятор Gazebo и rviz в отдельные терминалы

roslaunch mybot_gazebo mybot_world.launch
roslaunch mybot_description mybot_rviz.launch

Отправьте базовую команду контроллера и убедитесь, что робот двигается как в Gazebo, так и в rviz.

rostopic pub /cmd_vel geometry_msgs/Twist "linear:
  x: 0.2
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 0.1"

Примечания

  • Если плагин Gazebo не найден, установите контроллеры ros kinetic
sudo apt-get install ros-kinetic-ros-control
sudo apt-get install ros-kinetic-ros-controllers
sudo apt-get install ros-kinetic-gazebo-msgs
sudo apt-get install ros-kinetic-gazebo-ros
  • Если робот не движется в rviz, проверьте дерево трансформации tf
   rosrun tf view_frames
   evince frames.pdf
  • Если вы хотите запустить свой собственный контроллер в mybot_controller, ознакомьтесь с этим руководством