Файл: Основная образовательная программа cb. 17. 5005. 1 Прикладная математика, фундаментальная информатика и программирование Профиль Компьютерные технологии и системы.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 09.11.2023
Просмотров: 33
Скачиваний: 3
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
B
w
- коэффициент трения вращения. Будем предполагать, что эти значения постоянны для значений скоростей движущегося робота.
Рис. 2:
Приложение силы на колесах (а) и эквивалентное представление (б) [3]
Учитывая силы, действующие на левое и правое колеса, F
L
и F
R
, полу- чается, что эти силы эквивалентны силе F , приложенной в точке r
F
, относи- тельно центра оси колеса, как показано на рисунке 2.
F = F
R
+ F
L
T = l(F
R
− F
L
),
где l представляет половину длины оси, соединяющую колеса.
Аналогично, учитывая напряжения на моторах левого и правого колеса можно также определить среднее (пропорциональное сумме моментов m
R
и m
L
на моторах) и разностное (пропорциональное разности моментов на моторах) напряжения, e am и e ad
, и, наконец, получить соотношение между напряжениями и силами, F = K
m e
am
− K
v и T = K
w e
ad
− K
w w
, где K
m
, K
v
,
K
d
, K
w
— постоянные. В итоге мы имеем следующую динамическую модель унициклического робота:
13
M dv = −K
v v + a(m
L
+ m
R
)
J dw = −K
w w + b(m
L
− m
R
),
(4)
14
Глава 3. Идентификация динамической модели
Проведя необходимые преобразования c моделью (4) и внеся значения масс и инерции в значения констант, можно получить следующую систему дифференциальных уравнений, с помощью которых определяются скорости мобильного робота:
dv = k v
v + a(m
L
+ m
R
)
dw = k w
w + b(m
L
− m
R
),
(5)
где m
L
, m
R
— значения крутящего момента двигателя на левом и правом колесах соответственно, задающие напряжение, v, w — линейная и угловая скорости.
Коэффициенты k v
, k w
, a, b системы (5) неизвестны, для их нахождения необходимо составить несколько систем путем проведения нескольких экспе- риментов с различными значениями крутящих моментов, получая линейные и угловые скорости из Unity.
Было проведено несколько экспериментов с одинаковыми и разными крутящими моментами. Система с конкретными коэффициентами численно решалась с помощью пакета scipy, а нужные коэффициенты были найде- ны с помощью минимизации функции среднеквадратичной ошибки. Данная функция количественно определяет ошибку между прогнозируемыми и ожи- даемыми значениями и представляет ее в виде единственного действительно- го числа. Цель состоит в том, чтобы найти значения параметров модели, для которых функция возвращает как можно меньшее число.
Подставляя значения крутящих моментов и скорости, полученные в результате экспериментов, решались дифференциальные уравнения и таким образом вычислялось прогнозируемое значение, а в качестве ожидаемого зна- чения использовались значения скоростей из экспериментов полученных в
Unity.
Формулу среднеквадратичной ошибки MSE (Mean Square Error) можно записать так:
M SE =
1 2m m
X
i=1
(ˆ
y i
− y i
),
15
где i — индекс выборки, ˆy прогнозируемое значение, y — действитель- ное значение, m — количество выборок в наборе данных.
3.1
Задание модели в Unity
За физику колёс в Unity отвечает компонент WheelCollider, поведе- ние которого описывается и реализовано в PhysX, параметры самих колес можно задавать в Unity. Каждое колесо имеет свой Wheel Collider, который аппроксимирует форму колеса определенного радиуса, и имеет встроенное обнаружение коллизии, отвечающей за свойства объекта при столкновении, а также модель трения шин и свойства подвески.
На приведенном выше рисунке круг колеса и диаметр колеса отмече- ны зеленым, сегмент хода подвески - оранжевым, а сфера точки приложения силы - зеленым. На участке хода подвески есть отметки для положения макси- мального сжатия, положения максимального наклона и целевого положения.
Колесо может перемещаться только между положениями максимального сжа- тия и максимальной нижней точки. Положение покоя находится именно там,
где пружинящая масса уравновешивается силой упругости; то есть положе- ние, в котором находится колесо, когда автомобиль просто стоит на плоской поверхности.
Именно эти движения подвески определяются в WheelCollider пара- метрами Suspension Spring: Spring, Damper, Target Position и Force App Point
Distance
. Также в WheelCollider задаются масса колеса, его радиус, значение демпинга, применяющегося к колесам, которое симулирует потерю энергии.
Трение шин может быть описано показанной ниже кривой трения ко- леса. Изначально определяется то, как сильно скользит шина (на основании разности скоростей между резиной шины и дорогой). Затем значение сколь- жения используется для того, чтобы найти силу, применяемую шиной к точке соприкосновения.
16
3.1
Задание модели в Unity
За физику колёс в Unity отвечает компонент WheelCollider, поведе- ние которого описывается и реализовано в PhysX, параметры самих колес можно задавать в Unity. Каждое колесо имеет свой Wheel Collider, который аппроксимирует форму колеса определенного радиуса, и имеет встроенное обнаружение коллизии, отвечающей за свойства объекта при столкновении, а также модель трения шин и свойства подвески.
На приведенном выше рисунке круг колеса и диаметр колеса отмече- ны зеленым, сегмент хода подвески - оранжевым, а сфера точки приложения силы - зеленым. На участке хода подвески есть отметки для положения макси- мального сжатия, положения максимального наклона и целевого положения.
Колесо может перемещаться только между положениями максимального сжа- тия и максимальной нижней точки. Положение покоя находится именно там,
где пружинящая масса уравновешивается силой упругости; то есть положе- ние, в котором находится колесо, когда автомобиль просто стоит на плоской поверхности.
Именно эти движения подвески определяются в WheelCollider пара- метрами Suspension Spring: Spring, Damper, Target Position и Force App Point
Distance
. Также в WheelCollider задаются масса колеса, его радиус, значение демпинга, применяющегося к колесам, которое симулирует потерю энергии.
Трение шин может быть описано показанной ниже кривой трения ко- леса. Изначально определяется то, как сильно скользит шина (на основании разности скоростей между резиной шины и дорогой). Затем значение сколь- жения используется для того, чтобы найти силу, применяемую шиной к точке соприкосновения.
16
Рис. 3:
Кривая трения [10]
Рис. 4:
Структура [10]
Кривая, аппроксимируемая по двум секциям, принимает измеренное скольжение шины и выдаёт силу на выходе. Первая секция идёт от ну- левой точки до точки Extremum, задаваемой параметрами ExtremumSlip и
ExtremumValue
, в которой касательная кривой равна нулю. Вторая секция идёт от Extremum до точки Asymptote, определяемой параметрами AsymptoteSlip и
AsymptoteValue
, где касательная к кривой вновь равна нулю.
Рис. 5:
Структура «Carter» в Unity
Детальное описание модели «Carter_Wheeled» :
• Carter_Wheeled содержит основной скрипт для работы с роботом
UnityDifferentialBaseSimulation
;
• подсекция robot преедставляет из себя RigidBody, позволяющий дви- гаться модели по законам физики, с помощью него же задается масса
17
в килограммах (50), сопротивление воздуха и сопротивление воздуха при повороте, использование гравитации;
• lidar — сенсор для определения глубины (не используется);
• carter_caster — 3D-модель(меш) основания маленького колёсика;
• carter_wheel_center — 3D-модель колёсика;
• wheelFL и wheelFR — коллайдеры левого и правого колеса соответ- ственно;
• carter_body содержит в себе carter_main — 3D-модель основной ча- сти робота, carter_wheel_left и carter_wheel_right — 3D-модели лево- го и правого колёс соответственно, содержащие в себе скрипт Wheel
Visualizer, отвечающие за вращение модели колес соответственно ско- рости;
18
• lidar — сенсор для определения глубины (не используется);
• carter_caster — 3D-модель(меш) основания маленького колёсика;
• carter_wheel_center — 3D-модель колёсика;
• wheelFL и wheelFR — коллайдеры левого и правого колеса соответ- ственно;
• carter_body содержит в себе carter_main — 3D-модель основной ча- сти робота, carter_wheel_left и carter_wheel_right — 3D-модели лево- го и правого колёс соответственно, содержащие в себе скрипт Wheel
Visualizer, отвечающие за вращение модели колес соответственно ско- рости;
18
Глава 4. Позиционирование робота
Рассмотрим проблему перемещения к цели (x
∗
,y
∗
)
на плоскости с по- мощью контролирования линейной скорости робота, чтобы она была пропор- циональна его расстоянию от цели [4]:
v
∗
= K
v p
(x
∗
− x)
2
+ (y
∗
− y)
2
,
(6)
где x,y — координаты робота в глобальной системе координат.
Вычисляем угол, на котором находится цель по отношению к роботу:
θ
∗
= arctg y
∗
− y x
∗
− x
(7)
Используя пропорциональный контроллер, который определяет угло- вую скорость для поворота, направляемся к цели:
ω
∗
= K
h
(θ
∗
− θ),
(8)
где θ — угол поворота локальной системы координат относительно глобаль- ной системы координат.
Если в добавок к повороту из 2.2 для перехода в локальную систему координат ещё производить сдвиг, можно заметить, что координаты робота в локальной системе координат всегда равны нулю, что упрощает вычисление формул (6), (7) и (8), так как остается только определить координаты цели в локальной системе координат робота.
Регулятор (6), (8) можно использовать в случае, когда робот облада- ет низкоуровневой системой управления для отработки желаемого вектора скоростей. Также в Unity существует возможность подавать управляющее воздействие в виде крутящих моментов на моторах, что обычно используется для работы с физическим прототипом робота. В статье [9] описан вопрос построения низкоуровневого закона управления с обратной связью по состо- янию пропорционально-дифференциальной формы, который стабилизирует желаемое равновесие.
Рассмотрим уравнение следующего вида:
19
u = −K
v v − R
T
K
p
(x − x
∗
)
(9)
R =
cosθ 0
sinθ 0 0
1
,
где u = (m
L
,m
R
)
– моменты на колесах, θ — угол поворота локальной системы координат относительно глобальной системы координат, вектор v — вектор текущих скоростей (линейной и угловой), x и x
∗
являются векторами текущих координат робота и цели соответственно в виде (1). Матрицы K
v
, K
p
—
диагональные, положительно-определенные.
Произведем переход в локальную систему координат робота, как уже было сделано выше с помощью формулы (3), и опять таки заметим что теку- щие координаты робота x будут равны нулю.
Для сравнения данных методов управления были проведены экспери- менты и построены графики. Их подробное сравнение рассмотрено в главе
6.
20
v v − R
T
K
p
(x − x
∗
)
(9)
R =
cosθ 0
sinθ 0 0
1
,
где u = (m
L
,m
R
)
– моменты на колесах, θ — угол поворота локальной системы координат относительно глобальной системы координат, вектор v — вектор текущих скоростей (линейной и угловой), x и x
∗
являются векторами текущих координат робота и цели соответственно в виде (1). Матрицы K
v
, K
p
—
диагональные, положительно-определенные.
Произведем переход в локальную систему координат робота, как уже было сделано выше с помощью формулы (3), и опять таки заметим что теку- щие координаты робота x будут равны нулю.
Для сравнения данных методов управления были проведены экспери- менты и построены графики. Их подробное сравнение рассмотрено в главе
6.
20
Глава 5. Система управления роботом
Среда симуляции Unity позволяет двумя способами управлять робо- том. Один из которых определяется заданием соответствующих линейной и угловой скоростей, вычисленными подходящим методом исходя из необхо- димой для решения задачи. Второй способ — это напрямую задание необ- ходимых значений крутящего момента на каждое колесо. Данный вариант хорошо согласуется с дальнейшей работой над физическим прототипом, так как управление роботом осуществляется именно за счёт управления значе- ниями крутящего момента.
Для дальнейших экспериментов и получения обратной связи были раз- работаны две различные системы управления, одна из которых работает пол- ностью на стороне симуляции Unity, другая же имитирует взаимодействие с физическим прототипом в реальном мире посредством работы с изображе- нием, поступающим с камеры и дальнейшим распознаванием.
5.1
Комплекс связи с внешней программой
Для того, чтобы симулировать реальное дистанционное управление фи- зическим прототипом робота, которое часто осуществляется с использова- нием протоколов передачи данных таких как Wi-Fi [5] или Bluetooth [7],
реализована программа, организующая приём видео, определение положения объектов и последующее управление роботом. Происходит расчёт вектора необходимых линейной и угловой скоростей по формулам (6) и (8) соответ- ственно, после чего вектор передается роботу.
Для передачи видео во внешний комплекс, в Unity записывается тек- стура заданного размера и формата, полученная с камеры, и кодируется в
JPEG-изображение, которое отправляется http-сервером в формате MJPEG
(Motion JPEG), потоком изображений JPEG, передаваемых по протоколу http.
В настоящее время он обычно используется во многих мультимедийных при- ложениях, особенно в цифровых камерах, IP-камерах и веб-камерах. Основ- ное преимущество использования MJPEG заключается в том, что для него не требуется установка клиентского программного обеспечения на удаленный компьютер. Для просмотра потокового видео с сервера потоковой переда-
21
UNITY
OpenCV
Controller
UDP
HTTP MJPEG
HTTP server
Camera script
UnityDifferentialDrive script
Coordinates
Рис. 6:
Диаграмма компонентов решения чи MJPEG понадобится любое программное обеспечение, поддерживающее потоковую передачу в формате Motion JPEG, например Firefox, Chrome или
VLC.
Прием и распознавание изображения производится во внешней про- грамме написанной на языке программирования Python с использованием библиотеки OpenCV — библиотеки компьютерного зрения и алгоритмов об- работки изображений.
Существует два популярных протокола передачи данных по компью- терным сетям на транспортном уровне — это Transmission Control Protocol
(TCP) и User Datagram Protocol (UDP), главное различие которых в том, что первый обеспечивает гарантию доставки данных, а второй нет.
Так как позиционирование робота — задача реального времени, га- рантия доставки сообщений вносит слишком большие накладные расходы и может привести к доставке уже неактуальных данных. Сообщения от робота отправляются с частотой 30 Гц, поэтому потеря небольшого числа из них не создает проблем, тем более в современных каналах связи такие потери практически не возникают. Следовательно, внешняя программа использует
UDP протокол для организации обратной коммуникации с моделью робота,
отправляя строку, состоящую из линейной и угловой скоростей, разделен- ных пробелом, например, «3 2». Схематично, разработанное решение можно увидеть на рисунке 6.
22
5.2
Обратная связь по изображению
Оценка позы имеет большое значение во многих приложениях ком- пьютерного зрения: навигации роботов, дополненной реальности и многих других. Этот процесс основан на нахождении соответствий между точками в реальной среде и проекцией их 2-мерного изображения. Обычно это труд- ный этап, поэтому для облегчения обычно используют синтетические или реперные маркеры.
В среде симуляции была установлена камера, основанная на физических параметрах реального сенсора 65mm ALEXA, имеющего довольно большое разрешение и угол обзора, что позволяет охватить большее пространство вокруг объектов.
Один из самых популярных подходов - использование двоичных квад- ратных меток координат. Основное преимущество этих маркеров заключает- ся в том, что один маркер обеспечивает достаточное количество соответствий
(его четыре угла) для получения позы камеры. Кроме того, внутреннее двоич- ное кодирование делает их особенно надежными, позволяя применять методы обнаружения и исправления ошибок.
Модуль aruco основан на библиотеке ArUco, популярной библиотеке для обнаружения квадратных реперных маркеров, разработанной Рафаэлем
Муньосом и Серхио Гарридо [1].
Маркер ArUco — это квадратный маркер, состоящий из широкой чер- ной границы и внутренней двоичной матрицы, которая определяет его иденти- фикатор (id). Черная рамка способствует ее быстрому обнаружению на изоб- ражении, а двоичная кодификация позволяет ее идентифицировать и приме- нять методы обнаружения и исправления ошибок. Для лучшего обнаружения маркер был помещён на белый фон, во избежание ошибок распознавания.
Для генерации маркера используются словари отвечающие за кодифи- кацию и количество маркеров, которые можно использовать в рамках данного словаря, а именно это список двоичных кодификаций каждого из его марке- ров.
В среде симуляции размещены двухколесный робот и куб — обозначаю- щий цель позиционирования. К этим объектам прикреплены маркеры с иден-
23