视觉检测领先者
全国咨询热线:13812953225

基于树莓派如何开发机器人(附PPT+视频) 雷锋网公开课

发布时间:2025-08-27 09:10:33 人气: 来源:yy易游官网

  树莓派是为学习计算机编程教育而设计的一种微型电脑,其系统是基于Linux的,虽然只有信用卡大小,但视频、音频等功能通通皆有,可谓是“麻雀虽小,五脏俱全”。因此自问世以来,受到了众多计算机发烧友和创客的追捧。

  树莓派可拿来开发各种硬件产品,此次雷锋网硬创公开课邀请到国际资深创客,莫比嗨客树莓派智能机器人有限公司创始人兼CEO刘端阳,从树莓派的起源讲起,一步步教我们如何开发出一款机器人。

  以下内容整理自刘端阳在雷锋网硬创公开课的分享。关注雷锋网旗下微信公众号「新智造」,可获取嘉宾完整PPT。

  计算的过程中经历了这么几个发展:最早的时候是应用于自动式,比如弹道导弹的计算,但是随着计算的发展,其有了更加宽广范围的应用,比如军队、政府、银行等都会用到计算设备。

  计算设备的发展历史,按照公认的说法,分为大型机、小型机、PC阶段,以及现在基于Arm体系结构的手机时代。那么,反向思考的话,未来的硬件设备是怎样的趋势呢?

  大家可以在PPT上看到,我放了一个美元的图标和一个小的设备,这个小的设备叫树莓派。能够正常的看到这个设备是非常小的,但它的性能却非常强,可以说随着电子设备二极管的高度集成,未来设备将趋向小型化。

  在电子化的基础上,计算设备另一个发展形式是量子化,最典型的是Dwave公司,它最后被Google收购了。

  计算思维(Computational Thinking)这个概念由CMU的周以真教授提出,刚开始大家都觉得云里雾里的,其实它的核心就是:我们要用计算机的基本概念比如迭代、循环、Loof做整体的问题求解、系统模块设计和人类行为分析的一种思维活动。从这个方面来讲,计算思维是基本问题解决之道。在生活中,比如我们大家常常去超市买东西,结账时我们会排成一列进行结算,这与我们计算机的队列是一样的。

  树莓派的出现其实是一个偶然的事情,同时也是必然的事情。这个偶然是大家没想到这样的一个东西会这么火,就连创始人Eben Epton也没想到。那它的出现为什么是必然的呢?

  2006年Eben Epton发现一个问题,剑桥大学近期入学的学生编程能力普遍较低,原因是什么呢?就是我们现有的“舒适的图像化编程”毁灭了创造的乐趣,于是他开始构思:我能不能做一种设备让学生有创造性的乐趣?之后Eben Epton和小伙伴一起设计了很多设备,但都不符合要求。

  2007年苹果的iPhone发布,世界迎来了互联网时代。2008年树莓派基金会设计了一款原型机,使用了Atmel的ATmega644,这个事件发生后,树莓派基金会终于找到一个“好基友”:ARM芯片。现在很多移动电子设备都使用ARM芯片,因为功耗小,所以它的电池是能够正常的使用很久的。当然,这样的一个东西设计出来后的产品推广需要很久。所以,到2011年问题就出现了,当时英国的产业链是不完全的,所以Eben Epton找到了深圳的一家工厂,于是第一批50片Alpha电路板上线年第一周,Eben Epton将电路板放在EBay上拍卖,结果10个电路板在Ebay上共筹集了16000英镑,这让他信心倍增,说明这种产品是非常受大家欢迎的。

  2012年2月29日树莓派1代发布,那时候要使用树莓派系统还需要插入一个很大的SD卡,然后基于千兆网络就可以连接USB了,它主要是把GPIO接口给露出来了,因为各位明白以前的设备都是集成在USB接口上的,所以那时候都是即插即拔的,现在突然露出来,那么就需要很大的创造性了。

  左边的树莓派既可以接USB的接口,又能通过USB接键盘,把SD插入进去以后就可以写入系统了。大家都知道操作系统在计算设备上是最重要的,因为它极大地降低整个应用开发的周期和成本,就是你在独特的设备上开发应用和在已经有了通用操作系统的设备上开发应用的时间周期和难度是不同的。

  1949年前,文盲的标志是不识字;1970年前后,文盲的标志是数理化不好;1990年前后,文盲的标志是英语不好;到了2013年,文盲的标志则是不会编程。在这种环境下,创客成为一种新的时尚,因为创造成为市场。以机器人为依托的创客教育,树莓派最后成为创客的首选,原因如下:

  MBH创客蜂巢是从树莓派机器人开始起步的,在这里聚集了很多创客,而想要成为一名创客,需要这些技能:

  单片机的功能比较单一,只是为了某种特定意义而设计,而树莓派是有操作系统的PC,功能全且性能强。

  在树莓派上,我们会将所有的代码写入SD卡中,就是我们一般说树莓派的系统是被烧进去的。那么,树莓派的系统都有哪些呢?

  官方的系统是基于Debian 的Raspbian OS,有些时候推荐使用Ubuntu Mate系统。随着树莓派被广泛地接受,微软也开始支持树莓派了,目前Win10IOT是支持的,同时Android也支持树莓派。而树莓派是装有Linux系统的PC,所以天然地能够正常的使用Python编程。Python在国内的普及率不是很高,但是在国外是被大量使用的,例如谷歌。在我的认知中Python只有操作系统的驱动程序是不能写的,其他所有程序都是可以写的,比如开发WEB、嵌入式设备等。

  能自动执行工作的机械设备就叫机器人——首先,它是能够自动的执行工作,其次是机械设备,比如挖掘机,或者拖地的机器人。

  一个机器人的组成部分包括机械装置(执行机构)、传感装置Sensors(传动+感知)、控制管理系统(大脑)。

  一句话概括:用Python代码,通过GPIO接口,去控制传动和感知设备,让机械设备按照预想的动作去执行任务。

  第一步就是组装硬件,硬件组装完后就是测试,会有专门的测试平台来测试。测试完以后我们要设计相应的软件。

  接下来我给大家重点讲下树莓派上比较特殊的,也就是树莓派GPIO接口与控制器。GPIO对于树莓派来说是很特别的,这也是吸引创客的根本原因。GPIO接口有40个pin和引脚,有的是接电压和电流的,还有的是用于外接传感器的。外接传感器有时会多于40个,那这样一个时间段该怎么去办呢?这样一个时间段我们就需要做一些树莓派的扩展板了。

  左上角是我们MBH创客蜂巢自己生产的一个扩展板,当初我们想要做智能农业和智能家居工程,但是发现40个接口根本不够,因为我们要接很多很多的传感器去感知整体空间里的环境,比如温度、湿度、酸碱度等等。

  这个扩展板有一个独立的CPU,然后上面设计了很多的引脚。你们可以在我们的论坛上或官网上找到代码,这些我们都已经开源了。

  我感觉最好玩的应该是图中下部位置的扩展板了,它并没有像树莓派别的设备一样把GPIO接口用引脚给引出来,它只是打了几个孔。有人说我们是用更大的板子把所有的孔或Pi Zero设备集在一起形成集群一样的扩展板,但是Pi Zero设备是比较小的,如果要去扩展的话是可以插很多Pi Zero设备的,比如你插100个,总体积也不会有什么大的变化。所以,有的人就在这上面挖矿,也就是挖比特币,还有人纯粹把它当做集群,相当于NOS,可以在里面存入大量文件,而且还是并行的解决方法,相当于你可以对你的文件进行多重备份,而不用害怕它会丢失了。

  大家都知道树莓派和Python是可以天然地结合在一起的,所以天然的Python在GPIO接口上有库:

  关于树莓派的控制器,这里我们主要讲下步进电机。树莓派的GPIO接口能控制其他装置,只要你给它信号,这个信号并不全是脉冲信号,可以是连续的或跳跃的各种信号——给它规则的跳跃信号就能控制步进电机,不规则的信号就能控制其他传动装置或感应装置。

  如果我们把机器人与人做类比的话,那么传感器对应人又是什么呢?传感器就像人类的器官一样,可以听、说、看、动。传感器种类是非常多的,我们大家可以通过GPIO接口或是扩展板将这些传感器接入到树莓派中,还能够用Python的库控制它们。

  常用的传感器有超声波传感器、红外传感器、温湿度传感器。所谓传感器,就能将传感信号感知成普遍的电信号的设备。比如超声波传感器,可以把声波信号映射为电信号。

  这是我们自己设计的一款飞行机器人,现在也叫无人机。当时我们在翻译一本书叫《树莓派机器人蓝图》,其中第七章就是讲飞行机器人的,但是它的飞控是用Pix hawk,而Pix hawk的价格非常昂贵,用完之后还不能做他用。于是我们想是否能用树莓派去做无人机的飞控呢?前面我们也讲过,树莓派和代码其实构成了整个机器人的大脑,而无人机上的大脑就是飞控,它的螺旋桨被称为执行机构,电动机就是传输机构。我们用这样装置做出来的飞控并不比Pix hawk或是Pix 4性能差。在这样的一个过程中,刚开始我们的代码是用C语言写的,写完之后发现CPU的使用率会达到100%,不过后来经过优化整个CPU的使用率也不过8%,这也就验证了树莓派是可完全用来做无人机的飞控的!

  我们用倒叙的方式来思考。首先,它要让四个螺旋桨转动,因为只有螺旋桨转动无人机才能起飞。而螺旋桨在转动过程中要执行哪些工作呢?比如无人机在转弯的时候怎么办?在这样一个时间段就需要两个螺旋桨转动的速度快些,另外两个螺旋桨转动速度慢些。无人机在飞行过程中两个螺旋桨是正转,而另外两个螺旋桨是反转的,执行这些命令也需要传感。

  现在大部分无人机都是由一个手柄,或者是手机APP来控制。这些控制设备通过websocket来传输命令信号,信号在CPU上经过处理后,结果通知到GPIO接口,然后GPIO接口向传动装置发送命令信号,传动装置再向感知设备发送信号。在无人机上,电机是传动装置,当GPIO接口向它发送命令信号后,螺旋桨会随之正转或反转。

  另外,无人机的平衡也最重要。所以,我们在无人机上加了一个陀螺仪,陀螺仪在很多领域都有应用,无人机的平衡需要它的四个叶片转动速度一样,而且整个无人机不发生倾斜的情况下无人机才能保持平衡。那么,我们就需要在代码上进行补偿。

  如果你想用树莓派做无人机,用这一套代码就够了。如果你想加一些传感器,比如摄像头,那么就加一个camera.py的代码就好了。

  既然是个小车,那肯定是能走的。而避障,也就是碰到一个物体要停下来,避障需要传感器,比如超声波传感器,或者红外传感器。最后还有一个“智能”,比如它第一次走是一个探索的过程,第二次走就会走的更顺利,这样一个时间段我们大家可以加入一些机器学习的方法,让整个路径得到优化。也就是说,这个小车要能走、能避障、能学习。

  这里的代码多了一个aeduino,是因为小车在避障过程中需要很快地刹车,而树莓派的实时数据的处理性能没有aeduino好。然后再加入一些机器学习的算法,这个小车就算有些智能了。

  如果大家认为我今天讲得不够详细,可以去看《树莓派机器人蓝图权威宝典》这本书。这本书通过70个案例讲述如何一步步用树莓派做机器人。

  A:因为树莓派的OS使用了Linux kernel,所以可完全。现在树莓派嗨推出了桌面操作系统PIXEL OS。

  Q:单片机上有各种总线(串口 can口等) 一般的传感器单片机都可使用啊?难道树莓派有些特殊传感器?

  Q:树莓派操作系统稳定性怎么样?因为很多项目由于稳定性原因不采用这种嵌入式,转向plc了。

  A:稳定性经过几年的发展还是能的,但是现在在工业上稳定性不好,尤其是有电磁干扰的情况下树莓派不稳定。

在线留言

看不清?点击更换看不清?
在线客服
联系方式

热线电话

13812953225

上班时间

周一到周五

公司电话

13812953225

二维码
线