Стенд для отработки алгоритмов управления движением многоэлементных систем

( Laboratory Facility to Verify Motion Control Algorithms for Multi-element Systems
Preprint, Inst. Appl. Math., the Russian Academy of Science)

Иванов Д.С., Т.Вальтер, Д.Биндель, Овчинников М.Ю.
(D.S.Ivanov, Т.Walter, D.Bindel, M.Yu.Ovchinnikov)

ИПМ им. М.В.Келдыша РАН

Москва, 2008
Работа выполнена при финансовой поддержке DAAD (программа Leonhard Euler, реферат 325) и Российского фонда фундаментальных исследований (проект № 06-01-00389)

Аннотация

Приведено описание макета, созданного в Центре космической техники и микрогравитации (ZARM) Бременского университета (Германия) для имитации движения многозвенных систем. Приведены расчеты параметров отдельных элементов макета. Дано описание алгоритма управления его импульсными двигателями. Приведены расчеты для фильтра Калмана, использующегося в задаче определения ориентации макета.

Abstract

Laboratory facility for simulation of planar formation mock-up dynamics is being developed at Zentrum für Angewandte Raumfahrttechnologie und Mikrogravitation (ZARM) in Bremen (Germany) which is intended to be used for verification of motion control algorithms. Mock-up parameters are determined and elements of the optimal control theory are stated. The control algorithm together with Kalman filter parameters which are used to control the mock-up are developed.

Содержание

1.   Введение......................................................................................................... 3

1.1. Ранее разработанные системы.. 4

1.2. Цели создания стенда. 6

1.3. Требования к стенду. 6

2. Устройство макета. 8

2.1. Расчет требуемого объёма воздуха и выбор формы опор макета. 8

2.2. Импульсные двигатели. 11

2.3. Система подачи воздуха. 13

2.4. Система электроснабжения. 14

2.5. Система определения ориентации и положения макета и система управления импульсными двигателями. 14

3. Реализованный алгоритм управления ориентацией. 15

3.1 Элементы теории оптимального управления. 16

Классификация задач оптимального управления. 16

Принцип максимума. 17

3.2 Решение задачи управления. 19

Постановка задачи и решение в общем виде. 19

Управление ориентацией. Движение по опорной траектории. 20

3.3. Фильтр Калмана. 21

3.4. Реализация алгоритма оптимального управления ориентацией. 23

3.5. Результаты экспериментов. 25

4. Заключение. 26

5. Благодарности. 27

ЛИТЕРАТУРА.. 27

ПРИЛОЖЕНИЕ.. 29


1.    Введение

Перед запуском искусственный спутник Земли подвергают многоэтапным проверкам и испытаниям. Эти испытания дают важную информацию о его будущем поведении на орбите, позволяют выявить ошибки, допущенные при его разработке и изготовлении, помогают найти границы применимости того или иного метода управления и многое другое, на основе чего можно надеяться на четкую и надежную работу спутника на орбите. Однако силы и моменты, которые испытывает спутник на орбите, значительно отличаются от тех, которые действуют на него на Земле. Это затрудняет проведение его динамических испытаний в лабораторных условиях. Тем не менее, существуют способы проведения испытаний спутников, которые в определённой мере имитируют условия на орбите, позволяя таким образом отработать алгоритмы идентификации и управления углового движения тела в космосе.

Пожалуй, лучшие условия для испытаний достигаются на Международной космической станции (рис.1.1), где спутник может иметь сразу 6 степеней свободы. Однако стоимость доставки груза на МКС весьма высока и составляет около 20 тыс. евро за килограмм. Другой способ провести испытания – это поместить испытуемый спутник или его макет в самолет. На параболическом участке траектории самолёта все тела, находящиеся в самолёте, будут находиться в условиях микрогравитации (рис. 1.2). Недостаток этого способа заключается в том, что он также достаточно дорогой, и, кроме того, позволяет проводить эксперименты в течение очень короткого промежутка времени, за который сложно получить какие-либо результаты по отработке алгоритмов движения спутника. Ещё один способ проведения подобных экспериментов – это использование Drop Tower, расположенной в Центре прикладных космических технологий и микрогравитации в Бремене (рис. 1.3) - башни, откуда откачан воздух, что позволяет падающему в ней телу в течение почти 10 секунд находиться в условиях микрогравитации. Но, опять же, время проведения экспериментов мало, а стоит “бросок” тела весьма дорого.

Подпись: Рис. 1.1. МКСВозникает задача проведения наземных испытаний спутника и используемых алгоритмов управления, относительно недорогих, может, не в полной мере соответствующих условиям на орбите, но неограниченных по времени проведения экспериментов. Один из способов проведения таких испытаний – это использование скользящего тела, которое испытывает слабое трения при движении по плоскости. Такое скользящее тело может беспрепятственно совершать движения на гладкой поверхности и менять ориентацию относительно оси, перпендикулярной поверхности.

Для этой цели в Центре прикладных космических технологий и микрогравитации (Zentrum für angewandte Raumfahrttechnologie und Mikrogravitation - ZARM) при Университете города Бремена (Германия) был разработан стенд под названием LuVeX (Luftkissen Vehikel Experiment), на котором можно исследовать динамику движения спутников. На настоящий момент создано два макета, передвигающиеся благодаря воздушной подушке, приводимые в движение импульсными двигателями на сжатом воздухе. Построив алгоритмы управления этими двигателями, можно провести эксперименты по управлению положением и ориентацией макетов. Эти результаты будут полезны для разработки алгоритмов управления реальными спутниками и, например, управления групповыми полётами типа Formation Flying.

1.1. Ранее разработанные системы

В настоящее время в США проводится много экспериментов для исследования динамики движения спутников и отработки алгоритмов их движения. Такие эксперименты имеют место в индустрии, научной и военной сферах. Рассмотрим некоторые их них.


Одним из экспериментов является SPHERES (рис. 1.4), проект Массачусетского технологического института [1]. Испытания проводятся для отработки движения группы спутников на параболической траектории самолёта и на МКС. Группа состоит из трех наноспутников, которые совершают движения в состоянии невесомости. Такой эксперимент является весьма дорогим и требует больших затрат времени и денег на подготовительном этапе. Поэтому для этих наноспутников построили специальную подставку на воздушной подушке, как изображено на рис.1.4, и предварительные эксперименты и отработку проводили на гладкой поверхности.

Также в США были разработаны наноспутники в Air Force Research Laboratory для военных целей, которые могут с достаточно высоким разрешением производить мониторинг поверхности Земли (рис.1.5) [2]. Однако эксперименты не продвинулись дальше моделирования движения такой группы спутников.

В Стенфордском университете разработаны три робота, способные скользить по гладкой поверхности на воздушной подушке (рис.1.6) [3]. Этот проект весьма экономичен и не требует больших затрат времени для подготовки проведения экспериментов. Создание таких роботов позволяет проводить эксперименты по исследованию динамики и по отработке алгоритмов управления сложными многозвенными системами.

В Милане в Политехническом университете занимаются созданием робота, названного Smart Flyer, использующегося для отработки алгоритмов управления движением (рис.1.7) [4]. Этот робот оснащен двумя пропеллерами, позволяющими имитировать воздействия импульсных двигателей.

LuVeX является одним из стендов, на котором моделируется движение группы спутников. Он стоит относительно недорого и удобен при проведении экспериментов. Макет имеет небольшую массу, относительно небольшой и экономичный. Для его функционирования требуется лишь ровная поверхность, сжатый воздух и электроэнергия.

Стенд состоит из стола со стеклянным покрытием и двух макетов, которые будем условно называть старый (рис. 1.8, справа) и новый (рис. 1.8, слева). На момент выполнения настоящей работы новый макет находился в стадии сборки и не полностью функционировал. И именно ему посвящена настоящая работа. При проектировании новой версии LuVeX’а были учтены все недоработки старой версии - были установлены более совершенные импульсные двигатели, были использованы более мощные элементы питания, один большой баллон со сжатым воздухом был заменён четырьмя меньшего размера, вследствие чего макет стал более компактным. После завершения сборки нового макета планируется проведение экспериментов по отработке алгоритмов движения многозвенных систем.

1.2. Цели создания стенда

Перечислим основные цели, для которых создается стенд [5].

·        Отработка алгоритмов управления ориентацией и положением спутников с помощью импульсных двигателей.

·        Разработка алгоритмов определения ориентации спутников по снимкам звёздной камеры и с помощью показаний датчика угловой скорости.

·        Отработка механизмов передачи информации между спутником и наземной станцией с помощью имитационной схемы: макет – стационарный компьютер.

·        Проверка алгоритмов и механизмов взаимодействия нескольких макетов как многозвенной системы, отработка управления группового полёта спутников.

·        Обучение на базе стенда специалистов по созданию сложных информационных систем и специалистов по управлению такими системами.

1.3. Требования к стенду

Для достижения заданных целей, макеты должны удовлетворять определенным требованиям относительно конструкции, системы управления, определения ориентации, системы коммуникации, электроснабжения и так далее. Перечислим эти требования.

·        Продолжительность автономной работы макета должна составлять 20 – 30 мин.

·        Снабжение импульсных двигателей сжатым воздухом должно происходить из резервуаров, расположенных на самом макете.

·        На макет необходимо установить бортовой компьютер массой приблизительно 0.75 кг и это нужно учесть при разработке конструкции макета.

·        При выборе батарей питания нужно учесть, что бортовой компьютер питается от 6.5 В и потребляет энергию 12 Вт, кроме того остальная часть макета будет потреблять около 10 Вт.

·        Требуемое напряжение источника питания не должно превышать 24 В.

·        Макет должен беспрепятственно перемещаться и вращаться  на плоскости.

·        Для вышеупомянутых движений макета нужно установить 6 импульсных двигателей, работающих на сжатом воздухе и регулируемых с помощью клапанов.

·        Диаметр макета не должен превышать 0.3 м.

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

·        Необходимо, чтобы замена блоков питания макета была достаточно быстрой и технологичной.

·        Нужно разработать и включить в конструкцию макета систему подключения баллонов со сжатым воздухом.

·        Учесть, что полезная нагрузка макета может составлять около 2 кг.

·        Суммарная стоимость макета не должна превышать 2 – 3 тысячи евро.



Взаимосвязь всех вышеперечисленных требований можно изобразить на схеме (рис. 1.7).

Как можно увидеть из схемы, все составляющие макета влияют на его конечную стоимость, что является весьма важным параметром, который должен быть обязательно учтен при проектировании макета и при выборе используемых материалов и вариантов сборки макета, но также должны быть выполнены все вышеперечисленные требования относительно свойств и параметров макета. Созданный новый макет LuVeX – это макет с оптимальным соотношением цена – требования, где каждая составляющая макета выполняет необходимые функции, но не является при этом дорогостоящей.

2. Устройство макета

Рассмотрим подробно устройство нового макета и принципы его функционирования. Проведём расчет параметров для правильной работы отдельных его частей. Методика расчета параметров нового макета взята из [5], где рассчитаны эти же параметры для старого макета.

2.1. Расчет требуемого объёма воздуха и выбор формы опор макета

На макет действует сила тяжести Земли, вследствие чего вся его масса давит на опоры макета, представляющие собой три небольшие плоскости, а они в свою очередь создают давление на горизонтальную плоскость, на которой стоит сам макет. Понятно, что в таком состоянии макет не может двигаться по плоскости свободно: при движении будет возникать сила трения между ножками-опорами макета (рис.2.1) и плоскостью, что приведёт к торможению макета. Для исключения силы трения используют так называемую «воздушную подушку» – прослойку воздуха между плоскостью ножек и плоскостью стола, которую получают пропусканием воздуха под некоторым напором через пористый материал ножек. Благодаря воздушной подушке тело движется по плоскости свободно, чем фактически имитируется движение тела на орбите, только в проекции на двумерное пространство. Однако для такой воздушной подушки необходимо правильно выбрать материл, из которого будут изготовлены ножки макета, их размеры и подавать на вход в ножки сжатый воздух под определённым давлением.

Для расчета давления, которое необходимо подавать на вход ножкам, необходимо рассчитать расход воздуха на воздушную подушку.

Запишем закон Бернулли сохранения полного давления в потоке газа или жидкости

,

где в нашем случае  – плотность газа под опорой,  – высота опоры над плоскостью стола,  – гравитационная постоянная, – скорость истечения газов. В законе Бернулли третье слагаемое ещё называют динамическим давлением

.

Статическое давление в нашем случае рассчитывается так:

.

Здесь  – масса макета, n – число опор макета,  – площадь одной опоры макета.

Так как аппарат находится в равновесии, то статическое и динамическое давления должны быть равны  или

.

Отсюда выразим скорость истечения газов :

.

Расход газа вычисляется следующим образом: , где – объемный расход газа, – площадь, через которую истекает газ. В нашем случае последнее – это периметр формы опоры, умноженный на высоту опоры над плоскостью стола . Таким образом, можно переписать

 

или

 .                                                               

Теперь обоснуем, почему формой опор выбрана именно окружность. Если рассмотреть первый множитель в формуле , то для круглой формы опор он будет равен:

.

Для всех других форм опор этот множитель будет больше, а значит, будет больше расход газа. Например, для квадратной формы

.

Зная расход газа и время, в течение которого будет тратиться газ, можно рассчитать полный объем газа  или

.

Произведём расчет необходимого запаса газа для работы макета в течение , масса нового макета , плотность воздуха будем считать , толщину воздушной подушки возьмём , число опор . Тогда минимальный объём, который необходимо затратить при работе системы, составляет .

Однако сжатый воздух будет расходоваться не только на воздушную подушку, но и на работу импульсных двигателей, поэтому назовём полученную цифру затрачиваемый объём при отсутствии управления. Понятно, что в общем случае нужно иметь запас воздуха, значительно превышающий этот. Запас воздуха было решено хранить в сжатом виде в 4-х баллонах, объемом 1.1 л каждый (рис.2.3).

 

Эти баллоны симметрично расположены в конструкции (рис.2.4) для того, чтобы центр масс макета находился на линии, соединяющей центры опорных металлических дисков. В баллоны накачивается сжатый воздух под давлением примерно 200 бар, и, таким образом, в четырёх баллонах хранится около  воздуха.

Рассмотрим подробнее строение опоры макета, изображенного на рис.2.5. Через канал подачи газа воздух проникает в пористую среду ножки и на выходе из неё создаёт газовую прослойку между ножкой и гладкой горизонтальной поверхностью стеклянного стола. Ножки макета также способны двигаться, так как стержень ножки снабжен некоторым суставом, благодаря которому ножка может поворачиваться. Это необходимо для того, чтобы обеспечить касание ножки всей своей поверхностью стола, в случае если он имеет небольшие искривления.

2.2. Импульсные двигатели

Импульсные двигатели, установленные на макете, работают на сжатом воздухе, поступающем из резервуара, соединённого с баллонами. Импульсные двигатели (рис.2.6), состоят из клапана, перекрывающего резервуар со сжатым воздухом, и некоторой трубки, направляющей поток газа. Когда на двигатель поступает команда, клапан убирается, и поток сжатого воздуха течет наружу, передавая тем самым некоторый импульс макету.

Рассчитаем давление, которое необходимо подавать на вход в импульсный двигатель, чтобы получить наибольший удельный импульс. Сила , действующая на макет со стороны импульсного двигателя, определяется так: . Здесь m –масса макета,  - ускорение макета за счет действия двигателя. Но с другой стороны эта же сила равна произведению массового расхода двигателя  на скорость выходящего потока газа , то есть . Однако расход двигателя можно расписать так

,

где – это площадь сечения трубки истечения воздуха (будем называть площадь сопла),  и  – скорость истечения и плотность воздуха в сопле соответственно. Таким образом, сила тяги, которую дает импульсный двигатель, равна:

.

Запишем закон Бернулли следующим образом:

.

Здесь  – энтальпия идеального газа, а – скорость течения газа. В случае истечения газа из баллона (из состояния покоя) величиной  можно пренебречь. Тогда

.                                                                                  

Энтальпию идеального газа опишем цепочкой равенств

или окончательно

.

Тогда уравнение запишется в виде

.                                                                           

Используем уравнение адиабаты, из которого следует

.

Отсюда

.

Тогда уравнение преобразуется к виду

.

Его можно переписать, используя соотношения

, ,

.                                                             

Известно, что максимальный расход газа будет достигаться в критическом (наименьшем) сечении сопла при достижении скорости звука газа в этом сечении. Скорость звука в газе равна

.

В критическом сечении сопла температура газа равна

.

Таким образом, подставляем критическую температуру в формулу для скорости звука – скорости, с которой будет истекать газ из сопла. И для этой скорости выразим из уравнения значение давления в баллоне , при котором будет максимальный расход газа

.                                                               
Произведём расчет давления газа   , которое необходимо подавать на двигатели, при условии, что  – атмосферное давление, , . Скорость звука при таких параметрах равна , а .

Двигатели располагаются на макете таким образом (рис. 2.7), что для создания силы в направлении связанной оси Ox и против этого направления действуют двигатели 3 и 6, для создания силы в направлении оси Oy действует сразу пара двигателей 1 и 4, против направления этой оси 2 и 5. Для создания вращающего момента по часовой стрелке включаются двигатели 1 и 5, против часовой стрелки – 2 и 4.




2.3. Система подачи воздуха

Схема системы подачи воздуха показана на рис. 2.8. Она питается от четырех баллонов с запасенным сжатым воздухом. Давление в них составляет около 200 бар. Однако, как было вычислено выше, для максимального импульса на вход двигателям необходимо подавать давление бара.


В связи с этим был установлен специальный клапан, который обеспечивает постоянство давления воздуха, подаваемого на двигатели и воздушную подушку. Сразу после клапана установлен манометр, с помощью которого можно отслеживать значение давления подаваемого воздуха. Все четыре баллона соединяются посредством резервуара в одну ёмкость, поэтому газ расходуется одновременно из всех баллонов, что позволяет сохранить симметричное распределение масс на макете. Когда в баллонах заканчивается газ, давление в резервуаре становится меньше 2 бар, поэтому давление, подаваемое на опоры макета, ослабевает, и на макет начинает действовать сила трения, воздушная подушка исчезает и макет прекращает движение.

2.4. Система электроснабжения

Система электропитания состоит из аккумулятора и преобразователя (рис.2.10). Аккумулятор подает 14 В на преобразователь напряжения, который в свою очередь питает бортовой компьютер, микроконтроллер, управляющий сигналами на импульсные двигатели, датчик угловой скорости, акселерометр и веб-камеру.


2.5. Система определения ориентации и положения макета и система управления импульсными двигателями

Определения ориентации состоит из двух этапов.

·              Обработка на бортовом компьютере показаний датчика угловой скорости (рис.2.11) и акселерометра в реальном времени даёт оценку полного вектора состояния макета.

·               Корректировка оценки вектора состояния макета с помощью веб-камеры (рис.2.12) и имитатора звёздного неба – потолка со светящимися светодиодами (рис.2.13). Используя карту положения светодиодов на потолке, по снимку с веб-камеры, установленной на верхней крышке макета, можно вычислить положение и ориентацию макета, и тем самым скорректировать оценку вектора состояния макета, полученную с помощью датчика угловой скорости и акселерометра. Однако корректировку можно производить только с некоторым промежутком времени по причине слишком большого времени, необходимого для обработки одного снимка.

Система управления положением и ориентацией макета состоит из бортового компьютера (рис.2.14), микроконтроллера и системы импульсных двигателей. Для импульсных двигателей заложен следующий принцип функционирования: каждые 100 мс компьютер посылает значения на микроконтроллер сколько следующие 100 мс должен работать каждый двигатель. Микроконтроллер в свою очередь подаёт команду открыть клапаны на двигатели. Если управление требует того, чтобы клапан какого-либо двигателя был открыт более 100 мс, компьютер посылает на микроконтроллер значения 100 для этого двигателя столько раз, сколько это необходимо. Бортовой компьютер также снабжен разъемами для подключения монитора, клавиатуры и локальной сети. Это предусмотрено для удобства работы с макетом во время отработки программного обеспечения.



Несущая конструкция макета выполнен из лёгкого сплава алюминия и состоит из двух дисков, верхнего и нижнего, и четырёх перекладин, которые надёжно скрепляют эти диски (рис.2.15). К нижнему диску прикреплён бортовой компьютер, к верхнему – четыре баллона с воздухом, а также веб-камера.

3. Реализованный алгоритм управления ориентацией

Рассмотрим алгоритм управления ориентацией рассматриваемого макета. Алгоритм заключается в отслеживании некоторой заданной программной траектории движения с определённой точностью. При разработке алгоритма использовались элементы теории оптимального управления, а также строился фильтр Калмана, необходимый для устранения шума датчика угловой скорости.

3.1 Элементы теории оптимального управления

Классификация задач оптимального управления

В общем случае задачу управления нельзя ограничивать только достижением некоторого значения вектора состояния [6]. Может оказаться, что в таком строгом достижении этого состояния и нет необходимости: важно, чтобы вектор состояния динамической системы не вышел из некоторой области, определяющей многообразие его допустимых значений. Естественно, каждому заданному закону управления соответствует закон изменения координат вектора состояния, то есть траектория “движения” управляемого объекта в фазовом пространстве. Зачастую процесс управления осуществляется с “ограниченными ресурсами”, то есть закон управления не может быть произвольным, а должен выбираться из некоторого множества Ω. Математически задача оптимального управления может быть сформулирована так. Дан управляемый динамический объект, вектор состояния которого подчиняется системе уравнений

                                                                                   

Информацию о текущем векторе состояния  мы получаем из наблюдений вида

.

Закон управления u(t) определяется с помощью процедуры минимизации функционала вида

.

Этот функционал и определяет цель управления.

Пусть  дано. Задача формулируется так, что окрестность  достигается за некоторый фиксированный отрезок времени T=t1t0. Тогда задачу относят к типу задач с фиксированным временем и свободным концом траектории.

Существует другая постановка задачи. Конец траектории строго фиксирован, то есть  задано. Требуется найти такое управление и, которое сообщает динамическому объекту траекторию, минимизирующую функционал Q. Время перехода от начального состояния к конечному не фиксировано. Тогда это задача с закрепленными концами фазовой траектории и свободным временем. В частном случае, взяв в качестве функционала время T, получим задачу на максимальное быстродействие.

Например, задача управления состоит в том, чтобы перевести космический аппарат с одной круговой орбиты на другую, тоже круговую, но более высокую. Такой перевод может быть осуществлен с помощью двух импульсов управления. Если высота новой орбиты задана, а время такого перевода не фиксировано, то имеем задачу со свободным временем и закрепленными концами.

Второй вариант – запуск искусственного спутника Луны. С круговой орбиты вокруг Земли космический аппарат с помощью импульса переводится на орбиту, вытянутую в сторону Луны. По достижении космическим аппаратом окрестности Луны необходимо скорректировать орбиту и превратить ее в круговую около Луны. Эту коррекцию можно выполнить различными способами. Возникает задача: как сэкономить топливо? Здесь концы траектории не закреплены, а ведется поиск закона управления с минимальной энергией, решающего задачу достижения результата за ограниченное допустимое время.

Минимизация функционала – классическая задача вариационного исчисления [7]. В разных прикладных задачах те или иные преимущества имеют:

а) метод динамического программирования Р. Беллмана,

б) метод, основанный на “принципе максимума” Л. Понтрягина.

Последний – более распространен в небесной механике и астродинамике.

Принцип максимума

Запишем систему дифференциальных уравнений – математическую модель управляемого динамического объекта [8] (ограничимся автономными системами)

Компоненты вектора управления  нужно выбрать так, чтобы минимизировать функционал , который запишем в виде

                                                                           

Введем -ю компоненту вектора состояния x

                                                                      

так, чтобы

Очевидно, что начальные условия для компоненты  имеют вид , а цель управления - . Теперь расширенная система уравнений имеет вид

,

где

Пусть  и  – оптимальное управление и оптимальная траектория соответственно. Тогда для любого процесса, мало отличающегося от оптимального, можно записать уравнение в вариациях

и сопряженное ему уравнение

Заметим, что  – квадратная матрица. Определим функцию Понтрягина (расширенную функцию Гамильтона)

                                                           

Теперь нашу систему можно записать в канонической форме

                                                              

так как

Л.С. Понтрягин доказал, что оптимальное управление  достигается при максимуме функции

                                                           

Сформулируем теперь принцип максимума [8]. Пусть  – такое допустимое управление, что соответствующая ему траектория , исходящая в момент  из точки , проходит в момент  через точку . Для оптимальности управления  и траектории  необходимо существование такой ненулевой непрерывной вектор-функции  что

– для любого момента , являющегося точкой непрерывности управления , если канонические уравнения удовлетворены, функция  переменной  достигает в точке  максимума;

– в конечный момент  выполнены соотношения

 

3.2 Решение задачи управления

Постановка задачи и решение в общем виде

Решим задачу наибыстрейшего перевода фазовой точки из одного состояния в другое. Сформулируем эту задачу следующим образом.

Пусть точка движется вдоль оси Ох по закону . Требуется найти кусочно-непрерывное управление , , такое, чтобы точка, выйдя из начального положения , пришла за минимальное время в точку  [9].

Положим, что  – фазовые координаты точки. Тогда задачу можно переформулировать так: быстрейшим образом перевести фазовую точку  из состояния  в состояние , считая, что движение подчиняется уравнениям

.                                                                  

Так как мы минимизируем время, то функционал Q запишется в следующем виде:

.

Согласно формуле в нашем случае

и согласно формуле

.

Запишем функцию Понтрягина в виде

                                  

Найдём сопряжённую систему из уравнений

.

Проинтегрировав ее, получаем

 .

Итак, согласно принципу максимума Понтрягина оптимальным управлением, максимизирующем Гамильтониан , является управление

.                                                

Таким образом, оптимальное управление является кусочно-постоянной функцией, принимающей значения +, –и имеющей не более одной точки переключения , при переходе через которую меняет знак.

Управление ориентацией. Движение по опорной траектории.

Теперь рассмотрим одномерную задачу управления ориентацией, считая, что тело движется по закону  где  – это угол поворота подвижной системы координат относительно неподвижной, – управляющее угловое ускорение . Задача состоит в наибыстрейшем переводе точки фазового состояния из положения  в состояние  с тем условием, что точка  – лежит на некоторой заранее определённой кривой, которую будем называть опорная траектория. Положим, опорная траектория подчиняется закону

,                                                                            

где  – некоторая заданная величина угловой скорости,  – значение угла в начальный момент времени .

Как мы выяснили раньше, оптимальным управлением будет управление с одним переключением в момент времени . В зависимости от начальной  и конечной  точек возможны два варианта управления: сначала прилагаем ускорение , и в момент времени  переключаем его на +, и наоборот. Рассмотрим оба варианта подробнее.

Управление – +

Проинтегрируем уравнение (4.1) с начальными условиями  до момента переключения , приняв = – ,

                                         

Далее произведём интегрирование этого же уравнения (4.1), но с начальными условиями для момента переключения, приняв = + ,

           

Но при условии, что точка  должна лежать на опорной траектории, запишем

Таким образом, имеем систему двух уравнений с двумя неизвестными  и . При выборе корней уравнения будем руководствоваться ограничениями: .

 

Управление + –

Проделаем то же самое для другого варианта управления, когда сначала включаем положительное значение управления, а в момент времени  переключаемся на отрицательное

                                               

          

Условие того, что точка  лежит на опорной траектории

На корни системы уравнений накладываются ограничения: .

3.3. Фильтр Калмана

Для того, чтобы построить замкнутое управление, необходим канал обратной связи, который поставляет в регулятор выходное состояние объекта. Очень часто этот канал организуется с помощью датчиков, которые измеряют какую-либо компоненту вектора состояния тела. Однако, реальные датчики выдают значение фазового состояния тела с некоторой ошибкой. Одним из распространённых способов получения оценки вектора состояния является фильтр Калмана [10].

Фильтр Калмана – последовательный рекурсивный алгоритм, использующий принятую модель динамической системы для получения оценки, которая может быть существенно скорректирована в результате анализа каждой новой выборки измерений во временной последовательности. Этот алгоритм находит применение в процессе управления многими сложными динамическими системами. При управлении динамической системой, прежде всего, необходимо полностью знать ее фазовое состояние в каждый момент времени. Но измерение всех переменных, которыми необходимо управлять, не всегда возможно и в этих случаях фильтр Калмана является тем средством, которое позволяет восстановить недостающую информацию посредством имеющихся неточных зашумленных измерений.

Рассмотрим модель движения  которую можно переписать в следующем виде:

, где .

Таким образом,

.                                                

Модель измерений при наличии датчика угловой скорости выглядит следующим образом (записана цепочка выражений с учетом подстановок):

.                                      

Здесь – значение непосредственного измерения в момент времени , – шум измерения, который обладает нулевым математическим ожиданием , то есть является Гауссовским случайным процессом. Другими словами предполагаем наличие в измерениях белого шума. Второй момент шума равен

.

Проинтегрируем уравнение с начальными условиями

,          .

Второй момент случайного процесса может быть описан в терминах ковариационной матрицы

,                                                         

где   оценка состояния, а матрица P(t) называется ковариационной матрицей ошибки оценки вектора состояния. Для того чтобы получить прогнозируемую оценку ковариационной матрицы ошибки, воспользуемся матричным уравнением Риккати

.                                                            

Пусть ковариационная матрица ошибки имеет следующие элементы:

.

Тогда матричное уравнение Риккати с начальными условиями  имеет следующее решение:

           .

Таким образом, проинтегрировав модельное уравнение и уравнение Риккати (5.2), получили априори оценки для состояния тела  и для матрицы ошибки .

Апостериори оценка  базируется на наблюдениях (или измерениях) . Таким образом, она является функцией априори оценки  и измерений  и может быть записана в следующем виде:

.                                                                          

Апостериори значение матрицы ошибки рассчитывается так:

.                                                                

Здесь – так называемая матрица коэффициентов обратной связи. В нашем случае она равна

.

Тогда апостериори оценка вектора состояния и матрицы ковариации из (5.4) и (5.5) соответственно, имеют вид

,                                                            

.                                                        

Таким образом, получены все формулы, необходимые для работы фильтра Калмана.

3.4. Реализация алгоритма оптимального управления ориентацией

Рассмотрим некоторые особенности реализации на макете оптимального управления ориентацией, о котором шла речь в главе 3.2.

Так как двигатели по мере работы расходуют некоторое количество сжатого воздуха, масса баллонов постепенно уменьшается. Таким образом, меняется и масса самого макета, а значит и момент инерции относительно вертикальной оси также уменьшается. Тем не менее, так как давление в резервуаре макета с помощью специальных клапанов поддерживается постоянным, то удельный импульс каждого двигателя практически не меняется. Из всего сказанного следует, что ускорение, приобретаемое макетом от импульсных двигателей, изменяется со временем, а именно – растёт до момента, когда газ в баллонах практически закончился и его уже не хватает для поддержания постоянного давления в резервуаре. Примерная зависимость углового управляющего ускорения от времени изображена на рис.3.1. Так как ускорение зависит от времени, алгоритм управления ориентацией с некоторого времени начнёт давать ошибочные расчеты, потому что он использует некоторое постоянное значение ресурса управления. Выходом из этой проблемы является оценивание значения углового ускорения с помощью датчика угловой скорости во время каждого сеанса управления (рис.3.2). Таким образом, будем иметь для расчета времени управления каждый раз текущее значение ускорения.


Другая особенность проведения экспериментов в том, что на момент их проведения имитатор звёздного неба не был полностью готов и гироскоп не был установлен на макет, поэтому управление строится только на оценке вектора состояния по имитируемым показаниям датчика угловой скорости без уточнения с помощью веб-камеры.

Нужно назвать ещё один источник ошибки в управлении, который происходит из особенности задания управления. Как было сказано выше, каждые 100 мс компьютер посылает значения времени, сколько должен работать каждый двигатель следующие 100 мс. Поэтому, когда приходит время переключить управление на противоположное, к примеру, с плюса на минус, нельзя сделать это немедленно. Сначала компьютер должен послать работающим двигателям информацию сколько времени они должны работать в последние 100 мс, после этого времени несколько миллисекунд управление остаётся отключенным, и только в следующие 100 мс включается противоположное управление. Из-за этой особенности получается некоторая ошибка в приведении состояния тела из начального к требуемому. На общем фоне помех и трения ножек макета о стол эта ошибка не является значительной.

Эксперимент управления ориентацией проходил следующим образом. Сначала к бортовому компьютеру макета подключались клавиатура и монитор. В программе задавалась некоторая задержка начала вычислений. Далее запускалась программа, во время задержки от бортового компьютера отсоединялись монитор и мышь и макет ставился на стеклянный стол. Следующую минуту программа функционировала, решая задачу управления ориентацией каждую миллисекунду. При этом все данные с имитируемого сенсора, выходные данные из фильтра Калмана и вычисляемая опорная траектория вместе с текущим временем, которое отчитывалось с начала работы программы, – все данные сохранялись в файле.

3.5. Результаты экспериментов

В качестве опорной траектории одного из эксперимента взято движение с постоянной угловой скоростью 3 градуса в секунду. Результаты эксперимента представлены на рис. 3.3, где сплошной линией обозначена опорная траектория, а пунктирной линией – реальная траектория тела. Первый график – график скорости вращения, второй график – график ориентации, т.е. угла отклонения от некоторого начального значения, третий график – график зависимости управления от времени.


Вследствие неполной сборки макета, на который ещё не были установлены средства определения ориентации (гироскоп и веб-камера), управление производилось по принципу, сходному принципу разомкнутого управления. Были измерены управляющие моменты системы, возможные возмущающие факторы, и зашумленные данные датчика имитировались в программе, производящей управление макетом.

Как видно из рисунка, первый сеанс управления был вызван тем, что начальное значение угловой скорости отличалось от заданного опорного. После окончания сеанса управления траектория тела была в допустимой от опорной области. Однако, как следует из первого графика, угловая скорость тела постепенно падала вследствие небольшого трения ножек макета о стол, которое было учтено при имитации показания датчика угловой скорости. После того, как траектория тела вышла из области допустимого, включилось управление и вернуло траекторию на опорную. Далее картина повторяется, управление время от времени вмешивается в движение макета, возвращая макет на опорную траекторию.

Таким образом, можно было наблюдать, как макет первое время движется с некоторой постоянной скоростью вращения. Однако вследствие того, что управление разомкнутое, через некоторое время макет начинал менять скорость вращения, что связано с непостоянным коэффициентом трения на столе и с некоторыми случайными факторами, которые невозможно учесть в модели движения. Но, когда на макет будет установлен датчик угловой скорости, не нужно будет учитывать в модели движения возмущения, послужившие отклонению от опорной траектории. Тогда будет реализован принцип замкнутого управления, который функционирует по отклонению и которому «не важна» природа этого отклонения, будь она случайным воздействием или некоторой постоянной силой.

4. Заключение

Настоящая работа подтверждает работоспособность нового макета LuVeX, на котором, несмотря на неполную сборку и отсутствие важных частей (датчика угловой скорости, веб-камеры), был реализован алгоритм управления. При отработке на макете алгоритма управления ориентацией выяснилось следующее:

·   рассмотренный алгоритм обеспечивает движение тела по определённой опорной траектории с некоторой наперёд заданной точностью,

·   в случае, если опорная траектория построена на основе уравнений движения тела, алгоритм управления производит функцию коррекции при отклонении траектории тела от опорной,

·   точность движения тела по опорной траектории имеет некоторый предел, обусловленный уровнем шума датчика и дискретностью управляющего импульса двигателей.

Таким образом, алгоритм управления импульсными двигателями, основываясь на зашумлённых измерениях датчика угловой скорости и акселерометров, обеспечивает достаточно точное нахождение тела на опорной траектории даже в случае некоторых внешних возмущений, действующих на тело.

5. Благодарности

Работа выполнена при частичной поддержке 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;                         

}