Hacking atoms and bits.

2018-01-15
团队机器人系列(0x06):微风四轴飞行器-STM32嵌入式开发-飞控算法理论

前言

前面我介绍了很多有关微型四轴飞行器嵌入式底层开发的知识,虽然对于很多初学者来说,其中有一些概念比较晦涩难懂,但是它们确实能够让大家对于嵌入式底层开发有更深入的理解与掌握。好了言归正传,在本篇文章中我会向大家介绍有关微型四轴飞行器飞控算法理论方面的相关内容,而至于什么是飞控,我想很多自己买过成品飞控板、组装过航模或四轴飞行器的同学都不会陌生,顾名思义,飞控指的是飞行控制算法,即通过获取IMU(惯性传感单元)数据,并采用滤波、PID等算法对飞行器当前的姿态进行实时解算,得到各电机的转速和转向,从而完成对飞行器的控制。由于飞控算法本身涉及到很多自动控制原理和线性代数方面的理论知识,所以推荐大家先把自控和线代好好复习一遍再去研究飞控算法,这样理解起来可能会容易一些。

阅读此文

2017-12-30
团队机器人系列(0x05):微风四轴飞行器-STM32嵌入式开发-代码编写规范

前言

对于一个成功的开源项目来说,我个人认为代码规范在某种程度上要比代码本身更为重要。至于为什么会得到这样的结论,主要归结于当初我自己还在舞蹈机器人基地的时候就曾遇到过因代码不规范所导致的一系列问题:那时我们晓萌软件组每人负责一个机器人模块的代码编写工作,由于比赛日期逐渐迫近,我们都在尽全力完成各自的任务而没太注意代码的编写规范,可是到后期要做各模块代码集成的时候我们却发现由于彼此的代码规范不统一,导致我们需要更多的时间来理解对方所编代码的含义,并且重新修改很多软件接口以实现数据的无障碍传输。

总之,以往的经历让我明白严谨的代码规范可以显著提高代码的质量、降低后期的开发和维护成本、提升团队开发的效率并减少错误的发生。因此,我们又有什么理由不去学习并制订自己团队的代码编写规范呢?

阅读此文

2017-11-18
团队机器人系列(0x04):微风四轴飞行器-STM32嵌入式开发-Makefile详解

前言

在上一篇文章中,我详细介绍了STM32嵌入式开发工具的相关内容,也通过具体的操作向大家展现了STM32嵌入式开发环境的整个搭建过程,但是如果你想看懂本篇文章或者想尝试自己在GNU/Linux下编写STM32嵌入式程序,那以上的知识是远远不够的,你还需要自学MakeMakefile,理解它的语法和用法,并亲手进行实践。

本篇文章因为篇幅有限,并不对Make和Makefile进行详细介绍,请大家先自行上网查找教程资料进行学习,这里我个人强烈推荐大神陈皓曾在CSDN上发表过的《跟我一起写Makefile》系列文章(当初我就是通过这份教程学会Makefile的),里面对Makefile的基本规则、命令、变量、条件判断、函数、运行和隐含规则等内容进行了详细的介绍,讲的非常棒,网上也有PDF版本的,可以下载到本地,方便阅读。

阅读此文

2017-11-07
团队机器人系列(0x03):微风四轴飞行器-STM32嵌入式开发-开发环境搭建

前言

我跟很多刚开始接触STM32的同学一样,都是先通过各种渠道获得战舰的开发板(我是从机器人基地电子组那里借了一个STM32最小系统板),然后边看着《原子教你玩转STM32》,边用KEIL MDK编写代码来入门STM32嵌入式开发的。在学习的过程中,我发现虽然KEIL MDK集代码编辑、编译、下载、调试为一体,并且提供了非常友好的图形操作界面,但是它的代码编辑功能实在是做得很一般,而且最关键的是它不能在GNU/Linux和Mac OS上跨平台运行。因此,为了提高项目的开发效率并且践行开源的宗旨,我决定遵循HandsFreeOpenRE库(由我们西工大舞蹈机器人基地学长们联合创立的开源机器人软硬件项目)以及很多国外开源飞控项目所做的那样,使用GNU/Linux下的开源工具链来搭建Breeze微型四轴飞行器的嵌入式开发环境。

阅读此文

2017-10-21
团队机器人系列(0x02):微风四轴飞行器-硬件电路板设计

前言

我曾经在大二的时候为完成数字电路实验而简单地学过一些硬件电路板设计,当时我看的是郭天祥老师的教程视频,里面有关Altium Designer 6.9软件的操作可以说是讲得非常细致,但是由于后来临近期末考试,时间较为紧迫,而且实验电路本身并不复杂,所以我只学了其中的PCB部分之后就没再深入地学习下去了。

可能是之前我还有一些PCB设计的基础,所以这次在设计Breeze微型四轴飞行器PCB的时候感觉还是比较容易上手的。我最早是在Ubuntu 14.04上用KiCad来设计硬件(因为Crazyflie 1.0四轴飞行器的PCB就是用KiCAD画的),但是后来综合考虑到KiCAD在处理复杂元器件布线以及规则约束方面的短板,所以我们最终还是决定使用功能更加强大的Altium Designer 16来重新完成对PCB的绘制工作。

阅读此文

2017-10-06
团队机器人系列(0x01):微风四轴飞行器-总纲

前言

我记得自己第一次接触四轴飞行器是在大一,有一次我在TED上看了由瑞士苏黎世联邦理工大学的Raffaello D’Andrea教授所做的关于四轴飞行器的演讲,题目是“The astounding athletic power of quadcopters”,教授边用四轴飞行器进行演示并对其中所用到的数学理论进行讲解,对于当时什么理论都不懂的我来说,最令我惊讶的是在演示环节,那些四轴飞行器能够在高速移动的时候保证放在其顶部的细棍和酒杯不失去平衡,可以在桨叶受损的情况下依然可控,可以通过协作接住由人所抛出的小球并将其击回,可以判断人的手势来做不同的动作等。当时看完这段视频之后我的内心难以平静,脑海里萌生了自制四轴飞行器的想法,但由于后来我加入了舞蹈机器人基地并忙于组内的开发任务,所以这个想法就暂时被搁置了。

阅读此文

2017-10-01
技术杂记系列(0x04):2015 RoboCup中国杯

前言

随着RoboCup合肥国际赛的结束,我们晓萌队又开始紧锣密鼓地着手准备10月份的RoboCup中国赛。由于之前5月份我们在中国服务机器人大赛上发挥得不理想,再加上即将到来RoboCup中国赛是我们这一届晓萌队成员的最后一战,所以这一次我们根据比赛规则提前制定好了开发计划,每个队员也都尽全力来完成各自的任务,当然我们目标很明确:把握机会,不留遗憾

2015年10月份的RobCup中国赛将会在贵阳举办,由于是一年一度的全国赛,所以国内研究服务机器人的高校队伍基本上都会参加,而最令我们感到意外的是刚刚参加完RoboCup合肥国际赛的中科大蓝鹰队也会携可佳机器人参赛,届时我们的晓萌可以和中科大的可佳同台较量,这绝对是我们向强队学习的绝佳机会。

阅读此文

2017-07-21
技术杂记系列(0x02):2015 RoboCup世界杯

前言

RoboCup即机器人世界杯,是目前世界上级别规格最高、影响力最广的机器人赛事(当然,DARPA机器人挑战赛除外)。中国曾经在2008年的时候举办过一次RoboCup国际赛,地点是在苏州,而七年之后,RoboCup国际赛又一次降临中国,这次则是在拥有多年举办机器人赛事经验的合肥。非常幸运的是我们晓萌机器人团队能够被邀请参与本次比赛新增的BSR项目,并获得免费近距离观摩比赛的机会。

这篇文章主要讲述我们在RoboCup合肥国际赛所发生的一些事情,内容主要以亲身经历为主,其中也会涉及技术方面,但不是重点。

阅读此文

2017-07-11
技术杂记系列(0x01):2015 服务机器人国赛

前言

在经过短时间的调试之后,我们新一届晓萌机器人团队终于迎来了检验自己成果的时候。因为晓萌机器人的新机械臂是在比赛出发之前才安装到位,所以本次五月份的比赛我们并没有使用。除此之外,学长在出发之前告诉我们:要放下包袱,尽力去完成比赛,注重与其他队伍的交流,把这次比赛作为自己开阔视野的好机会。赛后确实就像学长所说的那样,我们从本次比赛中学到了很多东西,这对于晓萌团队未来的发展起到了非常积极的作用。

本次中国服务机器人大赛在河南洛阳举办,基本上国内研究服务机器人的高校都悉数到场,比如北理、北信科、二炮、上应技、上大、西北师范等,其中比赛项目主要有RoboCup@Home、Follow、GPSR、WhoIsWho、Shopping等。

阅读此文

2017-06-07
博客教程系列(0x02):Hexo主题配置

前言

我之前在选择自己博客网站主题的时候曾浏览过Hexo主题网站,发现Hexo官方提供了不少各具特色的主题。后来为了进一步确定到底使用哪个主题,我又仔细地参考了知乎上有关Hexo主题推荐的文章。总之,在一段长时间的纠结和考虑之后,我最终决定放弃参考别人的想法而是遵循自己内心的感觉,选择了一个叫Freemind的主题。

Freemind主题虽然不是Hexo里面排名前十或在推荐里面出现次数较多的主题,但它的那种简约而又专业的风格令我十分喜欢。接下来,我会简要地介绍Freemind主题的特点和安装步骤,并重点地讲解它的配置方法。当然了,Hexo主题的配置基本上大同小异,只要学会了其中一种主题的配置方法,其他的就可以触类旁通了。

阅读此文

2017-04-20
机器人解读系列(0x02):服务机器人机械臂

前言

我在大二的时候加入到了西北工业大学舞蹈机器人基地RoboCup@Home项目组,主要负责家政服务机器人晓萌机械臂的软件开发部分。在开发的过程中,我曾遇到并解决过一些问题,也算是积累了一些机械臂开发的经验,因此现在我打算将这些经验分享出来,希望能给那些正在使用ROS来开发机械臂的后来者们提供一些帮助。当然,写得不对的地方欢迎各位大神指正。

以下,我从技术介绍和学习流程两个方面来进行讲解。其中技术介绍方面又分为机械、电子和软件三个章节。由于我在项目组里做的是软件开发工作,对机械和电子了解得相对较少,因此机械和电子这两个章节的内容我会简略地介绍,而讲解的重点自然便是软件章节。最后关于学习流程方面,我从基础、进阶、高级以及资源这四个章节来分别进行叙述,力求将自己的学习方法完整地呈现出来。

阅读此文

2017-04-18
机器人解读系列(0x01):服务机器人系统

前言

我在大二的时候加入到了西北工业大学舞蹈机器人基地RoboCup@Home项目组,在接近一年半的学习与开发过程中,我与负责其他模块的成员一起在原有晓萌机器人的基础上,对其整个系统架构进行了全面的升级,以便满足实际比赛的需要。同时在这个过程中,我也对新一代晓萌机器人系统有了更深的认识与理解。这里,我把自己对晓萌机器人系统的见解总结下来,一方面算是对我们这一届成员开发成果的总结,另一方面也希望这些经验总结可以留给未来的继任者,能给他们一些开发上的指导和借鉴。

本篇文章重点介绍晓萌机器人的系统架构,其中主要分为硬件层、嵌入式层、驱动层和软件层。除了技术方面的内容之外,我还会介绍其他有关开发的内容。不过由于这些内容都是来源于自己的个人见解,所以有些地方可能会讲得不够准确,欢迎各位成员在留言处进行指正。

阅读此文

2017-03-31
博客教程系列(0x01):Hexo安装配置

前言

我大一时就想过搭建一个属于自己的博客网站来记录一些自己曾经做过项目的开发经验和个人的生活感悟等,但由于时间缘故,我的这个想法一直没有实现。时间一晃到了大四,由于毕设前期任务不是很重,所以这次我决定要花一些时间把自己的博客网站搭建出来,一方面算是实现了自己当初的想法,另一方面也可以有机会将自己大学本科四年的经历总结下来,以供他人学习借鉴。

搭建网站的一般做法是:先买个域名,再租个服务器,最后在其上部署WordPress来进行相关的配置。虽然WordPress学起来不难,但是这样做不仅需要花钱,而且还需要不少前期准备工作,搭建起来比较繁琐。后来我经同学介绍认识了Hexo,才发现它的简洁和强大,接下来简要地介绍一下Hexo。

阅读此文