电机与传感器
第1章
电机是机器人的执行机构,让机器人拥有运
动的能力,传感器是机器人的感知系统,可以从
环境中获取信息,让机器人拥有知觉功能和反应
能力。只有深入了解机器人的电机与传感器,在
机器人设计中才能更好地发挥它们的功能。

Fll+WRO乐高机器人竞赛教程 4校 正文.indd 1 


2022/8/17 14:30:05 


FLL+WRO乐高机器人竞赛教程——机械、巡线与 
PID

1.1 乐高机器人
学习目标
学习目标学习目标


(1)(1)了解乐高机器人。了解乐高机器人。
(2)(2)认识乐高机器人的主控制器、电机以及各种传感器。认识乐高机器人的主控制器、电机以及各种传感器。
(3)(3)学会运用机器人编程显示各种数据,包括传感器数据和变量数据。学会运用机器人编程显示各种数据,包括传感器数据和变量数据。
(4)(4)学会运用机器人编程绘制各种数据图像,并能够根据图像分析数据。学会运用机器人编程绘制各种数据图像,并能够根据图像分析数据。
乐高机器人是一款非常普及的可编程积木式机器人,目前主要有 
spike机器人和 
EV3
机器人两种型号,如图 
1.1.1和图 
1.1.2所示。这两种机器人可使用乐高积木进行机器人的
设计,并通过相应的类 
Scratch图形化模块或 
Python语言进行编程。其中 
spike机器人的编
程软件可以直接进行 
Python编程,所以 
spike机器人的 
Python编程比 
EV3机器人更方便一些。


图 
1.1.1 spike机器人(新款)图 
1.1.2 EV3机器人(旧款)

1.1.1 spike机器人
1.主控制器
乐高 
spike机器人拥有一个质量较小的主控制器,如图 
1.1.3所示,主控制器内置 
MicroPython操作系统,主频为 
100MHz,闪存为 
1MB,内存为 
32MB,可用于存储程序、
声音等内容,控制器上标注了 
A~ 
F共 
6个用于连接各种传感器和电机的端口,控制器不
仅配有蓝牙、可编程的三键导航和 
5×5的 
LED矩阵灯式白色显示屏,还内置了三轴加速
度计和三轴陀螺仪传感器。

2


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 2 


2022/8/17 14:30:06 


第1章电机与传感器


图 
1 .1.3 spike机器人的主控制器

2.力传感器
力传感器可以检测简单的触碰,还可以测量压力的大小,如图 
1.1.4所示。采样率为 
100Hz,当按下的深度为 
0~ 
2mm时,为触碰模式,当按下的深度为 
2 ~ 8mm时,可测量
力的大小,测量范围为 
2.5~ 
10N,分辨率为 
0.1N,测量精度为 
± 
0.65N。


图 
1.1.4 力传感器

3.超声波传感器
超声波传感器可以利用超声波技术来测量自身与物体表面之间的距离,如图 
1.1.5所示。
超声波传感器的采样率为 
100Hz,测量范围为 
5 ~ 200cm,测量精度为 
± 
2cm,快速感应距
离为 
5 ~ 30cm,测量精度为 
1.5cm,入射角为 
± 
35°(因距离而异),分辨率为 
1mm。


图 
1.1.5 超声波传感器

4.光电传感器
光电传感器可以测量物体表面的颜色、反射光强度和环境光强度,如图 
1.1.6所示。光
电传感器的采样率为 
100Hz,在颜色模式下,光电传感器可测量的颜色包括:无颜色、白色、

3


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 3 


2022/8/17 14:30:06 


FLL+WRO乐高机器人竞赛教程——机械、巡线与 
PID

蓝色、黑色、绿色、黄色、红色、中度蔚蓝色和亮红紫色。颜色和反射光的最佳检测距离
为 
16mm,当然这个距离还要取决于物体尺寸、颜色和表面。


图 
1.1.6 光电传感器

5.中型电机
中型电机可同时作为电机和角度传感器,如图 
1.1.7所示,电机在无负载的情况下,其
转速约为 
185r/min,最高效率时的扭矩为 
3.5N·cm,具体数据如表 
1.1.1所示。中型电机
内置的角度传感器可以测量电机的旋转角度和旋转速度,每圈的测量精度小于 
± 
3°,其中,
旋转速度为电机当前速度与最大设计速度的百分比。中型电机内置的角度传感器对角度和
旋转速度的采样率为 
100Hz。


图 
1.1.7 中型电机

表 
1.1.1 中型电机参数

中型电机状态扭矩(N·cm)转速(r/min)电流(mA)
空载 
0 185 ±15 % 110 ±15%
最高效率 
3.5 135±15% 280±15%
失速 
18 0±15% 800±15%

以上所有性能数据都是在 
7.2V电压下测量的。

6.大型电机
如图 
1.1.8所示,大型电机在无负载的情况下,其转速约为 
175r/min,每圈的测量精度

4


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 4 


2022/8/17 14:30:07 


第1章电机与传感器


小于 
± 
3°。大型电机的各种参数如表 
1.1.2所示。大型电机内置的角度传感器可以测量电
机的旋转角度和旋转速度,测量的旋转速度值为电机当前速度与最大设计速度的百分比值。
大型电机内置的角度传感器对角度和旋转速度的采样率为 
100Hz。


图 
1.1.8 大型电机

表 
1.1.2 大型电机参数


大型电机状态扭矩(N·cm)转速(r/min)电流(mA)
空载 
0 175 ±15% 135±15%
最高效率 
8 135±15% 430±15%
失速 
25 0±15% 1900±15%

以上所有性能数据都是在 
7.2V电压下测量的。 


spike机器人还兼容 
spike基础套装的传感器和电机,如灯光模块( 
3×3彩色矩阵灯)
和小型电机,如图 
1.1.9和 
1.1.10所示。


图 
1.1.9 3×3彩色矩阵灯图 
1.1.10 小型电机

1.1.2 EV3机器人
1.主控制器 
EV3机器人的核心是一个可编程的控制器,如图 
1.1.11所示,它拥有 
Linux操作系统,
使用的 
ARM 9处理器的主频为 
300MHz,闪存为 
16MB,随机存取存储器为 
64MB,可使

5



Fll+WRO乐高机器人竞赛教程 4校 正文.indd 5 


2022/8/17 14:30:07 


FLL+WRO乐高机器人竞赛教程——机械、巡线与 
PID

用微型 
SD卡(TF卡),最多可支持 
32GB,黑白液晶显示屏的分辨率为 
178×128像素。
在 
EV3控制器上,4个传感器端口分别用 
1、2、3、4标注,4个电机端口分别用 
A、B、C、 
D标注,可通过蓝牙与计算机或另一个控制器连接,电源可选择原装的 
7.4V充电电池或 
6
个 
5号电池。


图 
1.1.11 EV3主控制器

2.大型电机和中型电机
图 
1.1.12所示为大型电机,大型电机的转速为 160~ 
170r/min,旋转扭矩 
20 N·cm,
失速扭矩为 
40 N·cm,大型电机的转速低但旋转力量大。图 
1.1.13所示为中型电机,中型
电机的转速为 240~ 
2500r/min,旋转扭矩为 
8 N·cm,失速扭矩为 
12N·cm,中型电机的
转速高但旋转力量小。大型电机和中型电机都内置了角度传感器,可以测量电机旋转的角度,
角度传感器的分辨率为 
1°。


图 
1.1.12 大型电机图 
1.1.13 中型电机

3.光电传感器
图 
1.1.14所示为光电传感器,光电传感器可以测量物体表面的颜色和反射光强度,以
及环境光强度,采样率为 
1000Hz。颜色模式下可测量的颜色包括黑色、蓝色、绿色、黄色、
红色、白色和棕色,还可以检测无颜色状态。在反射光强度模式中,光电传感器可测量从
红灯(即发光灯)反射回来的光强度。在环境光强度模式中,该颜色传感器可以测量从周
围环境进入检测窗口的光强度,如太阳光或手电筒的光束。当处于“颜色模式”或“反射

6


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 6 


2022/8/17 14:30:08 


第1章电机与传感器


光强度模式”时,为了测量更精确,传感器需正对着物体的表面。适当靠近但不接触正在
检测的物体表面,通常这个距离为 
8~ 
10mm。


图 
1.1.14 光电传感器

4.陀螺仪传感器
图 
1.1.15所示是陀螺仪传感器,陀螺仪传感器可以检测单轴旋转的角度,采样率为 
1000Hz。如果朝着箭头指示的方向旋转陀螺仪传感器,传感器可检测出旋转的角度和速率。
其旋转 
90°的误差为 
± 
3°,传感器可以测量出的最大旋转速率为 440°/s。


图 
1.1.15 陀螺仪传感器

陀螺仪传感器不稳定,角度容易自发性偏移。陀螺仪传感器在插入 
EV3 程序块时必须
保持传感器静止。

5.触动传感器
图 
1.1.16所示是触动传感器,触动传感器可以检测传感器的红色按钮何时被按压及何
时被松开,采样率为 
1000Hz。在机器人中加装触动传感器,当机器人触碰到物体时,触动
传感器被按压,机器人可以做出反应,例如,机器人停止移动,或者转弯,实现避障功能。


图 
1.1.16 触动传感器

7


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 7 


2022/8/17 14:30:08 


FLL+WRO乐高机器人竞赛教程——机械、巡线与 
PID

6.超声波传感器
图 
1.1.17所示为超声波传感器,超声波传感器可以测量与前方物体间隔的距离,采
样率为 
1000Hz。它是通过发射超声波并测量声波被反射回传感器所需的时间来完成任务
的。常规使用的是单位为 
cm,测距范围是 
3~ 
250cm,测量精度为 
± 
1cm。当反馈数值为 
255cm时,那就意味着超出了测量范围,传感器已经检测不出前方任何物体。


图 
1.1.17 超声波传感器

7.其他传感器 
EV3机器人还配有红外传感器、红外信标、温度传感器和声音传感器,除此之外还有
第三方厂家为 
EV3机器人生产的传感器,如高性能的光电传感器、力学传感器、指南针传
感器等。

对比 
EV3机器人和 
spike机器人, 
EV3机器人的主控制器比 
spike机器人的运算速度要
快一点,并且 
spike机器人的电机转速也不及 
EV3机器人,但考虑到 
spike机器人的主控制
器和电机轻小的特点,在设计成竞赛机器人后,两种机器人的电机和主控制器的综合性能
是差不多的,甚至 
spike机器人略占优势。另外, 
spike机器人的光电传感器、触动传感器
以及内置的陀螺仪传感器的性能均优于 
EV3机器人的传感器,并且内置的加速度传感器更
是 
EV3机器人所没有的,所以 
spike的整体性能优于 
EV3机器人。

在机器人竞赛中,机器人大多设计为轮式机器人,大型电机多用于驱动机器人的轮子,
中型电机多用于机械臂的驱动,光电传感器用于检测地面和任务模型,超声波传感器用于
探测场地上的障碍物,陀螺仪传感器用来记录机器人的方位,触动传感器用来检测机器人
是否与物体接触或撞击,通过以上方式机器人可进行场地定位、任务模型的识别以及各种
任务的完成。

1.1.3 机器人的数据显示
1. spike机器人的数据显示
在机器人程序的设计中,需要测量一些由传感器采集的数据,为了获得这些数据,可
以通过计算机或机器人的主控制器将这些数据显示出来。

当机器人与计算机成功连接,在 
spike机器人的编程界面可以直接显示连接在主控制器
端口上的传感器数据,如图 
1.1.18所示。

8


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 8 


2022/8/17 14:30:09 


第1章电机与传感器


图 
1.1.18 数据查看

单击主控制器图标按钮,弹出的界面如图 
1.1.19所示,在这个界面上不仅可以显示

主控制器上 
6个端口的数据,还可以显示电池电量、三轴陀螺仪数据、加速度计数据,通

过单击按钮可以选择传感器不同模式下的数据。


图 
1.1.19 更全面的数据查看
定义了新的变量时,在编程界面的右侧会直接显示所有变量的值,如图 
1.1.20所示。


图 
1.1.20 显示变量的值

采用编程的方式也可以显示机器人工作时的数据,使用写入模块,如图 
1.1.21所示,
写入模块可以显示一段文本,这个文本包括输入的传感器数据和变量,例如,设计一个光
电传感器数据显示程序,如图 
1.1.22所示,当程序运行时,可以在计算机端实时显示传感
器的数据,如图 
1.1.23所示。

9


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 9 


2022/8/17 14:30:09 


FLL+WRO乐高机器人竞赛教程——机械、巡线与 
PID


图 
1.1.21 写入模块


图 
1.1.22 传感器数据显示程序图 
1.1.23 显示的传感器数据

图 
1.1.24所示是线形绘制模块,绘制线形图模块可以捕获输入的值,这个值包括传感器
的值和变量的值,并以指定的颜色线条绘制其与时间的关系图。例如,设计一个可绘制光电
传感器数据图像的程序,如图 
1.1.25所示,运行程序,在计算机端可显示光电传感器测量的
反射光值与时间变化的图像,如图 
1.1.26所示,其中横坐标表示时间,纵坐标表示光值。


图 
1.1.24 线形绘制模块


图 
1.1.25 绘制线形图的程序图 
1.1.26 程序绘制的线形图

2. EV3机器人数据显示 
EV3机器人的主控制器自带液晶显示屏,很多传感器数据和变量值都可以在这个液晶
显示屏上显示。在主控制器的 
Port View模式下可以实时显示所有端口的传感器数据,如
图 
1.1.27和图 
1.1.28所示。

10


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 10 


2022/8/17 14:30:09 


第1章电机与传感器


图 
1.1.27 选择“Port View”查看数据图 
1.1.28 显示触动传感器数据“1” 


EV3机器人的数据也可以通过程序显示在主控制器上,使用写入模块,如图 
1.1.29所示,
可以将传感器数据或变量直接在 
EV3控制器的屏幕上显示,其程序设计示例如图 
1.1.30所
示,当程序运行时,在 
EV3控制器的显示屏上会实时显示端口 
3的光电传感器反射光值。


图 
1.1.29 两种写入模块


图 
1.1.30 程序显示传感器数据 


EV3主控制器的显示屏每行有 
178 像素(宽),每列有 
128 像素(高)。 
x坐标值为
显示屏从左到右,范围是 
0~ 
177。y坐标值为显示屏从顶部到底部,范围是 
0~ 
127,如
图 
1.1.31所示。 


xy
图 
1.1.31 EV3屏幕
采用 
EV3也可以绘制传感器数值与时间变化关系的图像,使用 
EV3 lab软件设计程序,
如图 
1.1.32所示,该程序绘制的是光电传感器随时间变化的图像,程序中的第一个显示模

11


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 11 


2022/8/17 14:30:10 


FLL+WRO乐高机器人竞赛教程——机械、巡线与 PID

块是在屏幕的中央绘制一条横直线段,然后以此线作为一个“参考线”,参考线在 
y轴的
位置是 
60,同时光电传感器的数值加 
60,使光电传感器的数值相对屏幕整体下移 
60,若
采集的数据大于 
0,则显示在“参考线”的下方,若采集的数据小于 
0,则显示在“参考线”
的上方。


图 
1.1.32 EV3 lab软件程序

试一试
(1)设计程序,通过程序实时显示各传感器的数据。
(2)设计程序,绘制各传感器数据随时间变化的图像。
1.2 伺服电机
学习目标

(1)知道伺服电机的组成和特点,学会设计程序控制伺服电机的转动。
(2)认识时间模块和循环模块,学会运用时间模块测量循环模块运行的时间。
(3)认识速度、转速、加速度等物理概念,学会运用角度传感器编程控制电机的
转动。
(4)知道电机制动的方法,学会设计程序保护电机。
1.2.1 伺服电机原理
机器人的运动离不开动力系统,动力系统为实现机器人的移动、机械臂的运动以及其
他各种复杂行为提供了重要保障,动力系统还决定机器人动作的稳定性、灵活性、准确性
和可操作性,直接影响机器人的整体性能。

12


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 12 


2022/8/17 14:30:10 


第1章电机与传感器


乐高机器人动力系统的核心是伺服电机,其中包括大型电机、中型电机和小型电机。
伺服电机内置了有刷直流电机、角度传感器(旋转编码器)和减速齿轮机构,不仅具有正
转和反转、从低速到高速的连续变速旋转的功能,还可以利用内置的角度传感器实时测量
电机旋转的角度和速度,从而精准控制电机按指定角度、速度进行旋转和制动。伺服电机
可以让机器人的运动更加精准可控且灵活自如。

有刷直流电机是一种使用非常广泛的电机,由转子、定子(永磁体和外壳)、永磁体、
电刷、换向器和外壳组成,如图 
1.2.1所示。转子是电机中央可以旋转的部分,定子包括可
以提供磁力的永磁体和外壳;当电机反接电源的正负极时,会改变电机的旋转方向,电机
转速与施加的电压成正比,电机驱动力(转矩)与电流成正比,转速与负载大小成反比,
电机的主要特性呈线性变化,易于控制。


图 
1.2.1 有刷直流电机

有刷直流电机对突然加速和减速的反应十分迅速,可以较平滑地旋转。有刷直流电机
本身不具备恒速旋转的能力,它的转速可以随着线圈的外加电压和负载的变化而变化,为
了实现匀速旋转,需要使用角度传感器对电机转速进行控制。

机器人往往不需要伺服电机有很高的转速,但是需要有较大的驱动力,所以伺服电机
的内部添加了减速机构,根据伺服电机的形状和功能设计要求,其减速机构通常有多级齿
轮减速和行星齿轮减速。如果在机器人设计中确实需要较大的转速,可以使用伺服电机搭
配齿轮加速机构来获得高转速。

1.2.2 电机编程模块
伺服电机的编程控制主要面向电机的功率、旋转角度和旋转速度,其基本的编程模块
如表 
1.2.1所示,其中每一行的编程模块功能相同。当然还有很多其他更智能的电机模块,
使用这些模块会提高机器人的运动性能。

13



Fll+WRO乐高机器人竞赛教程 4校 正文.indd 13 


2022/8/17 14:30:10 


FLL+WRO乐高机器人竞赛教程——机械、巡线与 
PID

表 
1.2.1 基本的单电机编程模块

功能 
spike电机模块 
EV3电机模块
启动功率
角度重置
旋转角度
旋转速度
启动速度


电机功率的参数是以电机最大功率的百分比来设置的,其参数范围是 
-100~ 
100,如
功率 
50表示电机最大功率的 
50%,正负号表示旋转的方向,功率为 
0则表示停止向电机供
电。旋转角度控制包含重置旋转角度和旋转角度测量,重置旋转角度指的是重置当前电机
的角度为 
0°,旋转角度测量模块可以用来测量电机实时旋转的角度,角度值大于 
0表示电
机正转,角度值小于 
0表示电机反转。

电机的控制分单电机控制和双电机控制两种,双电机模块如图 
1.2.2所示。双电机模块
与单电机模块的编程方法类似,但双电机模块更多用于机器人的移动控制中,双电机模块
也可以实现功率、速度、角度、圈数和秒数的控制。在机器人竞赛中使用双电机模块可以
让程序编写更简单。

(a)spike (b)EV3
图 
1.2.2 双电机模块
常规的电机停止模式有“惯性滑行”和“保持位置不动”, 
spike机器人还有一种特殊
的停止模式 
—制动,即给电机添加摩擦阻力,其制动效果为电机可以旋转,但有较大的
阻力,直至电机停止旋转。电机停止的编程模块如表 
1.2.2所示,其中, 
spike的“保持位
置不动”模式与“保持位置”模式的功能相同。

表 
1.2.2 电机制动模块


功能 
spike电机停止模块 
EV3电机停止模块
关闭电机
制动模式


14


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 14 


2022/8/17 14:30:11 


第1章电机与传感器


使用这些电机编程模块可以实现对电机的任意控制,例如,让电机以功率 
80正向旋转,
当旋转的角度大于 
360°时,电机保持位置不动,最后显示电机实际旋转的角度,其程序设
计如图 
1.2.3所示。


(a)spike (b)EV3
图 
1.2.3 电机旋转的程序
任务探究1 


A电机以功率 
50旋转 
1000°后停止,然后 
B电机再旋转 
1圈,其程序设计如图 
1.2.4所示,
在 
A电机旋转的过程中,使用外力阻止其旋转,该电机模块后面的程序还会运行吗?


(a)spike (b)EV3
图 
1.2.4 电机旋转测试程序

通过探究发现,当 
A电机被卡住不转时,由于电机还没有旋转到设定的角度,所以该
电机模块的程序命令也就无法执行结束,导致后面的程序无法运行。对机器人来说这是非
常危险的,既容易损坏电机,也不能让后面的程序正常运行。在机器人竞赛中,这样的现
象常发生于机械臂被卡住而未能旋转到指定位置,机器人撞击到墙壁或是任务模型,以及
地面摩擦力过大使得驱动轮电机未能旋转到指定位置时,这些情况都会导致后面的程序不
能运行,机器人就会卡在那个地方不动。

15


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 15 


2022/8/17 14:30:11 


FLL+WRO乐高机器人竞赛教程——机械、巡线与 
PID

因此,若要使用电机旋转至指定位置的程序控制方式,一定要确保电机能够转到相应
的位置,也可以通过以下改进的方法,提高程序运行的可靠性。

方法 
1

启用电机速度控制,当速度小于阈值时,说明旋转的电机遇到阻力,程序自动控制电
机停转,程序设计示例如图 
1.2.5所示,其中参数“ 
3”即为速度阈值,程序中的等待模块
的时间设置为 
0.35s,作用是让电机旋转到较高转速时再启动旋转速度的检测,具体详细内
容参见 
1.2.8节。


(a)spike (b)EV3
图 
1.2.5 电机自动停转的程序

采用速度控制电机旋转是最常用的一种程序设计方法,可用于机械臂系统和机器人移
动的控制中。采用速度控制电机旋转,速度阈值的设置是关键,例如,在机械手的控制中,
控制电机速度的阈值越小,机械手的力量越大;阈值越大,则机械手的力量越小,但过大
的阈值容易发生电机随意停止的风险。所以阈值设置需要经过多次测试,以保证程序控制
的稳定。

方法 
2

使用时间来控制电机旋转,由于时间是不会停止的,即使旋转中的电机被卡住,只要
时间一到,该电机的程序就会运行结束。程序设计示例如图 
1.2.6所示,必要时也可以采用
电机旋转指定角度和电机旋转指定时间组合的方法。


(a)spike (b)EV3
图 
1.2.6 电机旋转指定时间的程序
16


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 16 


2022/8/17 14:30:12 


第1章电机与传感器


使用时间控制电机旋转不能精确控制电机旋转的角度,所以这样的方法常用于精度不
高的场景。也可以用于机械限位的机械臂系统和机器人的撞击定位,给电机设置充足的运
行时间,保证机械臂系统和机器人能够运动到被限定的位置。

方法 
3

设置电机旋转到指定角度的位置,同时采用计时器开始计时电机旋转的时间,如果电
机旋转到指定角度位置或超过控制的总时间,则电机停止旋转,程序设计示例如图 
1.2.7
所示。


(a)spike (b)EV3
图 
1.2.7 超时电机制动的程序

有的任务需要机械臂旋转较多的圈数,难以进行机械限位,若是单纯采用时间控制,
可以避免电机卡住的风险,但程序中必须设置足够多的时间,容易造成时间的浪费。采用
速度和时间联合控制电机旋转,若电机被卡住或旋转超时,直接放弃该任务,机器人仍可
以完成接下来的任务。

任务探究 
2

分别启动电机功率模块和电机速度模块来控制电机的旋转,程序设计示例如图 
1.2.8和
图 
1.2.9所示,先后运行这两个程序,用手阻碍旋转中的电机,阻碍但不阻止,比较两种程
序控制下的电机旋转效果。


图 
1.2.8 功率控制和速度控制的程序(spike)

17


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 17 


2022/8/17 14:30:12 


FLL+WRO乐高机器人竞赛教程——机械、巡线与 
PID


图 
1.2.9 功率控制和速度控制的程序( 
EV3)

采用功率控制电机旋转时,如果旋转中的电机遇到了阻力,其转速会迅速减小,容易
停止旋转。但采用速度控制电机旋转时,如果电机遇到阻力,则程序会自动对电机的功率
进行补偿,使电机的转动尽可能维持在设定的旋转速度上。

任务探究 
3

设计程序,将电机停止模式分别设置为“制动”“保持位置不动”和“惯性滑行”,
比较三种制动的效果,程序设计示例如图 
1.2.10、图 
1.2.11所示。


图 
1.2.10 电机“制动”“保持位置不动”和“惯性滑行”的程序(spike)


图 
1.2.11 电机“保持位置不动”和“惯性滑行”的程序(EV3)

在“制动”模式下,当电机旋转到某个角度时,程序会控制电机进行减速制动,即增
大电机的旋转阻力,电机会迅速停止,但使用较大的外力仍可以旋转电机。

在“保持位置不动”模式下,电机停止旋转后会保持在某个位置不动,即使用手也很
难转动电机。例如,当电机停在某个角度时,用手顺时针旋转电机,会感受到很大的阻力,
松开之后,电机则会自动逆时针旋转到之前的角度。

18


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 18 


2022/8/17 14:30:12 


第1章电机与传感器


在“惯性滑行”模式下,当电机旋转到某角度时,主控制器停止向电机供电(仍向角
度传感器保持供电),由于惯性,电机可能还会继续旋转一定角度才能停下来。

1.2.3 时间与循环
机器人的运动一定有时间的参与,例如,机器人从当前位置运动到另一个位置,如果
机器人运动得快,则需要的时间就短,如果机器人运动得慢,则需要的时间就长一些,所以,
控制机器人的运动经常离不开对时间的编程,这就需要用到时间模块,如表 
1.2.3所示,时
间模块对时间的测量精度可达到 
1ms。

表1.2.3 时间模块

功能 
spike时间编程模块 
EV3时间编程模块
时间重置
时间测量
时间单位秒秒


任务探究

运用时间模块测量循环模块循环一次所需要的时间是多少。

由于单次的循环时间未知,可猜测单次循环的时间可能很小或为 
0(小于某极限值),
因此,单次循环时间的测量不仅是判断循环需不需要时间,若单次循环需要时间,还要测
出单次循环的时间是多少。

为了避免测量的偶然性,提高测量精度,减小测量误差,可以通过多次测量的方法,
即测量 
1000次、10000次、100000次或更多次循环的总时间,然后计算平均数,获得单次
循环时间,程序设计如图 
1.2.12所示。


(a)spike (b)EV3
图 
1.2.12 测量循环时间的程序
19


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 19 


2022/8/17 14:30:13 


FLL+WRO乐高机器人竞赛教程——机械、巡线与 
PID


当循环模块的内部无编程模块时, 
EV3机器人循环 
10000次的总时间约为 
0.4s,即单
次循环时间约为 
0.00004s,用同样的方法测量 
spike机器人循环 
10000次的总时间约为 
2.459s,
则单次循环的时间约为 
0.0002s。当在循环模块内部添加编程模块时,单次循环的时间会增
加,尤其添加电机模块,其单次循环时间约增加 
10倍。

单次循环时间反映了机器人的中央处理器的性能和程序复杂度,对同一个程序,单次
循环时间越少,处理器运算速度越快,性能越好。但对于这两种机器人,在学习和竞赛中,
其运算速度都能够满足机器人设计的需要。

以上探究说明,在进行机器人程序设计时,一定要尽可能简化程序,不必要的循环程
序可以终止运行,以此保障机器人有较快的程序运行速度和效率。

试一试
在循环模块内添加电机、变量等编程模块,测试循环模块循环一次的时间是多少?

1.2.4 电机的变速控制
要准确地描述一个物体的位移快慢,需要引入一个概念——速度,速度指的是物体在
单位时间内通过的路程。可表示为
速度 
=路程 
÷时间
若用 
v代表速度,s表示路程,t表示时间,则速度公式可表示为: 


s 


v= 


t

速度的常用单位是 
m/s,读作米每秒,换算关系:1m/s=100cm/s=3.6km/h。

从速度的定义出发,如果要探究一个物体运动的速度,就需要测量物体通过的路程和
通过这段路程所用的时间。

如果物体直线运动的速度随着时间越来越大,这就是加速运动。例如,一辆小车在笔
直的公路上行驶,每隔 
1s测量小车的速度,其速度变化为 
5m/s、10m/s、15m/s……,这就
是匀加速直线运动,小车每秒增加的速度为 
5m/s,这就是小车的加速度,记为 
5m/s2,读作
“五米每秒的平方”。生活中,从斜面上滚落的小球、自由下落的苹果、加速行驶的火车、
正在地面加速即将起飞的飞机,等等,这些都可以近似看成是匀加速直线运动。

如果物体直线运动的速度随时间越来越小,这就是减速直线运动,若物体每秒减小的
速度相同,就叫作匀减速直线运动。

电机的加速旋转可以通过单位时间内增加恒定的速度或功率来实现,即在单位时间
内增加相同的速度或功率,例如,让电机每间隔约 
0.05s功率增加 
1,即第一个 
0.05s内
功率为 
1,第二个 
0.05s内功率为 
2,第三个 
0.05s内功率为 
3……,其程序设计示例如
图 
1.2.13所示。

20


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 20 


2022/8/17 14:30:13 


第1章电机与传感器


(a)spike (b)EV3
图 
1.2.13 电机加速的程序
这里使用了等待时间模块,由于循环本身也需要时间,所以电机功率增加的时间间隔
大于 
0.05s。若需要精确的时间控制,可以使用计时器模块来设计程序,如图 
1.2.14所示。


(a)spike (b)EV3
图 
1.2.14 计时器模块控制循环时间的程序
21


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 21 


2022/8/17 14:30:13 


FLL+WRO乐高机器人竞赛教程——机械、巡线与 
PID

除了使用计时器模块控制电机速度,还可以采用旋转角度控制电机的速度,其程序设
计示例如图 
1.2.15所示,使用这种控制方法可以准确获得电机在加速过程中旋转的总角度。


(a)spike (b)EV3
图 
1.2.15 旋转角度控制电机速度的程序
根据以上程序,电机速度每增加 
1,则电机旋转的角度就会增加 
5°,通过计算,电机
从速度 
10m/s加速到 
100m/s的过程中,电机旋转的总角度为
(100-10)×5°+1°=451°


由于判断条件


需要电机实际旋转角度大于变量计算的角度,

并且角度传感器测量的角度数据都是整数,所以上式在计算总角度时还需要加 
1°。

试一试
(1)设计程序,电机每间隔 
0.08s速度减小 
1,让电机速度从 
100减小到 
0。
(2)设计程序,采用旋转角度控制电机的速度,让电机逐渐减速至停止,并计算电机
在减速过程中旋转的总角度。
1.2.5 模拟匀加速运动
匀加速直线运动的物体受到的牵引力是恒定不变的,加速度越小,意味着牵引力越小,
较小且恒定的牵引力有利于物体内部的受力稳定,正如火车在启动时以很小的加速度做匀加
速直线运动,在车厢的桌上放置一杯水,不仅水杯不会倒,水杯内部的水面也不会有明显晃动。

理想的匀加速直线运动是难以实现的,若采用时间来控制电机做匀加速旋转,则难以
精确计算出机器人移动的距离。为此,可以采用角度控制电机近似做匀加速旋转。匀加速
直线运动的路程与加速度、速度的关系为

22


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 22 


2022/8/17 14:30:14 


第1章电机与传感器 


1 

s 
= 
2a 
. 
(v 
v.末
22
初)

其中, 
s表示物体移动的路程; 
a表示物体移动中的加速度; 
v末表示物体运动到终点时
的速度;v初表示物体运动开始时的初始速度。
在电机匀加速旋转的过程中,路程 
s可对应电机旋转的角度,初速度 
v初对应电机的初

1

始旋转速度,速度 
v末对应电机在一次程序循环中需要达到的旋转速度。 
2a
为机器人的加

速系数,这个系数越小,加速度越大,电机加速越快。在一次程序循环中,电机模拟匀加
速的算法可表示为
电机旋转的角度 
=系数 
×(当前速度 
2-初速度 
2)
当电机的功率非常小时,电机可能会没有足够的力量旋转起来,所以电机启动的初速
度一般在 
10m/s以上,模拟匀加速旋转的程序设计如图 
1.2.16所示。


(a)spike (b)EV3
图 
1.2.16 模拟匀加速旋转的程序
根据以上程序,电机的速度从 
10m/s加速到 
100m/s,理论计算电机在加速过程中旋转
的角度为 


0.1×(1002-102)+1°=991°
对于电机匀减速运动模拟的控制,为了保证计电机旋转角度的数值为正值,则在一次
程序循环中电机模拟匀减速运动的算法可表示为
电机旋转的角度 
=系数 
×(初速度 
2-当前速度 
2) 


1.2.6 拓展阅读:匀加速直线运动方程
若一辆小车初速度 
v初为 
10m/s,然后做匀加速直线运动,每秒的速度增加 
2m/s,即小
车的加速度 
a为 
2m/s2,其速度与时间的关系为 
v=v初 
+at

23


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 23 


2022/8/17 14:30:14 


FLL+WRO乐高机器人竞赛教程——机械、巡线与 
PID

其中,v表示小车速度,v初表示初速度,a表示加速度,t表示时间。
小车运动的路程与时间的关系为: 


12

s 
= 
vt 
+at

初 
2 

则小车运动的路程与初速度、末速度的关系为 


2as 
= 
v末 
2 .v初 
2

s 
= 
1 (v 
)

2a 
v.末
22
初

试一试
设计程序,让电机做减速运动,电机的速度从 
100减速到 
20,减速过程中,电机允许
旋转的角度为 
360°。

1.2.7 电机转速的测量
生活中,电风扇可以通过换挡来改变扇叶转动的快慢;汽车的仪表盘安装了转速表,
用来显示汽车发动机转动的快慢,而汽车轮子转动的快慢又直接决定汽车行驶的速度;缓
慢转动的摩天轮大约需要 
10min才能转动一圈。有的物体转动得快,而有的物体转动得慢,
那么我们怎样才能准确描述物体转动的快慢呢?物体转动的快慢又如何进行测量呢?

转速可以用来描述物体转动的快慢,指的是物体在单位时间内转动的圈数,常用的单
位是 
r/min,读作转每分钟,换算关系为 
1r/s=60r/min。计算方法是物体在一定时间内转动
的圈数与这段时间的商,可表示为

转速 
=圈数 
÷时间
用 
v表示物体的转速;n表示转动的圈数;t表示转动的时间,则转速还可以表示为 
n 


v= 


t

任取一个伺服电机,在伺服电机上安装一个轮子,设计程序,运用伺服电机内置的角
度传感器测量电机在 
100功率下的转速,测量方法如图 
1.2.17所示。


图 
1.2.17 轮子过去和现在时刻的旋转位置

24


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 24 


2022/8/17 14:30:15 


第1章电机与传感器


根据转速的定义,并将转速单位由“角度 
/s”转换为“r/min”,则有

当前角度值. 
过去角度值当前时间. 
过去时间

转速 
=
360 
÷60 

当前角度值. 
过去角度值1转速 
=
当前时间. 
过去时间 
× 
6
为了及时准确地测量电机的转速,可将过去时刻到当前时刻的时间间隔设置在 


0.05~ 
0.1s,时间间隔过小,转速测量不稳定,时间间隔过大,不能及时测量电机的转速。
根据以上分析,电机转速测量的程序设计如图 
1.2.18所示。
(a)spike (b)EV3
图 
1.2.18 电机转速测量的程序
运用以上程序测量各种电机在 
100功率下的空载转速,并将测量的转速记录到
表 
1.2.4中。

表 
1.2.4 各种电机在 
100功率下的空载转速

电机 
spike
中型电机 
spike
大型电机 
EV3
中型电机 
EV3
大型电机
转速
(r/min)

在机器人的编程模块中有专门测量电机转速的模块—速度模块,如图 
1.2.19所示,
速度模块已经将电机的转速换算为百分比模式,它可以大致反映电机的旋转速度。

25


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 25 


2022/8/17 14:30:15 


FLL+WRO乐高机器人竞赛教程——机械、巡线与 
PID


图 
1.2.19 速度模块

1.2.8 拓展阅读:电机堵转
电机通常有空载、负载和堵转(卡住不转)三种状态。空载是指电机不带负荷的旋转
状态,这时候电机的转速最快;负载是指电机带有负荷下的转动,由于负载会产生阻力,
这时候电机的转速会比空载时的转速低,阻力越大,转速越低;堵转是指电机由于负载过
大或机械故障等因素导致无法启动或停止转动的现象,但此时电机依然有电流(电流很大),
堵转非常危险,过大的电流会产生很多的热量,非常容易烧毁电机。

例如,使用 
EV3机器人、能量计和 
lab软件,测试一个乐高普通电机从正常的空转状
态到堵转状态时内部电流、电压和功率的变化,如图 
1.2.20所示,从图像中可以看到,0~ 
1.4s
电机是空载状态, 
1.4~ 
3.8s是电机被卡住的过程, 
3.8s以后电机是空载状态。即电机在空
载时,电流(黄色线)较小,功率(绿色线)也较小;当电机卡住不转时,电流陡然上升,
功率也迅速增大,电机卡住时的电流是空载状态下的 
20多倍。电机在卡住不转时,电流是
非常大的,这时候电能全部转化为热量,使电机内部线圈的温度迅速上升,很容易烧坏电机。


图 
1.2.20 电机从空载到堵转过程中的电压、电流和功率图像(EV3)

26



Fll+WRO乐高机器人竞赛教程 4校 正文.indd 26 


2022/8/17 14:30:16 


第1章电机与传感器


实际工作中的电机会带有负载,这时电机的转速往往比空载时的转速要低,而且当电
机的负载增加时,电机的输出力量会增大。

由于某些机械臂的旋转角度有限,在使用电机驱动机械臂时,电机容易处于堵转的状
态而难以发现。为了保护电机,需要设计电机保护程序,当检测到电机堵转时,通过程序
自动关闭电机。

正常旋转的电机会有转速,而堵转的典型现象是电机的转速为 
0,当然电机在不工作
时的转速也为 
0,并且电机的启动是电机转速从 
0逐渐增大的过程。通过程序可以测试出
电机启动过程中的转速变化,其测试程序如图 
1.2.21所示。图 
1.2.22是电机启动时的速度
变化图,图中显示的是电机空载启动过程中的速度变化,从图中可以看出,整个启动过程
所用的时间不超过 
0.35s,并且在 
0.2s时电机已经达到目标速度的一半以上。


图 
1.2.21 电机启动程序(spike)图 
1.2.22 电机启动时的速度变化图(spike)

为了避免电机的启动对堵转检测的影响,在启用保护程序时,可以让电机在启动时先
转一会儿,这个时间可以设置为 
0.2~ 
0.35s。等电机有了较高的转速以后,再启用保护程序,
保护程序检测电机的转速,当电机的转速为 
0或接近 
0时,关闭电机。其程序设计如图 
1.2.23
所示。


(a)spike (b)EV3
图 
1.2.23 电机保护程序
27


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 27 


2022/8/17 14:30:16 


FLL+WRO乐高机器人竞赛教程——机械、巡线与 
PID

电机在正常供电状态下,旋转速度的阈值设置得越小,电机停转时的旋转力量越大,
通过改变阈值的大小可以控制机械手的抓取力量。对于常规的机械臂的控制,电机旋转速
度的阈值一般为 
2~ 
20,电机旋转的速度阈值过大不利于堵转检测,阈值过小,电机的旋
转力量过大,且电机处于低速转动,这些对电机和机器人结构都有不利的影响。 


1.3 传感器
学习目标
学习目标学习目标


(1)(1)认识光的传播规律以及光电传感器原理。认识光的传播规律以及光电传感器原理。
(2)(2)掌握光电传感器的各种测量模式,学会运用光电传感器进行编程。掌握光电传感器的各种测量模式,学会运用光电传感器进行编程。
(3)(3)理解反射光强度与测量距离、灰度、颜色等元素的关系。理解反射光强度与测量距离、灰度、颜色等元素的关系。
(4)(4)知道光值标准化的概念,学会设计程序进行光值的标准化。知道光值标准化的概念,学会设计程序进行光值的标准化。
(5)(5)认识陀螺仪传感器和加速度传感器,认识陀螺仪传感器和加速度传感器,学会运用这些传感器控制机器人的运动。
学会运用这些传感器控制机器人的运动。学会运用这些传感器控制机器人的运动。
1.3.1 光电传感器原理
光在真空或是空气、玻璃、水等透明均匀介质中都是沿着直线传播的,如图 
1.3.1所示,
但是,当光照射到物体的表面时会发生反射,正因为有物体的反射光到达了我们的眼睛,
我们才能够看见那些不发光的物体。例如,我们能够看到遥远的月球,也是因为月球表面
的反射光(来自太阳)到达了我们的眼睛。光在物体表面的反射如图 
1.3.2所示,从图中可
以看出:反射角等于入射角,其中法线为垂直于物体表面的辅助线。


图 
1.3.1 光的直线传播图 
1.3.2 光的反射示意图
光照射到不同的物体会有不同的现象,例如,镜子会反射光,玻璃会透射光,黑色的
衣服会特别容易吸收光。其实所有的物体都吸收光,只是吸收多少的区别。有的物体吸收
了光以后温度会迅速上升,有的物体吸收了光会产生电,还有的物体吸收了光以后其自身

28


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 28 


2022/8/17 14:30:16 


第1章电机与传感器


电阻值会发生变化,影响电路中电流的大小,这就是光敏电阻,光电传感器就是利用光敏
电阻的这一特性设计而成的,通过对电流大小的检测可以反映接收的光的强弱。

光电传感器一般有四种测量模式:环境光测量、反射光测量、颜色测量和原始光测量。
在环境光测量模式下,将光电传感器对着环境,光电传感器可以检测环境光的强度,以此
判断环境的亮暗程度;在反射光测量模式下,光电传感器通过自身发出的光照射到物体表
面上来测量反射回来的光的强度,以此来判断物体表面的灰度;在颜色测量模式下,光电
传感器发出白光,白光混合了红光、绿光和蓝光,通过测量反射回来的红光、绿光和蓝光
的亮度比例,从而判断物体的颜色。例如,如果物体的表面是红色,在白光的照射下,白
光中的绿光和蓝光会被吸收一部分,而红光被反射,所以红色物体的表面反射的光中红光
比例会高一些。


光的三基色:红光、绿光、蓝光

太阳光的可见光部分是由红、橙、黄、绿、蓝、靛、紫七种色光组成的,这七种颜
色的光又可以合成白色光。一般来说,一个物体之所以显示某种颜色,是因为它反射了
这种颜色的光而吸收了其他颜色的光。例如,红色的花反射红色的光,同时吸收了其他
颜色的光。随着人们对光的不断研究,人们又发现红光、绿光和蓝光按不同比例可以合
成各种不同颜色的光,所以这三种色光又称为三基色光,红光、绿光和蓝光按等比例混
合可以合成白色光,如图 
1.3.3所示,其中红光和绿光可以合成黄光,红光与绿光可以合
成品红色光,绿光和蓝光可以合成青色光。


图 
1.3.3 红光、绿光与蓝光的混合
当然,太阳光除了有看得见的各种颜色的光之外,还有看不见的光,如红外线、紫
外线以及各种射线。 


1.3.2 光电传感器编程
光电传感器是用来获取各种光值数据的传感器,根据这些光值数据可以控制机器人做
出相应的动作。其主要的编程模块有环境光测量模块、反射光测量模块、颜色测量模块和
原始光测量模块,如图 
1.3.4和图 
1.3.5所示。其中反射光测量和环境光测量都是按 
0~ 
100

29


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 29 


2022/8/17 14:30:17 


FLL+WRO乐高机器人竞赛教程——机械、巡线与 
PID

的百分比来表示光值大小。


图 
1.3.4 spike的光电传感器模块


图 
1.3.5 EV3的光电传感器模块 


spike机器人测量的颜色有黑色( 
0)、紫色( 
1)、蓝色( 
3)、浅蓝( 
4)、绿色( 
5)、
黄色( 
7)、红色( 
9)、白色( 
10)和无颜色( 
-1),其中括号里的数字指的是相应颜色
的编号。EV3机器人测量的颜色有黑色( 
1)、蓝色( 
2)、绿色( 
3)、黄色( 
4)、红色( 
5)、
白色(6)、棕色(7)和无颜色(0)。 


spike机器人的光电传感器还可以测量物体表面反射回来的原始红光、绿光或蓝光的光
值,其光值范围为 
0~ 
255。

任务探究

探究不同物体表面的原始光值。

选择 
spike光电传感器,使用原始光模块,分别开启红色、绿色和蓝色检测模式,在相
同的测量距离下,依次探究白色、红色物体表面对应的原始光值,如图 
1.3.6所示。同时对
比红色和白色表面在反射光模式下的光值大小。

将光电传感器分别对准图中的白色区域和红色区域,光电传感器与测量表面保持约 
8mm的距离,这相当于一个乐高单位的长度。设计测光程序,如图 
1.3.7所示,将光电传
感器的光值通过变量显示出来,并将数据记录到表 
1.3.1中。


图 
1.3.6 红色与白色区域图 
1.3.7 测光程序

表 
1.3.1 光值数据

光电传感器模式
项目
原始光模块
红色检测模式
原始光模块
绿色检测模式
原始光模块
蓝色检测模式
反射光模式
白色表面光值 
255 255 255 99
红色表面光值 
233 76 98 99

30


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 30 


2022/8/17 14:30:17 


第1章电机与传感器


根据实验数据可以得出,在反射光模式下难以区分白色表面和红色表面(使用颜色模
式进行检测可以区分),但使用原始光模块,开启绿色或蓝色检测,可以明显区分白色表
面和红色表面。在光电传感器的白光照射下,白色物体的表面反射红光、绿光和蓝光,而
红色表面反射更多的是红光,大部分的绿光和蓝光被吸收了。所以使用原始光模块的绿色
或蓝色检测模式能够区分白色和红色表面。这在机器人竞赛中非常有用,若场地有红线或
红白边界,采用以上方法可以让机器人以比例或 
PID算法进行巡线。

试一试
使用原始光模块,分别开启红色、绿色和蓝色检测模式,在相同的测量距离下(约 
8mm),依次探究绿色、蓝色和黑色物体表面对应的原始光值,如图 
1.3.8所示,同时测量
绿色、蓝色和黑色表面在反射光模式下的光值大小,并将所有数据记录到表 
1.3.2中,根据
表中的数据可以归纳出什么结论?


图 
1.3.8 绿色、蓝色和黑色

表 
1.3.2 光值数据


光电传感器模式
项目
原始光模块
红色测量模式
原始光模块
绿色测量模式
原始光模块
蓝色测量模式
反射光模式
绿色表面
蓝色表面
黑色表面

1.3.3 反射光强度
任务探究 
1

本节探究光电传感器测量白色表面的反射光强度与检测距离的关系。

光电传感器测量的反射光强度与测量方式、物体表面特征有关,从测量方式来说,测
量距离和测量的角度都会影响反射光值,例如,当光电传感器正对着物体表面进行反射光
测量时,测量的效果最好,若倾斜测量,反射光值会偏小。在相同的测量方式下,物体表
面的颜色和平整光滑的程度也会影响测量的反射光值。

31


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 31 


2022/8/17 14:30:17 


FLL+WRO乐高机器人竞赛教程——机械、巡线与 
PID

设计一个可调节距离的测光装置,设计示例如图 
1.3.9所示,将光电传感器安装到装置
上,在计算机端直接读取光电传感器的反射光值,并将光值记录到表 
1.3.3中。


图 
1.3.9 可调节距离的测光装置

表 
1.3.3 光值数据

测量距离/mm 
spike
光电传感器
EV3
光电传感器
0 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
…
在探究过程中,仔细观察会发现,光电传感器发出的光不是平行光,而是向外发散出
去的,所以在同一个物体表面,不同的照射距离会影响光的接收,距离越大,接收到的反
射光越少。对于 
spike的光电传感器,发光的灯环绕着光接收窗口,如图 
1.3.10所示,随着
测量距离的减小,光值会逐渐变大,当测量距离小到一定程度时,光值达到最大,并不再
改变。对于 
EV3机器人的光电传感器,当测量距离较大时,随着测量距离的减小,光值会
逐渐变大,在特别近的某一位置时,由于发光的灯与光接收窗口是分离设计,如图 
1.3.11
所示,随着测量距离的再次减小,反射光基本上都回到了灯的附近,而很少有反射光进入
接收窗口,所以测量的反射光值会变小。

32


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 32 


2022/8/17 14:30:18 


第1章电机与传感器


图 
1.3.10 spike的光电传感器图 
1.3.11 EV3的光电传感器

在机器人竞赛中,场地可能会不平整,光电传感器在测量场地表面的反射光强度时, 
spike机器人的光电传感器与物体表面保持 
8~ 
16mm的距离, 
EV3机器人的光电传感器与
物体表面保持约 
8~ 
12mm的距离。

任务探究 
2

探究不同灰度物体表面的反射光强度和不同颜色物体表面的反射光强度。

灰度色是指纯白、纯黑以及两者中的一系列从黑到白的过渡色,如图 
1.3.12所示。图 
1.3.13
所示为彩色图案。开启光电传感器的反射光强度模式,将光电传感器以约 
8mm的高度对着
图 
1.3.12、图 
1.3.13中的灰度色和彩色,光电传感器从左向右缓慢移动,测量不同颜色表
面的反射光强度,并将反射光值记录到表 
1.3.4中。


图 
1.3.12 灰度色图 
1.3.13 彩色

表 
1.3.4 反射光强度的变化


检测区域 
spike
光电传感器 
EV3
光电传感器 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
…

33


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 33 


2022/8/17 14:30:18 


FLL+WRO乐高机器人竞赛教程——机械、巡线与 
PID

通过探究发现,在探究反射光强度与灰度关系的实验中,当其他条件相同时,颜色越深,
测量的反射光值越小。

物体表面的颜色越深,说明它对光的吸收能力越强,反射光就越少。当光照射到白色
物体表面时,大部分光会反射出去,很少被吸收;若照射到物体表面的光被吸收了,几乎
没有反射光到达我们的眼睛,这就是我们“看到”的黑色。

当被检测物体的表面是彩色时,不同颜色区域的反射光强度也是不同的,其中红色、
橙色和黄色表面测量的反射光值较大,而绿色、蓝色和紫色表面测量的反射光值较小。 


1.3.4 光值的标准化
同型号的光电传感器之间的测光性能可能存在差异,这给机器人的编程带来一些麻烦。
由于编程往往不需要实际的光值大小,只需要光值的百分比,为了统一各光电传感器的光值,
可以通过程序将光值按百分比进行标准化。


试卷分数的标准化

光值的标准化过程类似于将试卷得分百分化,通常一份试卷的满分为 
100分,若有一
份试卷满分为 
80分,若考试成绩为 
72分,则这个分数相当于标准试卷 
100分的多少分?
可以先计算 
72分在 
80分中所占的比例,然后再与 
100分相乘,即可获得标准化分数。 
72

100 × 
80 
=90(分)


选择一块白色区域和黑色区域,如图 
1.3.14所示,以白色区域测量的反射光值作为最
大光值,黑色区域测量的反射光值作为最小光值。


图 
1.3.14 白色和黑色区域
将光电传感器的反射光值按百分制进行光值标准化,可表示为
标准化光值 
= 
100 ×测量值 
.最小光值 


最大光值.最小光值
用光电传感器分别测量白色和黑色的反射光值,例如,使用光电传感器测得白色区域
的反射光值为 
83,黑色区域的反射光值为 
3,则传感器的实际测量范围为 
3~ 
83。若光电

34


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 34 


2022/8/17 14:30:18 


第1章电机与传感器


传感器测量黑白边界上的反射光值的“测量值”为 
67,则按百分制标准化后的光值为
标准化光值 
= 
100 × 
67 .3 = 
80

83 . 
3 
即该光电传感器的测量值 
67对应的标准化光值为 
80。运用程序对实时测量的反射光值进
行标准化,其程序设计示例如图 
1.3.15所示。


(a)spike (b)EV3
图 
1.3.15 光值标准化程序

运行程序,将光电传感器正对黑白边界区域,左右移动光电传感器,移动过程中,光电
传感器的高度不变,分别测量白色区域的反射光最大值和黑色区域的反射光最小值,然后按
下主控制器的左按钮,退出最大值和最小值的测量,最后根据光值标准化公式计算标准化光值。

在机器人竞赛中,可通过手动输入测量的光电传感器反射光的最大值和最小值进行光值
标准化,如图 
1.3.16所示,也可以自动输入反射光的最大值和最小值,实现光值的标准化。


图 
1.3.16 手动写入反射光的最大值和最小值

试一试
设计程序,让机器人自动获取图 
1.3.14中黑白区域的反射光的最大值和最小值,并对
反射光强度进行标准化。

1.3.5 陀螺仪传感器 
EV3机器人有外接的单轴陀螺仪传感器,单轴陀螺仪传感器只能识别一个方向,并且
陀螺仪测量的角度容易出现不稳定现象。而 
spike机器人的主控制器内置了三轴陀螺仪传感

35


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 35 


2022/8/17 14:30:19 


FLL+WRO乐高机器人竞赛教程——机械、巡线与 
PID

器,角度测量稳定,三轴陀螺仪传感器可以让机器人同时识别三个方向:偏航、俯仰和横滚。
将 
spike机器人的主控制器水平放置,偏航模式可以测量机器人在水平面上逆时针或顺时针
旋转的角度;偏航角可以控制机器人精准转向;俯仰模式可以测量机器人低头或抬头的角
度,俯仰角可以让机器人识别当前行驶的路面是平面还是坡面;横滚模式可以测量机器人
左倾或右倾的角度,横滚角可以检测机器人是否发生向左或向右的倾斜。

当 
spike机器人的控制器顺时针旋转半周时,其偏航角的变化为 
0°→ 
180°,逆时针旋
转半周时,偏航角的变化为 
0°→ 
-179°。

当 
spike机器人的控制器左倾半周时,其横滚角的变化为 
0°→ 
-180°,当右倾半周时,
其横滚角变化为 
0°→ 
179°。

当 
spike机器人的控制器低头半周时,其俯仰角的变化为 
0°→ 
90°→ 
0°,当抬头半周时,
其俯仰角变化为 
0°→ 
-90°→ 
0°。

例如,使用陀螺仪传感器控制机器人向右原地顺时针转向 
90°。可以选用偏航角控制
机器人的转向,为了提高转向精度,电机速度设置为 
25。在机器人转向前重置陀螺仪传感
器的偏航角为 
0°,机器人左电机向前运动,右电机向后运动,直到偏航角等于 
90°时,机
器人停止运动,其程序设计示例如图 
1.3.17所示,其中机器人左电机接 
B端口,右电机接 
C端口,EV3机器人选用大型电机驱动,EV3的陀螺仪传感器安装时正面朝上。


(a)spike (b)EV3
图 
1.3.17 机器人转向程序
陀螺仪传感器可以精准控制机器人的转向和直行,提高机器人运动的精准度。同时还
可以减少烦琐的参数调试,提高程序编写的效率。

试一试
使用陀螺仪传感器控制机器人原地转向 
270°。

36


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 36 


2022/8/17 14:30:19 


第1章电机与传感器


1.3.6 加速度传感器 
spike机器人的主控制器内置了三轴加速度传感器,有了加速度传感器,机器人就可
以很容易地判断当前的运动状态(加速、减速、转弯和撞击等),测量机器人的加速度。 
spike机器人三轴加速度的方向如图 
1.3.18所示。


图 
1.3.18 机器人三轴加速度的方向

三轴加速度的数据可在主控面板中显示,如图 
1.3.19所示,由于地球引力的作用,即使
机器人静止在桌面上,其 
z轴加速度值约为 
1000。而一个真实的重力加速度值约为 
10m/s2(理解为物体从高空自由落下,其速度每秒增加 
10m/s),所以机器人测量的加速度值大约
是真实加速度值的 
100倍,测量精度较高,正因为如此,加速度的数据测量非常敏感,其
测量值一般会在 
± 
5以内变化。


图 
1.3.19 加速度传感器数据显示

任务探究

探究机器人在 
x轴方向上的撞击加速度。

选用 
spike机器人,让机器人朝向控制器的左侧以速度 
50匀速向前移动,探究机器人
在撞击平整墙壁过程中的加速度的最大值。

机器人设计参见图 
3.3.15,机器人以速度 
50直行前进,预设驱动轮电机旋转 
300°时机
器人可抵达墙壁前方约 
3cm,然后再预设 
1s的时间让机器人抵向墙壁,测量机器人撞击墙
壁过程中的最大加速度,撞击过程中的加速度值是正值,其程序设计示例如图 
1.3.20所示。

37


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 37 


2022/8/17 14:30:19 


FLL+WRO乐高机器人竞赛教程——机械、巡线与 
PID


图 
1.3.20 探究机器人在 
x轴方向上的撞击加速度

通过探究发现,机器人朝向主控制器的左侧运动,当受到撞击时,其测量的加速度值
会明显增大。撞击的最大加速度与墙壁的硬度、撞击的角度以及机器人撞击前运动的速度
等因素有关。还可以通过线形图的方式来显示撞击过程中的加速度值的变化,其程序和加
速度线形图如图 
1.3.21和图 
1.3.22所示。

一般来说,机器人以功率 
50撞向墙壁,其加速度值会在 
1000以上。所以可以通过测
量加速度来判断移动中的机器人是否发生撞击,机器人撞击的加速度阈值可以选用中间值,
若加速度的阈值设置为 
500,机器人以速度 
50直行,当遇到墙壁时,停止运动,其程序设
计如图 
1.3.23所示。


图 
1.3.21 撞击加速度线形图程序

38


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 38 


2022/8/17 14:30:20 


第1章电机与传感器


图 
1.3.22 撞击加速度线形图


图 
1.3.23 机器人撞击制动程序

控制器水平安装在 
spike机器人上,当机器人朝向控制器右侧加速运动或朝向控制器左
侧运动受到撞击时,其 
x轴加速度值会朝向正值增大;当机器人朝向控制器前方加速运动
或朝向控制器后方运动受到撞击时,其 
y轴加速度值会朝向正值增大;当水平放置的机器
人向上加速运动或下落受到撞击时,其 
z轴加速度会朝向正值增大。

试一试
(1)选用 
spike机器人,探究机器人在不同功率下撞击墙壁的最大加速度值,如果加
速度为负值,取其绝对值。
(2)选用 
spike机器人,探究机器人以功率 
100从静止启动过程中的最大加速度值,
如果加速度为负值,取其绝对值。
(3)选用 
spike机器人,机器人以功率 
100匀速移动,探究机器人制动过程中的加速度变化。
(4)选用 
spike机器人,当机器人以一定功率转弯时,探究 
x轴加速度值和 
y轴加速
度值的变化。
39


Fll+WRO乐高机器人竞赛教程 4校 正文.indd 39 


2022/8/17 14:30:20