林俊武,周雨成,伍 坪,郑剑锋
(三明学院 机电工程学院,福建 三明 365004)
当下机器人技术的研究越来越多样化及智能化,仿人机器人技术的研究成为一种新的热点,相对于传统的轮式机器人技术,仿人机器人技术更接近于人类的行为,有较明显的优势。人类的身体结构是经过长期自然进化后的结果和选择,实践证明不管是对于直立行走、快速跑步,还是更复杂的运动项目,比如跳舞以及各种竞技的体育项目,在整个自然界里无不说明人类具有更加合理性的身体结构。仿人型机器人在现代日常生活中具有越来越广泛的应用,其目的就是替代人类完成各种各样的工作。一方面可以应用于生产发展领域,比如可应用于军事任务、灾难救治、生活娱乐、科学探测、服务业等各个领域,另一方面就是在家庭服务和医疗康复等领域的应用,在当今老龄化越来越突出的社会中,利用仿人机器人能够有效地替代人类完成各种的家务以及看护工作,这样就可以把人们从各种琐碎工作中解脱出来,从而安心工作,因此研究如何让仿人机器人实现高效的人类行为并为人类服务具有重要的意义[1-2]。
基于此,本文设计了一种基于STM32单片机简易的仿人类行为机器人,可以用来替代人类完成灾难救治或者生活娱乐等任务,具有很好的实用价值。
本设计采用 STM32F103C8T6作为系统的控制核心,主要由MPU6050芯片实时监控和采集模块、CDS5516数字舵机人体动作的模仿模块、蓝牙通信模块等与外围电路组成,其系统结构框图如图1所示。
图1 系统结构框图
由图1可以看出,系统的工作原理:首先单片机从MPU-6050传感器模块获取到人体姿态的位置数据,即在给定三维直角坐标系中关节点的x,y,z的坐标,并由此计算出三轴对应的角度,并通过蓝牙从机向驱动板的蓝牙主机传输数据,然后通过STM32对接收的的数据进行信息处理,下达指令控制CDS5516,从而启动数字舵机,开始模仿人的手部动作。为了避免了数据的混乱和出错,直到舵机执行的动作的完成之后,再获取采集下一组的信号,继续模仿,这样周而复始完成各种模仿动作。
本设计采用STM32F103C8T6作为系统的控制核心,其原理图如图2所示,此芯片共有48个引脚,系统中所用到的引脚都被标注着网络标号,并连接到对应的相同标号上。其中的引脚RX1和TX1网络标号中的PA2~PA3中的2根引脚分别连接到CDS5516的通讯线上,以此进行数据的传输。其中的引脚VDD_1~VDD_3和VDDA全部连接到3.3 V电源线上,而VSS_1~VSS_3和VSSA都接连到地线上,并且电源到地都要有接连滤波电容来进行耦合滤波以提高系统的稳定性。虽然芯片中提供有内置晶振,设计中的可以不连接外部晶振,但是内部晶振比较不稳定,为了提高晶振的稳定性,在PD0和PD1接了晶振电路,如图3所示,再通过给外部电路进行倍频,给系统提供工作的时钟。STM32F103的启动模式分别由第20脚(BOOT0)和44脚(BOOT1)来进行控制,其中系统的BOOT0脚接到地,选择主闪存存储器作为启动区域,BOOT1脚作为普通强推挽输出口来使用。
图2 控制模块原理图
图3 晶振电路图
目前舵机一般有数字舵机和模拟舵机两种,但数字舵机和模拟舵机其实在结构上差异并不大,主要区别在于数字舵机多了个微处理器和晶振,它可以对动脉冲送到舵机之前就对信号进行处理,并根据舵机本身设定的数值参数进行处理,这样激励舵机马达的动力可以根据传来的指令包来进行调整,适应了不同功能的需求和增强了舵机的性能,并且数字舵机相对于模拟舵机发送动脉处的频率高得多,数字舵机无反应期更小,舵机马达响应发射机信号的频率更加的快,可以提供更好的精度和紧固力。
基于数字舵机的优势,而且模拟舵机的动作控制主要通过信号线输入PWM波,通过改变占空比的值来决定舵机转动的角度,容易产生误差,且每个舵机的机械特性都不是线性的,这样给舵机调试带来了不便。因此,本设计中采用的是型号为CDS5516的数字舵机,它是一种集总线式的通讯接口、电机、伺服驱动为一体的数字舵机,在控制方面具有较高的可靠性和灵活性,其原理结构图如图4所示,其中引脚MCU_TXD和MCU_RXD分别是单片机用来给CDS5516接发数据的两个引脚,但收发信号都是接在CDS5516的SIG引脚上,因此根据分时复用原理,加入了控制收发信号的开关,其中MCU_TXEN和MCU_RXEN连接在单片机上,是控制74HC126使能的引脚,作为控制收发(MCU_RXD和MCU_TXD)的开关。CDS5516的电源范围为6.8 V~14 V,它的电源外接了8.4V,而设计中实际接了9 V。因为设计中选用的微处理器的输出电压为3.3 V,所以为了防止信号的传输出错,需要在单片连接SIG这条信号线上加5 V的上拉电源和10KΩ左右的上拉电阻限流。
在设计中则直接用继电器来代替74HC126的开关作用,其驱动原理图如图5所示,其中继电器的电源和地端接了个续流二极管,这样以续流的形式消耗掉继电器中电感带来的高感应电动势,保护了三极管和单片机引脚不被击穿。
图4 CDS5516舵机驱动电路连接原理图
图5 CDS5516驱动设计原理图
MPU6050芯片是一种具有实时监控和采集的模块[3],其结构如图6所示。
图6 MPU-6050硬件模块
它是一种整合了6轴运动处理的模块,可以适应不同的工作环境,串口的波特率有9 600 bps与115 200 bps,适合所有单片机和电脑连接。它的航向角、横滚角、府仰角都为±180°且分辨率为0.01°。具有体积小、响应快的特点,它的工作电压为3 V~5 V,可以直接用与STM32相同的电源进行供电。STM32主要通过串口1的引脚与其RX和TX连接和通讯,其中的RST和B0直接悬空,SCL和SDA是I2C的时钟和数据。该模块位于采集模块的STM32板上,用来采集人肢体的运动角度。
3.1.1 CDS5516数字舵机通信协议
CDS5516采用异步串行总线通讯方式,理论上可以选用UART异步串行方式来控制254个机器人舵机,每个舵机可以设置不同的ID,然后就可以用寻址的方式独立控制串联起来的舵机。CDS5516上电后有0.6S不响应期,这个时间段不接收单片机的任何指令[4]。CDS5516有指令包格式和应答包格式。
指令包格式包括有字头、ID、数据长度、指令、参数和校验等6部分,字头为指令的前两个字节,当舵机接受到两个0XFF时候,才接受这个指令包,它的ID号有254个。第254个ID是广播ID,可以使每个舵机都接受到指令。数据长度为发送参数的长度再加上2,校验和:校验和为Check Sum = ~ (ID + Length + Instruction + Parameter1 + ... Parameter N),校验位只取8位,计算和如果超出255,则取最低的位。
应答包格式包括有字头、ID、数据长度、当前状态、参数和校验和等6部分,应答包包含舵机的当前状态ERROR,工作不正常的话会通过这个字节体现出来,字节为0的时候则表示无出错,否则出错,各位的高电平分别代表:BIT6:指令出错;BIT5:过载;BIT4:校验和错;BIT3:指令超范围;BIT2:过热;BIT1:角度超范围;BIT0:过压欠压。
3.1.2 HC-05蓝牙通信协议
蓝牙是一种常用的无线通信,它的收发设备中的芯片价格便宜,功耗低,射程是由应用来决定的、理论上是无限的,但是由于墙壁对信号的衰弱和信号反射的相互干扰,蓝牙大多数都应用在室内。
蓝牙通信是指两个蓝牙模块或蓝牙设备之间进行通信,进行数据通信的双方一个是主机,一个是从机。数据处理主要过程:串口发生的数据只能一次一个字节数据在0~255位内,而采集的数据有负数且角度在0~300°范围,所以只能用软件进行处理,符号可以在程序中转换为正数,只要要发送的数据中加个判断正负的标志位即可,然后一次发送数据长度不够的可以用16位的变量保存采集到的数据,然后发送两次,接着驱动板接受到数据后在把数据给组合起来,这样就解决了数据的处理。通过在电脑的串口助手上给两个蓝牙模块发送AT指令,做好配对后就可以进行数据的透传。每个蓝牙的配对方式都有点不一样,本设计中选用的是HC-05[5]。
3.1.3 MPU-6050通信协议
MPU-6050的通信协议中的数据格式有校验位、起始位、数据位、停止位等组成,通信中需要注意的是温度和欧拉角的数据要放大100倍后输出,而加速度计和陀螺仪数据则没有放大输出。另外假设串口的波特率为9 600,大概1 ms一个字节,那么帧头加帧尾一共24字节,则串口输出时间需要24 ms,这样就超过了数据的更新频率(通常为50 Hz),就会导致模块的出错,所以可以适当降低其更新的频率来解决,可以把更新频率降为10 Hz左右。
3.2.1 驱动模块程序
驱动模块的功能是给机器人输入激励,用来控制机器人的行动,其程序流程框图如图7所示,驱动程序过程就是刚开始先给机器人舵机上电反应时间,等待接收采集板角度数据,数据接收到后立马发送激励信号给CDS5516舵机,控制对应的舵机的运作实现跟踪功能。为了提高抗干扰能力,在程序中加了闭环控制系统。在程序的数据位中加入了校验位,以判断执行是否完成的指令,进而进行反馈,若是异常将不执行这条指令的操作,并继续请求采集板发送数据,若是都完成,则发送接收标志到采集板,继续接收采集板数据。
图7 驱动板程序流程图
3.2.2 采集模块程序
采集板主要是负责信号的采集,其程序流程框图如图8所示,其中延迟3秒的目的是为了让角度传感器上电自动校准数据,程序比较简单,只要采集到数据,接收到驱动的标志信号,通过蓝牙发送数据,再继续判断是否接收到下一次数据发送请求标志,再继续发送。
图8 采集板程序框图
系统调试是确定舵机的控制参数,经过不断的测试确定了硬件的复位状态的数值和对应动作的控制数据,如表1所示。各个舵机的ID号,输入的信号值为0到1 023,对应的角度为0°到300°,复位值是机器人模仿人立正姿势的状态,通过传输±复位值来控制舵机的向前行动或者向后运动。
表1 舵机的初始数值
通过调试实现了语音控制机器人的驱动,可以语音敬礼和举起右手,机器人则分别做出敬礼和举起右手的姿势,如图9所示。语音跳舞,机器人则伴着音乐节奏舞蹈。
图9 机器人敬礼手势
本文以STM32F103C8T6作为系统的控制核心,结合实时监控和采集模块、数字舵机人体动作的模仿模块、蓝牙通信模块等,设计了一款简易的仿人类行为机器人,可以用来灾难救治、生活娱乐、军事任务区域。测试表明,该机器人具有测试性能好,成本低,操作简单等优点,具有很好的实用价值。