www.flightgear.ru

FlightGear - свободно распространяемый, кросс-платформенный авиасимулятор.
Текущее время: 30 сен 2020, 08:32

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Разработка автопилота
СообщениеДобавлено: 02 ноя 2011, 13:20 
Не в сети

Зарегистрирован: 02 ноя 2011, 13:16
Сообщения: 5
Здравствуйте.
У меня такой вопрос: хочу разработать автопилот для небольшой летающей модели. В целях отладки кода и уменьшения трат собственных денег, решил для начала опробовать код на симуляторе, в частности на легкой Цесне.
В качестве симулятора понравился FlightGear, решил взять последнюю версию. Подскажите, пожалуйста, как можно в реальном времени вытаскивать значения параметров модели (например крен, тангаж, курс, скорость и пр)? Есть какой-нибудь механизм для этого или придется ковыряться в коде?
XML метод, описанный на вики-странице видел, но у меня своя реализация, так что мне он не подходит.
Спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка автопилота
СообщениеДобавлено: 02 ноя 2011, 13:58 
Не в сети
Аватара пользователя

Зарегистрирован: 25 фев 2009, 15:09
Сообщения: 246
У меня такая задача успешно решена (беспилотник).
О каком "XML методе" речь?
Никакой код ковырять не надо, FG предоставляет интерфейс к своему PropertyTree на чтение и запись. Я предпочитаю сокеты (UDP) с текстовым протоколом. Между автопилотом (реальным) и FG у меня находится самописная программка адаптер, задачей которой является преобразование протоколов.
Могу проконсультировать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка автопилота
СообщениеДобавлено: 02 ноя 2011, 15:13 
Не в сети

Зарегистрирован: 02 ноя 2011, 13:16
Сообщения: 5
Schneider, был бы благодарен, если бы Вы ткнули меня в документацию и/или какие-нибудь примеры. В Интернете долго не могу находиться (платный + вахта), так что изучаю все оффлайн.
Я тоже разрабатываю автопилот для БПЛА, только с более расширенными функциями, нежели курсовая стабилизация и продольно/поперечная стабилизация, реализованная в большинстве автопилотов.
А XML способ я нашел на их сайте. Там примерно указано, как на базе ПИД регуляторов контролировать крен/тангаж и пр. Не могу сейчас найти их страницу... :(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка автопилота
СообщениеДобавлено: 02 ноя 2011, 17:07 
Не в сети
Аватара пользователя

Зарегистрирован: 25 фев 2009, 15:09
Сообщения: 246
Документация в папке data/doc. Ключевые слова io, generic, property tree.

Вот рабочий пример. Приведённый ниже файл протокола для модели на yasim динамике. Для jsb моделей ветки в PropertyTree наверное другие будут... Но это не важно. Изучить содержимое PropertyTree можно прямо в FG, для этого необходимо нажать кнопочку "/" (под рукой нет сима, могу ошибаться), ну и посмотреть что где сидит.

В папке data/protocol создай файл apconnect.xml с таким вот содержанием:
Код:
<?xml version="1.0"?>

<PropertyList>


    <generic>


        <output>
            <line_separator>newline</line_separator>
            <var_separator>tab</var_separator>
         
<!-- Orientation -->

            <chunk>
                <name>roll</name>
                <type>float</type>
                <format>%.3f</format>
                <node>/orientation/roll-deg</node>
            </chunk>

            <chunk>
                <name>pitch</name>
                <type>float</type>
                <format>%.3f</format>
                <node>/orientation/pitch-deg</node>
            </chunk>

            <chunk>
                <name>heading</name>
                <type>float</type>
                <format>%.3f</format>
                <node>/orientation/heading-deg</node>
            </chunk>

            <chunk>
                <name>rollrate</name>
                <type>float</type>
                <format>%.4f</format>
                <node>/orientation/roll-rate-degps</node>
            </chunk>

            <chunk>
                <name>pitchrate</name>
                <type>float</type>
                <format>%.4f</format>
                <node>/orientation/pitch-rate-degps</node>
            </chunk>

            <chunk>
                <name>headingrate</name>
                <type>float</type>
                <format>%.4f</format>
                <node>/orientation/yaw-rate-degps</node>
            </chunk>

            <chunk>
                <name>accel-x</name>
                <type>float</type>
                <format>%.4f</format>
                <node>/accelerations/pilot/x-accel-fps_sec</node>
                <factor>0.3048</factor>
            </chunk>

            <chunk>
                <name>accel-y</name>
                <type>float</type>
                <format>%.4f</format>
                <node>/accelerations/pilot/y-accel-fps_sec</node>
                <factor>0.3048</factor>
            </chunk>

            <chunk>
                <name>accel-z</name>
                <type>float</type>
                <format>%.4f</format>
                <node>/accelerations/pilot/z-accel-fps_sec</node>
                <factor>0.3048</factor>
            </chunk>


<!-- Airdata -->

            <chunk>
                <name>airspeed</name>
                <type>float</type>
                <format>%.3f</format>
                <node>/velocities/airspeed-kt</node>
                <factor>0.5144444</factor>
            </chunk>

            <chunk>
                <name>baroalt</name>
                <type>float</type>
                <format>%.3f</format>
                <node>/instrumentation/altimeter/indicated-altitude-ft</node>
                <factor>0.3048</factor>
            </chunk>

            <chunk>
                <name>vspeed</name>
                <type>float</type>
                <format>%.3f</format>
                <node>/velocities/vertical-speed-fps</node>
                <factor>0.3048</factor>
            </chunk>


<!-- Absolute altimeter -->

            <chunk>
                <name>absolutealt</name>
                <type>float</type>
                <format>%.3f</format>
                <node>/position/altitude-agl-ft</node>
                <factor>0.3048</factor>
            </chunk>


<!-- Position -->

            <chunk>
                <name>latitude</name>
                <type>float</type>
                <format>%.6f</format>
                <node>/position/latitude-deg</node>
            </chunk>

            <chunk>
                <name>longitude</name>
                <type>float</type>
                <format>%.6f</format>
                <node>/position/longitude-deg</node>
            </chunk>

            <chunk>
                <name>altitude</name>
                <type>float</type>
                <format>%.3f</format>
                <node>/position/altitude-ft</node>
                <factor>0.3048</factor>
            </chunk>

            <chunk>
                <name>speednorth</name>
                <type>float</type>
                <format>%.3f</format>
                <node>/velocities/speed-north-fps</node>
                <factor>0.3048</factor>
            </chunk>

            <chunk>
                <name>speedeast</name>
                <type>float</type>
                <format>%.3f</format>
                <node>/velocities/speed-east-fps</node>
                <factor>0.3048</factor>
            </chunk>


<!-- Engine -->

            <chunk>
                <name>rpm</name>
                <type>float</type>
                <format>%.1f</format>
                <node>/engines/engine[0]/rpm</node>
            </chunk>

            <chunk>
                <name>temperature</name>
                <type>float</type>
                <format>%.1f</format>
                <node>/engines/engine[0]/oil-temperature-degf</node>
            </chunk>


         
        </output>


<!--*************************************************************-->

        <input>
            <line_separator>newline</line_separator>
            <var_separator>tab</var_separator>

           <chunk>
               <name>aileron</name>
               <type>float</type>
               <node>/controls/flight/aileron</node>
           </chunk>

           <chunk>
               <name>elevator</name>
               <type>float</type>
               <node>/controls/flight/elevator</node>
           </chunk>
 
           <chunk>
               <name>rudder</name>
               <type>float</type>
               <node>/controls/flight/rudder</node>
           </chunk>

           <chunk>
               <name>throttle</name>
               <type>float</type>
               <node>/controls/engines/engine[0]/throttle</node>
           </chunk>
         
           <chunk>
               <name>flaps</name>
               <type>float</type>
               <node>/controls/flight/flaps</node>
           </chunk>
 
           <chunk>
               <name>ignition</name>
               <type>float</type>
               <node>/controls/engines/engine[0]/magnetos</node>
           </chunk>
         
      
       </input>


    </generic>


</PropertyList>



В командной строке при запуске FG добавь следующее:
--generic=socket,out,30,127.0.0.1,5555,udp,apconnect --generic=socket,in,40,127.0.0.1,5556,udp,apconnect. Расширение xml у apconnect тут указывать не надо.

Если всё сделано правильно, то после запуска FG на 5555 порт локально будут валиться UDP пакеты со значениями указанных свойств (секция output в apconnect.xml). Ну и на 5556 FG будет ожидать ответные пакеты с управляющими сигналами (секция input в apconnect.xml).

То же самое можно осуществить и посредством COM-порта, для этого меняем socket на serial, ну и читаем доку по поводу того как указать скорость и COM-порт.

Немного сумбурно изложил ;)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка автопилота
СообщениеДобавлено: 03 ноя 2011, 07:35 
Не в сети

Зарегистрирован: 02 ноя 2011, 13:16
Сообщения: 5
Не, в целом очень даже понятно, спасибо большое. Я пока занимаюсь изучением симулятора, вчера, вот, пытался взлететь с помощью нового джойстика :D . Как сделаю что-то значимое - выложу в Инет, посмотрите.)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка автопилота
СообщениеДобавлено: 03 ноя 2011, 17:40 
Не в сети
Аватара пользователя

Зарегистрирован: 09 янв 2008, 08:22
Сообщения: 2018
А вот интересно, применяются ли в прототипах автопилотов (проектируемых сейчас в отладочных целях) интегральные датчики угловых/линейных ускорений? и можно ли (теоретически) построить автопилот без применения гироскопических датчиков вообще, чисто на микросхемах?

_________________
Нет!
Я никогда не пойму,
Как в небе держится сталь!
(с)НС


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка автопилота
СообщениеДобавлено: 03 ноя 2011, 17:51 
Не в сети
Аватара пользователя

Зарегистрирован: 25 фев 2009, 15:09
Сообщения: 246
в мелких (до 100 кг) беспилотниках сплошь и рядом применяются MEMS гироскопы и акселерометры, и всё это более менее успешно летает

http://invensense.com/mems/gyro/mpu6000.html как пример all-in-one


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка автопилота
СообщениеДобавлено: 03 ноя 2011, 23:12 
Не в сети

Зарегистрирован: 02 ноя 2011, 13:16
Сообщения: 5
А можно еще вопрос: вы какую модель брали для симуляции? Я пробовал Цесну (планер), что идет в стандартной поставке, но она что-то какая-то странная.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка автопилота
СообщениеДобавлено: 04 ноя 2011, 00:08 
Не в сети
Аватара пользователя

Зарегистрирован: 25 фев 2009, 15:09
Сообщения: 246
cделал по реальному прототипу свою на yasim динамике, yasim это конечно не jsb, но мне хватило. можно пайпер попробовать (cub или как там его)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка автопилота
СообщениеДобавлено: 04 ноя 2011, 13:41 
Не в сети

Зарегистрирован: 02 ноя 2011, 13:16
Сообщения: 5
А, ну вот да, ее я как раз и использовал - J3C-65. Пока что начну с нее, потом все-таки напишу свою модель "летающее крыло", так как беспилотник будет именно в такой компоновке.
Хотя управлять таким БПЛА гораздо сложнее, чем пайпером.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB