自平衡自行车(基于NI CompacRIO)
今天向大家隆重介绍的设计是由清华大学DreamBots队开发的自平衡自行车,该设计在今年7月夺得第三届全国虚拟仪器大赛唯一的特等奖,并荣膺2015 NI LabVIEW全球学生设计竞赛三甲。
无人驾驶自行车有一些独特的优点:自行车的体型狭窄,更具灵活性,能够穿过一些狭小的街道;体型小意味着占地面积小,携带方便;自行车使用电力驱动,环保节能。但是,自行车的灵活性也给其带来了明显的缺点和不足,相对于汽车的四轮结构而言,自行车的两轮结构具有不稳定性,在没有人为控制的情况下自行车无法维持平衡。因此,对于无人驾驶自行车,最基本的挑战是自身的平衡控制。
一自平衡自行车硬件结构一览
自平衡自行车是在电动自行车的基础上改装而来的,经过多次的修改和调整,自行车的Solidworks模型如图1所示,实物图如图2所示。
图1自平衡自行车Solidworks三维
图2自平衡自行车实物图
二各个模块相应的功能简介
功能描述
作为自平衡自行车的基本支架,对电动自行车的动力部分进行改装,把控制车前进速度的电压信号接出,由NI CompactRIO控制器控制。
性能参数
车型号Giant Li-90,全长1.5m,车高1.08m,轮辋半径26mm,车重50kg,锂电池电压36V,容量10Ah,马达是高速无刷电机,功率180W,自行车最高时速20Km/h。
功能描述
主要采集陀螺仪数据,和NUC进行数据通讯,根据姿态信息及NUC发来的控制指令执行自平衡控制算法控制转向电机和刹车电机。
性能参数
· cRIO-9024 控制器:800 MHz,512 MB DRAM,4 GB存储。
· cRIO-9114:8槽,Virtex-5 LX110 cRIO可重新配置机箱。
· NI 9263:4通道、±10 V、16位同步模拟输出模块。
· NI 9870:4端口RS232串行接口模块。
· NI 9403:32通道、TTL数字输入/输出模块。
功能描述
NUC使用在Linux Ubuntu 12.04安装的ROS(Robot Operating System)系统为了采集激光雷达环境数据与Arduino遥控器和测速信息,并和cRIO控制器进行数据交换。
性能参数
酷睿i5 4250U-1.3GHz双核处理器,4GB内存,1TB硬盘:体积大小为101.6×101.6×43立方毫米。
功能描述
作为转向电机,控制车把转向角度,主要执行cRIO控制器的模拟信号指令。
性能参数
· maxon电机:RE 35直流有刷电机,额定电压48V,额定电流1.67A,额定转速6530rpm,减速比66:1。
· Copley电机驱动器:ACJ-055-18,峰值电流18A,持续电流6A,最大输出功率970W。
功能描述
主要执行cRio控制器的模拟信号指令,拉动闸线实现不同程度的刹车。
性能参数
· EX-106+电机:数字伺服舵机,转动范围280°。
· 电压范围:12V~18.5V,最大电流3.2A。
功能描述
用于测量车身的三轴姿态以及加速度。
性能参数
· MTi-300:测量三轴姿态和三轴加速度。
· Roll/Pitch静态误差:0.2°。
· Roll/Pitch动态误差:0.3°。
· Yaw误差:1°。
功能描述
激光雷达用于测量车环境里的障碍物,通过网线将结果传输给NUC处理;电机的目的是带动激光雷达到达指定位置进行扫描。
性能参数
· 激光雷达:范围(最大值/10%反射率)20m/18m,扫描角度Max:270°,可以在设置参数中调整,角度分辨率0.25°/0.5°可调,扫描频率25/50Hz,响应时间40ms/20ms,数据接口RS 232/Ethernet/CAN,工作电压10.8V~30VDC,外形尺寸(W*H*D) 102×152×105mm3,重量 1.1Kg。
· 控制电机:同3中的maxon电机。
功能描述
车轮辐条经过一次,输出将产生一个脉冲,输出的脉冲信号发送给Arduino处理。
性能参数
6.5mm激光对射光电开关,感应距离1-10m,工作电压DC 4.5-5.5V,响应时间1ms,外形尺寸:长2cm ,宽1cm,高0.9cm。
功能描述
Arduino微控制器根据激光对射器的脉冲信号计算车的前进速度,并根据遥控器接收机的脉冲信号计算遥控器的速度和方向指令,然后通过UART接口将上述结果发送给NUC。
性能参数
· 微控制器ATmega2560,工作电压5V,输入电压7-12V。
· 数位输出入54(15 PWM出入),模拟输出入16,Flash内存256KB,SRAM 8KB,EEPROM 4KB,时钟频率16MHz。
功能描述
用于遥控自行车。车上的接收机接收理想速度和方向与转给Arduino。
性能参数
· 遥控器-频率范围2.4055-2.475GHz,6个通道,LCD屏幕,遥控距离范围500米,工作电压12V,机身重量590gr,尺寸191×93×302毫米。
· 接收机-调制方式:GFSK。
· 灵敏度:1024 RF。
· 接收灵敏度:-100dbm。
· 功率:4.5-6VDC。
· 重量:5克ANT。
· 尺寸:37.6×22.3×13 mm3。
三各个模块的连接图
自平衡自行车控制系统以cRIO为核心,通过NI模块化I/O设备与外部传感器和执行器相连。硬件系统连接方式框图如图3所示。
图3自平衡自行车硬件系统连接框图
四自平衡自行车控制系统简介
自行车的动力学模型是一个复杂的非线性系统,我们在平衡点位置附近进行线性化近似得到自行车的模型表达式:
其中:θ是车身的倾斜角,?是车把转向角,q_1,q_3是和自行车机械参数相关的常量,q_2,q_4是和自行车机械参数及前进速度v相关的变量。
经过简化后的模型是参数随着速度改变的二阶系统,根据线性系统理论,通过控制车把转向角可以实现对车身倾斜角的控制,从而使车身保持平衡,控制器的设计分以下两种情况讨论:
速度恒定时,控制器采用了负反馈和前馈的方法,设计如图4所示。
图4自平衡自行车控制系统框图
Bicycle Dynamic表示车自身的动力学,1/(Ts+1)起延时和低通滤波的作用,K1、K2和K3分别表示车身倾斜角反馈系数、倾斜角速度反馈系数和前馈系数,θ_d,θ ?_d分别表示车身的目标倾斜角和角速度,θ ?_d恒为零,θ_d由遥控器信号给出。
通过对车身倾斜角和角速度的负反馈,选择合适的系数K1、K2,能够实现车的前进、左转、右转等基本功能,但是对遥控器的左右转信号的响应速度慢,不够灵活。
为了增强车运动的灵活性,在车把转向角加入了前馈的作用,选择合适的系数K3,实现了前进、左转、右转之间的灵活切换。
当车速改变时,由于车的系统参数随着速度发生改变,系数K1、K2和K3也和当前速度息息相关。为了实现车在变速情况下的稳定行驶,把车前进速度范围7~16km/h进行分段处理,均匀分为六段,记为档,每档对应一组系数 K1、K2和K3;此外减速过程中EX-106电机会拉闸线实现较快的减速。最终实现了加速减速之间的灵活切换。
控制器合理的设计、参数合适的选取、cRIO强大的实时计算能力以及各种细节的处理使得整个系统具有较强的稳定性,能够稳定地通过5X5cm的障碍物等。
五自平衡自行车软件模块组成
Labview编程的主界面程序labview_main.vi的前面板如图5所示,程序主要由如下6个模块组成。
· 陀螺仪模块:主要接收和处理陀螺仪信号。
· CRIO和NUC通讯模块:主要接收NUC发来的遥控器指令,并把系统参数及采集的姿态信息数据发送给NUC处理及存储。
· 刹车模块:主要是判断加减速情况,并且发送指令控制EX-106电机。
· 激光雷达自启动模块:在启动时,控制激光雷达到达指定的角度进行扫描。
· 前进电压处理模块:根据遥控器的速度快慢档位信号计算出自行车前进电机期望的电压。
· 车把转向模块:综合陀螺仪信号、前进电压及遥控器转向指令,计算车把转向角度。
以上6各个模块在程序中有文字标注,要完整地Labview程序,需要预先安装以下软件:
· LabVIEW 2011;
· LabVIEW FPGA Module 2011;
· LabVIEW Real-Time Module 2011;
· LabVIEW Robotics Module 2011;
· NI RIO 2011。
图5自平衡自行车程序主界面
六方案创新点
该自平衡自行车具有很强的灵活性和稳定性,其主要功能及创新点表现在3个方面:
1.自行车模型是一个复杂的非线性模型,对模型进行线性化处理,并采用反馈和前馈的控制方法实现了自行车的动态平衡,在遥控器的控制下能实现前进、左转、右转、加速、减速等基本运动;
2.自平衡自行车灵活性强,在遥控器的实时控制下能灵活地实现如前进、左转、右转之间的灵活变化以及运动过程中进行加速减速的灵活变化,从而能实现绕“8”字、变速绕圈、在塑胶跑道上连续跑圈运行等复杂运动;
3.自平衡自行车稳定器性强,能抵抗地面大部分的扰动和障碍物,在实际操作中能稳定越过减速带以及截面为5cmX5cm的障碍物等。