Моделирование навигационного стека ROS (часть 3): различия между версиями
Editor (обсуждение | вклад) |
Editor (обсуждение | вклад) |
||
(не показано 5 промежуточных версий этого же участника) | |||
Строка 22: | Строка 22: | ||
'''[https://www.youtube.com/watch?v=HIK1KBw-Jn4 Видео-мануал]''' | '''[https://www.youtube.com/watch?v=HIK1KBw-Jn4 Видео-мануал]''' | ||
− | == Картография и навигация: Turtlebot ( | + | == Картография и навигация: Turtlebot (опционально) == |
Обучение организации автономному движению Turtlebot'а поможет усвоить базовые навыки. Есть три основных этапа: создание карты, сохранение карты и загрузка карты. | Обучение организации автономному движению Turtlebot'а поможет усвоить базовые навыки. Есть три основных этапа: создание карты, сохранение карты и загрузка карты. | ||
Строка 28: | Строка 28: | ||
1. '''Создание карты''' | 1. '''Создание карты''' | ||
Выполните команды, представленные ниже. Используйте teleop для перемещения робота, чтобы создать точную и полную карту. | Выполните команды, представленные ниже. Используйте teleop для перемещения робота, чтобы создать точную и полную карту. | ||
+ | |||
В Терминале 1 запустите среду Gazebo | В Терминале 1 запустите среду Gazebo | ||
roslaunch turtlebot_gazebo turtlebot_world.launch | roslaunch turtlebot_gazebo turtlebot_world.launch | ||
Строка 41: | Строка 42: | ||
3. '''Загрузка карты''' | 3. '''Загрузка карты''' | ||
Закройте все предыдущие терминалы и выполните команды, представленные ниже. После загрузки используйте rviz для установки навигационных точек, робот должен будет двигаться автономно. | Закройте все предыдущие терминалы и выполните команды, представленные ниже. После загрузки используйте rviz для установки навигационных точек, робот должен будет двигаться автономно. | ||
+ | |||
В Терминале 1 запустите среду Gazebo | В Терминале 1 запустите среду Gazebo | ||
roslaunch turtlebot_gazebo turtlebot_world.launch | roslaunch turtlebot_gazebo turtlebot_world.launch | ||
Строка 49: | Строка 51: | ||
== Картография и навигация: Наш робот == | == Картография и навигация: Наш робот == | ||
+ | |||
+ | Мы выполним те же действия для нашего робота с дифференциальным приводом. | ||
+ | |||
+ | '''Обратите внимание''', что мы изменили нашу модель для более удобной навигации. Например, мы добавили дополнительное роликовое колесо для уменьшения дрожания (подпрыгивания) лазера во время резких остановок. Мы понимаем, что наша модель робота требует дополнительной настройки, поскольку она имеет некоторые странные навигационные изломы (недостатки). Мы ценим любые предложения. Тем не менее, нашей модели достаточно для игры и тренировок со стеком навигации ROS. | ||
+ | |||
+ | 1. '''Создание карты''' | ||
+ | Выполните команды, представленные ниже. Используйте teleop для перемещения робота, чтобы создать точную и полную карту. | ||
+ | |||
+ | В Терминале 1 запустите среду Gazebo | ||
+ | roslaunch mybot_gazebo mybot_world.launch | ||
+ | В Терминале 2 запустите построение карты | ||
+ | roslaunch mybot_navigation gmapping_demo.launch | ||
+ | В Терминале 3 запустите rviz и установите следующие параметры: Localmap/Costmap/Topic to/map Globalmap/Costmap/Topic to/map | ||
+ | roslaunch mybot_description mybot_rviz_gmapping.launch | ||
+ | В Терминале 4 запустите teleop | ||
+ | roslaunch mybot_navigation mybot_teleop.launch | ||
+ | 2. '''Сохранение карты''' | ||
+ | В Терминале 5 сохраните карту в какой нибудь файл, указав путь | ||
+ | rosrun map_server map_saver -f ~/mybot_ws/src/mybot_navigation/maps/test_map | ||
+ | 3. '''Загрузка карты''' | ||
+ | Закройте все предыдущие терминалы и выполните команды, представленные ниже. После загрузки используйте rviz для установки навигационных точек, робот должен будет двигаться автономно. | ||
+ | |||
+ | В Терминале 1 запустите среду Gazebo | ||
+ | roslaunch mybot_gazebo mybot_world.launch | ||
+ | В Терминале 2 запустите построение карты | ||
+ | roslaunch mybot_navigation amcl_demo.launch | ||
+ | В Терминале 3 запустите rviz | ||
+ | roslaunch mybot_description mybot_rviz_amcl.launch | ||
+ | |||
+ | == Примечания == | ||
+ | * (Опционально) Желательно установить Turtlebot | ||
+ | sudo apt-get install ros-kinetic-turtlebot ros-kinetic-turtlebot-apps ros-kinetic-turtlebot- | ||
+ | interactions ros-kinetic-turtlebot-simulator ros-kinetic-kobuki-ftdi ros-kinetic-ar-track- | ||
+ | alvar-msgs | ||
+ | * Если ROS не может найти turtlebot_gazebo | ||
+ | rosdep update | ||
+ | * Проблемы с созданием правильной карты? | ||
+ | Подумайте о [http://moorerobots.com/blog/post/answers.ros.org/question/38737/changing-map-save-map-size-and-resolution снижении] разрешения вашей карты. Измените значение дельты с .05 на .01: | ||
+ | /opt/ros/kinetic/share/turtlebot_navigation/launch/includes/gmapping.launch.xml | ||
+ | * Робот много крутится при автономном движении? | ||
+ | Установите эти параметры для демпфирования команд, отправляемых на базовый контроллер. Добавьте | ||
+ | <param name="move_base/DWAPlannerROS/max_rot_vel" value="1.0"/> | ||
+ | <name="move_base/DWAPlannerROS/acc_lim_theta" value="10.0"/> | ||
+ | в | ||
+ | /opt/ros/kinetic/share/turtlebot_gazebo/launch/amcl_demo.launch | ||
+ | * AMCL не загружает карту правильно? | ||
+ | Когда вы сохраняете файл карты, YAML-файл содержит путь к PGM-файлу; следовательно, вы не можете так просто перемещать файлы карты. Если вы это сделаете, необходимо изменить путь в YAML-файле. |
Текущая версия на 16:31, 26 июля 2019
На данный момент мы создали модель робота с дифференциальным приводом, которая удовлетворяет необходимым условиям для автономной навигации: дерево преобразований, одометрия, лазерный сканер и базовый контроллер. Теперь мы готовы заставить нашего моделируемого робота передвигаться самостоятельно с помощью стека навигации ROS. В этом уроке мы собираемся:
Как мы можем убедиться, эти шаги хорошо расписаны, поэтому мы просто соберем все это вместе для нашего робота.
Содержание
Обзор: Использование стека навигации ROS
Цели: 1. Интегрировать навигационный стек ROS в модель нашего робота 2. Активировать автономную навигацию, чтобы нам не нужно было удаленно управлять нашим роботом
Ссылки:
- Примеры launch-файлов с использованием стека навигации ROS
- Советы по организации крупных проектов
- Примеры launch-файлов для многочисленных проектов роботов
- roscd turtlebot_navigation/launch/includes - дополнительные примеры launch-файлов
Код репозитория (хранилища):
git clone -b navigation https://github.com/richardw05/mybot_ws.git
Картография и навигация: Turtlebot (опционально)
Обучение организации автономному движению Turtlebot'а поможет усвоить базовые навыки. Есть три основных этапа: создание карты, сохранение карты и загрузка карты.
1. Создание карты Выполните команды, представленные ниже. Используйте teleop для перемещения робота, чтобы создать точную и полную карту.
В Терминале 1 запустите среду Gazebo
roslaunch turtlebot_gazebo turtlebot_world.launch
В Терминале 2 запустите построение карты
roslaunch turtlebot_gazebo gmapping_demo.launch
В Терминале 3 запустите rviz и установите следующие параметры: Localmap/Costmap/Topic to/map Globalmap/Costmap/Topic to/map
roslaunch turtlebot_rviz_launchers view_navigation.launch
В Терминале 4 запустите teleop
roslaunch turtlebot_teleop keyboard_teleop.launch
2. Сохранение карты В Терминале 5 сохраните карту в какой нибудь файл, указав путь
rosrun map_server map_saver -f ~/mybot_ws/test_map
3. Загрузка карты Закройте все предыдущие терминалы и выполните команды, представленные ниже. После загрузки используйте rviz для установки навигационных точек, робот должен будет двигаться автономно.
В Терминале 1 запустите среду Gazebo
roslaunch turtlebot_gazebo turtlebot_world.launch
В Терминале 2 запустите построение карты
roslaunch turtlebot_gazebo amcl_demo.launch map_file:=~/mybot_ws/test_map.yaml
В Терминале 3 запустите rviz
roslaunch turtlebot_rviz_launchers view_navigation.launch
Картография и навигация: Наш робот
Мы выполним те же действия для нашего робота с дифференциальным приводом.
Обратите внимание, что мы изменили нашу модель для более удобной навигации. Например, мы добавили дополнительное роликовое колесо для уменьшения дрожания (подпрыгивания) лазера во время резких остановок. Мы понимаем, что наша модель робота требует дополнительной настройки, поскольку она имеет некоторые странные навигационные изломы (недостатки). Мы ценим любые предложения. Тем не менее, нашей модели достаточно для игры и тренировок со стеком навигации ROS.
1. Создание карты Выполните команды, представленные ниже. Используйте teleop для перемещения робота, чтобы создать точную и полную карту.
В Терминале 1 запустите среду Gazebo
roslaunch mybot_gazebo mybot_world.launch
В Терминале 2 запустите построение карты
roslaunch mybot_navigation gmapping_demo.launch
В Терминале 3 запустите rviz и установите следующие параметры: Localmap/Costmap/Topic to/map Globalmap/Costmap/Topic to/map
roslaunch mybot_description mybot_rviz_gmapping.launch
В Терминале 4 запустите teleop
roslaunch mybot_navigation mybot_teleop.launch
2. Сохранение карты В Терминале 5 сохраните карту в какой нибудь файл, указав путь
rosrun map_server map_saver -f ~/mybot_ws/src/mybot_navigation/maps/test_map
3. Загрузка карты Закройте все предыдущие терминалы и выполните команды, представленные ниже. После загрузки используйте rviz для установки навигационных точек, робот должен будет двигаться автономно.
В Терминале 1 запустите среду Gazebo
roslaunch mybot_gazebo mybot_world.launch
В Терминале 2 запустите построение карты
roslaunch mybot_navigation amcl_demo.launch
В Терминале 3 запустите rviz
roslaunch mybot_description mybot_rviz_amcl.launch
Примечания
- (Опционально) Желательно установить Turtlebot
sudo apt-get install ros-kinetic-turtlebot ros-kinetic-turtlebot-apps ros-kinetic-turtlebot- interactions ros-kinetic-turtlebot-simulator ros-kinetic-kobuki-ftdi ros-kinetic-ar-track- alvar-msgs
- Если ROS не может найти turtlebot_gazebo
rosdep update
- Проблемы с созданием правильной карты?
Подумайте о снижении разрешения вашей карты. Измените значение дельты с .05 на .01:
/opt/ros/kinetic/share/turtlebot_navigation/launch/includes/gmapping.launch.xml
- Робот много крутится при автономном движении?
Установите эти параметры для демпфирования команд, отправляемых на базовый контроллер. Добавьте
<param name="move_base/DWAPlannerROS/max_rot_vel" value="1.0"/> <name="move_base/DWAPlannerROS/acc_lim_theta" value="10.0"/>
в
/opt/ros/kinetic/share/turtlebot_gazebo/launch/amcl_demo.launch
- AMCL не загружает карту правильно?
Когда вы сохраняете файл карты, YAML-файл содержит путь к PGM-файлу; следовательно, вы не можете так просто перемещать файлы карты. Если вы это сделаете, необходимо изменить путь в YAML-файле.