Запуск AMCL

Подключение карты

Первым шагом, нам необходимо создать и загрузить карту в систему навигации робота.

Создание карты мы делали во второй части пособия. Как результат у вас должно быть два файла map.yaml и map.pgm. Если у вас нет этих файлов, то необходимо построить карту заново.

Файлы с информацией о карте, необходимо скопировать в директорию робота:

/home/pi/catkin_ws/src/turtlebro_navigation/maps

Сделать это можно с помощью команды cp:

cp map.pgm catkin_ws/src/turtlebro_navigation/maps
cp map.yaml catkin_ws/src/turtlebro_navigation/maps

После этого необходимо пересобрать пакет навигации:

cd ~/catkin_ws
catkin_make --pkg turtlebro_navigation

Запуск локализации

Установите робота в нулевую точку карты и очистите данные Одометрии:

rosservice call /reset

Запустим ноду amcl:

roslaunch turtlebro_navigation turtlebro_amcl.launch

Из этого .launch файла будет загружена нода map_server с указание файлов карты.

<arg name="map_file" default="$(find turtlebro_navigation)/maps/map.yaml"/>

  <!-- Map server -->
  <node pkg="map_server" name="map_server" type="map_server" args="$(arg map_file)">
    <param name="delta" value="0.05"/>
  </node>

Параметр delta определяет разрешение карты.

И сама нода AMCL:

<include file="$(find turtlebro_navigation)/launch/amcl.launch"/>

Отображение данных в rviz

Далее перейдем к нашему компьютеру и запустим rviz. Добавим для отображение карту и новый топик /particlecloud:

Add->By Topic->/particlecloud->PoseArray

Мы увидим отображение облака частиц, которые отображают неопределенность системы локализации. Размер облака говорит о размере неопределенности. Большое облако говорит о большой неопределенности, малое о малой.

При первом запуске, неопределенность положения самая высокая - облако точек самое большое. Если робот начнет движение, то облако точек начнет уменьшаться, т.к. алгоритм AMCL будет обрабатывать новые данные, с учетом данных полученных ранее.

Управлять роботом удобнее всего через веб-интерфейс.

Настройка начального положения

Ранее, для старта навигации мы установили робота в нулевое положение карты.

Если место старта навигации не является нулевой точкой карты, то необходимо указать изначальное положение робота. Сделать это удобнее всего при помощи rviz. Для начала необходимо изменить Fixed Frame на вкладке Global Option указав точку отсчета - карту map. Далее необходимо воспользоваться инструментом 2D Pose Estimate. После "клика" данные о положении робота публикуются в топик /initialpose.

Следующим шагом необходимо установить вектор положения робота с привязкой к карте. Если позиция указано верно, то данные отображения лидара должны совпасть с картой.

Положение можно указывать не очень точно, корректировку положения робот выполнит сам.

Для того чтобы уменьшить неопределенность положения робота, необходимо начать его перемещать. В момент движения робота будут отбрасываться "не вероятные" точки и оставаться только наиболее вероятные данные о положении робота.

Также будет откорректировано положение робота относительно данных лидара. Это будет видно по тому что данные лидара, совпадут с данными карты.

Большая красная стрелка это вывод топика amcl_pose в котором вы получаете данные о расчетном положении робота алгоритмом AMCL. Можете добавить данный топик в rviz:

Add->By Topic->/amcl_pose->PoseWithCovariance

Мы видим, что данные о положения робота относительно карты отображаются верно, при любых его перемещениях.

Разница в отображении фрейма (вкладка Fixed Frame) odom и map покажет нам накопленную ошибку между данными полученными от Одометрии (колес) и положением робота, которое было построено с использованием AMCL.

Также мы можем посмотреть как работает локализация робота, выведя информацию из топика

rostopic echo /amcl_pose

results matching ""

    No results matching ""