浅谈基于Arduino的双足类人机器人控制

2016-05-19 13:46王天伟
电脑知识与技术 2016年7期
关键词:类人

王天伟

摘要:随着科技发展,机器人在越来越多的领域得到发展与应用。该文通过作者参加“华北五省机器人机器人大赛”前期准备,以及参赛过程中的经验,简要介绍下基于开源Arduino控制板的类人机器人的驱动与控制,比赛结果表明了该方法的有效性。

关键词:Arduino;类人;多自由度;驱动与控制

中图分类号:TP242 文献标识码:A 文章编号:1009-3044(2016)07-0181-02

对于双足类人机器人控制的研究一直是近些年机器人研究的热点问题。能否精确地执行预设动作,是评价机器人性能的指标之一,而本科生可接触到的传统中小型机器人上,所运用的主控以传统单片机为主,原理是利用定时器和中断的方式来实现对舵机的控制,在舵机数量较少时表现尚可,而在竞赛中所用到的类人舞蹈机器人、类人竞技机器人等上面,往往需要十几个自由度甚至更多,以达到使机器人更加灵活的目的,这样的情况下传统单片机控制起来就没有那么方便了, 尤其在要求机器人进行复杂动作,多个舵机同时驱动时,单片机不但精度难以保证,在编程方面也相当复杂。因此本文结合作者的比赛经验,介绍时下较为流行的开源Arduino,来实现对双足类人机器人的控制。

1 Arduino简介

Arduino是可编程的,使用功能强大的AVR微控制器,标准板拥有20个I/O引脚(Arduino的变体拥有更多的I/O引脚),并且很便宜。主Arduino使用标准的USB数据线连接到计算机,不仅提供到PC的串行连接,还包括所需的5V电源。其最大的优势在于它秉承开源硬件的思想,程序开发接口免费下载,也可依需自己修改。Arduino UNO的引脚如图1所示:

图1 Arduino UNO控制板I/O口示意图

Arduino的硬件是高度模块化的,在核心控制板的外围,有开关量输入输出模块、各种模拟量传感器输入模块、总线类传感器的输入模块, 还有网络通信模块,只要在核心控制板上增加网络控制模块,就可以容易地与互联网连接。Arduino还提供了自己的开发环境Arduino IDE,支持Windows、Linux、MacOS等主流操作系统。Arduino系统是基于单片机开发的,并且大量应用通用和标准的电子元器件,包括硬件和软件在内的整个设计,代码均采用开源方式发布,因此采购的成本较低,在各种电子制作竞赛、电子艺术品创意设计等越来越多地使用Arduino作为开发平台。

2 主控的选择

在“华北五省机器人大赛”前,作者对市面上在售的控制系统进行了数据收集与对比,对控制精度及扩展宽容度等多方面参数进行对比,并对其他参赛队伍所选用的主控实际测试后,选择了Arduino UNO R3的一个变体版Manshow-RC1,后者集成了Arduino UNO R3及24通道的SoftServo舵机控制系统,其优点在于:集成度更高,极大减小了主控安装于机器人上所占用的空间,一定程度上减小了机器人的自重;拥有24路舵机控制通道,满足了比赛中对机器人灵活度的要求;集成软启动功能,众所周知,PWM 类型的舵机其初始位置往往是未知的。传统的启动模式将使舵机以全速运行到目标位置,在很多机器人应用中是非常忌讳的。软启动模式在初始位置未知的情况下可将舵机缓速运行到目标位置,但在短时间内需要较大的电流(当需要控制多个舵机时,可采用分时启动的方式缓解)。

在决定使用Arduino之前,作者也曾试验过比较熟悉的51单片机在机器人控制上的效果,结果发现除了在对多个舵机的控制方面表现不足外,在代码编写方面,传统单片机也不及Arduino方便,因为Arduino的编译环境对AVR-GCC库实现了二次封装,使用者即使对C等编译语言不是很熟悉,没有很多单片机基础,进行简单学习后也能很快上手,大大缩短了开发周期,节约了开发成本。并且由于开源的环境,可以根据自己的需求到Arduino论坛上下载已有的代码,然后进行修改,其中包括传感器等模块的库文件及测试程序。以下为作者参赛时所用双足类人舞蹈机器上程序的一段截取:

#include "GI2C_V11.h"

#include

#include

unsigned char Buf[61 + 1];

GI2CV11 ManShow_RC1(Buf, sizeof(Buf));

const unsigned char back[][49] PROGMEM = { 90, 90, 111, 93, 90, 134, 86, 104, 76, 91, 83, 205, 8, 93, 88, 92, 88, 86, 86, 119, 91, 90, 88, 96, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 3 };

大括号内的48个数字,分别对应24个舵机的预设位置(0-180°)和运转时的速度(1-250)。由于已经有现成的库文件可以使用,只需简单配置寄存器即可,由此可见与传统单片机相比,Arduino在开发周期上极大地缩短,并且减少了代码占用空间,让使用者省去了扩展内存的麻烦,为增加扩展模块带来便利。

3 PWM类型的舵机控制器性能评价

1)PWM 类型的舵机,其PWM有效宽度并非完全一致,考虑到兼容性问题,PWM有效宽度必须可设定。

2)对于标准的PWM类型舵机,PWM信号周期通常建议为20ms,但对于数字舵机,可允许更高频率的信号输入,当应用系统要求舵机具有更高的响应速度时,可缩短PWM信号的周期。因此,PWM信号的周期可人为设定,也是很有必要的。

3)有些时候我们希望所有的PWM信号同时输出,并且信号间的耦合性控制在肉眼难以察觉的程度。

4)在一些动态的应用系统中,尤其是人形机器人,我们希望在任意时刻每个通道的位置和速度均可单独控制,因为机器人的动态平衡是依靠惯性力实现的。

5)绝大多数的舵机控制器均将舵机的动作代码固化在EEPROM或Flash ROM中,或许这样操作起来很简单。我们认为,一个机器人系统,需要结合搭载的传感器与智能控制算法,动态生成舵机的动作代码。此外,关于通讯接口的简易性、实时性和稳定性也是非常的关键。

6)为了更好地保护舵机,必须能够在任意时刻停止PWM信号的输出。在使用过程中经常会发现一个现象:舵机毁于冲击力,原则上,当存在异常的冲击力时,应当停止信号的输出。例如:机器人处于跌落状态(可由加速度传感器检测),倘若提前停止PWM信号的输出,使舵机进入惰行或制动状态,便可避免刚性冲击。

4 传感器的使用

针对不同应用情境或比赛项目的不同,机器人可视情况加载合适的传感器,以达到适应外界环境和精确控制的目的。比如擂台对抗机器人,为了防止掉下擂台,往往加载灰度传感器检测擂台边缘的色带;舞蹈机器人可增加加速度传感器,用以检测机器人的意外跌落,因为对于舵机,跌落后的意外卡死往往是致命的。

5 一些主流的控制方式

如若没有特殊要求的情况下,可以给机器人增设遥控,通过一组红外传感器来控制机器人,在遥控器上对于每个按下的按钮都发送一个特定的红外线编码,可以在Arduino上使用IR接收集成电路读取红外线编码,这样使用者可以更及时的调整机器人的姿态。

语音控制也是一种不错的选择,预先将一些指令录入主控当中,具体操作时,语音模块对使用者的指令进行识别,然后调动舵机或其他模块进行相应动作。

谈到了声控就不得不提及光控,虽然此种控制方式对环境要求较高,但倘若使用好了也会给人耳目一新的感觉,比如舞蹈机器人,结合特定舞台灯光的指令后可以更好地进行姿态调整。

为了实时监控机器人的动态参数,也可以选择上位机控制机器人,可以自主编写上位机软件或网上下载现成的软件使用。上位机控制方式分为有线和无线两种。

蓝牙模块、语音模块以及光传感器等在网上商城均有销售,买时需注意是否与Arduino兼容。

6 结束语

双足类人机器人运动灵活,因与人类相似,可以在众多领域得到应用。本文对基于Arduino主控的机器人的控制进行了简述,结合作者的参赛经历,从主控的选择、外设扩展以及其他主流控制方式三方面给予建议。经过验证,Arduino在中小型机器人的设计制造上确实有很多传统单片机没有的优势。

参考文献:

[1] John-David Warren,Josh Adams,Harald Molle.Arduino Robotics[M]. Apress,2011.

[2] 陈吕洲.Arduino程序设计基础[M].北京:北京航空航天大学出版社,2015.

[3] 蔡睿妍.基于Arduino的舵机控制系统设计[J].电脑知识与技术,2012,5(15).

[4] 孟浩,王妍玮.基于Arduino 的双足仿人机器人设计[J].林业机械与木工设备,2014,2(2).

猜你喜欢
类人
中科院自动化所实现人与机器人间的类人物体交接
5类人跟泡脚“八字不合”
你的手指长度,决定了你的性格!
Ⅵ型类人胶原蛋白基因COL6A2的克隆及在毕赤酵母中的分泌表达
感冒爱找哪类人等