学生休息室

分享学生如何在日常项目中使用MATLAB和Simulink的技术和现实例子#学生成功#万博1manbetx

与2020年Simulink学生挑战万博1manbetx赛冠军的问答

今天的博客是托马斯·海登的问答。托马斯是东北大学机械工程专业的学生,也是2020年Simulink学生挑战赛的冠军。万博1manbetx
- - - - - -

简介

今年年初,我们完成了2020年Simulink学生挑战赛。万博1manbetx有很多很棒的作品,但在今天的博客中,我想了解第一名的获奖视频。今年的第一名获奖视频在游戏《Kerbal Space program》中展示了如何使用Simulink模万博1manbetx拟火箭发射的航空航天例子。这个项目是使用Simulink的一种创新方式,正因为如此,我想更多地了解这个项目和视万博1manbetx频背后的学生,托马斯·海登,通过问答。

托马斯问答

你好,托马斯,你能介绍一下你自己和你在哪里上学吗?

我是东北大学四年级的学生,学习计算机科学。我一直很喜欢在机器人和编程的交集,已经做了两个涉及机器人和编程的合作项目。

你创建一个控制KSP火箭发射的Simulink模型的动机是什么?万博1manbetx

我一直对机器人感兴趣,对火箭很感兴趣,我玩了一段时间的《Kerbal Space Program》(KSP)。有一天,我想知道是否有一种方法可以在游戏中自动化发射,因为所有现实世界的发射都是完全自动化的。我认为这将是我喜欢的那种挑战。我开始讲Kerbal操作系统(kOS),这是一种自定义的基于文本的语言,用于控制KSP中的火箭。我在使用ko方面取得了很大的成功,但它总是感觉有点局限,尤其是与Simulink这样的东西相比,Simulink有各种与航空航天相关的功能。万博1manbetx因此,我决定尝试让Simulink与KSP合作。万博1manbetx

让Simulink与KSP对话有多棘手?万博1manbetx在将MATLAB函数块连接到KSP的java代码时,您遇到过什么问题吗?

我花了一段时间让Simulink和KSP之间的通信正常工作,但大部分时间都花在了寻找正确的工具上。万博1manbetx起初,我尝试通过telnet连接与应用程序通信,但这无法处理足够高的轮询速率。一旦我发现kRPC我用一个独立的Java程序对它进行了测试,以确保在我研究Simulink如何与它对话之前,我知道如何使用它。万博1manbetx我以前从未在MATLAB中使用过Java程序,所以我需要学习它们如何交互,以及Simulink中的MATLAB函数块如何与Java代码交互。万博1manbetx这需要一些工作(可能是因为我不熟悉它),但我得到了正确的设置,其中预先运行的脚本将配置连接,然后Simulink块可以通过该连接进行对话。万博1manbetx

你是如何为飞行的不同部分创建和调整控制器的?

飞行器的方向是由PID循环直接控制的,这些PID循环在几次试飞中进行了很大程度的调整,以观察它的反应。飞行器的制导显然更加困难,因为火箭的上升轮廓取决于大量的因素,包括第一级和第二级的推力、阻力、有效载荷质量、目标轨道等等。我意识到我无法计算出理想的轨迹(事实上我甚至不确定理想的轨迹是在实践中计算出来的,还是为了在飞行中计算出来而进行了简化),所以我做了一个简化的设计。第一级飞行遵循我绘制的曲线,目标是在一定高度水平飞行。第二阶段观察它所在的轨道,并确定它是否应该燃烧以及以什么姿态(方向)燃烧。

在你的视频中,你提到在Simulink中记录飞行数据来调整飞行参数。万博1manbetx记录了哪些数据,如何使用这些数据来改进模型中的控制器?

添加数据记录是为了调试有一些边缘情况导致问题的姿态控制。数据记录的另一个好处是,我可以更好地调整PID循环,特别是长轴旋转,这在游戏中很难看到,因为火箭几乎是旋转对称的。除了这些实际的好处之外,我还很开心地制作了其他有趣的飞行轮廓图和我在kRPC API中找到的其他数据。

Simulink万博1manbetx是如何使这个项目成为可能的?你使用了哪些功能让这个项目顺利进行?

我决定使用Simulink的最大原因是它易于查看和调试设计。万博1manbetx对于这样的应用程序,我发现能够直观地跟踪路径和计算非常有价值。我想把我现在拥有的状态代码换成一些Stateflow块,因为它们是为我试图用Simulink开关和其他组件做的事情而设计的。万博1manbetx当我把它切换掉时,代码应该更容易阅读和查看。

如果有人想重新创建这个项目,你会建议他们从哪里开始?

此项目的最新版本的代码可在此github库可以作为一个很好的起点。有些方面很难理解,或者需要一段时间才能理解,但类似的项目可以慢慢来。我没有任何编写火箭控制代码的正式经验,但这个项目是通过逻辑地思考问题并一步一步地完成的。记住,模拟的好处是你可以一遍又一遍地运行它,而不会真正摧毁火箭!

你对这个项目的下一步计划是什么?我们可以在哪里看到未来的更新?

关于这个项目最好和最坏的事情是,我想做的事情有无穷无尽的供应。首先是为目标轨道增加更多选项,并增加一些更复杂的机动。在那之后,我想确保代码是体面的健壮,然后添加大量的现实主义mod,这将使一切都达到实际的地球规模,使空气动力学更真实,以及其他改进,如发动机点火条件。有一个完整的想法列表,事实上,太多了,我没有机会得到他们所有的!我想张贴更新,因为他们似乎对我的重要YouTube频道

你毕业后想做什么?

毕业后,我想做一些机器人编程,如果涉及到火箭编程,那就更好了!

关于这个项目你还有什么想说的吗?

总的来说,这个项目真的很有趣,我建议其他人也尝试一下。因为我写的代码,我发现看到一些东西顺利运行是非常值得的,我知道很多人都有同样的想法。

- - - - - -

托马斯,非常感谢你花时间回答这些问题。很高兴了解更多关于您如何制作这个项目,并期待看到未来的更新!

要查看Thomas的Simulink学生挑战赛获万博1manbetx奖视频和其他内容,请查看2020挑战页面.感谢阅读,希望你喜欢。

|

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。