Управление реальным роботом c обратной связью в ROS (часть 5): различия между версиями
Editor (обсуждение | вклад) |
Editor (обсуждение | вклад) |
||
Строка 41: | Строка 41: | ||
Ниже показаны сообщения ROS, передаваемые между нодами ROS. | Ниже показаны сообщения ROS, передаваемые между нодами ROS. | ||
− | [[Файл:Messages-1.png| | + | [[Файл:Messages-1.png|800px|thumb|center|Поток сообщений ROS от колесных энкодеров до вычисления одометрии.]] |
В реальном времени мы сначала оцениваем угловые скорости колес по показаниям энкодеров колес. Они используются для ПИД-регулирования, который уменьшит разницу между целевой и измеряемой скоростями. Затем мы выполняем точные расчеты с использованием прямой кинематики для восстановления линейной и угловой скоростей робота, которые используются для оценки одометрии робота. | В реальном времени мы сначала оцениваем угловые скорости колес по показаниям энкодеров колес. Они используются для ПИД-регулирования, который уменьшит разницу между целевой и измеряемой скоростями. Затем мы выполняем точные расчеты с использованием прямой кинематики для восстановления линейной и угловой скоростей робота, которые используются для оценки одометрии робота. |
Версия 15:17, 17 июля 2019
В этом разделе мы сосредоточимся на использовании данных, поступающих с колесных энкодеров, с двумя целями:
1. Создание замкнутой системы управления с использованием ПИД-регулятора
Хотя управление с разомкнутым контуром простое в реализации, оно не всегда работает надежно при работе на реальном роботе, потому что комбинация факторов окружающей среды (например есть трение от пола) и внутренних факторов (то есть различий между левым и правым двигателями) играет роль.
Управление с обратной связью использует данные с датчиков (то есть с колесных энкодеров) для регулировки управляющих сигналов, идущих на двигатели, посредством обратной связи (рассчитывается значение ошибки как разница между целью и измерением). Управление с помощью ПИД - это популярный вариант управления замкнутой системой (системой с замкнутым контуром), который прост в реализации.
2. Одометрия с точным расчетом
Одометрия ценна тем, что она:
1) является необходимой информацией для использования стека навигации ROS в будущем
2) позволяет нам видеть траекторию робота
Мы объединим показания энкодеров с обоих колес (точный расчет), чтобы оценить положение робота во времени (одометрия).
Обзор: Управление роботом c обратной связью
Цели: 1. Использование данных колесного энкодера для управления с обратной связью и ПИД-регулятором, и для оценки одометрии робота
2. Обучение использованию обратной связи с данными датчиков для усовершенствования управления роботом и для оценки состояния
План:
- Прочитать данные с колесных энкодеров
- Ввести ПИД-регулирование в управление на обоих колесах
- Организовать точный расчет для оценки одометрии робота
Код репозитория (хранилища):
git clone -b closedloop https://github.com/richardw05/gopigo_ws.git
Архитектура
И опять, у нас есть хост-машина и робот, подключенный через WiFi. Как показано ниже, мы добавляем два узла ROS. gopigo_state_updater запускается на роботе и преобразует данные энкодера колеса в оценки угловой скорости колеса. Мы расширяем gopigo_controller, чтобы использовать эти показания с энкодера для управления с помощью PID. diffdrive_odom запускается на хост-машине и использует оценки энкодера для проведения точного расчета одометрии.
Ниже показаны сообщения ROS, передаваемые между нодами ROS.
В реальном времени мы сначала оцениваем угловые скорости колес по показаниям энкодеров колес. Они используются для ПИД-регулирования, который уменьшит разницу между целевой и измеряемой скоростями. Затем мы выполняем точные расчеты с использованием прямой кинематики для восстановления линейной и угловой скоростей робота, которые используются для оценки одометрии робота.