## **1. 为什么需要运动控制?**
要控制飞船飞行,实际上是要控制飞船的位移。
但在SE中,我们只能控制方块的出力。<br>
就拿推进器来说,编程块只能控制推进器的推力。
推力/飞船质量 = 飞船产生的加速度
加速度对时间积分 = 速度
速度对时间积分 = 飞船的位移<br>
所以在知道一个所需位移的情况下,去求解推进器所需的出力,是比较麻烦的。<br>
下面举个例子
>[success] 例:在一维情况下,要让飞船从0位置飞往100位置并停下,只能控制推进器的当前推力(假设飞船有前后两个推进器,用一个可以为负的推力值表示合推力,范围是[-5,5])。求解在时间最短的情况下,飞船推力随时间变化的函数关系?
可以由公式:
> `$ S(t) = \int v_{(t)} dt $`
`$ v(t) = \int a_{(t)} dt $`
`$ a = f/m $`
得出位移、时间和推力的关系。
在S=100,推力范围在[-5,5]的条件下,时间t存在一个最小值,而此时推力和时间的函数关系就是我们要求解的结果。
**当然,这只是理想情况**<br>
实际情况是:
* 飞船挂载了重物,无法获得精确的质量m
* 飞行过程中电力不足,部分推进器损坏等原因导致推力f的范围临时发生改变
* 在某些外力影响下推力f并不准确
所以我们需要一个简单而有效的方式来计算推进器到底需要如何设置推力。
- 序言
- 写在前面的话
- 太空工程师
- MEA小组
- 一、入门
- 1.1 基础概念
- 1.2 编程工具
- 1.3 变量
- 1.4 函数 Function
- 1.5 基本语法
- 1.5.1 运算符
- 1.5.2 if
- 1.5.3 for
- 1.5.4 其他语法
- 1.3 类 Class
- 二、编程块
- 2.1 方块的概念
- 2.2 List<T>结构
- 2.3 获取方块
- 2.4 方块的使用
- 三、Ship 类
- 3.1 简介
- Ship v0.5
- 代码
- 手册(待更新)
- 例子(待更新)
- Ship v1.0
- 代码
- 例子
- 文档
- 实例化
- 内置变量
- 内置方法
- Target类
- 四、运动控制算法在SE中的应用
- 4.1 运动控制介绍
- 4.2 过程控制
- 4.3 震荡和动态误差
- 4.4 误差累加方案
- 4.5 PID算法
- 4.6 对PID算法的一点点简化
- 4.7 一阶惯性系统的PID算法优化的研究
- 五、MEA方块类
- 5.0 核心代码目录
- v1.0核心代码
- v1.1 核心代码
- v2.0 核心代码
- 5.1 类的概念
- 5.2 MEA的方块类(Block)
- 5.3 方块类文档
- 5.4 方块类2.0 全教程
- 5.4.1 安装和使用
- 5.4.2 方块类(Block)
- 5.4.3 显示屏类(DisplayScreen)
- 5.4.4 LCD类(LCD)
- 5.4.5 主控座椅类(Cockpit)
- 六、疯猴的编程笔记
- 第一个程序
- 获取和控制其他块
- 物流与生产
- 界面与通信
- 运动与姿态
- 侦测与导航
- 七、SteamZhou的笔记
- 有趣而花里胡哨的IDEA
- 八、质子对撞炮的笔记
- 属性 Property
- 接口 interface