APP下载

基于STM32单片机控制的六足轮腿式机器人研究

2018-09-10蔡胜宇储泽楠

河南科技 2018年26期
关键词:控制板轮式舵机

蔡胜宇 储泽楠

摘 要:本文以矩形轮腿式的六足机器人为试验机器人,以STM32单片机为主要控制核心,以舵机控制板为辅助板,利用上位机编程来编写六足机器人的动作组,通过PS2手柄发送命令到单片机,单片机控制舵机板实现相应的动作组,后期采用Arduino控制板通过传感器对环境变化的检测实现对动作组的控制,实现六足机器人的自动化移动。

关键词:复合运动;STM32;上位机;PS2;舵机控制板Arduino

中图分类号:TP242文献标识码:A文章编号:1003-5168(2018)26-0010-04

随着社会的不断发展和进步,人类涉足的范围尽管不断增加,但在人类社会和自然界中还存在一些可能危及我们生命的特殊场合,如深山、发生灾难的矿井、救援救助等人类当前尚没有办法到达的地方,这些地方的地形具有共同的特点:崎岖不平和地形不规则。通过以往的试验可以看出,在比较平坦的路面上,轮式机器人无论在速度和灵活程度上都有绝对的优势,但在不平坦的路面上,轮式机器人在能量消耗上更加明显且灵活程度大大降低。相对而言,履带式机器人在不平坦的地面上更具优势,但在机动性和平衡性方面存在较大缺陷。与轮式、履带式移动机器人相比,在崎岖路面上步行的机器人具有更为优越的性能。

笔者结合六足机器人的优点和轮式移动机器人的优点,设计了轮腿式复合机器人。这种复合式机器人通过轮式与足式的不断变换,不仅可以在平坦的路面上快速行驶,而且能平稳地通过崎岖的地面[1,2]。

1 六足机器人的总体结构设计

1.1 六足机器人机械结构的选择

本项目中需要考虑的主要问题是六足复合式机器人的轮腿结构组合方式。现有的轮腿组合方式主要有3种:轮、腿结合式;轮、腿独立式;轮即是腿,腿即是轮式。六足机器人的机械结构有很多,大部分以圆周型和矩形为主。

本项目采用矩形机械结构,具体如图1所示。从图上可以看出,机器人的轮子和腿相对独立,分别独立安装在机器人的本体上,当腿向某一方向折叠收起时,轮子就与地面接触,这时机器人就可以做轮式运动;当关节伸展站立时,轮子与地面脱离,这时机器人可进行腿式步行。相对圆周形机械结构,矩形机械结构中六足的平行性恰好满足了机器人由足变成轮时两组轮子恰好实现了平行性移动的特点。

图1 六足机器人机械结构三维图

1.2 控制板的选择

控制板是整个六足机器人的核心。控制板多种多样,有树莓派、32单片机、51单片机、Arduino控制板等。考虑到整个项目对六足机器人的智能控制和便捷操作、板子面积及功耗等方面的影响,加上32单片机有强大的PWM输出效率、运行速度快、内存大、强大的工程编程环境、数量比较多的IO口,所以选择32单片机为主要控制板。

本项目采用STM公司的STM32F103系列的单片机,该系列的单片机高性能、低成本、低功耗,具有144个引脚,给项目提供更多IO的使用,内核采用ARM Cortex?-M3微控制器,1μs的双12位ADC,4Mb/s的UART,18Mb/s的SPI,18MHz的I/O翻转速度。

2 六足机器人的步态控制

2.1 六足机器人的三角步态

六足机器人步行行走步态(见图2)是机器人研究的重要问题,自然界内六足类的动物在行走时,一般六足并不是同时直线前进的,而是像人一样将三对足分成两组,相当于人的左右腿,以三角形态结构交替前进。六足动物身体左侧的前足、后足及右侧的中足为一组,其他的为一组。在行进的过程中,其中一组为支撑组,另一组为运动组,这时重心在支撑组。然后,运动组变为支撑组,支撑组变为运动组,这样周而复始,就可以实现六足的三角步态行走[3-5]。

[X][A][B][C][Z][F][E][D][A][B][C][D][E][F][步长][Y]

图2 三角步态示意图

2.2 舵机控制核心

六足机器人足是由18个舵机组成的关节组合,舵机控制板可以同时控制多个舵机的转动速度,转动角度。上位机制作是实现电脑对舵机控制板图形化编程的重要步骤,其能直接明了地实现对单个舵机及舵机动作组的编程。

2.3 单片机对舵机控制板的控制步态

32单片机对舵机控制板是通过串口的通信控制舵机做出相应的动作或者动作组。单片机和舵机控制板存在通信协议,该协议在波特率为9600的环境下通信,该协议的命令由4部分组成,即帧头、数据长度、指令、参数。舵机板在连续接收到两个0X55的情况下,表示开始接收数据,即帧头。数据长度就是指令和参数占用一个字节的长度。

例如,控制舵机动作组的实现,需要的指令名为CMD _ACTION_GROUP_RUN,可以看出指令值为6,数据长度为5,这里只涉及三个参数,格式和控制舵机命令一样。参数1:要运行的动作组的编号;参数2:动作组要运行的次数低八位;参数3:动作组要运行的次数高八位。

例如,控制2號动作组:帧头:0X55 0X55;数据长度0X05;指令值:0X06;参数:0x01 0x02 0x01。

通过通信协议的建立,控制舵机动作组的不单单是舵机控制板,32单片机也可以通过串口通信命令的发送实现对舵机动作及动作的实现。

3 六足机器人的轮腿转换

3.1 轮腿转换的形态

由于六足机器人具有多关节的特点,加上我们使用的是矩形机械结构,因此,笔者仿照六轮装甲车多轮转向的外形,使六足机器人变形以后呈现出六轮机动车的形态,同时使用六足机器人的多关节可活动性,实现六轮的多转向性,使机器人更加得灵活。六轮的同时转向比以往的两轮转向或者速度转向更加便捷,对电机速度的要求降低,且操作起来相对比较简单。六足机器人的轮式三维图见图3。

图3 六足机器人的轮式三维图

3.2 单片机对六足机器人足变轮变形的控制

本项目中,笔者采用32单片机控制舵机控制板,采用PS2手柄进行手动控制。通过PS2手柄发送命令给32单片机,然后单片机把指令发送给舵机控制板,舵机控制板接收到发送过来的指令后做出相应的动作组或者动作,完成变形任务。其流程如图4所示。

PS2由手柄和接收器组成。手柄的接收器由8个接口组成,分别是DIDAT、DO/CMD、NC、GND、ACK、CS/SEL、CLK和VDD。DIDAT和DO/CMD接口是手柄到主机和主机到手柄信号的流向接口,这个信号是一个8BIT的串行数据;CS/SEL是手柄的触发信号;CLK则是一个时钟信号,主要用于数据的同步;ACK是一个应答信号。

在CS触发信号发生时,手柄开始进入通信状态。数据(1bit)的发送与接收是在单片机时钟下降时完成的,并且是同时完成的。当控制板想要向手柄发送命令或者读取命令时,会拉低CS的电平,并发送“0X01”的命令,手柄回复之后,控制板将发送“0X42”的请求数据的命令,之后手柄就会发送“0X5A”命令到单片机,单片机就开始接收数据。表1为PS2通信各个数据位的意义。

表1 PS2通信各个数据位的意义

[顺序 DO DI Bit0、Bit1、Bit2、Bit3、Bit4、Bit5、Bit6、Bit7 0 0X01 idle - 1 0X42 ID - 2 Idle OX5A - 3 WW data SELECT、L3、R3、START、UP、RIGHT、DOWN、LEFT 4 YY data L2、R2、L1、R1、△、○、×、□ 5 idle data PSS_RX(0X00=left、0XFF=right) 6 idle data PSS_RY(0X00=up、0XFF=down) 7 idle data PSS_LX(0X00=left、0XFF=right) 8 idle data PSS_LY(0X00=up、0XFF=down) ]

3.3 轮式形态的控制

做项目的电机分类有很多:步进电机、直流电机和直流减速电机。笔者采用的是减速直流电机。相比而言,直流减速电机更容易控制,编程简单,体积更小,速度控制方面更加准确。控制电机则要用到32单片机中PWM输出模式,在32单片机中,单片机通过对时钟的控制与寄存器的控制实现PWM波输出的控制。简单来说,PWM的输出主要靠控制占空比来实现PWM波的输出,从而控制控制电机的转动。

轮式形态的控制主要是对舵机的控制,通过对舵机的控制实现直行、后退、转弯等多种形态。由于六足机器人有18个关节,因此,六足机器人的转动形态较多。笔者选择把轮子装在前后两组足关节的第二个关节上,这样轮子既不会阻碍足式移动,又能很好地进行足轮转换。足轮转换过后,电机转动的方向就会发生变化,如图5和图6所示。足式机器人及其俯视图见图7和图8。

[电机1][电机2][电机4][电机3]

图5 直行电机转动的方向

[電机1][电机2][电机4][电机3]

图6 后退电机转动方向

图7 足式机器人

图8 俯视图

4 六足机器人智能自控的实现

4.1 Arduino的应用

Arduino是一款与32单片机相似的控制板,其能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他装置来反馈、影响环境。本项目中以Arduino控制板为辅助板,安装各种传感器,如声音传感器、红外传感器、超声波传感器。在六足机器人6个足的底部安装红外传感器以防止六足机器人坠落,利用超声波传感器实现避障功能。同样,Arduino控制和32单片机控制相同,都是通过串口发送命令给舵机控制板,舵机控制板再做出相应的动作。Arduino命令流程见图9。

4.2 整体自动化的形成

通过传感器对环境变化的感应,向Arduino发送数字模拟量,Arduino做出相应的命令控制舵机控制板。这样一来,各个传感器的相互配合,Arduino就可以识别复杂环境状况,使六足机器人做出相应的动作来适应相应的环境,从而使机器人实现智能化。

5 结论

本项目从开始选题到买材料再到制作成品,遇到了许多困难,但在这段时间内,笔者获益匪浅。从选材料开始,就从各个方面寻找能用到的机器人零件、舵机、舵机控制板、电机等,每样东西都考虑再三,为后期制作编程节约了较多时间。在设置PS2手柄时,使用手柄发送命令,舵机却一直收不到相应命令,在不断调试和编程的情况下,终于实现了相应的功能。

但是,该项目的各个功能还有不足之处,仍需要不断优化,特别是在利用传感器实现自动化控制方面,需要进一步深入研究。

参考文献:

[1]田娜,丁希仑,戴建生.一种新型的变结构轮腿式探测车机构设计与分析[J].机械设计与研究,2004(z1):268-270.

[2]苏军,陈学东,田文罡.六足步行机器人全方位的步态研究[J].机械与电子,2004(3):48-52.

[3]马忠梅,王美刚,孙娟,等.单片机的C语言应用程序设计[M].北京:北京航空航天大学出版社,2013.

[4]李增国.传感器与检测技术[M].北京:北京航空航天大学出版社,2009.

[5]BOXALL.动手玩转Arduino[M].北京:人民邮电出版社,2014.

猜你喜欢

控制板轮式舵机
轮式拖拉机前驱动桥使用调整
轮式突击炮
谈谈DAM中波发射机的单元电路调整
一种集成脚本控制单元的设计与实现
一种全隔离的无刷直流电机的反馈制动控制板的研究
车载/轮式自行榴弹炮
海太克HS—1100WP数字舵机
超音速舵机保护器
菜鸟看模型
舵机的应用