Hacking registers and bits.

2018-08-18
参与活动系列(三):2018世界机器人大会

参与活动系列(三):2018世界机器人大会

前言

阅读此文

2018-08-06
参与活动系列(二):2017世界机器人大会

参与活动系列(二):2017世界机器人大会

前言

我第一次听说世界机器人大会还是在2015年10月,那会儿基地学长跟我们讲在当年11月底召开的世界机器人大会(后来才知道是第一届举办)上会有RoboCup国际赛冠军队伍的展示,当时我听完之后十分惊讶,因为我们舞蹈机器人基地曾经在7月份暑假期间受邀参加了在合肥举办的RoboCup国际赛,算是亲眼见证了那些国内外机器人强校之间的激烈对抗,所以我对那些获得RoboCup(世界最高级别机器人比赛)国际赛桂冠的队伍是相当崇拜的,没想到这次大会组办方能够把那么厉害的队伍邀请过来参加表演赛,就是从那一刻起,我意识到这个世界机器人大会可能并没有我们想象中的那样只会卖名字的噱头,看来它还真是有点货真价实的东西的。

因为在西安上大学的缘故,我错过了前两届世界机器人大会,2017年6月底我本科毕业回京参加工作,于是自己终于迎来了在家门口观看世界机器人大会的机会。从小到大算下来,这还是我头一次能够去现场参加如此规模的博览会,虽然离大会开幕还有一个多月的时间,但是自己已经在官网上预订好了门票,希望到时候能够看到各种有意思的机器人!

阅读此文

2018-07-28
参与活动系列(一):2017北京Maker Faire大会

参与活动系列(一):2017北京Maker Faire大会

前言

我记得高考完的那个暑假自己有一次去书店买书,在选书的过程中偶然在旁边的架子上发现好了几本名字叫做《爱上制作》的杂志,我当时出于好奇就翻看了其中的一本,里面介绍了很多国外大神制作的各种充满想象力和创造力的项目,内容不仅描述得非常详细而且还具有很强的可操作性,真的是让人越看越入迷,后来我还买了好几本回家看。就是从那时起我开始逐渐接触国外的创客项目,并喜欢上了这些项目背后所蕴含的那种创客文化。

而作为美国乃至全世界创客文化的先驱,我相信很多人我一样,把Make公司当作自己的偶像。我认为Make公司除了发行《爱上制作》等杂志或书籍之外,最大的贡献就是创建了Maker Faire大会,它为各国的创客以及DIY爱好者们提供了一个绝佳的交流平台,有效促进了创客理念在全球的传播。北京从2015年开始连续举办了两届Mini Maker Faire大会,经过两年的努力,2017年的北京Maker Faire大会终于由Mini级升级为城市级,虽然大会的规模还比不上纽约和湾区,但是能够在家门口参加一次城市极的Maker Faire大会,怎么说呢,也算是圆了自己的一个心愿吧。

阅读此文

2018-07-05
参与活动系列(零):总纲

参与活动系列(零):总纲

前言

每个人都会在生活中经历一些令人难忘的活动,它有可能是一场激情四射的演唱会,一次机会难得的学术会议,一趟愉悦身心的长途旅程。不管你参加活动的类型是什么,收获宝贵的经历并享受它所带给你的那种快乐才最为重要。因为自己在大学时开始喜欢上了机器人(已经在《自制机器人系列》的总纲中进行了简要的介绍),所以对于我来说能够参与跟机器人有关的活动(比如接下来会讲到的Maker Faire和世界机器人大会等)就是最令我感到兴奋和高兴的事情。当然,我对活动的定义不仅仅局限于自己的兴趣爱好,其他值得纪念或能带给你某种心灵上震撼的经历也绝对配得上你对它的尊敬。

好了废话不多说了,让我们言归正传。由于本人的时间和精力有限,所以接下来我主要会介绍自己从去年大学毕业开始所经历的一些重要活动,虽然时间离得比较近,但是活动的内容还是很丰富的,让我们一起拭目以待吧。

阅读此文

2018-06-13
自制机器人系列(三):小型自平衡机器人

自制机器人系列(三):小型自平衡机器人

前言

今年春节左右我拿到了maksyuki所设计的Breezeduino板子,Breezeduino是一个基于ATmega328P-AU芯片(32引脚QTFP封装)的AVR单片机最小系统板,由于现在Arduino非常流行,所以我们也顺理成章地给Breezeduino刷入了最新的Arduino Nano固件,使其可以通过Arduino所提供的软件封装来编写嵌入式程序。在能够正常烧写Blink程序后,我在想如何能把这个板子用起来,首先进入我脑海里的是做一个游戏机,因为游戏机的硬件原理不难而且还可以自己DIY写一些小游戏去玩,比较有意思,目前国外类似的开源项目有MAKERbuinoGamebuino,做得已经相当不错了。不过在经过一番深思熟虑后,我还是决定回归我最喜欢的老本行——机器人,因为对于我来说做一个可以与物理世界进行交互的机器人要比其只能在游戏机的OLED 12864屏幕里能跑能跳要有意思的多。

阅读此文

2018-05-21
自制机器人系列(二):小型六足仿生机器人

自制机器人系列(二):小型六足仿生机器人

前言

这个小型六足机器人是我在大四做的,是我大学本科生涯的最后一个个人项目。至于为什么我要做六足机器人,还要从高考完之后说起:当时刚考完的我一直想做一些有意思的事情,直到有一天我发现了一个叫PVCBOT的网站,里面记录了很多如何使用PVC材料来制作简单机器人的教程,其中有一款叫做PVC六足机器昆虫(见下图)的机器人彻底震撼了我,当时看完教程之后我就下定决心也要做一个类似的六足机器人,于是我便从懒猫侠前辈那里购买了六足机器人套件(目前应该已经绝版了),并打算按照提供的教程完成自己的六足机器人,但无奈当时的我所掌握的知识太少,什么单片机、串口通信、舵机PWM、电源管理、传感器、舵机控制板等都不懂,特别是机械结构方面我更是一窍不通,所以大一那会儿我还闹出了笑话:用硬纸板做六足机器人的肢体,在安装好舵机并通电测试后,眼睁睁地看着自己的“纸板六足”在舵机的震动下不断地解体。。。

阅读此文

2018-05-15
自制机器人系列(一):简单轮式机器人

自制机器人系列(一):简单轮式机器人

前言

制作这个项目的起因是大一下学期那会儿我通过学校图书馆里的《无线电》杂志开始接触Raspberry Pi卡片式计算机和Arduino微控制器,其中Raspberry Pi给当初什么都不懂的我留下了非常深刻的印象:一个信用卡大小的板子竟然可以跑带有图形界面的GNU/Linux操作系统。在强烈探索欲的驱使下,我从网上购买了两块Element14的Raspberry Pi一代Model B(现在早已经绝版了)板子以及其他相关配件,开始在Raspbian系统上自学Python和各种传感器的使用方法,后来为了检验一下自己的学习成果,于是我便花费几周的时间做了这个简单的轮式机器人。虽然它涉及的原理并不复杂,但是对于那会儿刚开始接触嵌入式的我来说,能成功搭建一个完整的机器人系统还是挺有挑战性的。

阅读此文

2018-05-13
自制机器人系列(零):总纲

自制机器人系列(零):总纲

前言

我相信很多男生都非常喜欢机器人,其中很大一部分因素是受动漫或影视内容(比如像《铁臂阿童木》、《机器人总动员》和《终结者》等)的影响,而我对机器人的喜爱却来源于第一次进行DIY电子制作时的难忘经历。我记得那时高考已经考完有一段时间了,有一天我在网上闲逛,无意间发现了一个叫PVCBOT的网站,里面记录了很多有关如何使用PVC材料来制作简单机器人的教程,我越看越入迷于是就买了几个套件回家进行制作,尽管制作的过程因为自己不懂如何焊接(当时的确如此)而走了很多弯路,但是当最后机器人能够移动时,我的内心感受到了前所未有的快乐!也许就是这种对机器人的喜爱让我在之后的大学生活中不断尝试制作更复杂的机器人,甚至有机会加入机器人基地并亲身参与到高级智能机器人的研发工作当中去。

阅读此文

2018-02-01
Breeze微型四轴系列(八):软件开发总结

Breeze微型四轴系列(八):软件开发总结

前言

一款出色的四轴飞行器除了要有设计严谨的硬件、稳定可靠的飞控之外,还需要具有图形界面的上位机以及可扩展软件接口才行。毕竟对于那些基于四轴飞行器平台进行深入研究(比如视觉SLAM、视觉避障、室内自主悬停等)的学者来说,带有各种参数仪表盘和数据曲线显示功能的地面控制站可直观地显示出当前四轴飞行器在空中的运动姿态和相关传感器数据等信息,便于算法调试。此外,四轴飞控所集成的软件接口API也能够加快上层应用的开发速度,提高其与其他开源框架(ROS、OpenCV、PCL、TensorFlow等)的集成和交互能力。

因此,本篇文章会以Breeze微型四轴飞行器为例来简要介绍目前国内外几个比较成熟的四轴飞行器地面控制站(GCS)软件以及软件接口协议,欢迎各位前来阅读。

阅读此文

2018-01-15
Breeze微型四轴系列(七):STM32嵌入式开发-飞控算法理论

Breeze微型四轴系列(七):STM32嵌入式开发-飞控算法理论

前言

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

阅读此文

2017-12-30
Breeze微型四轴系列(六):STM32嵌入式开发-代码编写规范

Breeze微型四轴系列(六):STM32嵌入式开发-代码编写规范

前言

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

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

阅读此文

2017-12-16
Breeze微型四轴系列(五):STM32嵌入式开发-启动文件讲解

Breeze微型四轴系列(五):STM32嵌入式开发-启动文件讲解

前言

阅读此文

2017-12-01
Breeze微型四轴系列(四):STM32嵌入式开发-链接脚本原理

Breeze微型四轴系列(四):STM32嵌入式开发-链接脚本原理

前言

阅读此文

2017-11-18
Breeze微型四轴系列(三):STM32嵌入式开发-Makefile详解

Breeze微型四轴系列(三):STM32嵌入式开发-Makefile详解

前言

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

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

阅读此文

2017-11-07
Breeze微型四轴系列(二):STM32嵌入式开发-开发环境搭建

Breeze微型四轴系列(二):STM32嵌入式开发-开发环境搭建

前言

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

阅读此文