《坎巴拉太空计划》krpc模组|0.5.4|文档(中译版)——教程与示例:自动驾驶
本翻译基于 [kRPC 官方文档](https://krpc.github.io/krpc)遵循 LGPL v3 许可。 部分内容可能受 GPLv3 或 MIT 许可约束详见原始仓库。 Copyright 2015-2023 kRPC Org.本教程和示例脚本合集详细说明了如何使用 kRPC 的功能特性。自动驾驶kRPC 提供了一个自动驾驶仪可用于将航天器保持在选定的姿态。它会自动调整以适应不同尺寸和控制能力的航天器。本教程解释自动驾驶的工作原理、如何配置它以及背后的数学原理。概述自动驾驶的输入包括一个参考系定义零旋转的位置目标俯仰 (pitch) 和航向 (heading) 角度以及可选的目标滚转 (roll) 角度当没有指定滚转角时自动驾驶会尝试消除滚转轴上的任何旋转但不会试图保持特定的滚转角。下面的图表显示了自动驾驶的高级概览。首先当前旋转和目标旋转被用来计算旋转航天器使其面对目标所需的目标角速度。接下来该角速度在航天器的俯仰、偏航和滚转轴上的分量被传递给三个 PID 控制器。这些控制器的输出被用作航天器的控制输入。有几个影响自动驾驶运行的参数显示在图表的左侧。它们将在下一节中介绍。配置自动驾驶有几个参数会影响自动驾驶的行为。这些参数的默认值在大多数情况下应该就足够了但你可以根据需要调整它们。停止时间 (stopping time)是航天器完全停止所需的最长时间。这限制了航天器的最大角速度。它是一个包含三个停止时间的向量分别对应俯仰、滚转和偏航轴。每个轴的默认值为 0.5 秒。减速时间 (deceleration time)是自动驾驶在接近目标方向时减速航天器到停止所需的最小时间。这是一个最小值因为如果航天器没有足够的角加速度所需时间可能会更长。它是一个包含三个减速时间的向量以秒为单位分别对应俯仰、滚转和偏航轴。每个轴的默认值为 5 秒。减小该值会使自动驾驶更激进地减速更快地将航天器转向目标。但过小可能导致超调。为了避免超调停止时间应小于减速时间。这给了自动驾驶一些备用加速度以调整航天器旋转中的误差例如由于气动力变化引起的误差。衰减角度 (attenuation angle)设置了自动驾驶认为航天器接近目标方向的区域。在这个区域内目标速度会根据航天器离目标的接近程度进行衰减。它是一个角度值以度为单位分别对应俯仰、滚转和偏航轴。每个轴的默认值为 1 度。这种衰减可以防止当航天器指向正确方向时控制量的振荡。如果你发现航天器仍然振荡尝试增大这个值。到达峰值时间 (time to peak)以秒为单位PID 控制器调整航天器角速度到目标角速度所需的时间。减小该值会使控制器更激进地尝试匹配目标速度。它是一个包含三个时间的向量分别对应俯仰、滚转和偏航轴。每个轴的默认值为 3 秒。超调量 (overshoot)是 PID 控制器允许超过目标角速度的百分比。增大该值会使控制器更激进地尝试匹配目标速度但会导致更多超调。它是一个包含三个值的向量范围在 0 到 1 之间分别对应俯仰、滚转和偏航轴。每个轴的默认值为 0.01。计算目标角速度目标角速度是将航天器旋转到目标方向所需的角速度。通过对俯仰、偏航和滚转轴分别计算目标角速度并求和得到。如果没有设置滚转角则滚转轴上的目标角速度简单地设为 0。给定轴上的目标角速度 \(\omega\) 由角度误差 \(\theta\) 通过以下函数计算该函数的方程如下\[\begin{aligned}\omega -\frac{\theta}{\lvert\theta\rvert}\min \big(\omega_{max},\sqrt{2 \alpha \lvert\theta\rvert} \cdot f_a(\theta)\big) \\\text{其中} \\\alpha \frac{\omega_{max}}{t_{decel}} \\\omega_{max} \frac{\tau_{max}t_{stop}}{I} \\f_a(\theta) \frac{1}{1 e^{-6/\theta_a(\lvert\theta\rvert - \theta_a)}}\end{aligned}\]其推理和推导过程如下航天器需要旋转到。这意味着当为负时目标角速度需要为正当为正时目标角速度需要为负。这是通过乘以项实现的当时为 -1。我们希望航天器以最大角速度 \(\omega_{max}\) 旋转该速度由停止时间 \(t_{stop}\) 决定。利用匀加速运动方程可推导如下\[\begin{aligned}\omega \alpha t \\\Rightarrow \omega_{\text{max}} \alpha_{\text{max}} t_{\text{stop}} \\ \frac{\tau_{\text{max}} t_{\text{stop}}}{I}\end{aligned}\]其中 \(\tau_{max}\) 是航天器能产生的最大力矩\(I\) 是其转动惯量。我们希望航天器在面对目标时从速度 \(\omega_{max}\) 运动到静止所需的时间为 \(t_{decel}\)减速时间。并且希望它使用恒定加速度 \(\alpha\) 来完成。利用匀加速运动方程我们可以根据当前角度误差 \(\theta\) 推导出目标速度 \(\omega\)\[\begin{aligned}\omega \alpha t \\\Rightarrow \alpha \frac{\omega}{t} \frac{\omega_{\text{max}}}{t_{\text{decel}}} \\\theta \frac{1}{2} \alpha t^2\Rightarrow t \sqrt{\frac{2 \theta}{\alpha}} \\\Rightarrow \omega \alpha \sqrt{\frac{2 \theta}{\alpha}} \sqrt{2 \alpha \theta}\end{aligned}\]为了防止航天器指向目标方向时发生振荡目标角速度曲线在 \(\theta 0\) 处的梯度需要为 0并且随 \(\theta\) 的增大/减小而平滑地增大/减小。上面计算得到的目标角速度并不满足这一条件。为了解决这个问题我们乘以一个具有所需形状的衰减函数。下图显示了衰减函数的形状红线、先前计算的目标速度蓝线以及两者相乘的结果黑色虚线衰减函数的公式是一个逻辑函数其形式如下\[f_a(\theta) \frac{1}{1 e^{-6/\theta_a(\lvert\theta\rvert - \theta_a)}}\]注意从匀加速运动方程推导出的原始函数仅在接近衰减角度时才受衰减函数影响。这意味着自动驾驶将使用恒定的加速度来减速航天器直到它接近目标方向。调整控制器三个 PID 控制器分别对应俯仰、滚转和偏航控制轴用于控制航天器。每个控制器将目标角速度的相关分量作为输入。以下说明如何根据航天器可用的力矩和转动惯量自动调整这些控制器的增益。整个系统在单个控制轴上的原理图如下系统的输入是围绕控制轴的角速度记为 \(\omega\)。由此计算出角速度误差 \(\omega_\epsilon\) 并传递给控制器 \(C\)。这是一个需要调整的 PID 控制器。控制器的输出是控制输入 \(x\)传递给航天器。被控对象 \(H\) 描述了物理系统即控制输入如何影响航天器的角加速度。对其求导得到航天器新的角速度然后反馈回来计算新的误差。对于控制器 \(C\)我们使用比例-积分 (PI) 控制器。注意控制器没有微分项这样系统表现为二阶系统因此易于调整。控制器在 \(s\) 域的传递函数为\[C(s) K_P K_I s^{-1}\]从原理图来看被控对象 \(H\) 的传递函数为\[H(s) \frac{\omega_\epsilon(s)}{X(s)}\]\(x\) 是航天器的控制输入即施加到航天器的可用力矩 \(\tau_{max}\) 的百分比。称之为当前力矩记为 \(\tau\)。数学上可以表示为\[\tau x \tau_{max}\]结合角运动方程可得角加速度与控制输入的关系\[\begin{aligned}I \text{航天器的转动惯量} \\\tau I \omega_\epsilon \\\Rightarrow \omega_\epsilon \frac{x\tau_{max}}{I}\end{aligned}\]对其进行拉普拉斯变换得到\[\begin{aligned}\mathcal{L}(\omega_\epsilon(t)) s\omega_\epsilon(s) \\ \frac{sX(s)\tau_{max}}{I} \\\Rightarrow \frac{\omega_\epsilon(s)}{X(s)} \frac{\tau_{max}}{I}\end{aligned}\]现在我们可以将 \(H\) 的传递函数重写为\[\begin{aligned}G_{OL}(s) C(S) \cdot H(s) \cdot s^{-1} \\ (K_P K_I s^{-1}) \frac{\tau_{max}}{Is}\end{aligned}\]整个系统的开环传递函数为\[\begin{aligned}G_{OL}(s) C(S) \cdot H(s) \cdot s^{-1} \\ (K_P K_I s^{-1}) \frac{\tau_{max}}{Is}\end{aligned}\]闭环传递函数为\[\begin{aligned}G(s) \frac{G_{OL}(s)}{1 G_{OL}(s)} \\ \frac{a K_P s a K_I}{s^2 a K_P s a K_I}\text{ 其中 } a \frac{\tau_{max}}{I}\end{aligned}\]系统的特征方程因此为\[\Phi s^2 \frac{\tau_{max}}{I} K_P s \frac{\tau_{max}}{I} K_I\]标准二阶系统的特征方程为\[\begin{aligned}\Phi_{standard} s^2 2 \zeta \omega_0 s \omega_0^2\end{aligned}\]其中 \(\zeta\) 是阻尼比\(\omega_0\) 是系统的固有频率。在这些方程之间匹配系数并重新排列得到用 \(\zeta\) 和 \(\omega_0\) 表示的 PI 控制器增益\[\begin{aligned}K_P \frac{2 \zeta \omega_0 I}{\tau_{max}} \\K_I \frac{I\omega_0^2}{\tau_{max}}\end{aligned}\]现在我们需要对系统设定一些性能要求这将允许我们确定 \(\zeta\) 和 \(\omega_0\) 的值从而确定控制器的增益。二阶系统的超调百分比为\[O e^{-\frac{\pi\zeta}{\sqrt{1-\zeta^2}}}\]其输出达到第一个峰值所需的时间为\[T_P \frac{\pi}{\omega_0\sqrt{1-\zeta^2}}\]这些公式可以重新排列用超调量和到达峰值时间来表示 \(\zeta\) 和 \(\omega_0\)\[\begin{aligned}\zeta \sqrt{\frac{\ln^2(O)}{\pi^2\ln^2(O)}} \\\omega_0 \frac{\pi}{T_P\sqrt{1-\zeta^2}}\end{aligned}\]默认情况下kRPC 使用值 \(O 0.01\) 和 \(T_P 3\)。边界情况在发射台上时在这种情况下自动驾驶无法旋转航天器。这意味着控制器中的积分项会累积到很大的值。即使航天器指向正确的方向也是如此因为计算误差中的微小浮点数变化也会导致积分项增加。因此积分项被固定为零以解决这个问题。可用角加速度为零时这可能是由于航天器上的反作用轮耗尽电力导致航天器没有力矩而引起的。在这种情况下自动驾驶对航天器也几乎或完全没有控制能力。这意味着控制器中的积分项会随着时间的推移累积到很大的值。这是通过将积分项在可用角加速度降至一个较小阈值以下时固定为零来解决的。这种情况还会导致控制器增益自动调整出现问题随着可用角加速度趋近于零控制器增益趋向于无穷大。当它等于零时自动调整会导致除以零。因此当可用加速度低于阈值时自动调整也会被禁用。这会使控制器增益保持在其当前值直到可用加速度重新升高。

相关新闻

Java开发者必备:多JDK版本切换与管理实战

Java开发者必备:多JDK版本切换与管理实战

1. 为什么Java开发者需要掌握多JDK版本切换 刚接手一个遗留Java项目时,我发现编译报错提示需要JDK 8环境,而我的开发机默认是JDK 17。这种场景在Java开发中实在太常见了——不同项目可能要求不同版本的JDK,企业级应用可能还在用JDK 8&#x…

2026/7/21 5:46:12 阅读更多 →
从 Windows 11 到 Ubuntu 26.04:我的软件迁移实录(下)—— 微信、邮件、NAS、开发环境与 AI 工具迁移

从 Windows 11 到 Ubuntu 26.04:我的软件迁移实录(下)—— 微信、邮件、NAS、开发环境与 AI 工具迁移

下面继续记录我的实际迁移过程。11. PuTTY → TabbyWindowsPuTTYUbuntuTabbyWindows 下,我主要使用 PuTTY 登录 Linux 服务器。PuTTY 很稳定,但界面和使用方式相对传统。迁移到 Ubuntu 后,我选择了 Tabby。Tabby 支持:SSH&#xf…

2026/7/21 5:46:12 阅读更多 →
兼顾瘙痒与肝功能司拉德帕seladelparLivdelzi提升患者长期生活质量

兼顾瘙痒与肝功能司拉德帕seladelparLivdelzi提升患者长期生活质量

顽固性瘙痒是原发性胆汁性胆管炎患者最难以忍受的伴随症状,超过60%的中晚期PBC患者会出现中重度瘙痒,严重影响睡眠、日常工作与情绪状态,既往部分治疗药物虽然能改善肝功能生化指标,却会不同程度加重瘙痒症状,陷入“肝…

2026/7/21 5:46:12 阅读更多 →

最新新闻

5分钟掌握Jessibuca Pro:免费打造专业级Web直播播放器的终极指南

5分钟掌握Jessibuca Pro:免费打造专业级Web直播播放器的终极指南

5分钟掌握Jessibuca Pro:免费打造专业级Web直播播放器的终极指南 【免费下载链接】jessibuca Jessibuca是一款开源的纯H5直播流播放器 项目地址: https://gitcode.com/GitHub_Trending/je/jessibuca Jessibuca Pro是一款功能强大的开源Web直播播放器&#xf…

2026/7/21 15:25:27 阅读更多 →
AnimationController动画基础_Flutter在鸿蒙平台实现流畅UI动画

AnimationController动画基础_Flutter在鸿蒙平台实现流畅UI动画

作者:付文龙(红目香薰) 仓库地址:https://gitcode.com/feng8403000/FlutterfromBeginnertoAdvancedForHarmonyOS.git 联系邮箱:372699828qq.com 概述 Flutter动画系统是一个强大的动画框架,它基于Animati…

2026/7/21 15:25:27 阅读更多 →
2026 ITSM产品选型全景指南:四大核心产品横向对比,国产化低代码平台落地实测

2026 ITSM产品选型全景指南:四大核心产品横向对比,国产化低代码平台落地实测

摘要 2026年国内ITSM市场规模预计突破103.5亿元,同比增速18.2%,国产化替代、原生低代码底座、全渠道运维协同成为行业三大刚性选型标准。当前超78%大中型运维团队正遭遇传统工单系统流程僵化、多端体验割裂、信创兼容短板、自动化集成成本高四大落地瓶颈…

2026/7/21 15:25:27 阅读更多 →
2026 ITSM产品选型全景:低代码与AI重构企业运维服务新范式

2026 ITSM产品选型全景:低代码与AI重构企业运维服务新范式

2026年,企业IT架构进入“混合异构智能运维信创深化”三重叠加阶段。据Mordor Intelligence数据,中国ITSM市场规模2025年为9.9亿美元,2026年预计达11.7亿美元,2026至2031年复合增长率19.17%;另据博研咨询统计&#xff0…

2026/7/21 15:25:27 阅读更多 →
2026年企业IT运维监控厂商选型:四大主流可观测方案深度对比

2026年企业IT运维监控厂商选型:四大主流可观测方案深度对比

2026年,企业IT架构全面进入混合云、云原生、微服务与信创改造深度融合阶段,运维复杂度持续攀升。与此同时,中国IT运维管理行业市场规模在2025年已达386.7亿元,同比增长13.0%,五年复合增长率为12.4%。采用AIOps平台的企…

2026/7/21 15:25:27 阅读更多 →
Unity3D高级工具实战:Timeline与Cinemachine从零进阶

Unity3D高级工具实战:Timeline与Cinemachine从零进阶

1. 项目概述:从“能跑”到“好看”的叙事跃迁在Unity3D项目开发的中后期,尤其是当你完成了核心玩法、解决了所有功能Bug之后,往往会面临一个共同的瓶颈:如何让游戏或应用“看起来”更专业、更吸引人?很多开发者&#x…

2026/7/21 15:24:27 阅读更多 →

日新闻

Octane Render与C4D汉化版安装与优化指南

Octane Render与C4D汉化版安装与优化指南

1. Octane Render与C4D的黄金组合:为什么选择这个方案?在三维创作领域,渲染器的选择往往决定了作品的最终呈现质量和工作效率。作为Cinema 4D(C4D)用户,Octane Render的GPU加速特性与实时预览功能&#xff…

2026/7/21 0:00:19 阅读更多 →
GPMC接口设计:异步/同步模式与多路复用配置实战

GPMC接口设计:异步/同步模式与多路复用配置实战

1. GPMC接口设计:从硬件连接到软件配置的全局视角在嵌入式系统开发中,尤其是基于TI Sitara系列如AM263x这类高性能微控制器的项目里,外部存储器的扩展几乎是绕不开的一环。无论是存放大量非易失性代码的NOR Flash,还是作为高速数据…

2026/7/21 0:00:19 阅读更多 →
UE5 GAS框架下RPG被动技能系统:从核心原理到实战实现

UE5 GAS框架下RPG被动技能系统:从核心原理到实战实现

1. 项目概述:UE5 GAS RPG被动技能的核心价值在UE5里用GAS(Gameplay Ability System)做RPG游戏,主动技能像是你手里的武器,按一下打一下,逻辑直接,反馈也快。但被动技能,它更像是你身…

2026/7/21 0:00:19 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/21 8:48:31 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 5:34:47 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/21 8:25:39 阅读更多 →

月新闻