7.4 Калибровка одометрии вашего робота

Если у вас нет робота, вы можете вообще пропустить этот раздел. Если у вас есть оригинальный TurtleBot (с использованием iRobot Create в качестве базы), обязательно используйте автоматическую процедуру калибровки, чтобы установить угловые поправочные коэффициенты для вашего робота. Вы все еще можете использовать первую часть этого раздела, чтобы установить коэффициент линейной коррекции. Обратите внимание, что во всех случаях вам может потребоваться использовать разные параметры калибровки для разных типов поверхностей пола; например ковер против лиственных пород. Самый простой способ управлять различными параметрами - это использовать разные файлы запуска для каждой поверхности.

Если вы используете свой собственный робот, у вас уже есть собственный метод калибровки. Если это так, вы можете спокойно пропустить этот раздел. В противном случае читайте дальше.

Перед запуском процедур калибровки обязательно получите пакеты кинематики Orocos с помощью команды:

$ sudo apt-get install ros-indigo-orocos-kdl \ ros-indigo-python-orocos-kdl

В пакет rbx1_nav входят два сценария калибровки: calibrate_linear.py и calibrate_angular.py. Первая попытка переместить робота на 1 метр вперед, отслеживая тему / odom и останавливаясь, когда сообщаемое расстояние находится в пределах 1 см от цели. Вы можете отрегулировать расстояние до цели и скорость движения, отредактировав скрипт или используя rqt_reconfigure. Второй скрипт поворачивает робота на 360 градусов, опять же, следя за темой / odom. Мы опишем, как настроить параметры PID на основе результатов в следующих двух разделах.

Прежде всего убедитесь, что у вас достаточно места перед роботом - не менее 2 метров при стандартном испытательном расстоянии 1,0 метра. Используя рулетку, выложите не менее 1 метра ленты на пол и совместите начальный конец ленты с какой-нибудь опознаваемой отметкой на вашем роботе. Поверните робот так, чтобы он был направлен параллельно ленте.

Затем откройте базовый контроллер вашего робота с соответствующим файлом запуска. Для TurtleBot, основанного на iRobot Create, вставьте ssh в ноутбук робота и запустите:

$ roslaunch rbx1_bringup turtlebot_minimal_create.launch

Далее запустите узел линейной калибровки:

$ rosrun rbx1_nav calibrate_linear.py

Наконец, запустите rqt_reconfigure:

$ rosrun rqt_reconfigure rqt_reconfigure

Выберите узел calibrate_linear в окне rqt_reconfigure. Чтобы запустить тест, поставьте галочку напротив start_test. (Если робот не начинает двигаться, снимите флажок и установите его снова.) Ваш робот должен двигаться вперед примерно на 1,0 метра. Чтобы получить поправочный коэффициент, выполните следующие действия:

  • Измерьте фактическое расстояние с помощью ленты и запишите это.

  • Разделите фактическое расстояние на целевое расстояние и запишите соотношение.

  • Вернитесь в графический интерфейс rqt_reconfigure и умножьте значение odom_linear_scale_correction на коэффициент, который вы только что вычислили. Установите для параметра новое значение.

  • Повторите тест, переместив робота обратно к началу ленты, затем отметив флажок start_test в окне rqt_reconfigure.

  • Продолжайте повторять тест, пока не будете удовлетворены результатом. Точность 1 см на 1 метр, вероятно, достаточно хороша.

Имея окончательный поправочный коэффициент, вы должны применить его к параметрам базового контроллера вашего робота, используя соответствующий файл запуска. Для TurtleBot добавьте следующую строку в файл turtlebot.launch:

<param name="turtlebot_node/odom_linear_scale_correction" value="X"/>

где X - ваш поправочный коэффициент.

Если ваш робот использует базовый контроллер ArbotiX, отредактируйте файл конфигурации YAML и измените параметр ticks_meter, разделив его на свой поправочный коэффициент.

В качестве последней проверки запустите файл запуска вашего робота с новым поправочным коэффициентом. Затем запустите сценарий calib_linear.py, но с параметром odom_linear_scale_correction, равным 1.0. Теперь ваш робот должен пройти 1,0 метра без дальнейшей коррекции.

7.4.2 Угловая калибровка

Если у вас есть TurtleBot на основе iRobot Create, не используйте этот метод. Вместо этого запустите процедуру автоматической калибровки TurtleBot.

В этом тесте ваш робот будет вращаться только на месте, поэтому пространство не является большой проблемой. Поместите маркер (например, кусок ленты) на пол и выровняйте его по центру спереди робота. Мы повернем робота на 360 градусов и посмотрим, насколько близко он вернется к отметке.

Поднимите базовый контроллер вашего робота с соответствующим файлом запуска. Для оригинального TurtleBot (база iRobot Create), вставьте ssh в ноутбук робота и запустите:

$ roslaunch rbx1_bringup turtlebot_minimal_create.launch

Далее запустите узел угловой калибровки:

$ rosrun rbx1_nav calibrate_angular.py

Наконец, запустите rqt_reconfigure:

$ rosrun rqt_reconfigure rqt_reconfigure

Вернитесь в окно rqt_reconfigure и выберите узел calibrate_angular. (Если вы не видите в списке узла calibrate_angular, щелкните синий значок обновления в правом верхнем углу графического интерфейса.) Чтобы начать тестирование, установите флажок рядом с start_test. (Если робот не начинает двигаться, снимите флажок и установите его снова.) Ваш робот должен вращаться примерно на 360 градусов. Не беспокойтесь, если он вращается значительно больше или меньше, чем полный оборот. Это то, что мы собираемся исправить. Чтобы получить поправочный коэффициент, выполните следующие действия:

  • Если фактическое вращение не дотягивает до полных 360 градусов, посмотрите на долю, которую он повернул, и введите оценочную долю в поле odom_angular_scale_correction в окне rqt_reconfigure. Поэтому, если робот выглядит примерно на 85%, введите что-то вроде 0,85. Если он повернулся на 5% слишком далеко, введите что-то вроде 1.05.

  • Повторите тест, выровняв маркер по переднему центру робота, затем установите флажок start_test в окне rqt_reconfigure.

  • Надеемся, что поворот будет ближе к 360 градусам. Если он все еще короткий, уменьшите theodom_angular_scale_correctionparameteralittleandtryagain. Если он вращается слишком далеко, увеличьте его немного и попробуйте снова.

  • Продолжайте процедуру, пока не будете удовлетворены результатом.

То, что вы делаете с вашим окончательным поправочным коэффициентом, зависит от параметров PID вашего базового контроллера. Для робота, контролируемого базовым контроллером ArbotiX, отредактируйте файл конфигурации YAML и измените параметр base_width, разделив его на свой поправочный коэффициент.

В качестве последней проверки запустите файл запуска вашего робота с новым поправочным коэффициентом. Затем запустите сценарий calib_angular.py, но с параметром odom_angular_scale_correction, равным 1.0. Теперь ваш робот должен вращаться на 360 градусов без дальнейшей коррекции.

Last updated