Jump to content

Пилотажный робот-ведущий


Recommended Posts

Сделал простенького робота через экспорт данных. Пока что умеет делать "плавные" виражи с заданным креном. Изображает человека, летающего с сервера. Этого было бы достаточно для тренировки ведомых в ГП и разворотов (для живого ведущего задача неинтересная).

 

Все бы хорошо, но export.lua передается с сервера всем клиентам, а это значит, что клиенты тоже будут летать по программе этого "робота", хотят они того или нет :D (управление идет через LoSetCommand)

 

Возможно ли это как-нибудь обойти? Например, разрешить клиентам свои export.lua или управлять из этого скрипта только самолетом с определенным ID?

Link to comment
Share on other sites

Сделал простенького робота через экспорт данных. Пока что умеет делать "плавные" виражи с заданным креном. Изображает человека, летающего с сервера. Этого было бы достаточно для тренировки ведомых в ГП и разворотов (для живого ведущего задача неинтересная).

 

Все бы хорошо, но export.lua передается с сервера всем клиентам, а это значит, что клиенты тоже будут летать по программе этого "робота", хотят они того или нет :D (управление идет через LoSetCommand)

 

Возможно ли это как-нибудь обойти? Например, разрешить клиентам свои export.lua или управлять из этого скрипта только самолетом с определенным ID?

 

Прикольно, дай поглазеть то ;)

DimAss Coljo Yappo

Link to comment
Share on other sites

  • ED Team
Сделал простенького робота через экспорт данных. Пока что умеет делать "плавные" виражи с заданным креном. Изображает человека, летающего с сервера. Этого было бы достаточно для тренировки ведомых в ГП и разворотов (для живого ведущего задача неинтересная).

 

Все бы хорошо, но export.lua передается с сервера всем клиентам, а это значит, что клиенты тоже будут летать по программе этого "робота", хотят они того или нет :D (управление идет через LoSetCommand)

 

Возможно ли это как-нибудь обойти? Например, разрешить клиентам свои export.lua или управлять из этого скрипта только самолетом с определенным ID?

Все в руках сервера. Если на нем исключить файл export.lua из списка навязываемых всем клиентам файлов, то каждый клиент будет использовать свой export.lua. Отредактируй на сервере таблицу serverFiles в файле Config/Network/Config.lua.

Valery Blazhnov

Eagle Dynamics Veteran

Link to comment
Share on other sites

Сделал простенького робота через экспорт данных. Пока что умеет делать "плавные" виражи с заданным креном. Изображает человека, летающего с сервера.

 

Прикольно, мой пока научился только взлетать и удерживать высоту/скорость, а также использовать механизацию. :) Когда будет время - хочу попробовать объяснить ему, что такое "цель" и как с ней бороться. ;)

picture.php?albumid=243&pictureid=1732
Link to comment
Share on other sites

Все в руках сервера. Если на нем исключить файл export.lua из списка навязываемых всем клиентам файлов, то каждый клиент будет использовать свой export.lua. Отредактируй на сервере таблицу serverFiles в файле Config/Network/Config.lua.

 

О, спасибо :) Кстати, как корректнее удалять export.lua из списка, удалить строку с элементом таблицы совсем или присвоить пустое значение?

 

Вот

http://n210.nm.ru/files/export.rar

трек (на качество пилотажа не обращайте внимания, записал по быстрому в окошке 800х600)

http://n210.nm.ru/files/netbot.rar

 

Ничего сложного там нет, умеет включать автоматы высоты и скорости и делать развороты. Взлетать и садиться не умеет :)

Link to comment
Share on other sites

Лучше попробуйте "заскриптовать" строй.

ну и банальные "10 градусов по УА за 5-7 секунд" ;)

 

Нее, выполнять "10 градусов по УА за 5-7 секунд" точно так же, как живой ведущий, робота сложно научить. Да и незачем :D

Link to comment
Share on other sites

О, спасибо :) Кстати, как корректнее удалять export.lua из списка, удалить строку с элементом таблицы совсем или присвоить пустое значение?

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

"There are five dangerous faults which may affect a general: recklessness, which leads to destruction; cowardice, which leads to capture; a hasty temper, which can be provoked by insults; a delicacy of honor which is sensitive to shame; over-solicitude for his men, which exposes him to worry and trouble." Sun Tzu

[sigpic]http://forums.eagle.ru/signaturepics/sigpic2354_5.gif[/sigpic]

Link to comment
Share on other sites

Кто может сделать так, чтобы все боты строго держали заданную скорость? И в режиме полета по маршруту «писали» плавные крены.

 

Кто может сделайте PLZ.

[sIGPIC]http://forums.eagle.ru/signaturepics/sigpic3427_40.gif[/sIGPIC]

Windows se7en | Intel™ C2D E6850 3.00GHz | 4GB RAM | ATi RADEON™ HD 4870 Sonic 512Mb DDR5 | Saitek X52 | TrackIR4 | VKB.

Link to comment
Share on other sites

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

 

Сделать сетевую миссию, в которой один из клиентских самолетов начинает в воздухе. Запустить сервер с этой миссией и занять этот самолет. Войти в миссию.

 

Да, еще надо подредактировать Config/Network/Config.lua (убрать export.lua из serverfiles), как было написано выше.

Link to comment
Share on other sites

Запустить сервер с этой миссией и занять этот самолет. Войти в миссию.

 

Я занял этот самолет, но я хотел бы полетать за ботом, а не смотреть, как самолет управляется без меня.

 

Сегодня керосин подвезут к 22:00?

WR=251=Vitaliska

http://white-ravens.com/

Link to comment
Share on other sites

вопрос к знатокам

1) как в export.lua узнать высоту?

2) как в export.lua узнать высоту, на которой должен лететь самолет по маршруту?

Я белый и пушистый :music_whistling:

Link to comment
Share on other sites

  • ED Team
Кстати, как корректнее удалять export.lua из списка, удалить строку с элементом таблицы совсем или присвоить пустое значение?

Удалить. Впрочем, и пустое значение сработает. Главное, чтобы сервер не знал, что export.lua нужно всем навязывать.

Valery Blazhnov

Eagle Dynamics Veteran

Link to comment
Share on other sites

  • 1 month later...

Научил выходить на заданный угол атаки (и удерживать).

 

fbw0oc.th.jpg

 

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

 

Трек http://n210.nm.ru/files/fbw_test.zip

Бот пытается удержать угол 10. Я управляю с клавиатуры по крену и РУДами, а у (ро)бота управление по тангажу.

Link to comment
Share on other sites

Update: Трек с испытаний новой САУ для модифицированного робота, стабилизирует скорость и высоту (ну не нравятся мне встроенные локоновские автоматы, особенно с кренами больше 30 :))

 

http://n210.nm.ru/files/acstest.zip

 

В треке я управляю только по крену (с клавы), остальное робот.

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

 

2 vitaliska Постепенно может быть до более сложного доберусь. Почти как у людей, сначала ГП и виражи, потом простой и сложный пилотаж :D

Link to comment
Share on other sites

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

 

Солюшен :D Заходим в ЛО, создаем сервер, летаем чего хотим, записываем трек.

 

Прописываем в modeltimer.lua

TraceOn = true
TraceCommandsDiscreteOn = true
TraceCommandsAnalogOn = true

 

Запускаем проигрывание трека только что записанного с сервера.

В Temp появляется файл TrackPlay.log

 

Обрабатываем скриптом типа такого

while (<>)
{
 if (m/activity: 30.+ T:(.+?) C:(\d+?)\(.*\)/)
 {
   $t=$1; $c=$2;
   if (m/V:(.+?)$/) {print "$t $c $1\n"} else {print "$t $c 100\n"};
 }
}

на вход даем TrackPlay.log, выход направляем в mtrack в папке Temp.

 

Возвращаем modeltimer.lua в исходное состояние, а export.lua подменяем на такой

function LuaExportStart()

local file = io.open("./Temp/mtrack", "r")
if file then
	io.input(file)
end

cmnd = 1
cvalue = 0
end


function LuaExportBeforeNextFrame()

end

function LuaExportAfterNextFrame()

end

function LuaExportStop()
io.close()
end

function LuaExportActivityNextEvent(t)

       local tNext = t
       local s = io.read()

       if cvalue < 100 then
            LoSetCommand(cmnd, cvalue)
         else
            LoSetCommand(cmnd)
         end

_, _, mt, cmnd, cvalue = string.find(s, "(-*%d+.%d+) (%d+) (-*%d+.*%d+)")

mt = tonumber(mt)
cmnd = tonumber(cmnd)
cvalue = tonumber(cvalue)

tNext = mt
return tNext

end

 

Снова запускаем ЛО в режиме сервера и выбираем ту же миссию и тот же самолет.

 

Вопрос: Почему такой "трек" не сходится?

Сам долго не разбирался (пару часов), может быть упустил чего-нить.

Link to comment
Share on other sites

  • 3 weeks later...

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

 

Попытка пролететь ведомым за своим "фантомом-ведущим"

http://lockon-vpg.nm.ru/files/phantom_test.zip (680 кб)

 

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

 

Кто-нибудь знает как из луа-скрипта вызвать внешнюю программу? Тогда можно было бы прикрутить фантому голос. Почему-то execute не работает.

Link to comment
Share on other sites

os.execute (command) пробовал?

"There are five dangerous faults which may affect a general: recklessness, which leads to destruction; cowardice, which leads to capture; a hasty temper, which can be provoked by insults; a delicacy of honor which is sensitive to shame; over-solicitude for his men, which exposes him to worry and trouble." Sun Tzu

[sigpic]http://forums.eagle.ru/signaturepics/sigpic2354_5.gif[/sigpic]

Link to comment
Share on other sites

Bublik, сделай пожалуйста просто чтобы все боты в ЛО держали постоянную скорость! Я тебя умоляю! PLZ

 

Хотел через редактор треков полетать за твоим ботом, но не получилось…

[sIGPIC]http://forums.eagle.ru/signaturepics/sigpic3427_40.gif[/sIGPIC]

Windows se7en | Intel™ C2D E6850 3.00GHz | 4GB RAM | ATi RADEON™ HD 4870 Sonic 512Mb DDR5 | Saitek X52 | TrackIR4 | VKB.

Link to comment
Share on other sites

Кто-нибудь знает как из луа-скрипта вызвать внешнюю программу? Тогда можно было бы прикрутить фантому голос. Почему-то execute не работает.

Это работает.

Приведите строчку кода, которую используете.

Link to comment
Share on other sites

NAEMNIK =RAF=, не флуди! 3.4

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

 

А пункт 3.4 относится к твоему посту, не обоснованному и бессмысленному.

 

=======================

С пост скриптумом ознакомился, ответил в привате.

(Если ты заметил, содержимое твоих постов на месте - слито в одно сообщение. ;) )

[sIGPIC]http://forums.eagle.ru/signaturepics/sigpic3427_40.gif[/sIGPIC]

Windows se7en | Intel™ C2D E6850 3.00GHz | 4GB RAM | ATi RADEON™ HD 4870 Sonic 512Mb DDR5 | Saitek X52 | TrackIR4 | VKB.

Link to comment
Share on other sites

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

А почему было не сделать, изначально, сбор данных в массив, удаление пустых значений и сортировку по индексам, со сбросом существующих, т.е. из:

array1(
    1=>"first",
    2=>null,
    3=>"третий"
);
превратить в
array2(
   1=>"first",
   2=>"третий"
);
unset(array1);

 

Это же элементарно. Не подумали или еще какая-то причина. Вопрос из чистого любопытства.

Link to comment
Share on other sites

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...