Jump to content
Rhard

SmartCopilot - плагин для полёта экипажем.

Recommended Posts

Роутер не нужен для этого :) Незавидная судьба ждёт длинные пакеты еще в родном компутере.

ok, правильнее было бы сказать - на третьем уроне :)

 

Только не пугайтесь - 68 :crazy: Такие точно экзекуциям подвергнуты не будут. В реальности без нужды не стоит делать пакет данных длиннее 1472 байт.

упс:)

Share this post


Link to post
Share on other sites

Неужели тема плагина жива? Как это радует, кто бы знал! 

Идея с передачей управления гораздо лучше чем синхронное управление по всем критериям, вообще вся озвученная идея - наилучший вариант. 

Не дождусь выхода плагина в свет, надеюсь не шибко дорогой будет. 

Спасибо за работу.

 

P.S. Не знаю чем может это помочь, но на будущее, если нужна помощь в 3D моделировании, помогу чем смогу.

Share this post


Link to post
Share on other sites

Скриншот в процессе разработки:

 

post-62490-0-89047300-1363651096_thumb.jpg

 

Конфиг файл на данный момент:

 

 

### SmartCopilot config file. Version 1.0

 
### This section describes triggered datarefs. The information will be sent only if the value changes. Theoretically no network performance limits.
### Try to include as much as possible data into this section. Data goes in both directions.
[TRIGGERS]
 
sim/cockpit/radios/nav1_freq_hz = 1
sim/cockpit/radios/nav2_freq_hz = 1
sim/cockpit/radios/transponder_code = 1
sim/flightmodel/controls/flaprqst = 1
sim/cockpit/switches/gear_handle_status = 1
sim/flightmodel/controls/parkbrake = 1
 
 
### This sections describes basic datarefs for positioning the aircraft. Change it if you really know what you are doing. Data transfer from MASTER to SLAVE.
[MAIN]
 
sim/flightmodel/position/local_x = 1
sim/flightmodel/position/local_y = 1
sim/flightmodel/position/local_z = 1
sim/flightmodel/position/latitude = 1
sim/flightmodel/position/longitude = 1
sim/flightmodel/position/elevation = 1
sim/flightmodel/position/local_vx = 1
sim/flightmodel/position/local_vy = 1
sim/flightmodel/position/local_vz = 1 
sim/flightmodel/position/q = 1
 
 
### This section describes the data which will be sent from MASTER to SLAVE continuously every frame (or fixed time).
### This section is limited approximately for 280 floating point values. Over this limit I can't guaranty the data transmission.
### For slow or bad internet connection the limit can be even less.
[CONTINUED]
 
### This section describes the data wich will be sent from SLAVE to MASTER if the SLAVE takes control. (Example: yoke or rudder pedals).
[sEND_BACK]
 
sim/joystick/yoke_pitch_ratio = 1
sim/joystick/yoke_roll_ratio = 1
sim/joystick/yoke_heading_ratio = 1
sim/flightmodel/engine/ENGN_thro_use = 1
sim/flightmodel/engine/ENGN_thro = 0

sim/flightmodel/controls/elv_trim = 1

 

 

Пояснение к конфиг файлу:

Конфиг файл представляет собой обычный INI файл где ключ это имя датарефа. Число после знака равенства - если 0, то датареф не используется, если 1 и выше - то это номер значения в датарефе типа массив. (кроме секции MAIN).

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

Теперь по секциям:

[TRIGGERS]

Здесь могут быть 4 типа датареф: int, float, array(int), array(float).

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

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

 

 
[MAIN]
Здесь могут быть типы: double, float, array(float). Отличительная особенность типа array - он будет передаваться целиком, в независимости, какое значение указано после знака равенства в конфиге. Пример: sim/flightmodel/position/q = 1 - передача всех 4-х значений этого массива. Поэтому не стоить сюда включать массивы с большим количеством элементов. ( в идеале вообще не включать)
Передача только от MASTER к SLAVE с периодом, настраиваемом в конфиг файле. Отличие от следующей секции - для этих данных будет произведена дополнительная обработка, съедающая FPS.
Возможно, я уберу эту секцию в будущем, оставив эти датарефы в плагине на постоянной основе.
 
[CONTINUED]
Здесь могут быть типы:  float, array(float). Значение, указанное после знака равенства в конфиге для массива - это индекс элемента в массиве. Передача значений такая же как и для секции MAIN, только без дополнительной обработки.
 
[sEND_BACK]
Тоже что и CONTINUED,  только направление передачи значений меняется в зависимости от того, у кого на данный момент контроль. Возможно сделаю ещё одну подобную секцию в будущем, например что бы сделать раздельным управление РУД, РУС. 
 
Edited by Rhard
  • Upvote 2

Share this post


Link to post
Share on other sites

Ничерта не понял, но Роман, Крути-крути свои транзисторы (с) :)

От себя: готов посодействовать в создании визуального образа: Лого, фирстиль, мож баннера в подпись. если конечно это нужно.

Share this post


Link to post
Share on other sites

Стиль создаётся уже около года :facepalm: .. правда по родственным связям и на вольной основе, как практика для студента - поэтому, наверное, так медленно..

 

По конфигу - можно спрашивать уже сейчас, если что непонятно..

Edited by Rhard

Share this post


Link to post
Share on other sites

По конфигу - можно спрашивать уже сейчас, если что непонятно..

Да пока и спросить-то толком нечего, ничего же не видно ;) Из смущаещего взор только упоминание tcp.

Share this post


Link to post
Share on other sites

Из смущаещего взор только упоминание tcp.

Это фича, перенятая из реального ( большого ) проекта :sarcastic:

Share this post


Link to post
Share on other sites

Да, любопытная вещица получается:) Ничего в программировании не смыслю, но сама идея нравится: экипажем полетать:)

Share this post


Link to post
Share on other sites

Начинаем бета тест - первая пара тестеров получили лицензии и плагин по почте.

 

 

Количество тестеров я ещё пока не определил. Пока начнём с малого.

Особых требований нет, кроме следующих:

 

1) начальные знания что такое датареф в X-Plane и как писать конфиг;

2) тестеры должны знать друг друга;

3) тестеры, или хотя бы один из них, должны примелькаться тут на форуме, что бы можно было спросить потом   :rtfm: .

 

Наши уважаемые самолётостроители могут также обратиться за бетой. Им проще всего будет разобраться с конфигом.

 

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

 

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

Edited by Rhard

Share this post


Link to post
Share on other sites

Хочу рассказать как найти нужный датареф для включения в конфиг:

Прежде всего список датареф - http://www.xsquawkbox.net/xpsdk/docs/DataRefs.html.

Там их очень много. Для того что бы легче найти нужный устанавливаем http://www.xsquawkbox.net/xpsdk/mediawiki/File:DataRefEditor_12-11.zip.

Запускаем этот плагин и на экране видим весь список доступных датареф. Что бы найти, например, переменную, отвечающую за управление закрылками вводим flaps в строку поиска и видим отфильтрованный список. Затем меняем положение закрылок и смотрим какой датареф меняет значение. Таких может быть несколько - нужно выбрать наиболее подходящий.. например для закрылок это переменная, отвечающая за требуемое положение закрылок, а не за текущий угол наклона. В первом случае это датареф меняющий значения 0 - 0.5 - 1.0 и соответственно его можно включить в первую секцию TRIGGERS, что является оптимальным. Также, в этом случае, положением закрылок могут управлять оба пилота одновременно.

В моём конфиге можно заметить, что значения триммера руля высоты я передаю в секции BACK_DATA. Я выбрал такой вариант, так как у меня на эту функцию назначена ось джойстика. Если же используется кнопочный триммер, то будет целесообразным переместить этот датареф в секцию TRIGGERS. Помимо экономии одного float значения, появится возможность управлять триммером одновременно.

 

Важно! Системы в SLAVE самолёте полностью работоспособны! Не нужно копать слишком глубоко в переменные без особой надобности. Достаточно передавать значения органов управления, но важно, что бы состояние самолётов было одинаково в начальный момент. Таким образом, в теории, можно даже завязать управление FMS без реальной синхронизации.

Слишком придирчивый юзверь может сказать.. "а как быть если где то случится обрыв связи или хочется более глубже синхронизировать модели, использовать отказы и тд..?".. Тогда есть 280 свободных значений для постоянной синхронизации.. Также не стоит забывать, что SLAVE самолёт полностью копирует своё положение из MASTER и его системы работают лишь для того, что бы создать идентичное визуальное представление как и на MASTER машине.

Каждый решает для себя какой уровень сложности конфиг файла использовать. Я не могу пока сказать как будет работать плагин с "жирным" конфигом.. Надеюсь это прояснится в скором будущем..

 

Ещё один ньюанс: если SLAVE машина даже без плагина имеет низкий FPS ( менее 20 ), то с работающим плагином картинка может быть визуально ещё более дёрганной.

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

Edited by Rhard
  • Upvote 2

Share this post


Link to post
Share on other sites

Привет. Вчера Полетали маленько — Вроде летается :) Были замечены небольшие поддёргивания при подгрузке следующего квадрата. Но у меня на машине они незначительны, а вот Матвей говорит, что трепало.

Пара вопросов: После редактирования цфг, что нужно (или мож не нужно?) перегружать, самолёт или плагин?

Возможна ли синхронизация погоды? Либо же это можно синхронизировать штатными средствами? ведь есть же Grab from master machine

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

Сегодня попробую писать конфиг допустим на АП, какой нить каренады.

+++

С датарефами кнопок впринцепе ясно— их пишем в Триггерс.

А вот куда задатчики ? допустим высоты\хединга, чтобы они синхронизировались?

Edited by CheAG_Slava

Share this post


Link to post
Share on other sites

Про смену квадратов я помню, но ещё не тестировал.. Нужно проверить/подумать..

Про перезагрузку конфига - уже сделал кнопку. Версия скоро будет.

Про погоду пока не думал.

 

Задатчики туда же:

 

 

### SmartCopilot config file. Version 1.0
### Baron B58

### This section describes triggered datarefs. The information will be sent only if the value changes. Theoretically no network performance limits.
### Try to include as much as possible data into this section. Data goes in both directions.
[TRIGGERS]

sim/cockpit/radios/nav1_freq_hz = 1
sim/cockpit/radios/nav2_freq_hz = 1
sim/cockpit/radios/com1_freq_hz = 1
sim/cockpit/radios/com2_freq_hz = 1
sim/cockpit/radios/adf1_freq_hz = 1
sim/cockpit/radios/nav1_obs_degm = 1
sim/cockpit/radios/nav2_obs_degm = 1
sim/cockpit/switches/HSI_selector = 1
sim/cockpit/radios/nav1_stdby_freq_hz = 1
sim/cockpit/radios/nav2_stdby_freq_hz = 1
sim/cockpit/radios/com1_stdby_freq_hz = 1
sim/cockpit/radios/com2_stdby_freq_hz = 1
sim/cockpit/misc/barometer_setting = 1
sim/cockpit/radios/transponder_code = 1
sim/flightmodel/controls/flaprqst = 1
sim/cockpit/switches/gear_handle_status = 1
sim/flightmodel/controls/parkbrake = 1


### This sections describes basic datarefs for positioning the aircraft. Change it if you really know what you are doing. Data transfer from MASTER to SLAVE.
[MAIN]

sim/flightmodel/position/local_x = 1
sim/flightmodel/position/local_y = 1
sim/flightmodel/position/local_z = 1
sim/flightmodel/position/latitude = 1
sim/flightmodel/position/longitude = 1
sim/flightmodel/position/elevation = 1
sim/flightmodel/position/local_vx = 1
sim/flightmodel/position/local_vy = 1
sim/flightmodel/position/local_vz = 1
sim/flightmodel/position/q = 1


### This section describes the data which will be sent from MASTER to SLAVE continuously every frame (or fixed time).
### This section is limited approximately for 280 floating point values. Over this limit I can't guaranty the data transmission.
### For slow or bad internet connection the limit can be even less.
[CONTINUED]

### This section describes the data wich will be sent from SLAVE to MASTER if the SLAVE takes control. (Example: yoke or rudder pedals).
[sEND_BACK]

sim/joystick/yoke_pitch_ratio = 1
sim/joystick/yoke_roll_ratio = 1
sim/joystick/yoke_heading_ratio = 1
sim/flightmodel/engine/ENGN_thro_use = 1
sim/flightmodel/engine/ENGN_thro_use = 2
sim/flightmodel/controls/elv_trim = 1
sim/flightmodel/controls/ail_trim = 1

 

Edited by Rhard
  • Upvote 1

Share this post


Link to post
Share on other sites

Да, с подгрузкой квадратов проблема.. Буду думать.

Share this post


Link to post
Share on other sites

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

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

Секция MAIN удалена.. С подгрузкой квадратов проблему вроде бы решил.. Работа кипит.. 

  • Upvote 1

Share this post


Link to post
Share on other sites

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

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

Секция MAIN удалена.. С подгрузкой квадратов проблему вроде бы решил.. Работа кипит.. 

Молодцом! Так держать! Поддерживаем, ждём!))

Share this post


Link to post
Share on other sites

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

когда будет ясная видимость как именно надо было, перепишешь :) сие называется "рефакторингом", надо сказаать довольно обычный процесс  :) 

Edited by inv

Share this post


Link to post
Share on other sites

Ну там серьёзные изменения произошли.. и как раз вовремя подходящие классы появились в boost_1.53.. ( надеюсь они заработают в LIN/MAC)   :sarcastic:

Share this post


Link to post
Share on other sites

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

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

Проблемы были только с дефолтными слайдерами и смесью.

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

Далее пробовали синхронизировать СРЖ, Благо Филя датарефы все описал.  тут также синхронизировали всё что можно без особых проблем, Единственная беда с нажатием кнопок ФМС. Анимация 100% передаётся, а вот символ не вводится :( Но таки опредили что это скорее потеря этих ваших пакетов. т.к. если подольше подержать зажатой кнопку мыши, символ доходит :)

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

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

Вот так вот.

Edited by CheAG_Slava

Share this post


Link to post
Share on other sites

Черт, интересно стало. Если до ляльки доведете - будет новая ступень для сима ГА

ЗЫ, ну глюки глюками - есть ощущение, что вдвоем в кабине и без дискомфорта(связь голосом ессно)?

ЗЫЫ. Для отладки же как то можно тренироваться сам с собой (ну не всегда же есть второй человек)

Edited by skyteacher

Share this post


Link to post
Share on other sites

Связь через Скайп :) ХМ... Наверное не самое лучшее решение, мы когда дефолтный мультик мучали были проблемы насколько я помню.

Ощущения не передаваемые. Всё клацается, нажимается- экипаж работает:)

Про отладку сам с собой не знаю, мы ток-ма вдвоём пробовали.  

Share this post


Link to post
Share on other sites

Вечером после работы попробуем, если спать не залягу? :)

Share this post


Link to post
Share on other sites

Про скайп такой прикол.. Давно знал, что сие чудо нашего века - программа очень таки замудренная.. Её писали три хакера из Польши.. Защит там намутили, что фиг кто знал что там внутри крутится.. Обходит все файерволлы, переключается с протокола на протокол.. Короче реально навороченная фигня.. Так вот, каково же было моё удивление, когда однажды я заметил при работающем скайпе 16 Мбит поток у себя на компе.. Скайп просто в бекграунде был.. Это произошло, когда мне хороший канал тут в Веллингтоне подключили.. Так вот, если у кого мощный комп и хороший интернет канал, посматривайте на трафик - ваш безобидный клиент превращается в коммутатор и пропускает разговоры других людей..

Share this post


Link to post
Share on other sites

Про скайп такой прикол.. Обходит все файерволлы,

Скайп режется на раз

подходящие классы появились в boost_1.53..

Ой! (бурча под нос) любят же у нас велосипеды строить

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

Share this post


Link to post
Share on other sites

Знаю что режется - на работе не работает..

А с бустом мы уже давно на ты ( насколько это программист любитель-делитант сказать может )  :sarcastic:

Такое у меня происходит. когда я берусь к проекту новую библиотеку подключать.. - так было с ALGLIB, так было и c CGAL (которая в X-Plane применяется), так было и с буст.. смотришь примеры как всё просто..

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

Но вот с бустом у меня раза с третьего как то сложилось - теперь в коде одно STL с итераторами :sarcastic: .. 

А вот велосипеды я то как раз и пропустил - например причиной большей части вылетов, про которые говорил Слава, было безобидное объявление дин. массива как float * без его удаления.

Вот с этим у меня трудности..   :umnik2:

Edited by Rhard

Share this post


Link to post
Share on other sites

Анимация 100% передаётся, а вот символ не вводится :( Но таки опредили что это скорее потеря этих ваших пакетов. т.к. если подольше подержать зажатой кнопку мыши, символ доходит :)

.

Значит всё таки проблема не с пакетами, если анимация передаётся..

Edited by Rhard

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...