|
|
|
Канал Игры Мечты: «Самонаводящаяся ракета в космосе» |
|
|
Aerton
70 EGP
 Рейтинг канала: 1(8) Репутация: 4 Сообщения: 67 Откуда: Новосибирск Зарегистрирован: 20.08.2004
 |
|
Наверняка кто-нибудь здесь уже делал самонаводящиеся космические ракеты с ньютоновской физикой. Пожалуйста, подскажите алгоритм.
Сначала сделал в лоб - ракета просто всё время поворачивается лицом к цели. Но проблема в том, что при таком повороте не гасится боковая скорость, и ракету уносит в бок.
Почитал про реальные ракеты - там используется такой же алгоритм (называется по-умному Velocity Pursuit Method of Guidance). Но оно расчитано для атмосферы, что накладывает условия, которые в космосе не выполняются: ракета имеет постоянную скорость и, как я понял, боковая скорость просто не учитывается, т.к. относительно быстро гасится сама трением об воздух. В той же доке ещё упоминается Proportional Navigation Method of Guidance, в котором ракета поворачивается в N раз быстрее относительной угловой скорости цели. Но что-то мне кажется, работать оно не будет по тем же причинам.
Выглядит оно сейчас так - особенно заметно, когда ракета немного промахивается по летящей навстречу цели, разворачивается, долго тормозит и возвращается.
Алгоритм действия простой, сначала ракета отбрасывается с какой-то скоростью от борта стреляющего корабля, и через четверть секунды включается система наведения и двигатель. Поворот делается просто приложением момента, т.е. как будто маневровым двигателем. По-хорошему, надо бы сделать поворачивающееся сопло вместо него, но пока хотя бы так научиться попадать.
|
|
|
Sh.Tac.
151 EGP
  Рейтинг канала: 5(108) Репутация: 14 Сообщения: 1426
Зарегистрирован: 27.07.2005
 |
|
честное наведение трудно сделать, странно что она ещё не виляет по синусоиде даже когда летит прямо в цель
_________________ This is what you get ...
(c) Radiohead |
|
|
DIMOSUS.X
997 EGP
        Рейтинг канала: 4(67) Репутация: 188 Сообщения: 3252 Откуда: Vilnius/Minsk Зарегистрирован: 06.08.2008
 |
|
Переведи скорость ракеты в ее локальную систему. Далее возьми боковую составляющую и гаси ее приложением силы - как если бы на ракете стояли боковые двигатели.
Лучшего способа пока не придумал.
_________________ Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом. |
|
|
Aerton
70 EGP
 Рейтинг канала: 1(8) Репутация: 4 Сообщения: 67 Откуда: Новосибирск Зарегистрирован: 20.08.2004
 |
|
Это конечно будет работать, но что-то многовато двигателей для одного снаряда получается.
|
|
|
DIMOSUS.X
997 EGP
        Рейтинг канала: 4(67) Репутация: 188 Сообщения: 3252 Откуда: Vilnius/Minsk Зарегистрирован: 06.08.2008
 |
|
Ну тогда можешь попытаться прогназировать траекторию ракеты, и доворачивать ракету так, чтобы эта прогназируемая траектория проходила через цель.
_________________ Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом. |
|
|
Sh.Tac.
151 EGP
  Рейтинг канала: 5(108) Репутация: 14 Сообщения: 1426
Зарегистрирован: 27.07.2005
 |
|
ну достаточно назначать рандеву (место где мишень и ракета должны встретиться) в некоторой области, лететь туда и там мощно всем телом подрываться
_________________ This is what you get ...
(c) Radiohead |
|
|
DIMOSUS.X
997 EGP
        Рейтинг канала: 4(67) Репутация: 188 Сообщения: 3252 Откуда: Vilnius/Minsk Зарегистрирован: 06.08.2008
 |
|
Тоесть тело должно равнодушно ждать смертельного рандеву и да же не будет пытаться сопротивляться?
_________________ Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом. |
|
|
Sh.Tac.
151 EGP
  Рейтинг канала: 5(108) Репутация: 14 Сообщения: 1426
Зарегистрирован: 27.07.2005
 |
|
ракете скорость поболее надо правда, тело имеет право вильнуть и избежать своей участи
добавлено спустя 1 минуту:
З.Ы. но вообще да, практически НУРС получается
_________________ This is what you get ...
(c) Radiohead
Последний раз редактировалось: Sh.Tac. (22:49 14-03-2011), всего редактировалось 1 раз |
|
|
Shirson
1605 EGP
           Рейтинг канала: 7(626) Репутация: 219 Сообщения: 16511 Откуда: 79°W 44°N Зарегистрирован: 29.01.2002
 |
|
Aerton, попробуй наводить ракету, представив, что вектор движения ракеты и вектор её направления (ориентации) составляют угол, у которого направление на цель - биссектриса.
(исключая экстремальные условия, кажется будет неплохо).
Плюс можно потом заимпрувить алгоритм, меняя тягу в зависимости от величины угла.
_________________ У меня бисера не доxеpа. |
|
|
Варсик
545 EGP
    Рейтинг канала: 4(81) Репутация: 117 Сообщения: 4041 Откуда: Москва Зарегистрирован: 22.12.2002
 |
|
Вообще говоря, все просто и сложно...
Допустим у ракеты есть 1 маршевый двигатель и набор маневровых (которые ракету крутят вокруг оси).
Теперь представим что ракете необходимо сделать поворот на 90 градусов... Если делается прямоугольны поворот, то алгоритм такой:
Сначала ракета останавливается, потом маневровыми разворачивает тело и ускоряется в соотв. направлении.
Так как это не сильно интересно нам с вами, то достаточно поставить максимальный "угол гашения скорости"... То есть, если ракета хочет погасить какую-то скорость, то она будет поворачиваться не ровно в противоположное направление, а на какой-то угол. Фактически тут будет система весовых приоритетов.
Пока-что приоритета 2: гашение скорости и преследование КА.
Но тогда будет эффект дерганности... Для решения этой проблемы надо вводить плавающие веса в зависимости от "силы" того или иного отклонения. То есть если КА немного сместился, то ракета поворачивает чуть больше, для уменьшения бокового влияния. Если ракета промахнулась, то она может и специально погасить сначала скорость.
Если интересно болле подробнее - могу попытаться расписать это на 2Д ньютоне в виде приложения.
_________________ WARNING: By reading this post you accept that this post is genius. |
|
|
Crimson
560 EGP
    Рейтинг канала: 4(83) Репутация: 130 Сообщения: 3041
Зарегистрирован: 03.09.2003
 |
|
Вообще говоря, стоит иметь в виду, что ракеты это не уберваффе и 100% попадать по маневрирующей цели они совершенно не обязаны. Особенно когда их запускают на встречных курсах
Имхо у тебя как раза все довольно играбельно, есть элемент навыка и в запуске ракет и в уворачивании. Если сильно заоптимизироваться - получится что запуск по тебе ракеты это game over.
(Мои пять копеек).
|
|
|
Guest
2075 EGP
              Рейтинг канала: 5(167) Репутация: 376 Сообщения: 27975 Откуда: Моск. Зарегистрирован: 12.10.2004
 |
|
Crimson : |
Имхо у тебя как раза все довольно играбельно, есть элемент навыка и в запуске ракет и в уворачивании. Если сильно заоптимизироваться - получится что запуск по тебе ракеты это game over.
|
Вполне.
Можно: понизить массу ракеты, увеличить её убойность, алгоритм оставить примитивный (держать маршевый от цели и тапку в пол).
Из соображений реализма: в ракету сложную логику ставить дорого, это всего лишь кусок железа с движками и боеголовкой, от которого ничего не остаётся!
В результате ракету выгодно будет запускать на средних дистанциях, с упреждением по углу (запуск по вектору корабля-носителя) и в корму супостату.
Собственно, см. Фрил. Там ракеты мазали, но если уж догоняли... Но там было сопротивление киселя.
_________________ Трещит земля как пустой орех
Как щепка трещит броня
Последний раз редактировалось: Guest (11:47 15-03-2011), всего редактировалось 1 раз |
|
|
Варсик
545 EGP
    Рейтинг канала: 4(81) Репутация: 117 Сообщения: 4041 Откуда: Москва Зарегистрирован: 22.12.2002
 |
|
Посмотрите как это было сделано в HomePlanet.
_________________ WARNING: By reading this post you accept that this post is genius. |
|
|
Minx
1011 EGP
        Рейтинг канала: 6(332) Репутация: 139 Сообщения: 10548 Откуда: Gomel, Belarus Зарегистрирован: 19.11.2005
 |
|
В простейшем случае для ракеты - прогнозировать положение корабля через время, за которое его догонит ракета, и лететь маршевым двигателем туда. Прогноз например для корабля, который летит без ускорения. Перерасчет делается постоянно при работе двигателя ракеты.
Чтобы был шанс увернутся у игрока - двигатель ракеты работает ограниченное время, после чего ракета идет без изменения вектора скорости. В результате получаем: реалистичность работы двигателя (ограничение по топливу), возможность уклонения от ракеты у преследуемого, явную зависимость легкости попадания ракетой вблизи и возможность маневра ухода от атаки издалека.
Очень похожие вопросы обсуждались в теме, которую можно просмотреть полностью или отсюда (со слов "рассмотрим ситуацию").
_________________ μηδείς αγεωμέτρητος εισίτω |
|
|
Aerton
70 EGP
 Рейтинг канала: 1(8) Репутация: 4 Сообщения: 67 Откуда: Новосибирск Зарегистрирован: 20.08.2004
 |
|
Shirson : |
Aerton, попробуй наводить ракету, представив, что вектор движения ракеты и вектор её направления (ориентации) составляют угол, у которого направление на цель - биссектриса.
|
Идея интересня, попробую.
Warstone : |
Сначала ракета останавливается, потом маневровыми разворачивает тело и ускоряется в соотв. направлении.
|
В таком виде конечно неприемлимо. Как ты расписываешь дальше - так как раз в том и вся проблема, как расчитать на сколько именно поворачиваться. Если сам за штурвалом, то примерно как-то так и получается, но слишком нечётко, чтобы можно было записать в формулу. Писать приложение наверное сильно долго, скажи как ты планируешь рассчитывать эти веса?
Насчёт Homeplanet - если есть время, можно в двух словах как там сделано? Игру не застал, и даже на ютубе роликов, в которых можно было бы что-то рассмотреть, нету.
Crimson : |
Вообще говоря, стоит иметь в виду, что ракеты это не уберваффе и 100% попадать по маневрирующей цели они совершенно не обязаны. Особенно когда их запускают на встречных курсах
|
Совершенно верно. Но, к сожалению, сейчас ракеты могут промахнуться даже по почти неподвижной цели, хотя в ролике это плохо видно. Когда, например, жёлтый корабль тормозит и сбрасывает скорость до нуля.
Guest : |
Из соображений реализма: в ракету сложную логику ставить дорого, это всего лишь кусок железа с движками и боеголовкой, от которого ничего не остаётся!
|
Мне кажется, микроконтроллер + подвижное сопло навёрное всё-таки будет дешевле, чем маневровый двигатель? Но это в идеале, пока что не получилось даже с маневровым.
Guest : |
Собственно, см. Фрил. Там ракеты мазали, но если уж догоняли... Но там было сопротивление киселя.
|
Случай с вязким трением не отличается от полёта в воздухе, а на эту тему уже давно всё просчитано и даже есть пара книг.
Minx : |
Прогноз например для корабля, который летит без ускорения. Перерасчет делается постоянно при работе двигателя ракеты.
|
Думается мне, что без ускорения ничего летать не будет, т.к. почти всегда имеет смысл разгоняться или тормозить, а максимальной скорости нет.
Minx : |
двигатель ракеты работает ограниченное время, после чего ракета идет без изменения вектора скорости.
|
Сейчас ракета в таком случае самоуничтожается, т.к. в подвижную цель без возможности маневрирования она всё равно не попадёт и только зря занимает вычислительные ресурсы.
Minx : |
Очень похожие вопросы обсуждались в теме, которую можно просмотреть полностью или отсюда (со слов "рассмотрим ситуацию").
|
На первый взгляд кажется не совсем то, но всё равно почитаю.
|
|
|
HPilot
62 EGP
 Рейтинг канала: 1(5) Репутация: -5 Сообщения: 68 Откуда: Ижевск Зарегистрирован: 09.03.2011
 |
|
К вопросу об излишествах:
Что мешает оставить вектор движения и вектор ускорения ракеты? То есть ракета только крутится и ускоряется маршевым двигателем. Для такого малого объекта как ракета можно принебречь временем развотота, т.к. это не повлияет на играбельность. И остается только расчитать вектор ускорения, а саму ракету "рисовать" носом по этому вектору ускорения. Ускоряться, пока вектор движения не "уткнется" в цель.
Кстати ракеты в атмосфере сигарообразные для того, чтобы было наименьшее сопротивление воздуху и бОльшая курсовая устойчивость. А в космосе это не критично, поэтому можно строить хоть шар (цилиндр с радиусом примерно равным длине) с пламенем двигателя. Таким образом принцип сферичного коня в вакууме здесь вполне применим
_________________ "Где граница атмосферы?... - Космос начинается тут, где ты стоишь" Orbitez
Последний раз редактировалось: HPilot (17:49 15-03-2011), всего редактировалось 5 раз(а) |
|
|
Minx
1011 EGP
        Рейтинг канала: 6(332) Репутация: 139 Сообщения: 10548 Откуда: Gomel, Belarus Зарегистрирован: 19.11.2005
 |
|
Aerton : |
Думается мне, что без ускорения ничего летать не будет, т.к. почти всегда имеет смысл разгоняться или тормозить, а максимальной скорости нет.
|
Чаще всего предсказать, будет разгоняться корабль или тормозить - возможности нет. Но при постоянном перерасчёте во время работы двигателя идет сближение.
Я не большой специалист в ракетной технике, но по моим понятиям ракета работает ограниченное и очень малое время (например "The AIM-9E and -9J Sidewinders both had a rocket motor impulse of 8,800 lb/s, burn time of 2.2 s, peak thrust of 4,200 lb, giving an acceleration of 28G.") и, набрав за это время большую скорость, сближается настолько быстро, что цель не успевает сделать маневр для ухода от атаки.
Aerton : |
Сейчас ракета в таком случае самоуничтожается, т.к. в подвижную цель без возможности маневрирования она всё равно не попадёт и только зря занимает вычислительные ресурсы.
|
Попадание - это что? Попадание в цель с точностью до миллиметра? Или нужно пройти мимо цели на как можно более близком расстоянии, и повредить её взрывом/облаком осколков/.. ?
_________________ μηδείς αγεωμέτρητος εισίτω |
|
|
DIMOSUS.X
997 EGP
        Рейтинг канала: 4(67) Репутация: 188 Сообщения: 3252 Откуда: Vilnius/Minsk Зарегистрирован: 06.08.2008
 |
|
ЗРК "Стрела-10", ее ракета попадает с растояния 5км в цель размером с яблоко - сам наблюдал.
Если используется ньютоновская физика, то какие у тебя размеры игроого пространства?
_________________ Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом. |
|
|
Aerton
70 EGP
 Рейтинг канала: 1(8) Репутация: 4 Сообщения: 67 Откуда: Новосибирск Зарегистрирован: 20.08.2004
 |
|
HPilot : |
То есть ракета только крутится и ускоряется маршевым двигателем. Для такого малого объекта как ракета можно принебречь временем развотота, т.к. это не повлияет на играбельность.
|
Ракета - это полноценный физический объект, так что у неё должны быть все параметры. В любом случае, разворачивается она шустро, так что время разворота на желаемый угол (который меняется не особо резко) и так достаточно близко к мнгновенному.
HPilot : |
Кстати ракеты в атмосфере сигарообразные для того, чтобы было наименьшее сопротивление воздуху и бОльшая курсовая устойчивость. А в космосе это не критично, поэтому можно строить хоть шар
|
Совершенно верно, но для системы наведения это никакого значения не имеет.
Minx : |
Чаще всего предсказать, будет разгоняться корабль или тормозить - возможности нет.
|
Я неудачно выразился - чаще всего движение будет не с постоянной скоростью, а с постоянным ускорением. При условии, что цель не выполняеет манёвры уклонения.
Minx : |
Попадание - это что? Попадание в цель с точностью до миллиметра? Или нужно пройти мимо цели на как можно более близком расстоянии, и повредить её взрывом/облаком осколков/.. ?
|
Физический контакт. Но принципиальной роли это не играет, т.к. изменение задачи на "подойти к цели на расстояние N" это по сути то же самое, что увеличить габариты цели на это же N.
DIMOSUS.X : |
Если используется ньютоновская физика, то какие у тебя размеры игроого пространства?
|
Из-за того, что используется 2D с видом сверху, то расстояния и скорости гораздо меньше реальных, чтобы действие не разлеталось на много экранов. Точно в метрах сказать на данном этапе нельзя - так как это во многом будет определяться тем, каким сейчас получится ведение боя - всё может поменяться с ног на голову. Точнее, чем "того же порядка, что в Star Control 2" сказать не представляется возможным. Но точно не будет миниатюрной планеты в центре
добавлено спустя 6 минут:
С биссектрисой получилось только хуже - промахивается почти так же но потом даже не пытается вернуться, т.к. при тупых углах получаются безсмысленные величины.
С proportional navigation получилось совсем смешно. Ракеты как будто пытаются напугать корабль, подлетая поближе и отскакивая в последний момент Но это явно присутствует ошибка в расчётах.
Последний раз редактировалось: Aerton (22:14 15-03-2011), всего редактировалось 1 раз |
|
|
Shirson
1605 EGP
           Рейтинг канала: 7(626) Репутация: 219 Сообщения: 16511 Откуда: 79°W 44°N Зарегистрирован: 29.01.2002
 |
|
Aerton : |
HPilot : |
Кстати ракеты в атмосфере сигарообразные для того, чтобы было наименьшее сопротивление воздуху и бОльшая курсовая устойчивость. А в космосе это не критично, поэтому можно строить хоть шар
|
Совершенно верно
|
Совершенно неверно.
Чем больше расстояние, между центром масс и опорной точкой (двигателем), тем устойчивее в полёте ракета. К вакууму это относится в первую очередь. А хуже шара для ракеты вообще что-то трудно придумать
(натурный эксперимент: Берёте длинную линейку, ставите её на кончик пальца и пытаетесь удержать в равновесии. Чем длинее линейка (со шваброй вообще красота), тем устойчиее "конструкция")
_________________ У меня бисера не доxеpа. |
|
|
|
|
|
Канал Игры Мечты: «Самонаводящаяся ракета в космосе» |
|