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

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

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

留一个逐渐减小的误差容忍阈值,然后以一段时间的平均值作为实际指向的取值。。。。。

比方说,刚开启SAS的那一秒,误差容忍是+-1。同时计算这一秒内平均的指向作为下一阶段调整的依据
0.5秒后变成+-0.5,计算指向。。。
再过0.5秒变成+-0.25。。。。
然后+-0.125。。。。。
几秒后就稳定下来了。。。

如果可以的话,可以直接取两个极值作为指向的参照,也就是振幅的最高点和最低点。。。。
回复

使用道具 举报

发表于 2013-6-27 10:26:30 | 显示全部楼层
FRIGHTER 发表于 2013-6-27 09:58
留一个逐渐减小的误差容忍阈值,然后以一段时间的平均值作为实际指向的取值。。。。。

比方说,刚开启SA ...

没看懂,你用伪代码方式描述一下吧。。。
回复

使用道具 举报

 楼主| 发表于 2013-6-27 10:40:57 | 显示全部楼层
8749236 发表于 2013-6-27 08:57
链接:http://www.youtube.com/watch?v=tU_y0Z6md3k
下次,Cesrate,附上链接好么……

对于国内的话意义不大……而且一搜不就有了么……
回复

使用道具 举报

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

应该不会太复杂。
回复

使用道具 举报

发表于 2013-6-27 10:48:52 | 显示全部楼层
Cesrate 发表于 2013-6-27 10:40
对于国内的话意义不大……而且一搜不就有了么……

开Google...等1分钟……
输入字符...等1分钟……
搜索完毕...等1分钟……
打开目标网页...等1分钟……以上……
回复

使用道具 举报

 楼主| 发表于 2013-6-27 10:49:20 | 显示全部楼层
HoneyFox 发表于 2013-6-27 10:26
没看懂,你用伪代码方式描述一下吧。。。


呃有点类似于Orbiter的飞控,Kill Rotation功能?
回复

使用道具 举报

 楼主| 发表于 2013-6-27 10:50:35 | 显示全部楼层
8749236 发表于 2013-6-27 10:48
开Google...等1分钟……
输入字符...等1分钟……
搜索完毕...等1分钟……

不至于这么长时间吧……直接上YT搜不得了……
回复

使用道具 举报

发表于 2013-6-27 11:12:13 | 显示全部楼层
HoneyFox 发表于 2013-6-27 10:26
没看懂,你用伪代码方式描述一下吧。。。

其实所谓的震动就是因为没有一个误差容忍值导致的。。。我上个学期有一次的作业就是用JAVA写一个火箭着陆的游戏。。。我在里面就写了一个类似SAS的代码。。。当然简陋的多。。。只需要考虑左右方向就行了,简单的说就是本身速度方向往左就往右加速,反之亦然。但是我当时就忘记了留下误差容忍量,结果当速度恰好跨越了两侧(比方说速度是0.1但SAS一次要走0.2,于是不管怎么调整要么是+0.1要么是-0.1)的时候就会震动。

float n = SAS// n 就是实际监测到的误差,SAS当然就是指传感器信息
float k = 1.0 // 误差容忍的阈值
float gx,gy,gz,g //重心的三维位置及大小
float tx,ty,tz ,th//推力的三维位置及大小
float lx,ly,lz ,l//升力的三维位置及大小

timer t = new timer 1000// 一个1秒的计时器
TimeEventListener (t)  //每秒(我记得要用Listener,忘了具体代码了)
n=(n+SAS)/2
if(n>k)
{
  Thruster  //使用RCS或控制翼调整姿态
}
else if(k>0.001){
  k=k/2 //当没有达到预期的精度时,减小阈值,提高精度
}
else{
     - -我不会算,就是根据重力、推力和升力三者的大小和位置关系,计算出在哪个翼面位子上能保持稳定。毕竟KSP里没有风向的问题而且很多地方都是理想物理模型,这个算起来应该不难。 这个不要也没太大关系- -
}


Thruster部分
float Vx Vy Vr //纵轴、横轴和滚动的监测数据。最终目的当然是让它小于预定的误差容忍值
float p = 1.0//使用多少的力量来进行微调

p = main.k//把p和误差容忍值K挂钩,需要调节的精度越高,每次调节用的力量越小。避免出现我说的那种调节量超过误差的情况- -
回复

使用道具 举报

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

这是一方面
另一方面是SAS的过度矫正(一直进行转向知道指向锁定的位置为止)之后又会由于惯性...之前这个算法真的是导致我郁闷死...就算是在完全刚性连接的飞船上也有这个问题
回复

使用道具 举报

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

兄台是什么专业.?
回复

使用道具 举报

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

本版积分规则

关闭

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

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