基于ESP32的四足机器人的设计与实现

2023-04-01 07:33詹书豪陈平平彭川
电子制作 2023年5期
关键词:舵机步态姿态

詹书豪,陈平平,彭川

(东莞理工学院 电子工程与智能化学院,广东东莞,523808)

0 引言

随着科学技术的不断进步,机器人技术得到了快速的发展,机器人不仅促进了人类劳动的发展,而且为人类科学史作出了巨大的贡献。机器人技术被认为是对未来新兴产业发展具有重要意义的高技术之一[1]。仿生机器人是机器人研究的重要领域[2],在反恐防暴、探索太空、抢险救灾等不适合由人来承担任务的环境中,仿生机器人有着良好的应用前景[3]。作为仿生机器人的典型代表,四足爬行机器人步态多样,运动灵活,对未知复杂的地形具有极强的适应性。在这样的背景下,本文设计了一种以ESP32为主控的四足爬行机器人。

1 步态规划与运动学分析

本文设计的机器人共有四条腿,每条腿的根关节、髋关节和膝关节都有一个大扭力数字舵机,一共需要12个舵机。

1.1 步态规划

步态是足式机器人的各腿之间运动的规律,步态规划,顾名思义为机器人六条腿的运动次序[6]。在自然界中,昆虫纲的动物一般拥有六条腿,像蚂蚁、甲虫、蝉等,这些动物在爬行时并不是六足同时前进,而是前右腿、中左腿和后右腿为一组,剩下的三条腿为一组,这两组腿分别组成两个三角形支架,前进的过程中两组腿交替运动,这种步态称为三角步态[7]。自然界中也有大量的四条腿的动物,四条腿能让它们不需要任何控制或调整就能够保持直立,即可以保持静态稳定。本文设计的四足机器人,静止的情况下,处于静态稳定状态,移动时,机器人每次迈步只用一条腿,同一时刻至少有三条腿在地上支撑,并且重心投影点保持在这三条支撑腿形成的三角形内。

如图1所示,以机器人重心为坐标原点O建立坐标系,A、B、C为某一时刻在地上支撑的三条腿的足尖,d1、d2、d3为机器人重心投影点到支撑足尖围成的三角形各边的距离,以d1为例,已知A(x1,y1),B(x2,y2)两点坐标可求直线AB的两点式方程:

图1 稳定裕度计算

化成一般式:

根据点到距离的公式可以求原点O到直线AB的距离d1:

机器人爬行过程中的稳定裕度为d1、d2、d3中的最小值,显然重心投影点距离三角形各边越远,稳定裕度越大,即机器人越稳定。只要机器人在爬行过程中,重心投影点一直在支撑三角形范围内,那么机器人爬行过程中是静态稳定的[8]。

图2展示了一种方案[9],机器人在爬行过程中,始终符合上述条件。起始时,腿1和腿4分别相对身体向外伸出,腿2和腿3相对身体向内靠拢;腿2向前伸出;所有腿相对身体向后移动,此时机器人的身体会向前移动;腿4相对身体向内靠拢;腿1向前伸出;所有腿相对身体向后移动,此时机器人的身体会向前移动;腿3相对身体向内靠拢,机器人回到起始位置,完成一次完整的爬行动作。

图2 爬行步态示意图

1.2 单腿运动学分析

本文设计的四足机器人每条腿有3个自由度分别位于根关节、髋关节和膝关节,为了得到步态规划后腿部各个关节的转角角度(即舵机转向角度),如图3所示,以机器人腿根部为原点,建立空间坐标系,进行逆运动学分析。

图3 机器人单腿模型

已知条件为每条腿各部分长度L1、L2、L3和足尖坐标(x,y,z),需要求出α、β和γ。为了方便计算,分别以X轴和Y轴、直线L1和Z轴为一个二维平面,如图4和5所示。

图4 X轴和Y轴平面

在图4中,根据勾股定理可以计算出L4的长度,根据反正切函数可以求出角度α:

在图5中,根据三角形相关知识有如下结论:

图5 直线L1和Z轴平面

为了得到β和γ的具体值,还需要计算出θ1、θ2和θ3,先计算出L5和θ3:

由余弦定理可以求得θ1和三角形各边的关系,进而通过反余弦函数求出θ1:

同理可以求出θ2的值:

2 硬件设计

基于ESP32的四足机器人的硬件系统如图6所示。本系统由主控制器ESP32、陶瓷天线、USB一键下载电路、电源电路、LED灯光模块、舵机驱动模块、姿态传感器(MPU6050)等模块组成。

图6 硬件系统框图

2.1 电源电路

整体系统选用锂电池供电(额定电压7.4V),系统主控和传感器的供电电压为3.3V,所以需要把电压转换到3.3V,而舵机直接使用电池供电。由于DCDC芯片的转换效率很高,能使得系统的整体发热很低,所以本系统通过TPS63070RNMR方案为系统提供3.3V电压,通过查阅该芯片的技术手册可知,TPS63070RNMR可以为系统提供高达2A的输出电流,输出电压和反馈电阻R1和R2的关系为:

基于TPS63070RNMR的DCDC基本电路如图7所示,电池电源通过三个10μF滤波电容输入芯片的输入引脚,输出端通过一个10μF和两个22μF滤波电容输出3.3V电压。

图7 TPS63070RNMR电路

系统采用锂电池供电,需要实时监控电池电压以避免过放导致电池损坏,这里设计一个电压采集电路,通过电阻分压使单片机能采集超过3.3V的电压,使用运算放大器搭建电压跟随器实现阻抗匹配,尽量避免单片机受到影响。单片机采集的电压与输入电压的关系为:

2.2 主控

主控芯片选用了乐鑫公司的ESP32-PICO-D4模组,这是一款集成有WiFi和蓝牙的高性能芯片,其采用台积电超低功耗的40纳米工艺,工作温度范围达到-40℃~+125℃,最大时钟频率高达240MHz。该芯片将大量器件如晶振、滤波器、Flash、射频匹配链路等集于一体,极大地简化了外围电路的设计[10]。

图8 电压采集电路

主控电路和下载电路如图9所示,ESP32采用3.3V供电,LAN_IN管脚外接陶瓷天线。为确保芯片上电时的供电正常,EN管脚处需要增加RC延迟电路,这里选用10kΩ电阻和100nF电容构成RC延迟电路。EN管脚还有复位功能,只需将其电平拉低即可触发复位。USB转串口电路采用的方案是CH340C芯片,该芯片内置晶振,可以省去晶振电路。查阅技术手册可知ESP32有正常启动模式与下载模式两种,想要进入下载模式,需要满足:在IO0保持低电平的期间,EN引脚产生一个上升沿。利用CH340C芯片的DTR和RTS信号控制两个S8050三极管的通断来改IO0和EN的电平,产生上述时序,最终实现自动下载功能。

图9 主控电路

2.3 舵机驱动模块

本系统共有12个舵机,需要12路PWM控制信号,故采用PCA9685为本系统的舵机驱动芯片。PCA9685芯片使用I2C协议与主控ESP32进行通信,该芯片支持2.3~5.5V宽电压输入,可以同时输出16路PWM控制信号,每一路控制信号均可自由调节输出PWM波的频率(支持40~1000Hz)和占空比(0%~100%)[13]。电路设计如图10所示。

图10 PCA9685电路

2.4 姿态传感器

姿态传感器采用MPU6050,该芯片采用I2C通讯,集成最大可测范围为±2000°/s(dps)的3轴陀螺仪和最大可测范围为±16G的3轴加速度计,以及一个数字运动处理器DMP。电路设计如图11所示。

图11 MPU6050电路

3 软件设计

3.1 主程序设计

机器人主程序流程如图12所示,系统上电后,进行系统初始化,包括ADC配置、GPIO配置、PCA9685初始化、MPU6050初始化和WiFi通信初始化,WiFi通信采用STA模式,在此基础上建立一个WebSocket服务器用来与小程序进行通信。第一次运行机器人时,需要在小程序中对舵机的位置进行校准,校准完成后数据保存在ESP32的Flash中,下次运行时自动读取校准结果。在正常模式下,机器人保持等待接收指令状态,机器人接收到指令后,根据指令执行相应的动作。

图12 主程序流程图

3.2 MPU6050程序设计

使用MPU6050可以获得机器人x轴y轴的倾角(对应欧拉角中的pitch和roll),ESP32通过I2C协议读取到的数据是三轴加速度和三轴角速度的原始值,为了获得倾角,需要对其进行姿态解算,MPU6050的姿态解算方法有多种,本文使用硬件DMP解算的方式进行解算。DMP是MPU6050内部的数字运动处理器,可以直接输出四元数,获得四元数后可以由以下公式转成欧拉角[15]:

解算出姿态后,可以根据pitch和roll的角度知道机器人是往哪边倾斜的,控制机器人腿的伸缩以控制姿态,让机器人在一定程度上保持水平状态。

图13 MPU6050程序流程图

3.3 小程序的设计

ESP32采用STA工作模式,运行小程序的设备需要与ESP32处在同一局域网下,小程序与机器人之间使用WebSocket进行通信(小程序为客户端,ESP32为服务端)。小程序主要分两个页面,在控制页面下,能通过按钮对机器人进行操控,通过摇杆改变机器人的姿态,在校准页面下,能对每个舵机进行校准,0对应舵机的中值,校准完成后点击保存按钮可以把校准数据存到ESP32的Flash中。

图14 小程序界面

4 测试与总结

经测试,本文设计的四足爬行机器人能使用小程序进行遥控,实现舵机校准、前进后退转弯、姿态自主调节等功能。随着机器人技术的不断发展,会有更多的领域应用智能机器人,减轻人力的负担。本文设计的机器人使用ESP32作为主控,直接利用了ESP32内部集成的WiFi,性价比高,应用潜力大。

猜你喜欢
舵机步态姿态
步态异常,老年人应警惕这些疾病
攀爬的姿态
含齿隙弹载舵机的全局反步模糊自适应控制
基于面部和步态识别的儿童走失寻回系统
全新一代宋的新姿态
跑与走的姿态
基于Kinect的学步期幼儿自然步态提取
基于dsPIC单片机的飞艇舵机控制实现
基于高速同步485总线通信的多通道舵机控制器设计
基于云模型的舵机同步控制