于强+许强+杨为民+何燕
摘要:随着计算机技术的不断发展,与开源软件一样,开源硬件正成为一股不可忽视的颠覆性力量影响着科学探索和企业生产。基于开源硬件的产品越来越深入到社会实践中。基于Arduino的开源硬件技术,论文提出了一个两轮直立自平衡机器人的设计方案。它采用陀螺仪判断小车的原有姿势状态,使用加速度传感器计算车体的倾斜角度,采用Arduino处理数据和控制小车,用PID控制结合互补滤波融合加速度计和陀螺仪采样信息,用PWM调节电机运动,最终达到车体的平衡。实验结果表明:小车可以自行保持直立,并且具有较好的回复平衡能力。该车可以作为进一步验证各种控制算法的理想平台,具有一定的应用前景。
关键词:Arduino;开源硬件;自平衡机器人
中图分类号:TP24 文献标识码:A 文章编号:1009-3044(2014)34-8332-03
移动机器人技术随着计算机技术、软件技术、微电子技术、材料技术等相关领域的进步而发展,同航天技术一样,其发展水平甚至代表了一个国家的综合科技实力[1]。两轮自平衡机器人是基于欠驱动,非线性以及无电状态中不稳定的系统,若使车体能够在供电状态下保持自身平衡,必然要保证车身重心始终和两车轮重心处在同一中心轴线上。当小车车身处于动态平衡控制时,车身姿态传感器模块将测到的车身角速度值和加速度值经过处理后传到控制模块,然后计算得到控制车身平衡的信号量,通过驱动左右直流电机产生控制力矩用以调节左右车轮的速度和方向,从而使车身能够恢复直立平衡状态[2]。因而获取准确实时的车身角速度值和加速度值是车身能够完成平衡控制的前提。但是传统的惯性传感器模块由于其电器特性,易受到温度和噪声的影响因而产生不同程度的误差,使得单一的姿态传感器模块在车体姿态检测中难以获得准确的位姿。为解决上述问题,目前多采用MPU-6050整合性6轴运动处理组件获取数据并通过控制模块计算最优姿态角度[3,4]。该文提出了一种基于Arduino开源硬件,采用PID控制的方法设计自平衡机器人。
1 Arduino
Arduino是一种获得实际环境物理量的工具。它是个可编程的,基于AVR的微控制器的一个开源集成开发环境。Arduino可以用来开发交互产品,例如它可以获得开关信号,以及各种传感器信息,此外它还可以实现各种电灯、电机以及其他物理设备的智能控制。Arduino项目可以单独运行,当然也能够在自身运行的同时和计算机上的应用程序(Flash,Processing,MaxMSP等)进行通讯。Arduino板可以自己组装或者直接买成品,相关的开源IDE可以免费获取。
适合用作交互式平台的单片机或者单片机平台有很多。比如有:Parallax Basic Stamp,MITs Handyboard,Netmedias BX-24,Phidgets或者其他能实现类似功能的。使用以上所述的工具,你的编程将变得简便得多,它们能提供给你一套容易的编程工具包。与此同时Arduino也简化了和单片机之间工作的流程,然而与其它系统相比,Arduino有不少优越性,比如:便宜,跨平台,简易的编程环境,软件开源并可扩展,硬件开源并可扩展等。
2 自平衡机器人工作原理
为了保持机器的平衡,ARDUINO需要知道框架和地面之间的角度,以便于可以指挥电机以大约的速度和需要的方向运行来防止机器摔倒。为了准确测量自平衡机器人的倾斜角度,需要使用IMU(惯性测量单元)检测它的旋转速率和X轴方向的重力,主要硬件组成结构如图1所示。
2.1 惯性测量单元(IMU)
IMU是一个小的PCB板,它含有旋转陀螺仪和电位计,每个部件测量角度的不同部分,如图2。
有了从IMU测量的角度信息,ARDUINO可以决定用多大的速度和什么方向去启动两个电机。最简单的角度估计(和ARDUINO代码)是用-90°到+90°范围,0°视为水平,如果IMU测得的角度是0,那么电机停止;超过0度电机适当的前进;低于0度电机相应地反转。这个机制使得自平衡机器人水平而且使你能够通过前后倾斜去控制它的速度和方向。
2.2 操纵和加速
为了操纵这台车,需要在手柄上装一个电位计(绝对型角传感器)在左右转动手柄时。如果仪表指在中心位置,电机收到相等的功率而向前直开。如果向左转或向右转,每个电机的最大速度相应地收到影响,使得自平衡机器人转弯。
2.3 启动开关
需要安装一个按钮式开关,当它被按下时才可以操作机器。这个开关是手动安装在你的左手大拇指放的位置以便于如果你从自平衡机器人上下来或者什么其他的原因放开了手柄,它会马上关闭电机。这也有一个角度限制去关闭电机,如果倾斜程度超过阈值。这个跌落安全机制使得自平衡机器人驾驶者相当的安全。
2.4 加速度计
加速度计可以测量出惯性测量单元在地平线方向上所受的重力。如果这个惯性测量单元板子向左或者向右倾斜了,角度测量就会产生每个方向上相应的值,如图3、图4[5]。
虽然该加速度计可以测量前后90°的倾角,但在实际应用中,一般取到25°~30°就可以了,过大的倾角会使自平衡机器人进入危险驾驶状态,这是不允许的。所以设计一个阈值,当倾角超过此阈值时就关闭电机。
2.5 陀螺仪
陀螺仪能测量出惯性测量单元在某时刻移动的快慢,即每秒移动多少度。这个值是从惯性测量单元得到的模拟信号,需要把这个模拟值转化成一个近似的角度值。想要知道陀螺仪旋转得速度就需要知道变化的时间周期,并设置陀螺仪的起始点。
2.6 角度滤波
为了让角度不受任何一个传感器的缺点的影响,将两个信号最好的部分结合起来。这里使用一种互补滤波器,就是加权平均值。由于加速度计受到的影响很多,所以它对最终角度值起的权重比较小。这里取陀螺仪=98%,加速度计=2%。endprint
3 PWM 调速系统的实现
脉冲宽度调制又被称为PWM调制也即PWM技术,这种脉冲载波的脉冲持续时间(脉宽)在调制波的样值的影响下改变的脉冲调制方式,简称脉宽调制,如图5。
脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法。我们可以已使用高分辨率的计数器,用调制后的方波占空比来编码任何一个模拟电平。PWM信号还依然是数字的,由于在任一瞬时,满幅值的直流供电不是完全有(ON状态),就是完全无(OFF状态)。这样,电压或电流源作为一种通或断的重复的脉冲序列被加到模拟负载上。负载上有直流供电是就是通,没有直流供电是即为断。我们可以说,假如带宽足够,我们可以用PWM编码任何一个模拟值。
3.1 PWM调速系统优势
作为电机的调速实现部分,与可控整流式调速系统相比PWM调速系统明显有以下优点:1) 因为PWM调速系统的开关频率高,利用电枢电感的滤波能力就可得到平稳的直流电流,低速特性好。2) 由于快速响应特性好,开关频率高,有良好的鲁棒性,可以获取更宽的频带。3) 开关器件只在开关状态工作,因此主电路的损耗较小,装置的效率较高。PWM调速系统的应用已经有一段历史了,然而高速开关的缺乏导致其未能在生产实际中推广应用。但近年来,由于大功率开关器件的制造技术进步,PWM调速系统又受到重视[6]。
PWM电调算是一种比较低级的自动控制技术。所谓的低级就是精度低,为了提高控制精度,采用了PID控制[7],如图6所示。
4 PID控制
PID(比例-积分-微分)控制器的应用历史已有70多年了,在当代的工业控制中应用得极其广泛。由于PID控制器原理简单,不需精确的系统模型等先决条件就可以使用,使其成为应用最为广泛的控制器。在自平衡车中,我们要控制一个电机的转速,就必须使用一个测量转速的传感器,获取电机的转速信息,并将结果反馈到控制路线上。应用自动控制的关键在于做出正确的测量和比较后,怎么样才能最优化地纠正系统,如图7、图8所示。
PID控制器是由比例单元(proportion)、积分单元(integration)和微分单元(differentiation)组成的。它的输入e(t)和输出u(t)之间的关系为:
5 结束语
两轮直立自平衡机器人是一个相对简单的复杂系统,是检验各种控制方法处理能力的典型装置,受到世界各国科学家的重视[8]。该文提出的基于Arduino的两轮自平衡机器人设计采用了PWM,结合PID控制,相对于其他系统,成本更低,制作方便,软件开源并可扩展,硬件开源并可扩展,有很广的应用前景。
参考文献:
[1] R.西格沃特, I.R.诺巴克什.自主移动机器人导论[M]. 李人厚,译.西安:西安交通大学出版社,2006.
[2] 阮晓钢.两轮自平衡机器人的研究与设计[M].北京:科学出版社,2012.
[3] 赵蕊,贺建军.多传感器信息融合技术[J].计算机测量与控制,2006,15(9):1124-1126.
[4] 黄漫国.多传感器数据融合技术研究进展[J].传感器与微系统,2010,29(3):5-8.
[5] 王海波,冯蓉珍,司俊,等.基于PWM调速的智能小车控制系统实现[J].科技广场,2011(11).
[6] John-David Warren, Josh Adams, Harald Molle. Arduino Robotics[M].2011.7.25
[7] 李洋,梁义维.基于PID与LQR的两轮平衡小车控制算法的仿真研究[J].机械工程与自动化,2011(6):2.
[8] 杨程引,程菊花,陈友荣,等.两轮直立自平衡机器人的设计[J].浙江树人大学学报,2013(12).endprint