Карты низкого качества, полученные с помощью алгоритмов слэма на основе одометрии, протестированных в реальном TurtleBot - PullRequest
0 голосов
/ 25 января 2019

В настоящее время я тестирую несколько алгоритмов слэма в реальном TurtleBot (ROS Kinetic) . Несмотря на то, что на TurtleBot все работает нормально, я столкнулся с проблемой на картах, основанной на алгоритмах слэма, основанных на одометрии. Хотя я изменил базу TurtleBot , чтобы выяснить, есть ли у нее проблемы с оборудованием или одометрия , карты остались прежними. Используемый лидар имеет максимальную дальность до 17 м.

Gmapping (с использованием одометрии) Я тестировал gmapping с этими параметрами:

<launch>
<arg name="scan_topic"  default="scan" />
<arg name="base_frame"  default="base_footprint"/>
<arg name="odom_frame"  default="odom"/>
<node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen">
<param name="base_frame" value="$(arg base_frame)"/>
<param name="odom_frame" value="$(arg odom_frame)"/>
<param name="map_update_interval" value="5.0"/>
<param name="maxUrange" value="12.0"/>
<param name="maxRange" value="17.0"/>
<param name="sigma" value="0.05"/>
<param name="kernelSize" value="1"/>
<param name="lstep" value="0.05"/>
<param name="astep" value="0.05"/>
<param name="iterations" value="5"/>
<param name="lsigma" value="0.075"/>
<param name="ogain" value="3.0"/>
<param name="lskip" value="0"/>
<param name="minimumScore" value="500"/>
<param name="srr" value="0.01"/>
<param name="srt" value="0.02"/>
<param name="str" value="0.01"/>
<param name="stt" value="0.02"/>
<param name="linearUpdate" value="0.5"/>
<param name="angularUpdate" value="0.436"/>
<param name="temporalUpdate" value="-1.0"/>
<param name="resampleThreshold" value="0.5"/>
<param name="particles" value="200"/>
<param name="xmin" value="-1.0"/>
<param name="ymin" value="-1.0"/>
<param name="xmax" value="1.0"/>
<param name="ymax" value="1.0"/>
<param name="delta" value="0.05"/>
<param name="llsamplerange" value="0.01"/>
<param name="llsamplestep" value="0.01"/>
<param name="lasamplerange" value="0.005"/>
<param name="lasamplestep" value="0.005"/>
<remap from="scan" to="$(arg scan_topic)"/>
</node>
</launch>

Карта из Gmapping , протестированная во всей лаборатории, находится здесь: enter image description here

KartoSlam (с использованием одометрии) Карта, произведенная KartoSlam, протестированная в лабораторной комнате с параметрами по умолчанию, выглядит следующим образом. enter image description here

CRSM Slam (без использования одометрии) Карта, созданная CRSM Slam, протестирована в лабораторной комнате, в которой не используется одометрия. Как видите, карта CRSM намного лучше, чем две предыдущие. enter image description here

Вопросы:

Где мне искать исправление, так как я попробовал алгоритмы на двух разных TurtleBots? Как я могу улучшить качество карты, так как то, что я до сих пор получаю, действительно плохое?

1 Ответ

0 голосов
/ 06 марта 2019

Я считаю, что хороший способ проверить базовую одометрию:

  1. Запустить Turbobots с минимальным зазором или любым другим ударом.
  2. Запустите rviz и убедитесь, что в фиксированном фрейме установлен мировой фрейм, такой как odom или map (проверьте имя по дереву TF).
  3. Добавьте к нему лазер и установите время затухания около 100 секунд.
  4. Держите робота напротив стены и приказывайте ему двигаться к стене.По мере того, как робот движется вперед, «положение стены» в лазерных данных в вашем мировом фрейме должно выглядеть более или менее стационарно.Это дает вам уверенность, что ваша передняя одометрия в порядке.
  5. Затем поместите робота в угол или место, где есть большие 3D-объекты в поле зрения лазера.Затем дайте команду роботу вращаться.Еще раз все углы и трехмерные объекты должны оставаться неподвижными.

Если вы можете успешно выполнить вышеизложенное, то сможете использовать разумные «сырые» карты перед использованием любых алгоритмов SLAM.

...