马 鑫,吴银川
(西安石油大学 陕西省油气井测控技术重点实验室,西安 710065)
石油管道巡检工作是管道日常维护的重要环节,国内石油管线巡护以传统人工巡检为主,受人为和地理区域因素的影响,导致复杂地理环境下的管线以及人力无法达到区域的场所,巡检困难[1]。随着科技的发展和人类探索空间的扩大,机器人技术的应用更为广泛,设计出对地形适应能力强的机器人日益重要[2]。在智能机器人领域中,应用于陆地工作的移动机器人主要包括履带式机器人、轮式机器人和足式机器人等。根据以往的研究表明,轮式机器人在较为平坦的地形上行驶时,比足式、履带式机器人具有移动速度迅速,移动平稳,控制简单的优势,但在崎岖地面移动时,这些能力就会大打折扣,而履带式移动方式虽然在崎岖地面也能行走,但是这种方式无法适应环境多变的一些特殊场景。前两者因其操作简单、移动速度快等优点,主要用于地形较为平坦的区域;足式机器人因为具有立足点离散、运动方式灵活多变等优势,适用于具有非线性结构化特点的真实场景[3]。
为了使六足机器人各肢体能更好地协调,以及使六足机器人能更好地适应石油管道巡检中各种复杂环境,需要对其步态、控制系统进行分析和设计。因此,本文设计了一种六足机器人控制系统,以STM32F103RCT6作为主控板,采用舵机驱动板控制机器人移动,配置传感器模块,从而实现石油管道智能巡检。
本设计腿部机械结构如图1所示,图1中机器人共有六条腿,中间红色区域作为机器人主体可装置各类传感器和机器人电路系统,机器人每条腿都由3个舵机组成,分别形成六足机器人的髋关节、膝关节和踝关节,其中1、4、7、10、13、16号舵机为六足机器人髋关节,2、5、8、11、14、17号舵机为机器人膝关节,3、6、9、12、15、18号舵机为机器人踝关节,髋关节主要负责机器人腿部的转动,膝关节和踝关节负责机器人腿的抬升运动,膝关节和踝关节之间采用弧形连接件形成机器人的大腿,弧形结构可以有效地增强大腿抵抗外力的强度,踝关节与地面之间同样采用弧形连接件形成小腿,这样可以使机器人在移动过程中保持平稳。这种机械结构具有结构简单、行走平稳等特点,相对于传统的轮式和履带式移动方式,这种机械结构更适合在复杂环境中移动[4]。
图1 六足机器人正视图Fig.1 Front view of hexapod robot
本设计共分为主控板、舵机驱动板、电源、降压电路、舵机等部分,其中主控板采用STM32F103RCT6,舵机驱动板采用PCA9685,舵机型号采用MG996R舵机,电路系统框架图如图2所示。传感器模块通过采集外部信息,然后将采集到的数据信息通过数据接口反馈给主控板,主控板根据传感器模块反馈回来的数据判断外部环境是否适合机器人行走,接着电源模块通过降压电路给舵机驱动板提供稳压电压,主控板通过I2C接口控制舵机驱动板,然后舵机驱动板通过PWM控制舵机转动,从而使机器人移动。
图2 电路系统框架Fig.2 Circuit system framework
本文设计的六足机器人主要包括以下模块:STM32F103系列主控板、舵机驱动板、电源模块、传感器模块,其中舵机驱动板采用PCA9685。现对六足机器人驱动部分阐述如下:
舵机驱动采用舵机驱动板控制,舵机驱动板与控制板串口连接如图3所示。驱动板与主控板之间采用I2C方式通信,OE引脚连接主控板PC5接口,低电平使能有效,I2C通信总线由数据线SDA和时钟线SCL构成。当I2C总线处于空闲状态时,数据线SDA和时钟线SCL均为高电平。
图3 主控板与驱动板接口Fig.3 Interface between main control board and driver board
I2C通信过程由开始、发送、响应、接收、停止5个部分组成,I2C通信时序如图4所示。在开始信号之后,主控板发送开始信号。当时钟线SCL处于低电平时,数据线SDA允许改变数据;当时钟线SCL处于高电平时,数据线SDA不能改变数据[5]。在I2C通信协议中,一个时钟周期只能传输1bit数据,数据传输8个时钟周期后,在第9个时钟周期内,舵机驱动板将数据线SDA变为低电平,并且产生一个应答信号给主控板。若在第9个时钟周期内,时钟线SCL为高电平,数据线SDA未被主控板检测到为低电平时,则视为舵机驱动板没有产生应答信号,表明数据传输失败,然后舵机驱动板释放数据线SDA以使主控板继续传输数据,如果主控板发送停止信号,则此次数据传输结束[6]。
图4 I2C通信时序Fig.4 I2C Communication timing
本设计所需18个舵机,且1个驱动板只有16个舵机接口,因此通过采用两个驱动板串联的方式使驱动板与舵机连接,驱动板与舵机连接方式如图5所示。驱动板与每一个舵机连接都需要3根线,分别是电源线VCC、控制线PWM和地线GND,其中控制线用来输出PWM脉冲。驱动板通过PWM线向舵机配置脉冲从而控制舵机转动,舵机转动的角度和控制线配置PWM脉冲的宽度成正比。因此,通过I2C总线协议,使两个舵机驱动板可以产生18路PWM脉冲,从而控制六足机器人移动[7]。
图5 驱动板与舵机接口Fig.5 Interface between drive board and steering gear
六足机器人整个驱动部分是由两块舵机驱动板串联而成,在实际中,每块舵机驱动板都有1个确定的控制命令,每块驱动板的控制命令都由4部分组成:驱动板地址、舵机地址、脉宽起始地址LED_ON、脉宽结束地址LED_OFF。舵机驱动板控制命令格式为:
驱动板地址(1个字节)+舵机地址(1个字节)+脉宽起始值on(2个字节)+脉宽结束值off(2个字节)。
驱动板地址共有8位,其中最高地址位固定为1,最低位为W/R读写模式选择,第二位到第七位地址位由驱动板外接电平确定。当写入程序时,第一个舵机驱动板地址的最高位不变,其余7个地址位为0。不同的是,第二个舵机驱动板的第6个地址位为1。因此,第一个舵机驱动板的器件地址为0x80,第二个舵机驱动板的器件地址为0x84。一个舵机驱动板上可以控制16个舵机通道,每个通道的地址设置为0x00、...、0x0F。
每个PWM通道有4个寄存器LEDn_ON_H、LEDn_ON_L、LEDn_OFF_H、LED_OFF_L,舵机驱动板通过采用控制PWM脉冲宽度的方式来控制舵机旋转的角度,关系如图6所示,寄存器LEDn_ON_H和LED_ON_L控制输出脉冲宽度的起始值on,LEDn_OFF_H和LEDn_OFF_L控制输出脉冲宽度的结束值off。由于舵机驱动板的分辨率为12位,所以脉冲宽度起始值on和结束值off的范围为0~4095,其中脉冲宽度起始值on设置为0,并且一般舵机只能旋转180°,接收PWM的频率为50Hz,则有舵机角度与输入脉冲时间对应 :0°-0.5ms、45°-1.0ms、90°-1.5ms、135°-2.0ms、180°-2.5ms,角度φ与脉冲宽度结束值off的关系如式(1)所示:
图6 舵机PWM脉宽Fig.6 Servo PWM pulse width
以舵机驱动板1为例,使其中舵机1旋转60°,则off为239,十六进制为0x00ef,则其命令格式为:0x80(驱动板地址)+0x00(舵机地址)+0x0000(脉宽起始值)+0x00ef(脉宽结束值)。
目前,常见的六足机器人步态主要有三角步态和四足步态、五足步态。四足步态为机器人在任意时刻的状态均为四足支撑,同时机器人的两侧各有一足向前摆动;五足步态是将六足机器人的六条腿按照顺序依次前进,每次只有一条腿移动,另外五条腿支撑机器人;三角步态也称交替三角步态,由机器人一侧的前足、后足和另外一侧的中足构成两组交替摆动,三角步态是自然界中多数昆虫最常使用的一种步态,也被誉为最快速有效的静态稳定步态。由于四足步态的速度比三足步态快,五足步态在3种步态里面是最稳定的,但是由于四足步态在机器人移动过程中稳定性较差,五足步态在机器人移动过程中移动速度较慢,而且三角步态的移动模式简单,速度和稳定性适中,因此非常适合步行架构的机器人的直线行走[8]。本文设计的六足机器人采用三角步态进行移动,以机器人前进为例,具体的步态分解如图7所示。
图7 机器人前进步态分解图Fig.7 Decomposition diagram of robot's forward gait
六足机器人移动时将6个腿部分为两个组,其中左侧前腿(a)、右侧中腿(d)、左侧后腿(e)组成第一组,右侧前腿(b)、左侧中腿(c)、右侧后腿(f)组成第二组。当机器人前进时,首先处于静止站立状态,接着左侧前腿(a)、右侧中腿(d)、左侧后腿(e)抬起、向前转动,然后右侧前腿(b)、左侧中腿(c)、右侧后腿(f)向后转动,同时左侧前腿(a)、右侧中腿(d)、左侧后腿(e)落下,接着左侧前腿(a)、右侧中腿(d)、左侧后腿(e)恢复原来的角度,并且右侧前腿(b)、左侧中腿(c)、右侧后腿(f)抬起、向前转动,然后右侧前腿(b)、左侧中腿(c)、右侧后腿(f)落下,并且左侧前腿(a)、右侧中腿(d)、左侧后腿(e)向后转动,最后所有腿恢复静止站立状态。
编写机器人主程序时,除了编写主程序外,还需要编写子程序,包括机器人的前进、后退、转弯、避障等程序。在对机器人进行程序编写时,首先进行系统初始化,包括I2C串口配置、GPIO的配置、舵机驱动板的地址分配等。初始化后,传感器模块传输数据,接着对接收到的数据进行判断,最后通过控制占空比调节机器人关节角度,从而控制机器人移动[9]。以机器人避障程序为例,其避障程序流程图如图8所示。当机器人进行避障时,首先传感器对机器人前方进行检测,若机器人前方有障碍物时,则判断障碍物与机器人之间的距离与安全距离的大小,若实际距离小于安全距离,机器人左转,从而避开前方障碍物[10]。
图8 避障程序流程图Fig.8 Obstacle avoidance program flowchart
本设计选择STM32F103RCT6作为主控板,PCA9685作为舵机驱动板,MG996R直流伺服舵机作为关节驱动,通过在PCA9685上控制脉冲宽度(PWM)来使舵机进行转动,从而操纵机器人进行移动。在安装机器人腿部关节时,需要调整舵机的角度以保证机器人移动过程中不会因为动作进行的顺序发生碰撞,以保证机器人调试顺利。等机器人的控制程序录入后,通过在实验室测试,测得机器人正常移动速度为2m/min,最小转弯半径为10cm,超声波有效测量距离为2m。
通过在实验室测试发现,机器人在地面可以稳定行走,并且在行走过程中可以有效地躲避前方障碍物,以及可以对周围环境进行正常测量,但是机器人爬坡能力和避障能力还有待提高,且机器人控制方法可以进一步优化,后续还可以搭配其他传感器以及摄像头模块,使机器人系统可以更好地适应石油巡检管线环境。