疯狂直升机的高层次系统图。
直升机本身是围绕CPU组织起来的。CPU的任务是读取物理传感器(陀螺仪和加速度计)的测量结果,给出控制信号控制电机,让直升机保持稳定。通过一个控制反馈回路,CPU每秒能够对电机发送250次调节转速的指令。无线通信的带宽需求很低,仅仅需要发送操作命令和接受遥测数据。CPU上运行的程序可以通过无线通信更新。
控制和遥测程序在电脑上运行,控制程序从手柄读取输入,然后向直升机发送命令。我们也有调节直升机上控制参数的程序模块,并且会记录下传感器的测量结果,方便调整控制回路。
所有这些开发工作在Windows或linux系统上完成。事实上有三个人同时在这个项目上工作,两个人在Linux上工作,剩下一个人主要使用Windows。利用自由/开源软件(FLOSS,Free/Libre and Open Source Software)许可对提高工作效率非常有帮助。我们主要使用GCC编译器编译直升机程序,GNU( GNU's Not Unix,一个包含了递归的缩写!GNU Linux工程是为与可复制﹑修改﹑和重新分配的源代码一起的类Unix操作系统的发展而建立的。)建立我们的工程,Mercurial(一个轻量级的分布式版本控制系统)管理我们的源代码,与直升机之间的通讯采用python/pyusb(一个python上的USB通讯软件库)。所有这些软件都能在linux和windows系统间来回无缝切换,使这个项目的管理变得容易许多。
电动机之间的距离(X轴和Y轴方向)大约有8cm,整个飞行器的重量只有20g。