找回密码
 注册
X系列官方授权正版
搜索
楼主: Cesrate

[分享] 你们绝对会爱死0.21的SAS

[复制链接]
发表于 2013-6-27 22:05:38 | 显示全部楼层
landcruiser1988 发表于 2013-6-27 01:51
NB!这是用了何种控制算法?可以发SCI论文了吧~!


.20的MechJeb也有个RCS控制百分比调整,那个已经挺好用了,如果联动实时偏差的话,作为一个游戏,这个技术还是不难的
回复

使用道具 举报

发表于 2013-6-27 23:28:44 | 显示全部楼层
FRIGHTER 发表于 2013-6-27 11:12
其实所谓的震动就是因为没有一个误差容忍值导致的。。。我上个学期有一次的作业就是用JAVA写一个火箭着陆 ...


我曾经写过一个程序。
你们可以看看,同样的问题也有。
不过我最终的处理方法很简单……

演示程序:http://pan.baidu.com/share/link? ... 1&uk=2600485221
提取码:mxdx

提示下,我这个还没解决晃动的问题(因为我太懒了,反正对演示没太大影响),而且很多地方都还没完善。
这个程序原本是用来演示导弹追踪目标用的算法的(当然这个算不上什么算法,另一个版本才是,不过我想不需要所以就不上传了)。但是现在讨论的SAS晃动什么的问题和我这个演示程序里那个导弹的运动方式十分类似呢。

PS: 程序是用Turing写的,版本4.1.
PS2: 别问我为什么不用Java或者C++,要论便捷什么的,Java、C++、Python什么的都弱爆了!
回复

使用道具 举报

发表于 2013-6-28 00:15:08 | 显示全部楼层
本帖最后由 HoneyFox 于 2013-6-28 00:16 编辑
8749236 发表于 2013-6-27 23:28
我曾经写过一个程序。
你们可以看看,同样的问题也有。
不过我最终的处理方法很简单……


你这个程序里的“比例引导律”的实现很让人费解。。。为啥不直接用LOSRate * kNav系数来作为角速度输入?而要用当前导弹所能达到的最大角速度进行来回抖动?
一般可以根据到目标的距离分若干段,分别设置kNav来达到初始误差角快速修正、中段轻视目标反复剧烈机动、末段时刻试图保持前置拦截的要求。。。
我以前同样写过一个Missile Simulator。。。模拟了若干种导弹的基本特性,包括发动机推力(双推力发动机或单推力发动机)、空气阻力、气动过载限制、高抛弹道、低空掠飞弹道等等要素。。。得去翻翻旧文件堆里我塞在哪里了,等找到了就发上来。
回复

使用道具 举报

发表于 2013-6-28 06:17:52 | 显示全部楼层
本帖最后由 8749236 于 2013-6-28 07:00 编辑
Cesrate 发表于 2013-6-27 08:23
就是换了一套算法让它不至于过度矫正……然后就是允许玩家控制单个或多个轴向而锁定其他轴向的控制法而已 ...


依然还会过度矫正。只不过不像原来那样一直抖了。

--- Merge ---

HoneyFox 发表于 2013-6-28 00:15
你这个程序里的“比例引导律”的实现很让人费解。。。为啥不直接用LOSRate * kNav系数来作为角速度输入? ...


这些都是很老的东西了,最近基本就没碰过。
尤其是算法和程序什么的,大部分都是一年前甚至更早以前写的。
那时还什么都不懂呢xD。连英语都看不懂几个。(我词汇量什么的是最近一两年才涨起来的)

*** Add ***

因为,如果只用LOSRATE+kNav的话,导弹就是没有机动力上限了。不管什么情况都永远指向目标了...
所以需要一点限制。

还有,我想起来了,现在这种奇怪的代码,是因为我记得导弹的机动力和移动速度相关,速度越快机动力也就越强,反之也就越弱。所以我就写了这么个奇怪的代码。而且他方面例如导弹的加速,发动机工作时间,阻力,抛物线什么的(3D的话得等我学会做自己的物理引擎后……),都还没写入,这个小东西我总共也就做了不到10个小时吧,简陋的很,甚至运动系统都很不完善。原本当初有计划想完善下的。结果后来要做某游戏的Mod所以就搁置了。Mod做完后又要上12年级考大学,现在又要上大学,还要自己学编程。估计几年内都没时间深入了吧233.

也罢,基本概念了解了就行了,复杂的暂时不强求。

不过呢,既然搬出来了也就玩玩,刚刚想到了个很有趣的算法xD


*** Add ***

kNav是什么?
还有,你说的用LOSRate做角速度输入我试过,完全不行呢,那个红球就在原地打转xD
比ASAS还ASAS~Cheers for Honey!


*** Add ***
类ASAS问题解决了,额外增加了1组if项,1个局部变量和1次运算 =\
果然还是该用真正的算法更有效一点……不管是什么一行就够了……



--- Merge ---

HoneyFox 发表于 2013-6-27 09:44
如果这套算法把部件之间非刚性连接带来的弯度误差考虑进入的话,这个应该值一篇论文。。。
之前有一部分扭 ...


赞同。不过估计没有。
而且,即使不考虑的话,也可以从其他方面避开晃动问题。
不过,与其用算法去解决晃动问题,还不如避开。
这样第一避免了使用复杂算法,第二又节省资源。
越复杂的运算是越卡的。尤其是那种对帧率要求很高的游戏。
回复

使用道具 举报

发表于 2013-6-28 08:50:11 | 显示全部楼层
Cesrate 发表于 2013-6-27 18:39
不了解Unity的编码,不过猜这意思……不会是干掉物理运算吧= =

正解,锁定xyz轴所有方向的运动 ,所以说我是来歪楼的
回复

使用道具 举报

发表于 2013-6-28 08:59:12 | 显示全部楼层
394966931 发表于 2013-6-27 18:35
你是怎么实现的..难道你有kSP的源码...?还是自己写了个test..?

我没有源码当然不能实现了,也不知道插件有多少权限,我只是说Unity3D的语法中有这么一条可以KO物理引擎,所以说我是来歪楼的
回复

使用道具 举报

发表于 2013-6-28 09:15:22 | 显示全部楼层
附件上传。。。
两年前搞的,最近又略微调整过一下。。。
操作方法么。。。一个是简单的鼠标单击后看戏,可以滚轮缩放。另一个则是按对应按钮,然后什么都不输直接回车来随机生成或输入0/1/2/...来指定产生对象的类型,Aircraft只有0/1,SAM应该有0~3,Target没有类型区分。。。然后也是看戏。。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

发表于 2013-6-28 10:35:17 | 显示全部楼层
本帖最后由 HoneyFox 于 2013-6-28 10:41 编辑
8749236 发表于 2013-6-28 06:17
依然还会过度矫正。只不过不像原来那样一直抖了。

--- Merge ---


LOSRate * kNav只是需用过载,作为控制模块的输入之一,控制模块本身还要根据实际的过载限制(结构强度之类的限制,比如最大40G过载)以及可用过载(简单的说就是速度越快,转弯能力越强)来最终决定实际上导弹转向到底多快。
在需用过载很小的时候,即便你导弹速度快,可以转个30G的时候,导弹也完全没必要去转30G,它只要按需用过载转向就够了。

kNav是比例引导律里的比例系数,一般取值范围在1.0~4.0,再大的话就会太容易受LOS方向噪声的干扰。比例引导律的特点就是它会逐渐转向前置拦截点,而不是像纯追逐引导律那样始终对着目标。(当然纯追逐可以看作是kNav = 1.0的特例)具体你可以去wiki查阅Proportional Navigation条目。

你说的用LOSRate会导致导弹不停的原地旋转,这个原因多半是因为导弹的速度没有目标的高导致的。在这种情况下,比例引导律可能会产生反向转向的问题,所以我一般会在这种情况下转为纯追逐模式。

EDIT:
比例引导律可以看作是一个关于LOSRate的纯P控制,结合导弹本身旋转惯量带来的惯性问题,实际上也会有过调振荡的问题。所以可以考虑增加额外的D控制来优化,减少不必要的反复修正转向(也就节省了导弹自身的能量)。。。不过我只是在脑内自己推算而已,实际效果如何还要实际测试才知道。
回复

使用道具 举报

发表于 2013-6-28 10:44:00 | 显示全部楼层
本帖最后由 8749236 于 2013-6-28 10:48 编辑
HoneyFox 发表于 2013-6-28 10:35
LOSRate * kNav只是需用过载,作为控制模块的输入之一,控制模块本身还要根据实际的过载限制(结构强度之 ...


乃太专业了,我还没到那个地步>_>
当初看到APN时连英文都读不懂呢...
那个程序完全是靠自己的理解做的……

*** Add ***
导弹速度是目标的2倍……不算低吧应该>_>
目标的速度不等于0.

*** Add ***
我已经解决了。
又加了一组If项判断最终指向是哪里,计算角速度是否会越过最终指向,这样来控制角速度…… (实际上可以根据与最终指向差距来控制delta Angle的,这样感觉更真实也更节省能量一点,毕竟,如果是现实中的话AoA会小一点)
比以前好一点。另,我睡了>_<
时差什么的很郁闷的……
回复

使用道具 举报

发表于 2013-6-28 10:45:22 | 显示全部楼层
8749236 发表于 2013-6-28 10:44
乃太专业了,我还没到那个地步>_>
当初看到APN时连英文都读不懂呢...
那个程序完全是靠自己的理解做的… ...

2倍的话应该够了。。。你确定你没在什么地方把符号写反了导致导弹无论哪种情况下都朝一个方向转?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|DeepTimes.NET 太空游戏站