Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

(《Minecraft》机械动力:航空学)基于 PD 控制的直升机飞控系统

依赖

模组

直升机元件

新增:共轴反桨直升机coaxial/),性能更优秀!

把 3 个螺旋桨换成两个主螺旋桨,一个尾推螺旋桨即可。其余操作差不多,详见配置文件注释。

  • 3 个螺旋桨:一个主螺旋桨,一个控制前后移动的尾螺旋桨,一个控制转向的尾螺旋桨
  • 陀螺仪
  • 计算机(推荐使用高级计算机,以显示彩色输出)

以下元件应连接到计算机(贴着计算机放置,或通过有线调制解调器和网络线缆连接):

  • 高度传感器
  • 姿态传感器
  • 速度传感器,沿前后方向
  • 3 个螺旋桨的转速控制器
  • 无线红石打字机,至少激活 W、A、S、D、空格、左 Shift

安装和使用

1. 复制程序文件到计算机

复制本仓库的 flight_control/ 文件夹到计算机。运行 flight_control/main 即可启动飞控程序(不过先别急着启动)。

startup.lua 供参考。

Important

程序必须在前台运行才会接收到无线红石打字机的信号!

如果你不知道这一步怎么做,请先学习 CC: Tweaked 的计算机的基本使用。

2. 配置转速控制器的 ID

当开启或关闭连接转速控制器的有线调制解调器的时候,聊天栏会显示:

外部设备 “Create_RotationSpeedController_[一个数字], ...” 已连接到网络/已与网络断开连接。

这个数字即为该转速控制器的 ID。

将 3 个转速控制器的 ID 填写到配置文件 flight_control/config.lua 里的相应配置项(删去 nil)。

Note

当转速控制器或有线调制解调器被破坏、重新放置后,即使它们的位置与之前完全相同,转速控制器的 ID 也会不可逆地发生变化。

3. 配置方向

运行 flight_control/test_directions,然后你的 3 个螺旋桨都会开始低速旋转。这时候计算机会输出消息:

The rotors should be trying to push the helicopter to go up, move forward, and turn left.

调整你的(陀螺仪)螺旋桨轴承,使它们此时的推力沿正确的方向。

让你的直升机沿前后方向移动(加大相关尾桨的转速,或者用创造模式物理手杖拖动),然后观察计算机输出:

The program thinks you are moving forward/backward.

如果它与你的实际运动方向相反,请将配置文件里 reverse_longitudinal_axis 的值改为 true;如果没问题的话,保留 false 即可。

4. 调整 PD 控制的参数

我也不懂控制理论,以下是我的个人经验,仅供参考。你也可以向 AI 或专业人士寻求更好的帮助。

用无限红石打字机操作直升机悬停和移动。分别调节 3 个螺旋桨:

  1. 先让 k_p = k_d,从 1 开始调整。它们越小,螺旋桨反应越慢;越大,反应越快,但太快也会快过头,造成剧烈抽搐。把它们调整到你认为适中的程度。
  2. 观察直升机在稳态附近的振荡,如果振荡过大,就尝试调大 k_d。但是 k_d 过大,也会加剧振荡。把它调整到你认为适中的程度。

一般而言,螺旋桨越小,需要的 k_pk_d 越大。

此外,配置文件中还可以调节直升机移动时的各项目标速度。

每次调整参数后,别忘了重启计算机。

5. 起飞!

About

(《Minecraft》机械动力:航空学)基于 PD 控制的直升机飞控系统

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages