李嘉秀
摘 要:以国际青少年机器人世界杯比赛中的机器人平台为对象,介绍了Arduino的功能特点,详细分析了使用Arduino软硬件平台开展中小学机器人教育的优势,同时根据Arduino机器人的开发流程和环境,通过Arduino足球机器人中的典型应用——数字舵机给出了一个具体的应用案例,并结合实际效果进行了分析展望。
关键词:Arduino;足球机器人;数字舵机;RCJ
中图分类号:TP316 文献标识码:A 文章编号:2095-1302(2015)03-00-03
0 引 言
机器人是一门涉及运动学和动力学、系统结构、传感技术、控制技术等多领域的交叉学科。国际青少年机器人世界杯比赛(RoboCup Junior,RCJ)是国际机器人世界杯比赛(RoboCup)的重要组成部分,其目标是通过组织机器人比赛,来推动世界范围内的机器人研究和教育。RoboCup的教育和普及理念主要是通过RCJ活动来实现的。RCJ国际理事会是最高管理机构,负责相关的一切技术问题,管理问题,以及世界范围内的推广和普及。
RCJ国际比赛包括四个项目:机器人舞蹈、机器人救援、机器人足球以及Cospace。RCJ比赛分为两个组:14岁以下的初级组,以及14~19岁的高级组。从2006年8月开始,RCJ中国委员会每年举办一次“中国机器人公开赛(RoboCup Junior China-Open)”以及国际青少年世界杯比赛中国赛区选拔赛。目前RCJ中国的活动已经成为RCJ在所有国家活动中参与人数最多的,其教育实施正是促使学生整合科学、技术、数学领域的知识,以工程标准化的思想进行综合实践的过程,具有较强的教育价值。
1 Arduino原理
Arduino是2005年冬由意大利一家高科技设计学校的两位教师Massimo Banzi和David Cuartielles联合建立的。Arduino是一个开放源代码的单芯片微控制器,它使用了Atmel AVR单片机,采用了基于开放源代码的软硬件平台,建构于简易输出/输入(simple I/O)接口板,并且具有使用类似Java、C语言的Processing/Wiring开发环境。
1.1 Arduino功能特点
Arduino的主要功能特点如下:
(1)基于知识共享(Creative Commons)开放源代码的电路图设计和程序开发环境。
(2)免费下载,也可依需求自己修改,但需遵照姓名标示。
(3)依相同方式分享,若改变或转变著作,当发布该衍生著作时,需采用与本著作相同或类似的授权条款。
(4)Arduino可使用ICSP线上烧入器,将Bootloader烧入新的IC芯片。
(5)可依据Arduino官方电路图,调整电路板及元件,以符合自己实际设计的需求。
(6)可简单地与传感器,各式各样的电子元件连接,如:红外线、超音波、热敏电阻、光敏电阻、伺服马达等。
(7)支持多种互动程序,如Adobe Flash、Max/MSP、VVVV、C、Processing等。
(8)使用低价格的微处理控制器(Atmel AVR,ATMEGA 8、168、328等)。
(9)USB接口,不需外接电源。另外有提供直流(DC)电源输入。
(10)应用方面,利用Arduino,突破以往只能使用鼠标、键盘、CCD等输入的装置进行互动内容的设计,可以更简单地达成单人或多人游戏互动
1.2 Arduino在中学机器人应用中的优点
根据Arduino平台功能特点结合中学的机器人教育课程,其展现出了强大的优势:
(1) Arduino硬件平台开源并可扩展
Arduino是一个开源的硬件平台,学生可以通过查资料、买元件、焊接电路制作Arduino控制板。同时,很多厂商开发了各种各样的Arduino控制板和外围功能电路供选择。对于学习机器人制作的学生而言,这样就可以通过教师引导和自学等方式,得到自己所需的功能电路并实现对应的电路设计任务。这对学生了解机器人的硬件电路原理及制作大有帮助。
(2)Arduino软件编程平台开源并可扩展
Arduino的编程器可以直接在网站上免费下载,而且网络上有很多功能实现的例子和大量的SDK开发包和ADK工具包,这样编程效率就会大大提高。
(3)简易的编程环境
Arduino开发环境使用的语法与C/C++相近,这对于学习了基本的数学逻辑和计算机编程的高中生而言,容易掌握和使用。对于复杂的编程功能,学生可以通过直接调用已有函数或SDK开发包实现编程,甚至直接利用Arduino爱好者们已开发出的图形化编程软件进行搭积木式的编程,即使完全没有编程经验的人也可以尝试给Arduino控制器编写程序,非常简单快捷。
(4)价格低廉
和其它平台相比, Arduino板是相当便宜的。最便宜的Arduino版本可以自己动手制作,即使是组装好的成品,其价格一般也不会十分昂贵。
(5)跨平台
Arduino IDE可以运行在Window、Macintosh OS X和Linux操作系统。大部分其它的单片机编译软件都只能运行在Window系统上。
基于以上原因,基于Arduino平台的机器人制作在RCJ中得到了普遍应用。
2 Arduino机器人开发流程及环境
2.1 Arduino机器人开发流程
Arduino机器人实例的开发是Arduino平台下机器人教学实践与研究的基础和载体。其开发流程一般至少包括7个步骤,具体为设计目标→确定器件→硬件组装→软件设置→测试→程序编写→代码调试。
通常,机器人在地面上移动的方式通常有三种:车轮式、履带式和步行式。在RCJ足球比赛中,场地为室内光滑平整地面,非常适合车轮运动,因此本方案选用车轮式运动方式。
2.2 Arduino硬件开发环境
(1)Arduino硬件类型
为了适应不同用户的需求,Arduino有多种型号,其中Arduino Duemilanove是一款最基本的Arduino产品,后续的很多产品都是在这款产品的基础上发展起来的。如Arduino Nano去掉了直流电源接口,采用Mini-B标准的USB接口连接电脑,是一款缩小版的Arduino Duemilanove;Arduino BT则包含了一个Bluegiga WT11蓝牙模块,支持蓝牙无线串行通信。目前Arduino主推的产品是Arduino Uno,它与之前的Arduino最大的不同在于采用ATmega8U2芯片进行USB到串行数据的转换。使用者可以根据对设计功能的不同需求选择相应的Arduino产品。
(2)Arduino主要硬件资源
不同型号的Arduino其硬件资源也有所差异,但基础配置包括以下部分:
(1)控制器。控制器是Arduino产品的核心部分,以Arduino Duemilanove为基础的多数产品均采用ATmegal68或ATmega328单片机;资源更为丰富的Arduino Mega2560则采用ATmega2560作为控制器,它具有更大的程序存储容量,可接入的I/O数也更多。
(2)输入输出接口。根据控制器的性能差异,不同Arduino产品的输入输出接口数量也有所不同。
(3)电脑连接或程序烧写接口。根据使用者对Arduino产品尺寸要求的差异,Arduino或通过独立USB接口支持程序烧写,或通过由USB/RS 232转换成TTL的适配器解决该问题,而对Arduino BT而言,其内置的蓝牙模块即可支持通过蓝牙适配器进行程序烧写。
2.3 Arduino机器人软件开发环境
(1)Arduino开发环境设置
Aruduino的开发环境是以AVR-GCC和其他一些开源软件为基础,采用Java编写的。软件无需安装,下载完成解压缩后就可以直接打开使用了。开发环境的主界面如图l所示。
图1 Aruduino的软件开发环境界面
在应用程序编写之前,需要按照顺序进行安装驱动程序、选择Arduino板的型号以及设置串口号三项内容的设置。
(2)ArduBlock图形编程环境介绍
目前图形化编程插件ArduBlock已得到Arduino官方支持,其界面友好,操作简单,不用学习C语言通过拼图形式就可以完成Arduino的编程,为Arduino进入中小学课堂奠定了基础。图2所示即为该编程环境界面。
图2 ArduBlock编程界面
从网上下载ArduBlock插件后只需将该文件拷贝至Arduino官方编程环境软件包的tools子文件夹里面即可。拷贝成功后再次打开官方编程环境,菜单栏tools选项中便新增了ArduBlock选项,单击即可打开ArduBlock编程界面。除了ArduBlock之外,还有Miniblog、S4A等图形化编程插件也可利用。
3 Arduino机器人开发实例
本方案选用Arduino Duemilanove为核心主板,以ArduBloek作为图形化开发环境进行实例开发。因为Arduino足球机器人所涉开发项目较多,囿于文章篇幅所限,以下仅给出“Arduino足球机器人——数字舵机”的开发实例。本实例重点介绍Arduino足球机器人在RCJ中使用的舵机原理及相关的代码调试环节。
3.1 舵机介绍
机器人有许多个关节, 每一个关节为一个自由度。在机器人机体上,通常使用舵机作为每一个关节的连接部分,它可以完成每个关节的定位和运动。舵机的控制信号相对简单,控制精度高,反应速度快,而且比伺服电机省电。
舵机是由直流电机、减速齿轮组、传感器和控制电路组成的一套自动控制系统。通过发送信号,指定输出轴旋转角度。舵机一般而言都有最大旋转角度。与普通直流电机的区别主要在,直流电机是一圈圈转动的,舵机只能在一定角度内转动, 不能一圈圈转(数字舵机可以在舵机模式和电机模式中切换)。普通直流电机无法反馈转动的角度信息,而舵机可以。用途也不同,普通直流电机一般是整圈转动做动力用, 舵机是控制某物体转动一定角度用。
3.2 舵机内部结构
舵机的外观如图3所示。
图3 舵机的外观图
舵机的组成部分主要有齿轮组、电机、电位器、电机控制板、壳体这几大部分。其中电机控制板主要是用来驱动电机和接受电位器反馈回来的信息;电机提供动力;电位器判断输出轴角度是否输出正确;齿轮组的作用主要是力量的放大。
3.3 舵机控制协议
舵机的伺服系统由可变宽度的脉冲来进行控制,控制线是用来传送脉冲的。脉冲的参数有最小值,最大值和频率。一般而言,舵机的基准信号都是周期为20 ms,宽度为1.5ms。这个基准信号定义的位置为中间位置。舵机有最大转动角度,中间位置的定义就是从这个位置到最大角度与最小角度的量完全一样。此外不同舵机的最大转动角度可能不相同,但是其中间位置的脉冲宽度是一定的,就是1.5 ms。
角度是由来自控制线的持续的脉冲所产生,脉冲的长短决定舵机转动多大角度。例如1.5 ms脉冲会到转动到中间位置(对于180°舵机来说, 就是90°位置)。当控制系统发出指令,让舵机移动到某一位置,并让其保持这个角度,这时外力(不超过最大扭力)的影响不会让其角度产生变化。除非控制系统不停的发出脉冲稳定舵机的角度,舵机的角度不会一直不变。当舵机接收到一个小于1.5 ms的脉冲,输出轴会以中间位置为标准,逆时针旋转一定角度。接收到的脉冲大于1.5 ms情况相反。一般而言,最小脉冲为1 ms,最大脉冲为2 ms。
Arduino IDE己经集成了舵机控制库,只需要在程序开头调用库Servo.h就可以了,省去了繁琐的信号控制、时序等问题,给舵机配置好端口和初始位置,然后给出目标角度,舵机就会转过去了。
3.4 舵机控制程序示例
Arduino有舵机应用库
#include < Servo.h > //舵机的函数库
Servo myservo; //定义舵机变量
int pos = 80; //舵机初始化80°
void setup()
{
myservo.attach(6); //初始化使用第6个引脚
myservo.write(pos); //先让舵机回归80°中心点
}
void loop()
{
myservo.write(pos); //下角度指令给舵机
for(;pos<90;pos++ )
{
myservo.write(pos); //下角度指令给舵机,170°
delay(10); //等待10 ms
}
for( ;pos<90;pos--)
{
myservo. write(pos); //下角度指令给舵机,80°
delay(10); //等待10 ms
}
}
实现的功能为:舵机初始位置为80°,舵机旋转到180°,再旋转到80°。
3.5 Arduino机器人实际效果
通过多次实验成功实现了Arduino机器人在RCJ中的进攻、防守等功能,Arduino机器人能按照预先设计的程序在脱离人工控制的情况下自主运作,其前进、后退、停止射门等动作配合成功,并能顺利捕捉红外足球,达到了预期目标。
但在比赛中还出现Arduino机器人的避障流畅度不足,即不能在探测到障碍物存在时实时做出流畅的避障行为。此外,驱动卡的电源非单独供电,影响机器人运动时的稳定性和快捷性,从而导致有可能无法顺利完成比赛。Arduino机器人实物如图4所示。
图4 Arduino机器人实物
4 结 语
Arduino的开源性及功能可扩展性决定了它在机器人教育领域内的高性价比,图形化编程插件符合中小学阶段学生的认知习惯及水平,丰富的Arduino论坛资源为教育过程提供了持久的技术和创意保障。该文提出的基于Arduino的车轮式机器人设计相对于其他系统,成本更低,制作方便,软件和硬件开源并可扩展,有一定的实用性并在RCJ上取得了一定的成绩。但该机器人还存在许多不足,这些都有待进一步改进和提高。
参考文献
[1] RCJ中国组委会.RoboCup青少年(RCJ)机器人世界杯中国组委会介绍[EB/OL].http://www.rcj.org.cn/?q=rcjc,2014.
[2] Massimo Banzi.爱上Arduino[M].2版.于欣龙,郭浩赟,译.北京:人民邮电出版社,2012.
[3]维基百科.Arduino[EB/OL]. http://zh.wikipedia.org/wiki/Arduino,2014.
[4]周嘉.基于Arduino平台的机器人制作课程在普通高中开发与实施[J].教育信息技术,2012(8):15-17.
[5]程晨.Arduino开发实战指南[M].北京:机械工业出版社,2012.
[6]王娟,胡来林.中小学Arduino机器人特性及其实例开发[J].中国教育信息化,2013(6):69-71.
[7]宜昌城老张.新车间Arduino图形化编程软件ArduBlock的介绍[EB/OL].http://eefocus.com/zhan9700309/blog/12-02/237994_76dea.html,2014.