Симуляционные модели роботов для ROS (часть 1): различия между версиями
Editor (обсуждение | вклад) |
Editor (обсуждение | вклад) |
||
Строка 91: | Строка 91: | ||
== Создание модели робота (URDF) == | == Создание модели робота (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" |
Версия 22:48, 15 июля 2019
Программное моделирование в ROS может помочь вам узнать, как заставить роботов «думать». В конце концов, это большой скачок от создания роботов, ездящих по линии в сторону, к созданию автономных машин. Возможно, одной из самых больших проблем в создании полезных роботов является проблема создания программного обеспечения. С помощью ROS вы сможете разобраться в таких основных вопросах, как использование сенсоров для определения местоположения робота (очувствление), разработка стратегий для определения действий робота (планирование), и затем вычисление команд, необходимых для корректной работы робота (действие).
В этом уроке мы разработаем модель робота с нуля (ну...если сравнивать с уроками по уже готовым моделям Turtlebot'а). Есть несколько причин, почему вам следует пойти по этому пути.
- Вы будете моделировать своего собственного робота, редактируя модель URDF (так вы гарантированно не застрянете, как это может случиться при работе с Turtlebot'ом)
- Доступная разработка алгоритмов, которые можно подключать как к программным роботам (моделям), так и к реальным роботам (чрезмерная отработка на оборудовании приводит к его износу)
- Воздействие на архитектуру робота в 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
- config
- mybot_description
- launch
- mybot_rviz.launch
- urdf
- macros.xacro
- macros.xacro
- mybot.gazebo
- mybot.xacro
- CMakeLists.txt
- package.xml
- launch
- mybot_gazebo
- launch
- mybot_world.launch
- worlds
- mybot.world
- CMakeLists.txt
- package.xml
- launch
- mybot_control
- src
Краткое пояснение:
- mybot_description определяет всю структуру робота в виде звеньев и соединений (шарниров) и может запустить модель в rviz.
- mybot_gazebo запускает модель в среде Gazebo и содержит различные моделируемые "миры" (среды).
- 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"