你如果搜索开源的四旋翼,大概率会出现这个。主人公以博客的形式将这个东西的从有到无的过程记录下来了。我比较敬佩,但是真正到了实现的地方,笑死,根本没有人讲为什么。单片机的应用之所以难,就是你学的是单个的功能快,但是没有人告诉你,你的书本知识到实物的变化。而且我也想知道其中的奥妙。
那么我选了一个最难的路,读源码。我希望我会把源码读完,收获一些东西,为兴趣,为自己。
而且遥控器也是开源的,安卓应用,上位机都有,很全面的小玩意儿。
完整的源码
原理图
打开以后是一个完整的KELI工程
知识它的代码组织的形式
它没有使用标准库,而是用什么加什么
硬件的驱动
逻辑和算法
初始化看起来很繁杂,很多,也没啥好说的。现在谈谈Crazepony是怎么正常飞起来的:
前面已经努力的初始化了一大堆东西了,那么飞机起飞所需设备以及环境也正常了,Crazepony接下来需要做的最重要事情,就是如何去合理的控制这些设备,让飞机正常起飞
飞机起飞所需要的必须设备就是:电机+螺旋桨+姿态传感器。
在这里,我们必须承认的一点就是,四路PWM信号的占空比大小,线性的代表了电机转速快慢,也即线性代表了电机上提供的升力。于是,Crazepony现在只需要控制单片机内部定时器准确的输出四路PWM信号就行了,其他的事情,交给执行机构:电机+螺旋桨去完成。
因为这份飞控代码是作者倾入了很多的心血做的,所以文档还不错,我为什么没有说很不错,因为只说了一些表面的原理,落实到代码上面他还是没有讲,所以我觉得是一个遗憾.我来补上这个版本吗?
国内怎么说呢。。。除了一些博客上面对一些细节说,剩下的都是人云亦云,而且也不对开源项目提供东西,就知道用,拿来就用。
正常提示灯列表。
| 灯语|含义| |M1和M2常亮3秒,M3和M4长灭|IMU启动校准,校准陀螺仪| |M1和M2闪烁,M3和M4长灭|正常,可以进行起飞,IMU校准等动作| |M1闪烁8次,其它灯长灭|配置蓝牙模块|
飞机的四个机臂LED同时出现快速闪烁,则表示飞机电池需要充电。将飞机开关拨到Charge位置,连上usb线则可以充电。
pitch():俯仰,将物体绕X轴旋转(localRotationX)
yaw():航向,将物体绕Y轴旋转(localRotationY)
roll():横滚,将物体绕Z轴旋转(localRotationZ)
飞行器在飞行的过程中,其运动的前后左右以地理坐标系为参考坐标系,则为无头模式(又叫head-free或head-hold)飞行。无头模式多见于多旋翼,例如四轴,六轴飞行器中。
相对应的就是有头模式,飞行器运动的前后左右以自身的坐标系为参考坐标系。有头模式是很多玩具航模,大多旋翼飞行器(例如Phantom)常用的飞行模式。
行器的自身坐标系。如果推动遥控器的向前运动,飞行器总是向它头的方向飞行,那么这个飞行器就是运行在有头模式。如果推动遥控器的向前飞行,飞行器还是向它起飞时头指示的方向飞行,即使这个时候飞行器在飞行的过程中改变了机头方向(操纵了遥控的航向角),那么 这个飞行器的运行在无头模式。
所以可以看到,无头模式飞行器是以它起飞时头指示的方向为前,其运行的前后左右是参考地理坐标系(也就是地球坐标系)。所以飞无头模式,操控手尽量不要旋转,否则就会混淆运行的前后左右。
如何实现无头模式:
1.使用电子罗盘,测量飞行器相对于地球磁场的角度,算出机头在磁场中的方向。
2.使用航向角的积分,计算飞行器相对于起飞时机头旋转的角度。、
http://www.crazepony.com/wiki-crazepony.html#rd
WIKI
https://www.bookstack.cn/read/crazepony/blog-2014-07-07-story-with-crazepony-3.md
书栈网
https://github.com/zsjtoby/BlueSkyFlightControl
https://pan.baidu.com/s/15vPI4mk5DA2msPDHDx0O1A
这份资料也发出来我
https://github.com/kavichen/MK_BrushLess-Control
http://vedder.se/2015/01/vesc-open-source-esc/
一个
课程
https://open.163.com/newview/movie/courseintro?newurl=%2Fspecial%2Fopencourse%2Faircraftsystem.html