www.flightgear.ru
http://flightgear.ru/forum/

Разработка автопилота
http://flightgear.ru/forum/viewtopic.php?f=12&t=541
Страница 1 из 3

Автор:  krupornitskiy [ 02 ноя 2011, 13:20 ]
Заголовок сообщения:  Разработка автопилота

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

Автор:  Schneider [ 02 ноя 2011, 13:58 ]
Заголовок сообщения:  Re: Разработка автопилота

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

Автор:  krupornitskiy [ 02 ноя 2011, 15:13 ]
Заголовок сообщения:  Re: Разработка автопилота

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

Автор:  Schneider [ 02 ноя 2011, 17:07 ]
Заголовок сообщения:  Re: Разработка автопилота

Документация в папке 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-порт.

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

Автор:  krupornitskiy [ 03 ноя 2011, 07:35 ]
Заголовок сообщения:  Re: Разработка автопилота

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

Автор:  yurik_nsk [ 03 ноя 2011, 17:40 ]
Заголовок сообщения:  Re: Разработка автопилота

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

Автор:  Schneider [ 03 ноя 2011, 17:51 ]
Заголовок сообщения:  Re: Разработка автопилота

в мелких (до 100 кг) беспилотниках сплошь и рядом применяются MEMS гироскопы и акселерометры, и всё это более менее успешно летает

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

Автор:  krupornitskiy [ 03 ноя 2011, 23:12 ]
Заголовок сообщения:  Re: Разработка автопилота

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

Автор:  Schneider [ 04 ноя 2011, 00:08 ]
Заголовок сообщения:  Re: Разработка автопилота

cделал по реальному прототипу свою на yasim динамике, yasim это конечно не jsb, но мне хватило. можно пайпер попробовать (cub или как там его)

Автор:  krupornitskiy [ 04 ноя 2011, 13:41 ]
Заголовок сообщения:  Re: Разработка автопилота

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

Страница 1 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/