双轮自平衡机器人控制设计

2022-01-18 23:31徐妍
科海故事博览·中旬刊 2022年1期
关键词:陀螺仪电动机

徐妍

摘 要 轮式机器人具有机动性高,并且在狭小空间运动灵活的特点,双轮自平衡机器人是一个非线性的欠驱动系统,即一个基于轮式倒立摆模型的实际应用系统,平衡机器人系统主要由机械行走装置、控制系统和传感器三部分组成。本文主要以双轮自平衡机器人作为研究对象,设计其试验样机,对双轮自平衡机器人的行走装置的电动机和机器人的控制方式进行研究。经过研究和设计确定使用直流一体化的伺服电动机和单片机控制系统,并在机器人设计中增加陀螺仪,增强它的平衡性。

关键词 双轮自平衡机器人 电动机 单片机控制 陀螺仪

中图分类号:TP242 文献标识码:A 文章编号:1007-0745(2022)01-0001-03

1 双轮自平衡机器人的设计条件

自动机器人是完全自主的(无需无线通讯)平衡机器人,其设计要求平衡机器人所有轮子与地面接触点必须在一条直线上,履带形式的运动机构不在平衡机器人的定义范围内,即双轮自平衡机器人。自动机器人的尺寸最大范围为500mm长×500mm宽×500mm高,重量不超过15kg。在能源上,机器人的电源额定电压不得超过24V,如果用压缩空气气压不得超过0.8MPa。

2 双轮自平衡机器人行走的设计构想

双轮自平衡机器人的机械行走装置主要由车体平台、电机驱动器、电机、齿轮减速机构和车轮组成。机器人两个轮子的运行需要发电机供给动力以达到机器人底盘运动的需求。

为了解决机器人行走装置的前进问题,需要研究其动力系统即电机的选择与使用,该设计的第一步是选择合适的电机搭配电池让机器人“动起来”。

在电机的选型方面,首先考虑的是电动机的驱动负载能力。直流电动机的优点是可以方便地改变电压调节转速,并可以提供较大的转矩,其调速性能和启动性能比较好,但是其结构较复杂,一旦发生故障,维修较困难。直流电动机适用于需要频繁调节转速负载的工况。

异步电机的优点在于结构简单、性能稳定、维护方便、价格便宜且制造工艺简单,但调试性能较差。但随着变频技术的发展,交流电机也可以通过改变频率来实现调节转速,不过从经济性原则来说,交流电动机的调试需要增加变频器等设备,会使其成本增加不少[1]。

其次考虑的是电动机的功率和效率问题。相关调查报告显示,在功率一定的情况下,装配一台直流电动机的所用时间相当于两台同步电动机或者四台异步电动机,因此异步电机在工业中得到了最广泛的应用。然而异步电动机的工作是交流电源接定子绕组建立旋转磁场,最后驱动转子绕组的转轴进行运动。整个工作过程中,绕组属于电感性元件,其不做功只消耗电网的功率。所以异步电动机如果要满足大功率负载使用,需配备无功功率补偿装置,而同步电动机则可通过励磁装置向电网提供无功功率,功率越大同步电动机的优势就越明显。

异步电动机的优点明显,但从设计条件来说,机器人的供电电压不超过24V,因此选用交流异步电动机需要利用整流器等设备,无疑将设计过程变得繁琐,且可操作性差,增加制造成本。

综上所述,为了让机器人动起来,选择控制电动机而非普通电动机,控制电动机的选择对象有伺服电动机和步进电动机两种[2]。该设计从定位精度、低频特性、过载能力、运行能力、速度响应能力和效率指标六个方面着手,发现伺服电动机在后端设计旋转编码器,定位精度远远高于进行细分的步进电动机。步进电动机由于电脉冲信号的工作方式,其低速时振动现象较明显,其振动频率是电动机空载频率的一半,这种情况对于机器人运动是不利的,因此需要增加阻尼器来克服振动问题,无疑增加了成本。一般情况下,步进电动机不具备过载能力,而伺服电动机具有较强的过载能力,但是机器人在运动过程中,可能因为自重等自身因素和外在因素产生惯性力矩,因此如果选用步进电动机,要想克服惯性力矩,则需要选择较大转矩的电动机,但是机器人在正常工作期间不需要那么大的转矩,这就导致出现浪费力矩的现象,无疑也增加了购买电动机的成本。伺服电机的效率指标和速度响应能力也远超步进电动机,步进电动机从静止加速到工作转速,需要200~400ms;伺服电动机从静止加速到额定转速可能仅需要几毫秒。步进电动机的效率一般为其额定效率的60%以下,而伺服电动机的效率远比步进电动机要好,在其额定效率的80%以上,其温升的性能也比步进电动机好。但从成本上考虑,如果在步进电动机条件适合的情况下,机器人的行走装置仍然可以选择步进电动机。

按照机器人的设计条件,其最大重量为15kg,额定电压24V,选择直流一体化力矩伺服电动机。该设计初步决定选用伺服电机57D2R1010,该电动机不仅满足步进电动机的低成本要求,也比之前的步進电动机的过载能力以及效率性能要优良。其具体的参数PN为100w,UN为24~36V,IN为4.4A,NN为1500rpm,PN为0.96N.m,EN为32768p,其默认一圈脉冲为8192p。初步选用电机后,便可以做出基本的硬件构建简单搭建出机器人的底盘。

3 双轮自平衡机器人控制方式的设计构想

解决好合适的电机及电源这些动力系统“动起来”的问题后,接下来我们考虑的便是“怎么动”。

基于此设计条件,我们初设所需要的控制策略是:通过Arduino软件编写串口通信程序通信单片机,使用I2C设备连接,以达到双轮自平衡机器人的闭环运行,为了使双轮小车能够自平衡,我们需要一个陀螺仪去实现。陀螺仪的原理就是一个旋转物体的旋转轴所指的方向在不受外力影响时是始终不变的,因此人们用这个原理保持运动方向的平衡。采用多种方法信息读取轴所指示的方向,并将其数据信号传给控制系统。我们骑自行车其实也是利用了这个原理,轮子转得越快越没那么容易倒,是因为车轴有一股保持水平的力量。现在陀螺仪可以准确地确定运动物体的方位,它在航空、航海、航天和国防工业中作为一种惯性导航仪器被广泛使用。传统的惯性陀螺仪主要部分有机械式的陀螺仪,而机械式的陀螺仪对工艺结构的要求很高。70年代提出了现在光纤陀螺仪的基本设想,到80年代以后,光纤陀螺仪就获得了非常迅速的发展,激光谐振陀螺仪也得到很大的发展。光纤陀螺仪具有结构紧凑、灵敏度高、工作安全可靠的特点。光纤陀螺仪在很多的领域已经完全取代了机械式的传统陀螺仪,成为现在导航仪器中的关键部件。

目前自平衡机器人的底盘上装有陀螺仪传感器,其是一种简单轻巧的电子传感器,可以用于设备的自由移动,即跟随设备的移动而移动,还可以用在定位和控制系统上。传统的陀螺仪传感器用于直升机的模型上,以控制直升机的平衡[3],现在的科技让陀螺仪传感器也利用于手机等移动设备上,以实现重力感应和体感触发,陀螺仪传感器还会产生诸如控制设备实行远程同步控制光标等。陀螺仪传感器类似陀螺,旋转的物体无论是否受到外力影响,本身旋转轴的方向是不会改变的,所以陀螺会一直保持着直立,陀螺仪传感器也会利用这一点保持物体的方向。物体可以通过某些方式读取可以产生旋转轴的旋转方向,并且进行数据传输,将方向数据传给控制系统,让设备实现一定的反应。陀螺仪传感器的灵敏度很高,工作稳定可靠、体积小巧、功能强大,因此陀螺仪的方向很重要,如无法计算正确的角度,机器人将无法工作。通过动力系统的“加持”后,我们的机器人可以动起来,但是目前没有目标、没有方向,它只会漫无目的地动。那么接下来我们便开始想办法“告诉”它应该怎么动,给予它一个目标让它去实现,这便是一个与机器通信的过程[4]。

机器人的姿态信息包括倾倒的角度和角速度,这是它可以“告诉”我们的信息。那么我们首先想要它保持平衡就要用角度来指挥它应该在一个什么样的状态。这时,通过ardiuno连接单片机进行串口通信,配合陀螺仪便能很好的帮助我们达到平衡的目的。在ardiuno中进行变量等基本设置后,该控制方式以9600kbps的速率启动串行端口,以主控模式启动I2C总线并将I2C时钟速度设置为400kHz。为了创建用于控制步进电机的可变脉冲,需要创建一个定时器,该定时器将每20us执行一段代码(子程序)。

在默认情况下,MPU-6050处于睡眠状态,所以我们必须唤醒它。通过地址开始通信,将写入寄存器的位置设置为00000000以激活陀螺仪并设置一些筛选以改进原始数据。设置pin口,创建500个循环,每15圈改变一次LED的状态,使LED快速闪烁,启动与陀螺仪的通信,开始读取寄存器(75h),结束通信。从陀螺仪请求两个字节,将两个字节合并为一个整数,等待3700微秒以模拟主程序循环时间,将总值除以500,得到平均陀螺仪偏移量,在下一个循环结束时间设置loop_timer变量[5]。

接下来便是主程序循环,如果有串行数据可用,将接收到的串行数据加载到received_byte变量中,重置receive_counter变量,接收到的字节对25个有效程序循环(100毫秒),100毫秒后删除接收到的字节。将蓄电池电压加载到 battery_voltage变量,并对二极管进行电压补偿。与陀螺的角度启动通信,从寄存器3F开始读取,添加加速计校准值,通过将acc数据限制在+/-8200,防止被零除[6]。

根据加速度计计算当前角度,设置启动变量以启动PID控制器,添加陀螺校准值。并非所有陀螺仪都安装在与机器人轴100%水平的位置,这可能是由于制造分接板时未对准造成的。因此,机器人将不会在完全相同的位置旋转,并开始形成越来越大的圆圈。为了补偿这种行为,当机器人旋转时,需要非常小的角度补偿,先尝试0.0000003或-0.0000003,看看是否有改进。使用PID控制器计算,平衡机器人由角度驱动。首先计算所需角度(设定点)和实际角度(过程值)之间的差值,自动更改自平衡pid设定点变量,以确保机器人始终保持平衡。计算PID出输出值,将PI控制器限制为最大控制器输出。为下一个循环存储误差值,当机器人处于平衡状态时,创建一个误差来停止电机。如果机器人翻倒或启动变量为零或电池为空,将PID控制器输出设置为0,以便电机停止移动,通过这样两个误差的设置来确保机器人循环出错的安全性[7]。

通过控制计算,将控制器输出复制到左侧电机的pid_output_left变量,将控制器输出复制到右侧电机的pid_output_right变量,如果设置了接收字节的第一位,则更改left和right变量以向左转动机器人,增加左马达转速,降低右马达转速。如果设置了接收字节的第二位,则更改left和right变量以向右转动机器人,降低左马达转速,增加右马达转速。如果设置了接收字节的第三位,则更改left和right变量,使机器人向右移动,缓慢改变设定点角度,使机器人开始向前倾斜。如果设置了接收字节的第四位,则更改left和right变量以向右转动机器人,缓慢改变设定点角度,使机器人开始向后倾斜。如果未发出向前或向后指令,则缓慢将设定点降至零。如果PID设定值大于0.5,则每次循环将设定值降低0.05。如果PID setpoint小于-0.5则setpoint每次循环增加0.05。如果PID设定点小于0.5或大于-0.5,则将设定点设置为0。当平衡小车没有向前或向后移动时,可调整自平衡点。这样,机器人总能找到平衡点,如果setpoint是0度,机器人仍在向前移动,则增加self_balance_pid_setpoint;如果机器人仍在向后移动,则降低self_balance_pid_setpoint。之后用电机脉冲计算,为了补偿步进电机的非线性行为,需要进行以下计算以获得线性速度行为。计算左右步进电机控制器所需的脉冲时间,将脉冲时间复制到throttle变量,以便中断子程序可以使用它们。角度计算调整为4毫秒的循环时间,确保每个循环正好是4毫秒。通过将loop_timer变量设置为每个循环+4000微秒来创建等待循环,如果throttle_left_motor_memory为负,将输出5设置为低,以反转步进控制器的方向,反转throttle_left_motor_memory变量,将5号输出引脚拉高来控制步进电机正向旋转,将输出设置为6高,为步进控制器创建脉冲,将输出6设为低,因为脉冲只需持续20us,如果throttle_right_motor_memory为负,将3号输出引脚拉低来控制步进电机反向旋转,反转throttle_right_motor_memory变量,将步进电机正向的输出3设置为高,将输出4设置为高,为步进控制器创建脉冲,将输出4设置为低,因为脉冲只需持续20us。

由此,我们可以达到机器人的自我平衡以及差速转向,实现机器人的自我调整平衡和底盘运动控制,这便是我们所谓的机器人能自我知晓“怎么动”。

4 总结

通过上述的研究确定了双轮自平衡机器人的电动机控制方式以及程序构想。但在后期的程序编写阶段,需要对双轮机器人的整体重量,轮距以及陀螺仪的放置位置进行计算校核,才能保证在电动机额定的转矩下,完成双轮及其人的自平衡问题。

参考文献:

[1] 茅力非.两轮自平衡移动机器人建模与控制研究[D].武汉:华中科技大学,2013.

[2] 王晓宇.两轮自平衡机器人的研究[D].哈尔滨:哈尔滨工业大学,2007.

[3] 叶聪红.本质不稳定两轮车辅助平衡装置的智能控制[D].西安:西安电子科技大学,2006.

[4] 赵书尚,韩建海,李济顺,等.平行双轮电动车及其控制系统的研究[J].机电工程,2005(01):12-15.

[5] 武俊峰,孫雷.两轮自平衡机器人的控制方法研究[J].哈尔滨理工大学学报,2014,19(06):5.

[6] 方辉.基于LMI的两轮自平衡机器人控制器设计[J].黑龙江科技学院学报,2015(03):333-335.

[7] 马传翔,杨名利.双轮自平衡机器人的滑模变结构控制研究[J].微计算机信息,2011,27(01):3.

猜你喜欢
陀螺仪电动机
非纯电阻电路公式如何选
Micro Beast Plus陀螺仪使用心得(上)
Kyosho Drone Racer穿越机
单极电动机
惯性导航技术介绍及应用发展研究
SemihexTM单相感应电动机阻容制动的仿真研究
含电动机电路问题归类分析
关于电机的控制技术分析
基于DSP的MEMS陀螺仪信号处理平台的设计