Симуляционные модели роботов для ROS (часть 1): различия между версиями
Editor (обсуждение | вклад) |
Editor (обсуждение | вклад) |
||
(не показано 10 промежуточных версий этого же участника) | |||
Строка 3: | Строка 3: | ||
В этом уроке мы разработаем модель робота с нуля (ну...если сравнивать с уроками по уже готовым моделям Turtlebot'а). Есть несколько причин, почему вам следует пойти по этому пути. | В этом уроке мы разработаем модель робота с нуля (ну...если сравнивать с уроками по уже готовым моделям Turtlebot'а). Есть несколько причин, почему вам следует пойти по этому пути. | ||
# Вы будете моделировать своего собственного робота, редактируя модель URDF (так вы гарантированно не застрянете, как это может случиться при работе с Turtlebot'ом) | # Вы будете моделировать своего собственного робота, редактируя модель URDF (так вы гарантированно не застрянете, как это может случиться при работе с Turtlebot'ом) | ||
− | # Доступная разработка алгоритмов, которые можно подключать как к программным роботам (моделям), так и к реальным роботам (чрезмерная отработка на оборудовании приводит к его износу) | + | # Доступная разработка алгоритмов, которые можно подключать [http://gazebosim.org/tutorials/?tut=ros_control как к программным роботам (моделям), так и к реальным роботам] (чрезмерная отработка на оборудовании приводит к его износу) |
# Воздействие на архитектуру робота в ROS (чтобы избежать повторения ошибок проектирования, о которых уже узнали другие) | # Воздействие на архитектуру робота в ROS (чтобы избежать повторения ошибок проектирования, о которых уже узнали другие) | ||
Строка 19: | Строка 19: | ||
'''Результат: '''простая модель дифференциального привода, созданная с нуля, которая моделируется в Gazebo и визуализируется в rviz. | '''Результат: '''простая модель дифференциального привода, созданная с нуля, которая моделируется в Gazebo и визуализируется в rviz. | ||
− | '''Код репозитория (хранилища): ''' | + | '''Код репозитория (хранилища): ''' |
+ | git clone -b base https://github.com/richardw05/mybot_ws.git | ||
'''[https://www.youtube.com/watch?v=8ckSl4MbZLg Видео-мануал]''' | '''[https://www.youtube.com/watch?v=8ckSl4MbZLg Видео-мануал]''' | ||
Строка 40: | Строка 41: | ||
Большинство учебных пособий сошлись на следующей структуре рабочей области: | Большинство учебных пособий сошлись на следующей структуре рабочей области: | ||
− | * | + | *'''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 | ||
+ | |||
+ | Краткое пояснение: | ||
+ | # '''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" | ||
+ | |||
+ | == Примечания == | ||
+ | * Если плагин 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, ознакомьтесь с [https://www.generationrobots.com/blog/en/robotic-simulation-scenarios-with-gazebo-and-ros/ этим руководством] |
Текущая версия на 15:37, 26 июля 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"
Примечания
- Если плагин 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, ознакомьтесь с этим руководством