Моделирование навигационного стека ROS (часть 3): различия между версиями

Материал из RoboWiki
Перейти к навигации Перейти к поиску
 
(не показаны 4 промежуточные версии этого же участника)
Строка 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. В этом уроке мы собираемся:

  1. Подключить стек навигации ROS
  2. Создать карту
  3. Осуществить навигацию по карте

Как мы можем убедиться, эти шаги хорошо расписаны, поэтому мы просто соберем все это вместе для нашего робота.

Обзор: Использование стека навигации ROS

Цели: 1. Интегрировать навигационный стек ROS в модель нашего робота 2. Активировать автономную навигацию, чтобы нам не нужно было удаленно управлять нашим роботом

Ссылки:

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

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-файле.