|
||||||||||||||||||||||||||||||||||||||||||||
- Форум »
- Kerbal Space Program »
- Моды »
- kOS - програмируемый автопилот - 36 страница
2013-10-18T10:14:03+02:00 2017-08-14T22:48:23+02:00
Добро пожаловать в отдел программирования и автоматизации исследовательского центра Кербала!! Мы всегда рады новым огурлицам!! Здесь вы найдете инструкции по инициализации и пользованию средой kOS - scriptable autopilot system! Кербал нуждается в новых программистах! Все свои идеи которые мы присвоим себе можешь оставлять здесь. Мы же в свою очередь ответим на все твои вопросы, и поможем разобраться в столь ответственном ремесле, как написание программ для покорения космоса нашими бравыми кербанафтами! Кракен фхтагн Кракен р'лайх фхтагн.
С уважением, диспетчер центра - Finn.
В ближайшем времени появится несколько частей русских гайдов по онному во избежанию лишних и совсем глупых вопросов.
Ссылки на гайды:
Введения в kOS [Гайд по kOS часть 1]
Изучаем kOS - Циклы [Гайд по kOS часть 2]
Изучаем kOS - Условия Мат.Логика и AG [Гайд по kOS часть 3]
Ознакомиться с оригинальной переведенной инструкцией(Инструкция по старой версии, все еще актуальна большей частью) вы можете по ссылке ниже
Оригинальная инструкция на английском языке
Последняя версия мода - [1.0.5] kOS Scriptable Autopilot System v0.18.2 2015/11/26
скачать можно тут
Внимание! Для работоспособности мода нужен ModulManager, однако обычно разработчик kOS вставляет его в архив со своим модом. В любом случае убедитесь что у вас в GameData папке файл ModulManager в наличии.
Дополнительные моды:
- Большое кол-во Action Groups-ов для тех кому мало десяти стандартных! Совместим с kOS версией выше 15.
За предоставление мода спасибо -> Lynx
Action Groups Extended: 250 Action Groups
- Проп монитор(кОС встроенный в интерфейс кабины) для кОС. Работоспособность - не проверена. Писался для 15 версии. (Сейчас 18). Если кто проверит, отпишитесь.
kOS Prop Monitor
С уважением, диспетчер центра - Finn.
В ближайшем времени появится несколько частей русских гайдов по онному во избежанию лишних и совсем глупых вопросов.
Ссылки на гайды:
Введения в kOS [Гайд по kOS часть 1]
Изучаем kOS - Циклы [Гайд по kOS часть 2]
Изучаем kOS - Условия Мат.Логика и AG [Гайд по kOS часть 3]
Ознакомиться с оригинальной переведенной инструкцией(Инструкция по старой версии, все еще актуальна большей частью) вы можете по ссылке ниже
Переведенный английский гайд
Оригинальная инструкция на английском языке
Оригинальная инструкция последней версии(ENG)
Последняя версия мода - [1.0.5] kOS Scriptable Autopilot System v0.18.2 2015/11/26
скачать можно тут
Скачать kOS последней версии
Внимание! Для работоспособности мода нужен ModulManager, однако обычно разработчик kOS вставляет его в архив со своим модом. В любом случае убедитесь что у вас в GameData папке файл ModulManager в наличии.
Дополнительные моды:
- Большое кол-во Action Groups-ов для тех кому мало десяти стандартных! Совместим с kOS версией выше 15.
За предоставление мода спасибо -> Lynx
Action Groups Extended: 250 Action Groups
- Проп монитор(кОС встроенный в интерфейс кабины) для кОС. Работоспособность - не проверена. Писался для 15 версии. (Сейчас 18). Если кто проверит, отпишитесь.
kOS Prop Monitor
Последний раз редактировал Finn 16:07, 20.12.2015
------------------------------------------
Я пока отложил поиск темной силы и решил по изучать газодинамику.
График зависимости Cd*S от M
А это найдено в интернете
Тестил я явно не на аппарате с конической головной частью. Так что похоже на то, что геометрия влияет только на волюметрическую площадь, но никак не на коэффициент сопротивления на сверхзвуке. Меньше головной боли будет.
Но чтоб дальше более подробно изучать сопротивление. Нужны точные и большое количество замеров, чему препятствует "темная сила".
Скорее всего буду играться с версиями КСП. Ведь до сих пор не подтвердилось, что данная багуля не только у меня.
График зависимости Cd*S от M
Спойлер [+]
А это найдено в интернете
Спойлер [+]
Тестил я явно не на аппарате с конической головной частью. Так что похоже на то, что геометрия влияет только на волюметрическую площадь, но никак не на коэффициент сопротивления на сверхзвуке. Меньше головной боли будет.
Но чтоб дальше более подробно изучать сопротивление. Нужны точные и большое количество замеров, чему препятствует "темная сила".
Скорее всего буду играться с версиями КСП. Ведь до сих пор не подтвердилось, что данная багуля не только у меня.
------------------------------------------
Формула Циолковского
Перелет между компланарными круговыми орбитами
Трех-импульсный перелет между круговыми орбитами
Блочок из моего лога.
Круговая орбита 86,75 км:
Круговая орбита 115 км:
dSPV/dt - это производная по времени от вектора нулевого небесного меридиана (SolarPrimeVector). Он закреплён на скайбоксе, т.е. неподвижен в пространстве.
В первой таблице видим, что dSPV/dt имеет ненулевое значение, значит, вращается сама система координат. Т.к. SPV имеет единичную длину, число равно угловой скорости вращения omega в рад/с, период равен 2*pi/omega = 21549.49 с, что соответствует звёздным суткам Кербина.
Вероятно, на высоте 100 км игра переключается с планетарной вращающейся СО на космическую инерциальную.
Продолжив рассуждения, выводим, что лишние 0,66 м/с - это кориолисово ускорение, равное векторному произведению [omega x V].
Если поменять наклонение орбиты с 0 на 180 градусов, как раз-таки ускорение получается в противоположную сторону.
Двойки в силе Кориолиса не хватает, т.к. орбитальные скорости даны в локально-инерциальной системе отсчёта. Для скорости относительно поверхности будет полноценное кориолисово ускорение 2[omega x V].
Круговая орбита 86,75 км:
Цитата:?
Time |dSPV/dt| |dV| |dV/dt| g = body:mu/body:position:sqrmagnitude
69032.0658094217 0.000291570900572435 0.13654930868926 6.82746543307205 7.48867706842426
69032.0858094217 0.000291570900615457 0.136549302238889 6.8274651105535 7.48867706669843
69032.1058094217 0.000291570900589577 0.136549291920482 6.82746459463316 7.48867706497171
69032.1258094217 0.000291570900385054 0.136549290468229 6.82746452202052 7.48867706324411
Time |dSPV/dt| |dV| |dV/dt| g = body:mu/body:position:sqrmagnitude
69032.0658094217 0.000291570900572435 0.13654930868926 6.82746543307205 7.48867706842426
69032.0858094217 0.000291570900615457 0.136549302238889 6.8274651105535 7.48867706669843
69032.1058094217 0.000291570900589577 0.136549291920482 6.82746459463316 7.48867706497171
69032.1258094217 0.000291570900385054 0.136549290468229 6.82746452202052 7.48867706324411
Круговая орбита 115 км:
Цитата:
Time |dSPV/dt| |dV| |dV/dt| g = body:mu/body:position:sqrmagnitude
69064.9458094284 0 0.13816226078682 6.90811303793364 6.90811299989546
69064.9658094284 0 0.138162248426372 6.90811241991125 6.90811299989539
69064.9858094284 0 0.138162251831491 6.90811259016718 6.90811299989513
69065.0058094284 0 0.138162253048833 6.90811265103429 6.90811299989509
?
Time |dSPV/dt| |dV| |dV/dt| g = body:mu/body:position:sqrmagnitude
69064.9458094284 0 0.13816226078682 6.90811303793364 6.90811299989546
69064.9658094284 0 0.138162248426372 6.90811241991125 6.90811299989539
69064.9858094284 0 0.138162251831491 6.90811259016718 6.90811299989513
69065.0058094284 0 0.138162253048833 6.90811265103429 6.90811299989509
?
dSPV/dt - это производная по времени от вектора нулевого небесного меридиана (SolarPrimeVector). Он закреплён на скайбоксе, т.е. неподвижен в пространстве.
В первой таблице видим, что dSPV/dt имеет ненулевое значение, значит, вращается сама система координат. Т.к. SPV имеет единичную длину, число равно угловой скорости вращения omega в рад/с, период равен 2*pi/omega = 21549.49 с, что соответствует звёздным суткам Кербина.
Вероятно, на высоте 100 км игра переключается с планетарной вращающейся СО на космическую инерциальную.
Продолжив рассуждения, выводим, что лишние 0,66 м/с - это кориолисово ускорение, равное векторному произведению [omega x V].
Если поменять наклонение орбиты с 0 на 180 градусов, как раз-таки ускорение получается в противоположную сторону.
Двойки в силе Кориолиса не хватает, т.к. орбитальные скорости даны в локально-инерциальной системе отсчёта. Для скорости относительно поверхности будет полноценное кориолисово ускорение 2[omega x V].
------------------------------------------
На викии хорошо объяснено про вращение системы отсчёта, как мне кажется.
------------------------------------------
Возник вопрос: как в kOS регулировать ширину раскрытия А.Э.Р.О.Т.О.Р.М.О.За? или (подозреваю, что из той-же оперы) - величину раскрытия элеронов.
Спасибо.
Спасибо.
Soul,
делается через прямой доступ к модулям.
У аэротормоза за степень раскрытия отвечает ModuleAeroSurface, у винглетов SyncModuleControlSurface, у элеронов может быть что-то ещё.
Посмотреть это можно в файле .craft, найти нужно примерно такой блок (пример для аэротормоза):
Тут видим, что есть поля aeroAuthorityLimiter и authorityLimiter. По-видимому, первое отвечает за отклонение в режиме тормоза, второе - в режиме управляющей поверхности.
Число в этом поле изменяется стандартным образом через part:getmodule(modulename):setfield("field",value). В примере с аэротормозом:
Чтобы не запоминать имя модуля, можно сделать поиск по имени поля:
делается через прямой доступ к модулям.
У аэротормоза за степень раскрытия отвечает ModuleAeroSurface, у винглетов SyncModuleControlSurface, у элеронов может быть что-то ещё.
Посмотреть это можно в файле .craft, найти нужно примерно такой блок (пример для аэротормоза):
Цитата:?
MODULE
{
name = ModuleAeroSurface
isEnabled = True
aeroAuthorityLimiter = 100
mirrorDeploy = False
usesMirrorDeploy = False
ignorePitch = True
ignoreYaw = True
ignoreRoll = True
deploy = False
deployInvert = False
partDeployInvert = False
authorityLimiter = 100
stagingEnabled = True
EVENTS
{
}
ACTIONS
{
ActionToggleBrakes
{
actionGroup = Brakes
}
ActionToggle
{
actionGroup = None
active = False
}
ActionExtend
{
actionGroup = None
}
ActionRetract
{
actionGroup = None
}
}
UPGRADESAPPLIED
{
}
}
MODULE
{
name = ModuleAeroSurface
isEnabled = True
aeroAuthorityLimiter = 100
mirrorDeploy = False
usesMirrorDeploy = False
ignorePitch = True
ignoreYaw = True
ignoreRoll = True
deploy = False
deployInvert = False
partDeployInvert = False
authorityLimiter = 100
stagingEnabled = True
EVENTS
{
}
ACTIONS
{
ActionToggleBrakes
{
actionGroup = Brakes
}
ActionToggle
{
actionGroup = None
active = False
}
ActionExtend
{
actionGroup = None
}
ActionRetract
{
actionGroup = None
}
}
UPGRADESAPPLIED
{
}
}
Тут видим, что есть поля aeroAuthorityLimiter и authorityLimiter. По-видимому, первое отвечает за отклонение в режиме тормоза, второе - в режиме управляющей поверхности.
Число в этом поле изменяется стандартным образом через part:getmodule(modulename):setfield("field",value). В примере с аэротормозом:
Цитата:
set airbrakes to ship:partsnamed["airbrake1"]. // теперь в airbrakes хранится список всех аэротормозов на корабле
for abrake in airbrakes {
abrake:getmodule["ModuleAeroSurface"]:setfield("aeroAuthorityLimiter", 30). // степень открытия тормоза установлена на 30 процентов
}
?
set airbrakes to ship:partsnamed["airbrake1"]. // теперь в airbrakes хранится список всех аэротормозов на корабле
for abrake in airbrakes {
abrake:getmodule["ModuleAeroSurface"]:setfield("aeroAuthorityLimiter", 30). // степень открытия тормоза установлена на 30 процентов
}
?
Чтобы не запоминать имя модуля, можно сделать поиск по имени поля:
Цитата:
// находит все управляющие поверхности и устанавливает отклонение в 30%
for p in ship:parts {
for m in p:modules {
if m:hasfield("authorityLimiter") {
m:setfield("authorityLimiter", 30).
}
}
}
?
// находит все управляющие поверхности и устанавливает отклонение в 30%
for p in ship:parts {
for m in p:modules {
if m:hasfield("authorityLimiter") {
m:setfield("authorityLimiter", 30).
}
}
}
?
------------------------------------------
Pand5461 Спасибо ещё раз! :-)
Ещё на редите прочел:
Задача: необходимо описать функционирование аэротормозов в трёх режимах - 1) режим старта, поверхности втянуты, зафиксированы; 2) режим входа в атмосферу, поверхности активированы, регулируют тангаж и рысканье; 3) режим падения, поверхности зафиксированы в выдвинутом положении.
[code]function setAirbrakeControlSurfaces { parameter value is false. // default is off
local ab is ship:partsnamed("airbrake1").
for p in ab {
local m is p:getmodule("moduleaerosurface").
m:setfield("pitch", value).
m:setfield("yaw", value).
}
}
// Режим 1:
brakes off.
setAirbrakeControlSurfaces(false).
// Режим 2:
brakes off.
setAirbrakeControlSurfaces(true).
// Режим 3:
brakes on.
setAirbrakeControlSurfaces(false).
[/code]
Источник
Ещё на редите прочел:
Задача: необходимо описать функционирование аэротормозов в трёх режимах - 1) режим старта, поверхности втянуты, зафиксированы; 2) режим входа в атмосферу, поверхности активированы, регулируют тангаж и рысканье; 3) режим падения, поверхности зафиксированы в выдвинутом положении.
[code]function setAirbrakeControlSurfaces { parameter value is false. // default is off
local ab is ship:partsnamed("airbrake1").
for p in ab {
local m is p:getmodule("moduleaerosurface").
m:setfield("pitch", value).
m:setfield("yaw", value).
}
}
// Режим 1:
brakes off.
setAirbrakeControlSurfaces(false).
// Режим 2:
brakes off.
setAirbrakeControlSurfaces(true).
// Режим 3:
brakes on.
setAirbrakeControlSurfaces(false).
[/code]
Источник
Последний раз редактировал Soul 23:59, 08.08.2017
Стоит отметить, что локализованных версиях (проверялось на 1.3.0) элементы структуры управления тоже локализованы.

Из-за этого при обращении к таким элементам возможны ошибки, т.к. юникодные символы в скрипте обгрызаются до первого байта, и локализованые имена полей необратимо искажаются.

Последний раз редактировал Soul 16:40, 09.08.2017
нужна помощь
в терминале КОС не могу вставить код. В самой игре вставить текст без проблем получается. Например переименовать деталь.
Но в терминале нет реакции на комбинацию Ctrl+C(копировать) Ctrl+X(вырезать) Ctrl + V (вставить)
Как это лечится?
в терминале КОС не могу вставить код. В самой игре вставить текст без проблем получается. Например переименовать деталь.
Но в терминале нет реакции на комбинацию Ctrl+C(копировать) Ctrl+X(вырезать) Ctrl + V (вставить)
Как это лечится?
ufaboy,
возможно, переключением раскладки клавиатуры на английскую.
В терминале я, кажется, даже и не пробовал копировать/вставлять. В редакторе точно Ctrl+C и Ctrl+V на английской раскладке работают (в KSP 1.2.2 и Linux Mint).
В крайнем случае, можно создать файл с программой (edit "program.ks".), вставить нужный текст во встроенный редактор и запустить файл после сохранения (run program.).
возможно, переключением раскладки клавиатуры на английскую.
В терминале я, кажется, даже и не пробовал копировать/вставлять. В редакторе точно Ctrl+C и Ctrl+V на английской раскладке работают (в KSP 1.2.2 и Linux Mint).
В крайнем случае, можно создать файл с программой (edit "program.ks".), вставить нужный текст во встроенный редактор и запустить файл после сохранения (run program.).
------------------------------------------
ufaboy! Я в Windows всегда использую для копирования Ctrl+Ins а для вставки Shift+Ins, и никакими Ctrl+C и Ctrl+V сроду никогда не пользовался. Насколько я знаю, Ctrl+C и Ctrl+V ввел мелкософт в своём "Microsoft Office", а до этого было именно Ctrl+Ins и Shift+Ins. Хотя, могу и ошибаться, давно это было.
------------------------------------------

Наблюдатель,
Ctrl+C и Ctrl+V удобнее, потому что нажимаются одной рукой (причем не той в которой мышка ;)
Ctrl+C и Ctrl+V удобнее, потому что нажимаются одной рукой (причем не той в которой мышка ;)
Lynx! Ну, это кому как. Кто как привык. Я например, привык ещё в ДОС-е к Norton Commander-у и терпеть не могу "Проводник", мне он неудобен, поэтому, использую "Unreal Commander" или любой другой подобный. ;)
------------------------------------------

Доступ закрыт.
- Вам запрещено отвечать в темах данного форума.