Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ІКІТ_2015_8.05010201_Шевченко.doc
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
3.37 Mб
Скачать

4.4. Розробка алгоритму управління літального апарату у вертикальній площині

Запишемо рівняння(4.24) в проекції на вісь ОZ у виді

, (4.36)

Для побудови алгоритму управління необхідно знайти оцінки функцій і . Оскільки модель безпілотного літального апарату нам повністю відома, то при диференціюванні функції знайдемо значення і .

, (4.37)

, (4.38)

(4.39)

Для побудови контроллера використовуємо алгоритм пропорційного управління.

(4.40)

Виходячи з умови збіжності був вибраний коефіцієнт з рівняння (4.35) :

Було проведено моделювання ЛА в середовищі Vissim на 3 траєкторіях:

  1. рух по прямій із швидкістю 30 м/с;

  2. набір висоти з 1000м до 1200м за 30с на швидкості 50 м/с;

  3. мертва петля радіусом 500м і початковою швидкістю 50 м/с.

Моделювання проводилося при швидкості вітру(1;1;5) м/с

4.5. Прокладка маршруту в географічних координатах

На рис.4.4 зображено ділянку лінії великого кола, що з’єднує два проміжних пункта маршрута ППМ1 і ППМ2 . Вона утворює лінію заданого шляху, інакше – частну ортодромію. Задаючи декілька ППМів одержимо всю задану траекторію БПЛА. Саме задаванням промежуточних пунктів маршруту починається так звана його прокладка. Результатом прокладки є визначення довжин частних ортодромій і заданих шляхових кутів. Наведемо позначення на

Canvas 455

Рис.4.4 Лінія заданого шляху між двома проміжними пунктами маршруту

нашому рисунку: ППМ1 – перший (проміжних пунктів може бути багато) проміжний пункт маршруту з географічними координатами ; ППМ2 - другий проміжний пункт маршруту з географічними координатами . A12 - прямий азимут першого ППМа – він і є заданим шляховим кутом, якщо рух здійснюється від першого до другого ППМа. Це кут між напрямком на північний полюс (дотичною до меридіану, що проходить через перший ППМ) і напрямком шляху між ППМами (дотичною до лінії великого кола в точці першого ППМа); А21 – зворотній азимут першого ППМа – визначається аналогічно; D12 – відстань між ППМами. - позначення напрямків на північний полюс.[26]

На сфері відстань можна вимірювати в кутових одиницях (4.42).

(4.42)

Вираз для заданого шляхового приведено нижче (4.43)

(4.43)

Вираз для зворотнього азимута має аналогічний вигляд.

Схематично роботу фрагмента розрахунку цих параметрів траєкторії можна представити у вигляді окремого блоку, на вхід якого подаються координати пунктів маршруту, а на виході з’являються обчислені прямий і зворотній азимути і відстань між проміжного пунктами маршруту.

4.6. Програмна реалізація алгоритмів управління

Базовим шаблоном проектування в архітектурі розробленого програмно-математичногозабезпечення являється (з деякими упущенням) MVC (model-view-controller).

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

ComPort – клас, що відповідає за взяємодію з віртуальним Com портом ЦЕОМ оператора до якої підключається БПЛА. Основними методами являються:

- public ComPort(String port) – конструктор, що створює з’єднання;

- public void write(String query) - метод запису в ComPort;

- public void close() - метод, що закриває з’єднання з портом;

Рис. 4.5. UML діаграма класів моделі. 

ComPort – клас, що відповідає за взяємодію з віртуальним Com портом ЦЕОМ оператора до якої підключається БПЛА. Основними методами являються:

- public ComPort(String port) – конструктор, що створює з’єднання;

- public void write(String query) - метод запису в ComPort;

- public void close() - метод, що закриває з’єднання з портом;

ComObserver – інтерфейс Com порта. Необхідний для реалізації шаблона проектування Observer.

DronesUpdateObserver - інтерфейс стеження за оновленнями інформації про БПЛА. Необхідний для реалізації шаблону проектування Observer.

BaseStation - клас, що представляє собою базову станцію. У цьому класі агрегована інформація про всі БПЛА.

Основними методами є:

- public void setComPort (String portName) - метод в якому відбувається створення об'єкта класу ComPort;

- public void onComReceive (String receiveString) - перевизначений метод інтерфейсу ComObserver. Цей метод викликається об'єктом ComPort, коли в порт надійшли нові дані. У ньому відбувається обробка даних;

- public void addDronesUpdateListener (DronesUpdateObserver obs) - метод, який стежить за оновленнями інформації про БПЛА. Необхідний для зв'язку з апаратом;

Drone - клас, що представляє собою окремо взятий БПЛА. Єдиною завданням цього класу є зберігання інформації про конкретно взятому БПЛА.

Основними полями є:

- private int id - унікальний ідентифікатор БПЛА, що співпадає з унікальним ідентифікатором пристроїв передачі на борту БПЛА;

- private ArrayList <DroneState> droneStates - список всіх об'єктів класу DroneState для конкретного БПЛА.

DroneState – класс, що представляє собою стан конкретного БПЛА в деякий момент часу.

Основними полями є:

- private float latitude - інформація про широту БПЛА;

- private float longitude - інформація про довготу БПЛА;

- private byte state - інформація про стан БПЛА;

- private byte job - інформація про завдання, що виконується БПЛА;

- private Date date - тимчасова мітка.

В основі архітектури моделі лежить клас BaseStation, який реалізує інтерфейс ComObserver. Також клас BaseStation зберігає список всіх БПЛА, які в свою чергу зберігають інформацію про всі свої стани. При надходженні інформації в ComPort викликається спеціальний метод BaseStation, який обробляє дані і оновлює інформацію про всю групу БПЛА.

Рис. 4.6. UML диаграма класів View.

DronesUpdateObserver - інтерфейс спостерігача за оновленнями інформації про БПЛА.

ManagerGui - клас-менеджер, містить в собі всі необхідні об'єкти для управління програмою.

Основним методом є:

- Public void onDronesUpdate () - метод, який викликає BaseStation при оновленні інформації про групу БПЛА;

WindowPanel - базовий клас для всіх панелей програми.

MainWindow - клас, успадкований від класу WindowPanel. Являє собою головну (стартову) панель програми. У ньому міститься панель вкладок, в якій містяться всі інші панелі програми.

Основними полями є:

- private DronesTablePanel dronesTablePanel - посилання на об'єкт класу DronesTablePanel;

- private TerminalPanel terminalPanel - посилання на об'єкт класу TerminalPanel;

- private DronePanel dronePanel - посилання на об'єкт класу DronePanel.

DronesTablePanel - клас, успадкований від класу WindowPanel. Являє собою панель для відображення таблиці з поточним станом БПЛА.

Основними методами є:

- private void setDronesTable () - метод, який отримує дані про групу з моделі і таблицю;

- public void redraw () - метод що оновлює відображення таблиці при оновленні інформації про БПЛА.

DronePanel - клас, успадкований від класу WindowPanel. Являє собою панель для відображення інформації про конкретний БПЛА.

Основними методами є:

- public DronePanel (final Manager manager, JFrame frame, final Drone drone, final MainWindow mainWindow) - конструктор, отримує дані про конкретний БПЛА з моделі;

- public void redraw () - метод що відповідає за відображення таблиці при оновленні інформації про конкретний БПЛА.

TerminalPanel - клас, успадкований від класу WindowPanel. Являє собою панель для відображення всієї інформації, що надходить в Com порт. Необхідний для налагодження та при виникненні позаштатної ситуації.

Основними методами є:

- public TerminalPanel (final Manager manager, JFrame frame) - конструктор, що містить всі необхідні елементи;

- public void onComReceive (String receiveString) - перевизначений метод інтерфейсу ComObserver. Викликаються при надходженні нової інформації в Com порт.