前言
一款出色的四轴飞行器除了要有设计严谨的硬件、稳定可靠的飞控之外,还需要具有图形界面的上位机以及可扩展通信协议才行。毕竟对于那些基于四轴飞行器平台进行深入研究(比如视觉SLAM、视觉避障、室内自主悬停等)的学者来说,带有各种参数仪表盘和数据曲线显示功能的地面控制站可直观地显示出当前四轴飞行器在空中的运动姿态和相关传感器数据等信息,便于算法调试。此外,四轴飞控所集成的通信协议API也能够加快上层应用的开发速度,提高其与其他开源框架(ROS、OpenCV、PCL、TensorFlow等)的集成和交互能力。
因此,本篇文章会以Breeze微型四轴飞行器为例来简要介绍目前国内外几个比较成熟的四轴飞行器地面控制站(GCS)软件以及通信协议协议,欢迎各位前来阅读。
阅读此文
前言
前面我介绍了很多有关微型四轴飞行器嵌入式底层开发的知识,虽然对于很多初学者来说,其中有一些概念比较晦涩难懂,但是它们确实能够让大家对于嵌入式底层开发有更深入的理解与掌握。好了言归正传,在本篇文章中我会向大家介绍有关微型四轴飞行器飞控算法理论方面的相关内容,而至于什么是飞控,我想很多自己买过成品飞控板、组装过航模或四轴飞行器的同学都不会陌生,顾名思义,飞控指的是飞行控制算法,即通过获取IMU(惯性传感单元)数据,并采用滤波、PID等算法对飞行器当前的姿态进行实时解算,得到各电机的转速和转向,从而完成对飞行器的控制。由于飞控算法本身涉及到很多自动控制原理和线性代数方面的理论知识,所以推荐大家先把自控和线代好好复习一遍再去研究飞控算法,这样理解起来可能会容易一些。
阅读此文
前言
对于一个成功的开源项目来说,我个人认为代码规范在某种程度上要比代码本身更为重要。至于为什么会得到这样的结论,主要归结于当初我自己还在舞蹈机器人基地的时候就曾遇到过因代码不规范所导致的一系列问题:那时我们晓萌软件组每人负责一个机器人模块的代码编写工作,由于比赛日期逐渐迫近,我们都在尽全力完成各自的任务而没太注意代码的编写规范,可是到后期要做各模块代码集成的时候我们却发现由于彼此的代码规范不统一,导致我们需要更多的时间来理解对方所编代码的含义,并且重新修改很多软件接口以实现数据的无障碍传输。
总之,以往的经历让我明白严谨的代码规范可以显著提高代码的质量、降低后期的开发和维护成本、提升团队开发的效率并减少错误的发生。因此,我们又有什么理由不去学习并制订自己团队的代码编写规范呢?
阅读此文
前言
在上一篇文章中,我详细介绍了STM32嵌入式开发工具的相关内容,也通过具体的操作向大家展现了STM32嵌入式开发环境的整个搭建过程,但是如果你想看懂本篇文章或者想尝试自己在GNU/Linux下编写STM32嵌入式程序,那以上的知识是远远不够的,你还需要自学Make和Makefile,理解它的语法和用法,并亲手进行实践。
本篇文章因为篇幅有限,并不对Make和Makefile进行详细介绍,请大家先自行上网查找教程资料进行学习,这里我个人强烈推荐大神陈皓曾在CSDN上发表过的《跟我一起写Makefile》系列文章(当初我就是通过这份教程学会Makefile的),里面对Makefile的基本规则、命令、变量、条件判断、函数、运行和隐含规则等内容进行了详细的介绍,讲的非常棒,网上也有PDF版本的,可以下载到本地,方便阅读。
阅读此文
前言
我跟很多刚开始接触STM32的同学一样,都是先通过各种渠道获得战舰的开发板(我是从机器人基地电子组那里借了一个STM32最小系统板),然后边看着《原子教你玩转STM32》,边用KEIL MDK编写代码来入门STM32嵌入式开发的。在学习的过程中,我发现虽然KEIL MDK集代码编辑、编译、下载、调试为一体,并且提供了非常友好的图形操作界面,但是它的代码编辑功能实在是做得很一般,而且最关键的是它不能在GNU/Linux和Mac OS上跨平台运行。因此,为了提高项目的开发效率并且践行开源的宗旨,我决定遵循HandsFree的OpenRE库(由我们西工大舞蹈机器人基地学长们联合创立的开源机器人软硬件项目)以及很多国外开源飞控项目所做的那样,使用GNU/Linux下的开源工具链来搭建Breeze微型四轴飞行器的嵌入式开发环境。
阅读此文
前言
我曾经在大二的时候为完成数字电路实验而简单地学过一些硬件电路板设计,当时我看的是郭天祥老师的教程视频,里面有关Altium Designer 6.9软件的操作可以说是讲得非常细致,但是由于后来临近期末考试,时间较为紧迫,而且实验电路本身并不复杂,所以我只学了其中的PCB部分之后就没再深入地学习下去了。
可能是之前我还有一些PCB设计的基础,所以这次在设计Breeze微型四轴飞行器PCB的时候感觉还是比较容易上手的。我最早是在Ubuntu 14.04上用KiCad来设计硬件(因为Crazyflie 1.0四轴飞行器的PCB就是用KiCAD画的),但是后来综合考虑到KiCAD在处理复杂元器件布线以及规则约束方面的短板,所以我们最终还是决定使用功能更加强大的Altium Designer 16来重新完成对PCB的绘制工作。
阅读此文
前言
我记得自己第一次接触四轴飞行器是在大一,有一次我在TED上看了由瑞士苏黎世联邦理工大学的Raffaello D’Andrea教授所做的关于四轴飞行器的演讲,题目是“The astounding athletic power of quadcopters”,教授边用四轴飞行器进行演示并对其中所用到的数学理论进行讲解,对于当时什么理论都不懂的我来说,最令我惊讶的是在演示环节,那些四轴飞行器能够在高速移动的时候保证放在其顶部的细棍和酒杯不失去平衡,可以在桨叶受损的情况下依然可控,可以通过协作接住由人所抛出的小球并将其击回,可以判断人的手势来做不同的动作等。当时看完这段视频之后我的内心难以平静,脑海里萌生了自制四轴飞行器的想法,但由于后来我加入了舞蹈机器人基地并忙于组内的开发任务,所以这个想法就暂时被搁置了。
阅读此文