A. kk是开源飞控吗
是。kk是一个很有趣的开源飞控,由于其硬件要求低,价格大众化,所以虽然性能有限,还是有着广泛的使用群体。我也有一个kk飞控板,并且我下载了kk的源码进行研究,比较麻烦的是,kk的源码是用汇编肆迅写的,很多人是看不懂的。
开源飞控介绍
在纷繁复杂的无人机产品中,四旋翼飞行器以其结构简单、使用方便、成本低廉等优势,最先进入了大众的视线。但是,这种飞行器对飞行控制能力的要求是最高的,因此它刺激了大批基于MEMS传感器的开源飞控的出现。
开源的概念最早被应用于开源软件,开放源代码促进会用其描述那些源码可以被公众使用的软件,并且此软件的使用、修改和发行也不受许可证的限制。开源软件的发展乱扰逐渐与硬件相结合,产生了开源硬件。硬件与软件不同之处是实物资源应该始终致力于创造实物商品。
每一个开源项目均拥有自己的论坛,由团队或个人进行管理,论哗雹旦坛定期发布开源代码,而对此感兴趣的程序员都可以下载这些代码,并对其进行修改,然后上传自己的成果,管理者从众多的修改中选择合适的代码改进程序并再次发布新版本。形成“共同开发、共同分享”的良性循环。
B. PX4-8-UAVCAN与开源飞控
本文深入探讨了PX4和APM使用的CAN通信协议框架UAVCAN。近期PX4固件的更新,以及src/drivers/uavcan/libuavcan子模块仓库的更改,促使我们关注UAVCAN的细节。
从v1.12版本开始,src/drivers目录下新增了一个名为uavcan_v1的模块,但并未在多个board配置中使用。与此同时,UAVCAN正在进行重大变更,协议由v0.9升级到v1版本。src/drivers/uavcan/libuavcan目录下为v0.9版本,而新增的uavcan_v1模块则是v1版本。
在比较两个版本的区别时,我们关注了CAN拓展帧id的定义。通过对比legacy.uavcan.org/Speci...和uavcan.org/specificatio...文档,可以发现v0.9和v1版本在Priority、Message type ID、Service not message、Source node ID等字段的定义上存在显著差异,并不兼容。
DroneCAN是UAVCAN v0.9版本的继承者,UAVCAN v0.9版本已不再维护,不推荐在新设计中使用。UAVCAN在legacy.uavcan.org/主页中强调了这一点。PX4和APM开源飞控项目选择继续维护v0.9版本协议,命名为DroneCAN v1,认为其在商用无人机行业中表现稳健、功能丰富,得到广泛部署和行业支持。
此次UAVCAN v1与DroneCAN v1的分离对开源飞控与UAVCAN未来的影响值得持续关注。对于学习者而言,UAVCAN是一个优秀的学习项目,其两个主要库libcanard(C语言实现)、libuavcan(C++实现)的代码框架将在后续分享中探讨。
回顾往期分享,包括AcmeROS-1-系统架构、PX4-7-飞控参数、AcmeGCS-9-目标框选跟踪、AcmeIot-2-基于PX4硬件的Nuttx开发环境。本系列将不定期更新无人机相关知识,欢迎关注。