- 机械动力:航空学(当然要有这个)
- CC: Tweaked(计算机)
- Create: Avionics(CC: Tweaked 的计算机与航空学元件的通信)
新增:共轴反桨直升机(
coaxial/),性能更优秀!把 3 个螺旋桨换成两个主螺旋桨,一个尾推螺旋桨即可。其余操作差不多,详见配置文件注释。
- 3 个螺旋桨:一个主螺旋桨,一个控制前后移动的尾螺旋桨,一个控制转向的尾螺旋桨
- 陀螺仪
- 计算机(推荐使用高级计算机,以显示彩色输出)
以下元件应连接到计算机(贴着计算机放置,或通过有线调制解调器和网络线缆连接):
- 高度传感器
- 姿态传感器
- 速度传感器,沿前后方向
- 3 个螺旋桨的转速控制器
- 无线红石打字机,至少激活 W、A、S、D、空格、左 Shift
复制本仓库的 flight_control/ 文件夹到计算机。运行 flight_control/main 即可启动飞控程序(不过先别急着启动)。
startup.lua 供参考。
Important
程序必须在前台运行才会接收到无线红石打字机的信号!
如果你不知道这一步怎么做,请先学习 CC: Tweaked 的计算机的基本使用。
当开启或关闭连接转速控制器的有线调制解调器的时候,聊天栏会显示:
外部设备 “Create_RotationSpeedController_[一个数字], ...” 已连接到网络/已与网络断开连接。
这个数字即为该转速控制器的 ID。
将 3 个转速控制器的 ID 填写到配置文件 flight_control/config.lua 里的相应配置项(删去 nil)。
Note
当转速控制器或有线调制解调器被破坏、重新放置后,即使它们的位置与之前完全相同,转速控制器的 ID 也会不可逆地发生变化。
运行 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 即可。
我也不懂控制理论,以下是我的个人经验,仅供参考。你也可以向 AI 或专业人士寻求更好的帮助。
用无限红石打字机操作直升机悬停和移动。分别调节 3 个螺旋桨:
- 先让
k_p=k_d,从 1 开始调整。它们越小,螺旋桨反应越慢;越大,反应越快,但太快也会快过头,造成剧烈抽搐。把它们调整到你认为适中的程度。 - 观察直升机在稳态附近的振荡,如果振荡过大,就尝试调大
k_d。但是k_d过大,也会加剧振荡。把它调整到你认为适中的程度。
一般而言,螺旋桨越小,需要的 k_p 和 k_d 越大。
此外,配置文件中还可以调节直升机移动时的各项目标速度。
每次调整参数后,别忘了重启计算机。