我对Quadcopters /多旋翼飞机感兴趣,并希望最终为APM和/或Pixhawk编写自己的飞行控制器。我在编程方面有一点经验(即我知道if / else / else if条件),并且用PHP做过一点编程,尽管它是过程代码。

我目前有一个我使用APM 2.6飞行控制器自行构建/组装了在f450框架上运行的Quadcopter,因此我对Quad的工作原理有一个合理的了解,我想更进一步,并对我自己进行调整代码库,最终目的是为自己的飞行控制器编写代码。

我已经看过代码库,但是仍然无法掌握代码的实际作用。 ...然而。我该如何学习如何编写飞行控制器代码?

我想我必须先学习C ++和OOP,但是在我开始之前必须对C ++有多熟悉/熟练。可以合理地尝试编辑代码库吗?此外,除了C ++和OOP之外,我还需要学习什么?我正在为我设置6个月的期限/期限,这有可能吗?

评论

在我看来,开始使用OpenGL(坚持使用C / C ++)进行仿真。熟悉线性和非线性四旋翼模型。该系统是如此复​​杂。关于这个问题的硕士和博士学位论文已经发表。对于仿真,由于您需要具备良好的编程技能,因此问题变得越来越难。底线是您可能无法获得此问题的答案。

您只需要学习用C语言编写AVR微控制器的程序,就可以在youtube上找到教程,或者可以找到有关avr编程的书籍,当然youtube是一个简单的选择。

#1 楼

通常,要精通C ++或OOP,要么必须是获得必要知识才能浏览您提到的飞行控制器的代码库的结果,要么最终目的是要使用它在实现自己的飞行控制器时。

第一件事是使自己熟悉您想要调整的实现在飞行控制器中使用的语言的语法和语义。棘手的部分实际上是确定代码在做什么。如果代码库有充分的文档记录,并且代码以简洁的方式开发,则将有帮助。例如,适当地命名函数和变量,以便清楚地理解其用途。否则,请准备好遵循代码的逻辑。

一旦遇到问题,尝试破译代码的有效方法之一就是从头开始。查找首次打开飞行控制器或命令其开始执行所需执行的程序时程序的开始位置。还要进行什么样的初始化。另一件事是,如果飞行控制器要与其他人进行通信,可能会发挥什么样的通信协议。然后从那里开始工作。

暂时忽略细节,飞行控制器的唯一目的实际上是监视和控制整个系统,并可能将任何信息中继给其他人,也许是某物的地面站。 。这意味着具有硬件/传感器/等种类的知识。您需要并且需要亲自在场以获取所需的数据并理解它们。根据数据,这将确定四轴飞行器的行为/操纵方式。

至于要实现自己的飞行控制器,则取决于您要寻找的东西。您是要采用现有的飞行控制器并完全替换安装的程序,还是要设计和构建自己的飞行控制器平台,然后创建自己的飞行控制器代码。


对于第一种情况,请查看感兴趣的飞行控制器的相关文档/数据表。特别要看是否有可能对飞行控制器代码进行自己的调整。
对于第二种情况,您可能希望研究嵌入式系统的开发。


#2 楼

控制飞行机器人(或其他任何东西)是一个非常复杂的主题(嗯,人们正在对此进行博士学位。)。我可以推荐此主题的免费在线课程(我自己参加了)。它会带给您一点点味道。

评论


$ \ begingroup $
链接已断开。
$ \ endgroup $
– Croco
15年5月27日在16:26

$ \ begingroup $
@CroCo好,这是外部链接的本质。.更新为课程的新版本。
$ \ endgroup $
– Eugene Sh。
15年5月27日在16:28

$ \ begingroup $
@CroCo可能是这样,但是学习经验有所不同。该课程在一个不错的模拟平台和论坛上进行编程练习。
$ \ endgroup $
– Eugene Sh。
15年5月27日在16:32



$ \ begingroup $
@CroCo是python
$ \ endgroup $
– Eugene Sh。
15年5月27日在16:42

$ \ begingroup $
@ott使用操纵杆进行控制,或者在最佳情况下使用某些预制控制器进行控制?是的,当然。但是这里的问题是关于基础理论的。
$ \ endgroup $
– Eugene Sh。
15年5月28日在21:21

#3 楼

@Eugene Sh所建议的课程是深入了解相关细节的好方法。如果您对飞机(固定翼)的运行方式有一般的了解,那么它实际上会对您有所帮助。请参阅Randal Beard的小型无人飞机:理论与实践,Randal Beard是航空器研究和T.Mclain的先驱之一。这是关于固定翼飞机的,但是固定风和四/三旋翼飞机的导航和制导原理是相同的。这本书是用非常简单的语言编写的,几乎没有等式。非常适合测试您的一些指导策略