一种人形机器人控制系统设计
2018-03-20訾诗宇李小斌吴宏岐
訾诗宇,李小斌,吴宏岐,刘 霞
(宝鸡文理学院电子电气工程学院,宝鸡 721016)
随着智能控制、机器学习等科目的迅速发展,作为控制论集大成者的机器人研究也随之进入了一个新的时代。人形机器人是最复杂的机器之一,也是人类最早想象的关于未来的图景之一。机器人的研究日趋热点化,加上笔者对于机器人一直以来的兴趣,学校也恰好有这个条件和机会给笔者提供了一套类人机器套装,所以有此设计。
1 H1-B型机器人控制系统硬件整体设计结构
H1-B型智能机器人系统主要包括单片机主控电路、电源模块电路、发音模块电路、步进电机动作模块电路、声音传感器模块电路、光学传感器模块电路、机器人外形设计等,单片机检测到传感器发来的信号并处理后,指示步进电机或音频模块做出相应动作[1]。
之所以要用单片机控制系统,是因为单片机是将CPU、储存器、T/C、I/O接口都集成在一块IC卡上的微型计算机,可以完成传统计算机可以完成的所有工作。再加上其体积小、成本低廉,成为了微型机器人(广义上)最常用的控制系统中心。Abilix 能力风暴H1-B机器人是对新手十分友好的教学类机器人,集电子学、机械、计算机、仿生学和传感器等多方面的知识于一体。
1.1 主控模块
Abilix头脑风暴H1-B教育机器人采用了RAM 的 STM32 芯片,内核为ARM 32位的Cortex-M3,最高时序频率为72MHz,闪存容量为384K,SRAM为64K,2.0-3.6V供电,2个12位模数转换器,1μm转换时间,16个输入通道,2个DMA控制器,USB2.0接口。单片机与PC之间的通信通过USB串联接口实现,通信芯片为SILABSCP2102。
1.2 传感器模块
传感器模块采用反射式的红外光电传感器和声音传感器,NXP公司的1114F处理芯片,工作原理为传感器收端没有接收到红外线,表明探头没有检测到障碍,传感器输出低电平到比较器的反相输入端,反相输入端的电压小于正相输入端电压,则比较器输出端输出高电平,此时开始避开障碍;接收端接收到红外线信号,表明探头检测到了障碍,此时继续运动[2]。此外遇到故障后可以发出声音提醒。在传感器的信号接收和信号发送流程中,由于传感器采用了一体式模块化设计,让信号采集和发送处于一条线路上,使得系统得到了简化。
1.3 动作模块
Abilix 头脑风暴 H1-B 型教育机器人套装自带七个智能电机模块作为机器人的关节使用,通过H-CON101控制器可以控制其速度和角度,在无限旋转模式下还可以作为轮子或者风车的轴来使用,可以设置转速快慢,取值范围在-1023~1023之间,0为电机停止,-1023为顺时针最大速度,1023为逆时针最大速度。
1.4 电源电路
Abilix H1-B型机器人采用充电锂电池供电,交流电通过适配器和平衡充将220V/60Hz的国标交流电转换为12V/3.5A的直流电,锂电池的充电电压为12.6V,输出为11.1V,单片机的工作电压为5V,因此系统控制板配置有Maxim 603稳压芯片,可以将11.1V的电压滤波2为5V的工作电压,低压复位保护电路为DS1233。
2 软件编程设计
本机器人套装提供的软件是基于VJC编程环境的,用户在已有可视化模板模块程序基础上做适当修改,使用模板选择窗口,并选择已有的模板程序,建立自己的项目,一键下载到程序A,或者程序B,来控制机器人模板程序实现的示例项目中的基本功能[3]。在一个机器人中,可以使用其中一个或多个编辑器,实现机器人的编程和控制,也可以使用原有模板或者对模板进行编辑,再创建新的方式实现机器人的控制。
2.1 编程的实现过程
机器人还有一个对新手来说很友好的特点,全程可以使用图形化交互式C 语言(VJC)来完成主程序设计,这种程序设计模式避开了繁琐的代码编写,以较为直观的方法实现了主程序的构建。在本次设计中,本人使用的是VJC 5.0,它包含了流程图编辑器、动作编辑器、模型编辑器,可以直接使用原模版程序,也可以对模板进行修改后实现机器人的控制,高级用户可以使用JC代码编辑器进行编写开发。
2.2 VJC的用户界面及模块库
模块库功能是将复杂的编程语言转化为简单的图形化模块,列举在该库中方便用户拖动调用。笔者使用的环境是VJC5.1,它安装简单,使用方便,兼容性高。
流程图编程的模块分五类,控制器模块库,智能电机模块库,集成传感器模块库,控制器模块库,程序模块库[4]。
(1)控制器模块库。针对控制器本身及l/O接口进行检测设置的模块库。
(2)智能电机模块库。本机器人常用的执行器模块库,包含本机器人主要部分的执行(智能电机的控制,动作页的执行[动作编辑器产生])。
(3)集成传感器模块库。本机器人常用的传感器控制模块库,包含了所有的传感器功能。
(4)控制模块库。在用户程序中,读取各端口传感器的返回值一般有两种用途:储存和判断,其中用于判断的情况居多。在VJC中提供了while语句、if…else…语句、for语句三种判断方式的流程图模块,在控制模块库中,如果要做判断必须有被比较的对象和比较参考值。被比较的对象一般是传染期的返回值或者更新后的变量值,所以在传感器模块库中所有具备“读取”功能的模块都可以直接转换成条件判断模块。
(5)程序模块库。在进行较大程序的编写时,有的时候总会有几条指令重复出现,此时我们可以将其定义为子程序,程序模块库就是满足这一需求的库。
3 结束语
本文对H1-B机器人的控制系统做了粗略的分析,并编写了上位机程序用来实现机器人的特定动作,借助本文章可以对H1-B型机器人总体框架有一个基本的认识,并在此基础上做相应的程序编写。