Стенд для отработки алгоритмов управления движением многоэлементных систем
|
В Милане в Политехническом университете занимаются
созданием робота, названного Smart
Flyer, использующегося для отработки алгоритмов управления
движением (рис.1.7) [4]. Этот робот оснащен двумя пропеллерами, позволяющими
имитировать воздействия импульсных двигателей.
LuVeX является одним из стендов, на котором моделируется
движение группы спутников. Он стоит относительно недорого и удобен при
проведении экспериментов. Макет имеет небольшую массу, относительно небольшой и
экономичный. Для его функционирования требуется лишь ровная поверхность, сжатый
воздух и электроэнергия.
Стенд состоит из стола со стеклянным покрытием и двух
макетов, которые будем условно называть старый
(рис. 1.8, справа) и новый (рис.
1.8, слева). На момент выполнения настоящей работы новый макет находился в
стадии сборки и не полностью функционировал. И именно ему посвящена настоящая
работа. При проектировании новой версии LuVeX’а были учтены все недоработки старой версии - были
установлены более совершенные импульсные двигатели, были использованы более
мощные элементы питания, один большой баллон со сжатым воздухом был заменён четырьмя
меньшего размера, вследствие чего макет стал более компактным. После завершения
сборки нового макета планируется проведение экспериментов по отработке алгоритмов
движения многозвенных систем.
Перечислим основные цели, для которых создается стенд
[5].
·
Отработка алгоритмов управления ориентацией и положением
спутников с помощью импульсных двигателей.
·
Разработка алгоритмов определения ориентации спутников по
снимкам звёздной камеры и с помощью показаний датчика угловой скорости.
·
Отработка механизмов передачи информации между спутником
и наземной станцией с помощью имитационной схемы: макет – стационарный компьютер.
·
Проверка алгоритмов и механизмов взаимодействия
нескольких макетов как многозвенной системы, отработка управления группового
полёта спутников.
·
Обучение на базе стенда специалистов по созданию сложных
информационных систем и специалистов по управлению такими системами.
Для достижения заданных целей, макеты должны
удовлетворять определенным требованиям относительно конструкции, системы
управления, определения ориентации, системы коммуникации, электроснабжения и
так далее. Перечислим эти требования.
·
Продолжительность
автономной работы макета должна составлять 20 – 30 мин.
·
Снабжение
импульсных двигателей сжатым воздухом должно происходить из резервуаров,
расположенных на самом макете.
·
На макет
необходимо установить бортовой компьютер массой приблизительно 0.75 кг и это нужно
учесть при разработке конструкции макета.
·
При выборе
батарей питания нужно учесть, что бортовой компьютер питается от 6.5 В и
потребляет энергию 12 Вт, кроме того остальная часть макета будет потреблять
около 10 Вт.
·
Требуемое
напряжение источника питания не должно превышать 24 В.
·
Макет должен
беспрепятственно перемещаться и вращаться
на плоскости.
·
Для
вышеупомянутых движений макета нужно установить 6 импульсных двигателей,
работающих на сжатом воздухе и регулируемых с помощью клапанов.
·
Диаметр макета не
должен превышать 0.3 м.
·
Из соображений
устойчивости в поле тяжести, высота макета не должна быть больше его полутора
диаметров.
·
Необходимо, чтобы
замена блоков питания макета была достаточно быстрой и технологичной.
·
Нужно разработать
и включить в конструкцию макета систему подключения баллонов со сжатым
воздухом.
·
Учесть, что
полезная нагрузка макета может составлять около 2 кг.
·
Суммарная
стоимость макета не должна превышать 2 – 3 тысячи евро.
Взаимосвязь всех вышеперечисленных требований
можно изобразить на схеме (рис. 1.7).
Рассмотрим
подробно устройство нового макета и
принципы его функционирования. Проведём расчет параметров для правильной работы
отдельных его частей. Методика расчета параметров нового макета взята из [5], где рассчитаны эти же параметры для старого макета.
На макет действует сила тяжести Земли, вследствие чего
вся его масса давит на опоры макета, представляющие собой три небольшие
плоскости, а они в свою очередь создают давление на горизонтальную плоскость,
на которой стоит сам макет. Понятно, что в таком состоянии макет не может
двигаться по плоскости свободно: при движении будет возникать сила трения между
ножками-опорами макета (рис.2.1) и плоскостью, что приведёт к торможению макета.
Для исключения силы трения используют так называемую «воздушную подушку» –
прослойку воздуха между плоскостью ножек и плоскостью стола, которую получают
пропусканием воздуха под некоторым напором через пористый материал ножек.
Благодаря воздушной подушке тело движется по плоскости свободно, чем фактически
имитируется движение тела на орбите, только в проекции на двумерное пространство.
Однако для такой воздушной подушки необходимо правильно выбрать материл, из
которого будут изготовлены ножки макета, их размеры и подавать на вход в ножки
сжатый воздух под определённым давлением.
Для расчета давления, которое необходимо подавать на
вход ножкам, необходимо рассчитать расход воздуха на воздушную подушку.
Запишем закон Бернулли сохранения полного давления в
потоке газа или жидкости
,
где
в нашем случае – плотность газа под
опорой, – высота опоры над
плоскостью стола, – гравитационная
постоянная, – скорость истечения газов. В законе Бернулли третье слагаемое
ещё называют динамическим давлением
.
Статическое
давление в нашем случае рассчитывается так:
.
Здесь
– масса макета, n – число
опор макета, – площадь одной опоры
макета.
Так как аппарат находится в равновесии, то статическое
и динамическое давления должны быть равны или
.
Отсюда
выразим скорость истечения газов :
.
Расход
газа вычисляется следующим образом: , где – объемный расход газа, – площадь, через которую истекает газ. В нашем случае последнее
– это периметр формы опоры, умноженный на высоту опоры над плоскостью стола . Таким образом, можно переписать
или
.
Теперь обоснуем, почему формой опор выбрана именно
окружность. Если рассмотреть первый множитель в формуле , то для круглой формы опор он будет равен:
.
Для
всех других форм опор этот множитель будет больше, а значит, будет больше расход
газа. Например, для квадратной формы
.
Зная расход газа и время, в течение которого будет
тратиться газ, можно рассчитать полный объем газа или
.
Произведём расчет необходимого запаса газа для работы
макета в течение , масса нового
макета , плотность воздуха будем считать , толщину воздушной подушки возьмём , число опор . Тогда минимальный объём, который необходимо затратить при работе
системы, составляет .
Однако сжатый воздух будет
расходоваться не только на воздушную подушку, но и на работу импульсных
двигателей, поэтому назовём полученную цифру затрачиваемый объём при отсутствии управления. Понятно, что в общем
случае нужно иметь запас воздуха, значительно превышающий этот. Запас воздуха
было решено хранить в сжатом виде в 4-х баллонах, объемом 1.1 л каждый
(рис.2.3).
Эти баллоны симметрично расположены в конструкции
(рис.2.4) для того, чтобы центр масс макета находился на линии, соединяющей
центры опорных металлических дисков. В баллоны накачивается сжатый воздух под
давлением примерно 200 бар, и, таким образом, в четырёх баллонах хранится около
воздуха.
Рассмотрим подробнее
строение опоры макета, изображенного на рис.2.5. Через канал подачи газа воздух проникает в пористую среду ножки и на выходе
из неё создаёт газовую прослойку между ножкой и гладкой горизонтальной
поверхностью стеклянного стола. Ножки макета также способны двигаться, так как
стержень ножки снабжен некоторым суставом, благодаря которому ножка может
поворачиваться. Это необходимо для того, чтобы обеспечить касание ножки всей своей
поверхностью стола, в случае если он имеет небольшие искривления.
Импульсные двигатели, установленные на макете,
работают на сжатом воздухе, поступающем из резервуара, соединённого с
баллонами. Импульсные двигатели (рис.2.6), состоят из клапана, перекрывающего
резервуар со сжатым воздухом, и некоторой трубки, направляющей поток газа.
Когда на двигатель поступает команда, клапан убирается, и поток сжатого воздуха
течет наружу, передавая тем самым некоторый импульс макету.
Рассчитаем давление, которое необходимо подавать на
вход в импульсный двигатель, чтобы получить наибольший удельный импульс. Сила , действующая на макет со стороны импульсного двигателя,
определяется так: . Здесь m –масса макета, - ускорение макета за
счет действия двигателя. Но с другой стороны эта же сила равна произведению
массового расхода двигателя на скорость выходящего
потока газа , то есть . Однако расход двигателя можно расписать так
,
где
– это площадь сечения трубки истечения воздуха (будем
называть площадь сопла), и – скорость истечения и
плотность воздуха в сопле соответственно. Таким образом, сила тяги, которую
дает импульсный двигатель, равна:
.
Запишем закон Бернулли следующим образом:
.
Здесь
– энтальпия идеального
газа, а – скорость течения газа. В случае истечения газа из баллона
(из состояния покоя) величиной можно пренебречь. Тогда
Энтальпию
идеального газа опишем цепочкой равенств
или
окончательно
.
Тогда
уравнение
запишется в виде
Используем
уравнение адиабаты, из которого следует
.
Отсюда
.
Тогда
уравнение
преобразуется к виду
.
Его
можно переписать, используя соотношения
, ,
Известно, что максимальный расход газа будет
достигаться в критическом (наименьшем) сечении сопла при достижении скорости
звука газа в этом сечении. Скорость звука в газе равна
.
В
критическом сечении сопла температура газа равна
.
Таким
образом, подставляем критическую температуру в формулу для скорости звука –
скорости, с которой будет истекать газ из сопла. И для этой скорости выразим из
уравнения
значение давления в баллоне , при котором будет максимальный расход газа
.
Произведём расчет давления газа
, которое необходимо подавать на двигатели, при
условии, что – атмосферное
давление, , . Скорость звука при таких параметрах равна , а .
Двигатели располагаются на макете таким образом (рис.
2.7), что для создания силы в направлении связанной оси Ox и против
этого направления действуют двигатели 3
и 6, для создания силы в направлении
оси Oy действует сразу пара двигателей 1 и 4, против направления
этой оси 2 и 5. Для создания вращающего момента по часовой стрелке включаются
двигатели 1 и 5, против часовой стрелки – 2
и 4.
Схема системы подачи воздуха показана на рис. 2.8. Она
питается от четырех баллонов с запасенным сжатым воздухом. Давление в них составляет
около 200 бар. Однако, как было вычислено выше, для максимального импульса на
вход двигателям необходимо подавать давление бара.
В связи с этим был установлен специальный клапан, который
обеспечивает постоянство давления воздуха, подаваемого на двигатели и воздушную
подушку. Сразу после клапана установлен манометр, с помощью которого можно отслеживать
значение давления подаваемого воздуха. Все четыре баллона соединяются посредством
резервуара в одну ёмкость, поэтому газ расходуется одновременно из всех баллонов,
что позволяет сохранить симметричное распределение масс на макете.
Когда в баллонах заканчивается газ, давление в
резервуаре становится меньше 2 бар, поэтому давление, подаваемое на опоры
макета, ослабевает, и на макет начинает действовать сила трения, воздушная
подушка исчезает и макет прекращает движение.
Система электропитания состоит из аккумулятора и преобразователя
(рис.2.10). Аккумулятор подает 14 В на преобразователь напряжения, который в свою
очередь питает бортовой компьютер, микроконтроллер, управляющий сигналами на импульсные
двигатели, датчик угловой скорости, акселерометр и веб-камеру.
Определения ориентации состоит из двух этапов.
·
Обработка на
бортовом компьютере показаний датчика угловой скорости (рис.2.11) и
акселерометра в реальном времени даёт оценку полного вектора состояния макета.
·
Корректировка оценки вектора состояния макета с помощью
веб-камеры (рис.2.12) и имитатора звёздного неба – потолка со светящимися
светодиодами (рис.2.13). Используя карту положения светодиодов на потолке, по
снимку с веб-камеры, установленной на верхней крышке макета, можно вычислить
положение и ориентацию макета, и тем самым скорректировать оценку вектора
состояния макета, полученную с помощью датчика угловой скорости и акселерометра.
Однако корректировку можно производить только с некоторым промежутком времени
по причине слишком большого времени, необходимого для обработки одного снимка.
Система управления положением и ориентацией
макета состоит из бортового компьютера (рис.2.14), микроконтроллера и системы
импульсных двигателей. Для импульсных двигателей заложен следующий принцип
функционирования: каждые 100 мс компьютер посылает значения на микроконтроллер
сколько следующие 100 мс должен работать каждый двигатель. Микроконтроллер в
свою очередь подаёт команду открыть клапаны на двигатели. Если управление
требует того, чтобы клапан какого-либо двигателя был открыт более 100 мс,
компьютер посылает на микроконтроллер значения 100 для этого двигателя столько
раз, сколько это необходимо. Бортовой компьютер также снабжен разъемами для
подключения монитора, клавиатуры и локальной сети. Это предусмотрено для удобства
работы с макетом во время отработки программного обеспечения.
Несущая конструкция макета выполнен из лёгкого сплава
алюминия и состоит из двух дисков, верхнего и нижнего, и четырёх перекладин,
которые надёжно скрепляют эти диски (рис.2.15). К нижнему диску прикреплён бортовой
компьютер, к верхнему – четыре баллона с воздухом, а также веб-камера.
Рассмотрим алгоритм управления ориентацией
рассматриваемого макета. Алгоритм заключается в отслеживании некоторой заданной
программной траектории движения с определённой точностью. При разработке
алгоритма использовались элементы теории оптимального управления, а также
строился фильтр Калмана, необходимый для устранения шума датчика угловой скорости.
В общем случае задачу управления нельзя ограничивать
только достижением некоторого значения вектора состояния [6].
Может оказаться, что в таком строгом достижении этого состояния и нет
необходимости: важно, чтобы вектор состояния динамической системы не вышел из
некоторой области, определяющей многообразие его допустимых значений.
Естественно, каждому заданному закону управления соответствует закон изменения
координат вектора состояния, то есть траектория “движения” управляемого объекта
в фазовом пространстве. Зачастую процесс управления осуществляется с “ограниченными
ресурсами”, то есть закон управления не может быть произвольным, а должен
выбираться из некоторого множества Ω. Математически задача оптимального
управления может быть сформулирована так. Дан управляемый динамический объект,
вектор состояния которого подчиняется системе уравнений
Информацию о текущем векторе состояния мы получаем из
наблюдений вида
.
Закон
управления u(t)
определяется с помощью процедуры минимизации функционала вида
.
Этот
функционал и определяет цель управления.
Пусть дано. Задача формулируется так, что окрестность достигается за некоторый фиксированный отрезок времени T=t1–t0. Тогда задачу относят к типу задач с фиксированным временем и свободным концом траектории.
Существует другая постановка задачи. Конец траектории
строго фиксирован, то есть задано. Требуется
найти такое управление и,
которое сообщает динамическому объекту траекторию, минимизирующую функционал Q. Время перехода от начального состояния к конечному
не фиксировано. Тогда это задача с закрепленными концами фазовой
траектории и свободным временем. В частном случае, взяв в качестве
функционала время T, получим
задачу на максимальное быстродействие.
Например, задача управления состоит в том, чтобы
перевести космический аппарат с одной круговой орбиты на другую, тоже круговую,
но более высокую. Такой перевод может быть осуществлен с помощью двух импульсов
управления. Если высота новой орбиты задана, а время такого перевода не фиксировано,
то имеем задачу со свободным временем и закрепленными концами.
Второй вариант – запуск искусственного спутника Луны.
С круговой орбиты вокруг Земли космический аппарат с помощью импульса
переводится на орбиту, вытянутую в сторону Луны. По достижении космическим
аппаратом окрестности Луны необходимо скорректировать орбиту и превратить ее в
круговую около Луны. Эту коррекцию можно выполнить различными способами.
Возникает задача: как сэкономить топливо? Здесь концы траектории не закреплены,
а ведется поиск закона управления с минимальной энергией, решающего задачу
достижения результата за ограниченное допустимое время.
Минимизация функционала – классическая задача
вариационного исчисления [7]. В разных прикладных задачах те или иные преимущества
имеют:
а) метод динамического программирования Р. Беллмана,
б) метод, основанный на “принципе максимума” Л.
Понтрягина.
Последний – более распространен в небесной механике и
астродинамике.
Запишем систему дифференциальных уравнений –
математическую модель управляемого динамического объекта [8] (ограничимся
автономными системами)
Компоненты вектора управления нужно выбрать так,
чтобы минимизировать функционал , который запишем в виде
Введем -ю компоненту вектора состояния x
так, чтобы
Очевидно, что начальные условия для компоненты имеют вид , а цель управления - . Теперь расширенная система уравнений имеет вид
,
где
Пусть и – оптимальное
управление и оптимальная траектория соответственно. Тогда для любого процесса,
мало отличающегося от оптимального, можно записать уравнение в вариациях
и сопряженное ему уравнение
Заметим, что – квадратная матрица.
Определим функцию Понтрягина (расширенную функцию Гамильтона)
Теперь нашу систему можно записать в канонической
форме
так как
Л.С. Понтрягин доказал, что оптимальное управление достигается при
максимуме функции
Сформулируем теперь принцип максимума [8]. Пусть – такое допустимое
управление, что соответствующая ему траектория , исходящая в момент из точки , проходит в момент через точку . Для оптимальности управления и траектории необходимо
существование такой ненулевой непрерывной вектор-функции что
– для любого момента , являющегося точкой непрерывности управления , если канонические уравнения удовлетворены, функция переменной достигает в точке максимума;
– в конечный момент выполнены соотношения
Решим задачу наибыстрейшего перевода фазовой точки из
одного состояния в другое. Сформулируем эту задачу следующим образом.
Пусть точка движется вдоль оси Ох по закону . Требуется найти кусочно-непрерывное управление , , такое, чтобы точка, выйдя из начального положения , пришла за минимальное время в точку [9].
Положим, что – фазовые координаты точки. Тогда задачу можно переформулировать
так: быстрейшим образом перевести фазовую точку из состояния в состояние , считая, что движение подчиняется уравнениям
.
Так как мы минимизируем время, то функционал Q запишется в следующем виде:
.
Согласно
формуле
в нашем случае
и
согласно формуле
.
Запишем
функцию Понтрягина
в виде
Найдём
сопряжённую систему из уравнений
.
Проинтегрировав ее, получаем
.
Итак,
согласно принципу максимума Понтрягина
оптимальным управлением,
максимизирующем Гамильтониан
, является управление
Таким
образом, оптимальное управление является кусочно-постоянной функцией, принимающей
значения +, –и имеющей не более одной точки переключения , при переходе через которую меняет знак.
Теперь рассмотрим одномерную задачу управления
ориентацией, считая, что тело движется по закону где – это угол поворота
подвижной системы координат относительно неподвижной, – управляющее угловое ускорение . Задача состоит в наибыстрейшем переводе точки фазового
состояния из положения в состояние с тем условием, что
точка – лежит на некоторой
заранее определённой кривой, которую будем называть опорная траектория. Положим, опорная траектория подчиняется закону
,
где
– некоторая заданная
величина угловой скорости, – значение угла в начальный
момент времени .
Как мы выяснили раньше, оптимальным управлением будет управление с одним переключением в момент времени . В зависимости от начальной и конечной точек возможны два варианта управления: сначала прилагаем ускорение –, и в момент времени переключаем его на +, и наоборот. Рассмотрим оба варианта подробнее.
Управление – +
Проинтегрируем уравнение (4.1) с начальными условиями до момента
переключения , приняв = – ,
Далее
произведём интегрирование этого же уравнения (4.1), но с начальными условиями для момента переключения, приняв = + ,
Но
при условии, что точка должна лежать на
опорной траектории, запишем
Таким образом, имеем систему двух уравнений с двумя неизвестными и . При выборе корней уравнения будем руководствоваться ограничениями: .
Управление + –
Проделаем то же самое для другого варианта управления,
когда сначала включаем положительное значение управления, а в момент времени
переключаемся на отрицательное
Условие того, что точка лежит на опорной
траектории
На корни системы уравнений накладываются ограничения: .
Для того, чтобы построить замкнутое управление,
необходим канал обратной связи, который поставляет в регулятор выходное
состояние объекта. Очень часто этот канал организуется с помощью датчиков,
которые измеряют какую-либо компоненту вектора состояния тела. Однако, реальные
датчики выдают значение фазового состояния тела с некоторой ошибкой. Одним из
распространённых способов получения оценки вектора состояния является фильтр
Калмана [10].
Фильтр Калмана – последовательный
рекурсивный алгоритм, использующий принятую модель динамической системы для
получения оценки, которая может быть существенно скорректирована в результате
анализа каждой новой выборки измерений во временной последовательности. Этот алгоритм находит применение в процессе
управления многими сложными динамическими системами. При управлении
динамической системой, прежде всего, необходимо полностью знать ее фазовое
состояние в каждый момент времени. Но измерение всех переменных, которыми
необходимо управлять, не всегда возможно и в этих случаях фильтр Калмана
является тем средством, которое позволяет восстановить недостающую информацию
посредством имеющихся неточных зашумленных измерений.
Рассмотрим модель движения которую можно
переписать в следующем виде:
, где .
Таким
образом,
Модель измерений при наличии датчика угловой скорости
выглядит следующим образом (записана цепочка выражений с учетом подстановок):
.
Здесь – значение непосредственного измерения в момент времени , – шум измерения, который обладает нулевым математическим ожиданием , то есть является Гауссовским случайным процессом. Другими словами предполагаем наличие в измерениях белого шума. Второй момент шума равен
.
Проинтегрируем уравнение с начальными условиями
, .
Второй момент случайного процесса может быть
описан в терминах ковариационной матрицы
,
где – оценка
состояния, а матрица P(t) называется ковариационной матрицей ошибки оценки вектора состояния. Для того
чтобы получить прогнозируемую
оценку ковариационной матрицы ошибки, воспользуемся матричным уравнением
Риккати
Пусть ковариационная матрица ошибки имеет следующие элементы:
.
Тогда матричное уравнение Риккати с начальными условиями имеет следующее решение:
.
Таким
образом, проинтегрировав модельное уравнение и уравнение Риккати (5.2), получили априори оценки
для состояния тела и для матрицы ошибки .
Апостериори оценка базируется на наблюдениях (или
измерениях) . Таким
образом, она является функцией априори оценки и измерений и может
быть записана в следующем виде:
.
Апостериори
значение матрицы ошибки рассчитывается так:
.
Здесь
– так называемая матрица коэффициентов обратной связи. В
нашем случае она равна
.
Тогда
апостериори оценка вектора состояния и матрицы ковариации из (5.4) и (5.5) соответственно,
имеют вид
,
.
Таким
образом, получены все формулы, необходимые для работы фильтра Калмана.
Рассмотрим некоторые особенности реализации на макете
оптимального управления ориентацией, о котором шла речь в главе 3.2.
Так как двигатели по мере работы расходуют некоторое количество сжатого воздуха, масса баллонов постепенно уменьшается. Таким образом, меняется и масса самого макета, а значит и момент инерции относительно вертикальной оси также уменьшается. Тем не менее, так как давление в резервуаре макета с помощью специальных клапанов поддерживается постоянным, то удельный импульс каждого двигателя практически не меняется. Из всего сказанного следует, что ускорение, приобретаемое макетом от импульсных двигателей, изменяется со временем, а именно – растёт до момента, когда газ в баллонах практически закончился и его уже не хватает для поддержания постоянного давления в резервуаре. Примерная зависимость углового управляющего ускорения от времени изображена на рис.3.1. Так как ускорение зависит от времени, алгоритм управления ориентацией с некоторого времени начнёт давать ошибочные расчеты, потому что он использует некоторое постоянное значение ресурса управления. Выходом из этой проблемы является оценивание значения углового ускорения с помощью датчика угловой скорости во время каждого сеанса управления (рис.3.2). Таким образом, будем иметь для расчета времени управления каждый раз текущее значение ускорения.
Другая особенность проведения экспериментов в том, что
на момент их проведения имитатор звёздного неба не был полностью готов и
гироскоп не был установлен на макет, поэтому управление строится только на
оценке вектора состояния по имитируемым показаниям датчика угловой скорости без
уточнения с помощью веб-камеры.
Нужно назвать ещё один источник ошибки в управлении,
который происходит из особенности задания управления. Как было сказано выше,
каждые 100 мс компьютер посылает значения времени, сколько должен работать
каждый двигатель следующие 100 мс. Поэтому, когда приходит время переключить
управление на противоположное, к примеру, с плюса на минус, нельзя сделать это
немедленно. Сначала компьютер должен послать работающим двигателям информацию
сколько времени они должны работать в последние 100 мс, после этого времени
несколько миллисекунд управление остаётся отключенным, и только в следующие 100
мс включается противоположное управление. Из-за этой особенности получается
некоторая ошибка в приведении состояния тела из начального к требуемому. На
общем фоне помех и трения ножек макета о стол эта ошибка не является значительной.
Эксперимент управления ориентацией проходил следующим
образом. Сначала к бортовому компьютеру макета подключались клавиатура и
монитор. В программе задавалась некоторая задержка начала вычислений. Далее
запускалась программа, во время задержки от бортового компьютера отсоединялись
монитор и мышь и макет ставился на стеклянный стол. Следующую минуту программа
функционировала, решая задачу управления ориентацией каждую миллисекунду. При
этом все данные с имитируемого сенсора, выходные данные из фильтра Калмана и
вычисляемая опорная траектория вместе с текущим временем, которое отчитывалось
с начала работы программы, – все данные сохранялись в файле.
В качестве опорной траектории одного из
эксперимента взято движение с постоянной угловой скоростью 3 градуса в секунду.
Результаты эксперимента представлены на рис. 3.3, где сплошной линией
обозначена опорная траектория, а пунктирной линией – реальная траектория тела.
Первый график – график скорости вращения, второй график – график ориентации,
т.е. угла отклонения от некоторого начального значения, третий график – график
зависимости управления от времени.
Вследствие неполной сборки макета, на
который ещё не были установлены средства определения ориентации (гироскоп и
веб-камера), управление производилось по принципу, сходному принципу
разомкнутого управления. Были измерены управляющие моменты системы, возможные
возмущающие факторы, и зашумленные данные датчика имитировались в программе,
производящей управление макетом.
Как видно из рисунка, первый сеанс управления был
вызван тем, что начальное значение угловой скорости отличалось от заданного
опорного. После окончания сеанса управления траектория тела была в допустимой
от опорной области. Однако, как следует из первого графика, угловая скорость
тела постепенно падала вследствие небольшого трения ножек макета о стол,
которое было учтено при имитации показания датчика угловой скорости. После
того, как траектория тела вышла из области допустимого, включилось управление и
вернуло траекторию на опорную. Далее картина повторяется, управление время от
времени вмешивается в движение макета, возвращая макет на опорную траекторию.
Таким образом, можно было наблюдать, как макет первое
время движется с некоторой постоянной скоростью вращения. Однако вследствие
того, что управление разомкнутое, через некоторое время макет начинал менять
скорость вращения, что связано с непостоянным коэффициентом трения на столе и с
некоторыми случайными факторами, которые невозможно учесть в модели движения.
Но, когда на макет будет установлен датчик угловой скорости, не нужно будет
учитывать в модели движения возмущения, послужившие отклонению от опорной траектории.
Тогда будет реализован принцип замкнутого управления, который функционирует по
отклонению и которому «не важна» природа этого отклонения, будь она случайным
воздействием или некоторой постоянной силой.
Настоящая работа подтверждает работоспособность нового макета LuVeX, на котором, несмотря на неполную сборку и отсутствие
важных частей (датчика угловой скорости, веб-камеры), был реализован алгоритм
управления. При отработке на макете алгоритма управления ориентацией выяснилось
следующее:
· рассмотренный алгоритм обеспечивает движение тела по
определённой опорной траектории с некоторой наперёд заданной точностью,
· в случае, если опорная траектория построена на основе
уравнений движения тела, алгоритм управления производит функцию коррекции при
отклонении траектории тела от опорной,
· точность движения тела по опорной траектории имеет
некоторый предел, обусловленный уровнем шума датчика и дискретностью
управляющего импульса двигателей.
Таким образом, алгоритм управления импульсными
двигателями, основываясь на зашумлённых измерениях датчика угловой скорости и
акселерометров, обеспечивает достаточно точное нахождение тела на опорной
траектории даже в случае некоторых внешних возмущений, действующих на тело.
Работа выполнена при частичной поддержке DAAD
(программа Leonhard Euler, реферат 325) и РФФИ (грант 06-01-00389).
1. http://ssl.mit.edu/spheres/motivation.html
2. http://www.afrl.af.mil/
3. http://sun-valley.stanford.edu/arl.html
4. http://www.aero.polimi.it/~space/
5.
S.Theil, R.Stanislowski, A.Schleicher, S.Scheidhauer. Entwurf und Entwicklung eines Luftkissenfahrzeugs für einen Satellitendynamiksimulator/ Projektbericht, Universität Bremen. – Bremen, 2003. – 38 с.
6. М.П. Туманов.
Теория управления. Теория линейных
систем автоматического управления: Учебное пособие / М: МГИЭМ, 2005. – 82с.
7. A.И. Егоров.
Основы теории управления./М.: Физматлит, 2004. 504 с.
8. Р Габасов., Ф.М Кириллова. Принцип максимума в теории оптимального управления/
Минск: Наука и техника, 1974. – 271c.
9. Ф.П.
Васильев. Численные методы решения
экстремальных задач./ М.: Наука, 1988. – 552с.
10. Д.С. Иванов,
М.Ю. Овчинников. Использование
одноосного гироскопа для определения ориентации макета в лабораторных условиях/
Препринт ИПМ им. М.В. Келдыша РАН. – М., 2008. – № 11. – 32 с.
(http://www.keldysh.ru/papers/2008/prep11/
prep2008_11.html )
Текст
программы управления ориентацией макета
void main(void)
{
void
randomize(void);
FILE
*source,*target,*results,*test;
int c,n,i,t;
int N;
unsigned long int timer[9],calc[7]; //массив со значениями для контроллера
calc[0]=0; calc[1]=0; calc[2]=0;
calc[3]=0; calc[4]=0; calc[5]=0; calc[6]=100;
char cInp;
long CurTime=0,
CurTime0=0, CTime=-99, dt=1,Tn;
struct timeb T, T1;
char str[100]= {0};
float E=180,
e=0.01,Enow=0, Rand, X3; //допустимые ошибки алгоритма
float p[3],
pnow[3]={0},q[2]={0},phi,w,C1,C2, a[3]={0},R, z, phiz, j;//фильтр
float PHI,W, e1,
e2, tx, t1, Tr1,Nr,A,B, C, x1, x2, X;//параметры оп. траект.
a[0]=0; a[1]=0;a[2]=0;p[0]=0.01;p[1]=0.01;p[2]=0.01;//уточнение ковариации
phi=0; phiz=0;
w=0; z=0; R=0.01;
N=1000;
j=1; W=30;
PHI=0;PHI=PHI*3.14/180;//задание
начальных значений для оп. траект.
W=W*3.14/180; e=e*3.14/180;
E=E*3.14/180;
e1=2; e2=0.5;
e1=e1*3.14/180; e2=e2*3.14/180;//задание допустимых ошибок
target=fopen("/dev/ttyS0","wb");
results=fopen("Results30.txt","w");//откр-е
файлов для записи результатов
test=fopen("Test.txt","w");
ftime(&T);
ftime(&T1);
CurTime=(T1.time-T.time)*1000+T1.millitm-T.millitm;//функция времени
while(CurTime<20000)
{ ftime(&T1);
CurTime=(T1.time-T.time)*1000+T1.millitm-T.millitm; }
CurTime=0; ftime(&T);
while(CurTime<60000)//программа будет выполняться 60 с.
{ftime(&T1);
CurTime=(T1.time-T.time)*1000+T1.millitm-T.millitm;
while(CurTime<CurTime0+dt)//шаг вычислений
{ftime(&T1);
CurTime=(T1.time-T.time)*1000+T1.millitm-T.millitm;
}
if(CurTime>t1*1000&&t1!=0)
{ Enow=-Enow; t1=0; }
if(CurTime>Tr1*1000&&Tr1!=0)
{ Enow=0; Tr1=0; }
Rand=random();//имитация
показаний датчика угловой скорости
Rand=Rand/1000000000-1.1;
z=z-0.0001+Enow*(CurTime-CurTime0)/1000+e*Rand;
phiz=phiz+z*(CurTime-CurTime0)/1000;//расчет параметров фильтра
C1=w-Enow*CurTime0/1000;
C2=phi-w*CurTime0/1000+Enow*CurTime0*CurTime0/2/1000000;
phi=Enow*CurTime*CurTime/2/1000000+C1*CurTime/1000+C2;
w=Enow*CurTime/1000+C1;
pnow[0]=p[2]*CurTime*CurTime/1000000+2*(p[1]-p[2]*CurTime0/1000)*CurTime/1000+(p[0]-2*p[1]*CurTime0/1000+p[2]*CurTime0*CurTime0/1000000);
pnow[1]=p[2]*CurTime/1000+(p[1]-p[2]*CurTime0/1000);
pnow[2]=p[2];
phi=phi+pnow[1]*(z-w)/(pnow[2]+R);
w=w+pnow[2]*(z-w)/(pnow[2]+R);
p[0]=pnow[0]-pnow[1]*pnow[1]/(pnow[2]+R);
p[1]=pnow[1]*R/(pnow[2]+R);
p[2]=pnow[2]*R/(pnow[2]+R);
if(j>=1)// алгоритм
уточнения ковариационной матрицы ошибки
{ q[0]=phi-phiz; q[1]=w-z;
a[0]=(j-1)*a[0]/j+q[0]*q[0]*100000/j;
a[1]=(j-1)*a[1]/j+q[0]*q[1]*100000/j;
a[2]=(j-1)*a[2]/j+q[1]*q[1]*100000/j;
j=j+1; }
if(j-1==N)
{ p[0]=a[0];
p[1]=a[1]; p[2]=a[2];
a[0]=0; a[1]=0; a[2]=0; j=1; }
PHI=PHI+W*(CurTime-CurTime0)/1000;
if(fabs(phi-PHI)>e1&&Enow==0)// принятие
решения об управлении
{ Tr1=1000000; A=-E/4; B=(-W/2+w/2+E*CurTime/2/1000);
C=-w*CurTime/1000-E*CurTime*CurTime/2/1000000+pow(-W/2
+w/2+
E*CurTime/1000/2,2)/E+phi-PHI+W*CurTime/1000;
x1=(-B+sqrt(B*B-4*A*C))/2/A;
x2=(-B-sqrt(B*B-4*A*C))/2/A;
if(x1!=sqrt(-1))// вычисление времени сеансов управления
{ if((x1>0)-(x2>0)*(x1<x2)*(x1>0))
{
tx=(-W+w+E*x1+E*CurTime/1000)/2/E;
if(tx>CurTime/1000)
{ t1=tx; Tr1=x1;
Nr=1; Enow=-E; }
}
if((x2>0)-(x1>0)*(x2<x1)*(x2>0))
{
tx=(-W+w+E*x2+E*CurTime/1000)/2/E;
if(tx>CurTime/1000)
{ t1=tx; Tr1=x2; Nr=1; Enow=-E; }
}
}
A=E/4;
B=-W/2+w/2-E*CurTime/2/1000;
C=phi-w*CurTime/1000+E*CurTime*CurTime/2/1000000-pow(W/2-w/2+
E*CurTime/2/1000,2)/E-PHI+W*CurTime/1000;
x1=(-B+sqrt(B*B-4*A*C))/2/A;
x2=(-B-sqrt(B*B-4*A*C))/2/A;
if(x1!=sqrt(-1))
{ if((x1>0)-(x2>0)*(x1<x2)*(x1>0))
{ if(Tr1>x1)
{
tx=(W-w+E*x1+E*CurTime/1000)/2/E;
if(tx>CurTime/1000)
{ t1=tx;
Tr1=x1; Nr=2; Enow=E;}
}
}
if((x2>0)-(x1>0)*(x2<x1)*(x2>0))
{ if(Tr1>x2)
{
tx=(W-w+E*x2+E*CurTime/1000)/2/E;
if(tx>CurTime/1000)
{
t1=tx; Tr1=x2; Nr=2; Enow=E; }
}
}
}
}
CurTime0=CurTime; //запись всех данных в файл
printf("%f %f %f %f %f %f %f%d\n", z*180/3.14, phiz*180/3.14, w*180/3.14, phi*180/3.14, W*180/3.14, PHI*180/3.14, Enow*180/3.14, CurTime);
fprintf(results,"%f %f %f %f %f %f %f
%d\n", z*180/3.14, phiz*180/3.14, w*180/3.14, phi*180/3.14, W*180/3.14,
PHI*180/3.14, Enow*180/3.14, CurTime);
if(CurTime==CTime+100) // передача вычисленных значений контроллеру
{ if(Enow>0)
{ if(t1!=0)
{X3=t1*1000;
Tn=(long)X3; }
else { X3=Tr1*1000; Tn=(long)X3; }
if(Tn>CurTime+100)
{ calc[1]=100;
calc[3]=100;}
else { if(Tn-CurTime!=10)
{
calc[1]=Tn-CurTime; calc[3]=Tn-CurTime; }
else {
calc[1]=0; calc[3]=0; }
}
}
if(Enow<0)
{ if(t1!=0)
{ X3=t1*1000; Tn=(long)X3; }
else { X3=Tr1*1000; Tn=(long)X3; }
if(Tn>CurTime+100)
{ calc[0]=100; calc[4]=100;
}
else { if(Tn-CurTime!=10)
{
calc[0]=Tn-CurTime; calc[4]=Tn-CurTime; }
else { calc[0]=0; calc[4]=0;}
}
}
}
if(CurTime>=CTime+100)
{ int k,l;
for(k=1;k<8;k++)
{timer[k]=calc[k-1];}
timer[0]=101; //header
timer[8]=
(2*(timer[7]+timer[6]+timer[5] +timer[4]+timer[3]+timer[2]+ timer[1]));
//<-checksum
for(i=0;i<9;i++)
{cInp=(char)timer[i]; fputc(cInp,target);
fflush(target); } // посылка контроллеру
timer[8]=0; CTime=CurTime; // запись
значений управлений в файл
fprintf(test,"%i
%u %u %u %u %u %u %u %i\n", Tn,timer[1], timer[2], timer[3], timer[4],
timer[5], timer[6], timer[7], CurTime);
for(i=0;i<6;i++)
{ timer[i+1]=0; calc[i]=0; }
}
}
fclose(results);
fclose(target);
return 0;
}