搜索
bottom↓
回复: 10

基于罗盘的小车行驶控制方案,附实验

[复制链接]

出0入17汤圆

发表于 2012-7-31 17:35:49 | 显示全部楼层 |阅读模式
本帖最后由 ilovepp 于 2012-8-1 17:14 编辑

方案所需的硬件:双轮驱动+万向轮的小车一辆,电子罗盘一个,光电计数器一对(只在实验测试中用,最终的小车上不需要)

1.控制方案的需求:
该控制方案要求对两轮小车的行驶方向进行精确控制,包括灵活的转弯,稳定的直线行走两个核心要求。速度控制上只需要简单的定义几级速度即可,不需对其进行精确控制。

2.电机控制
由于对小车行驶的控制最终落实在对电机的控制上,因此电机的控制策略至关重要。而对电机特性的掌握是制定电机控制策略的前提。这里所谓电机的特性是指,电机的输出与控制信号PWM的占空比之间的关系。为了探索这个关系我设计了下面的实验:

实验一:直流电机特性实验

实验目的:探索车轮的转速与PWM占空比之间的关系

实验步骤:
1.给小车的左右轮各安装一个光电测速码盘
2.让小车的左右轮以相同的PWM占空比行驶一段时间,记录下该段时间内左右光电码盘的计数值,然后增加PWM的占空比重复该步骤记录多组计数值
3.将采集到的数据用matlab描点作图


实验结果:如实验一结果图所示


图注:横轴为占空比乘以3600,纵轴为圈速乘以20;蓝色为左轮的数据,红色为右轮的数据
由实验一结果中可得出以下结论:
1.车轮转速与PWM占空比在图中的范围内满足简单的线性关系。
2.将左轮直线向右平移200个单位后将与右路直线重合

因此直流电机的控制策略是让左轮的PWM占空比时刻比右轮的PWM占空比多200来,
即可保证两轮的转速大致相同。同时,当左右电机增加或减少相同的PWM值时,左右轮增加或减少的速度相同。

3.反馈输入
得到直流电机的控制策略后,仍然不能实现对小车行驶方向的精确控制,因为小车在行驶过程中很容易受到环境的干扰从而偏离航向,所以必须引入闭环机制。闭环系统中的反馈值为罗盘测出来的航向。测量航向使用的是HMC5883这款芯片, HMC5883是一个三轴磁传感器,能够测出相互正交的三个轴上的磁场强度。由于小车只在平面上运动故只需要使用x和y两个轴。 但是x轴传感器和y轴传感器的零点以及对磁场的灵敏度不同,必须要对读到的值进行校正后才能使用。因为每个轴传感器都是线性的,所以当地磁感应线在水平面上的分量与传感器x轴的交角为 时有:

可见从传感器读到的点(x,y)理论上应落在一个中心在(X,Y),半长轴半短轴分别为a或b的椭圆上。因此只要根据测出来的一系列的点拟合出椭圆,然后便可由 求出 来。为此我设计了如下试验:

实验二:罗盘校准
实验目的:得到校准参数X,Y,a,b

实验步骤:
(1) 将罗盘固定在小车上(注意远离车电机,铁片)
(2) 用手将小车每次旋转一个小角度直至旋转一周,并记录下大约一百多对的测量值
(3) 利用matlab将这些点拟合成椭圆,并得到该椭圆的中心(X,Y),半长短轴a,b
实验结果:如实验二结果图1

成功拟合出一个椭圆来,它的参数是X=168 Y=-268 a= 304 b=314

结果验证:
使用上述参数进行校准,将小车放在垂直的的四个方向上,传感器给出的角度如实验二结果图2所示:

由图可知测量误差在5度以内。满足系统的要求。


3.PID控制
在完成了电机控制和反馈输入两个课题的研究后,就可以对航向进行PID控制了。在该PID控制器中,设定值为给定的航向,反馈值为罗盘测量得到的航向,输出值为左右电机PWM占空比之差。
1.算法
采用的是增量式数字PID算法,算法的核心代码为:
LastOutput = pPID->LastOutput+
pPID->Proportion * (Error-pPID->LastError) +
pPID->Integral   *  Error +
pPID->Derivative * (Error-2*pPID->LastError+pPID->PrevError);
从式子可以看出:
(1).第二行为比例项贡献的增量,该增量与本次误差与上次误差的差值有关
(2).第三行为积分项贡献的增量,该增量与本次的误差有关,在每次测量后得到了积累,因此可用作消除静态误差用
(3).第四行为微分项贡献的增量,该增量与误差变化的趋势有关,该项其实是一段弧线对应弦的中点与该弧中点的轴坐标只差,因此当弧线向下凸时该项为正将曲线向上拉,而当弧线向上凸时该项为负将曲线向下拉,这样可以减小曲线的震荡幅度

2.参数整定
PID参数的整定的目的是让小车能够更好的转弯以及直线行驶。衡量参数好坏的标准如下:
1.“快”,即从开始转弯到转弯完成的用时越短越好
2.“准”,即实际转弯角度与指定转弯角度越接近越好
3.“稳”,即转弯完成后以及直线行走时左右摇晃越小越好
为了能够将以上指标可视化,从而得到合适的PID参数,我设计了如下实验:
实验三:小车PID控制实验
实验目的:找到能够实现“快”“准”“稳”的P,I,D参数
实验步骤:
(1)令I=D=P=0,设定行驶方向为85度(实验楼走廊的向东方向)
(2)P=P+2
(3)将小车朝向实验室走廊向西的方向上启动,小车将做180度转弯的动作,小车在行驶中每隔40毫秒记录下当前角度,采集到400个点后小车停止
(4)从小车上读取采集到的点,用matlab绘制曲线进行观察,如果对曲线满意就跳转回到第二步继续增大比例项系数,直至系统出现不稳定或严重的震荡。
实验发现随着P的增加,曲线走势越来越好,但是当P>15时,系统出现不稳定现象。因此取P=12,其对应的曲线如实验结果图中的蓝色曲线所示。由图可知蓝色曲线代表的过程的静态误差很小,因此PID系统的积分作用可以省去,即I=0;下面只需要调节微分项系数D。继续做实验。
(5)令D=100,D=300,D=500,分别使用步骤(3)的办法采集数据并绘图。如实验结果图所示,绿色曲线对应的D=100,红色对应的D=300,品红色对用D=500;由图可知绿色曲线不够“稳”,品红色曲线虽“稳”但不够“快”,而红色曲线既“稳”又“快”,因此取D=300
实验结果:如实验三结果图所示

图注:横坐标是时间,单位为秒。纵坐标是方向角,单位为度。水平方向上的三条虚线由上到下依次为165度,155度(期望角度),145度
整定后的PID参数为P=12 I=0 D=300,其动态过程如上图中的红线所示,由图还可以看出即使转最大的180度弯,整个转弯动作仅需要大约2秒种时间。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-8-1 16:56:48 | 显示全部楼层
文件不存在????

出0入17汤圆

 楼主| 发表于 2012-8-1 17:10:00 | 显示全部楼层
xutch 发表于 2012-8-1 16:56
文件不存在????

我重新传了

出0入0汤圆

发表于 2012-8-1 19:13:57 | 显示全部楼层
可以了。楼主辛苦。

出0入0汤圆

发表于 2012-8-3 15:07:00 | 显示全部楼层
学习了,谢谢分享。

出0入0汤圆

发表于 2012-8-6 11:12:31 | 显示全部楼层
不错的东西,学习了!

出0入0汤圆

发表于 2013-7-17 08:57:37 | 显示全部楼层
学习一下。。电子没有事例程序啊

出0入0汤圆

发表于 2013-7-17 10:12:13 | 显示全部楼层
测试实验设计的很到位,但不太详细,对于我这样的初学者有些困难。

出0入0汤圆

发表于 2014-3-24 10:59:21 | 显示全部楼层
楼主这个PID的输入,即航向值的确定是怎么来的,比如入弯道时的入弯道角度,自己人为设定?  这样做有什么意义呢??

出0入0汤圆

发表于 2014-5-6 17:18:04 | 显示全部楼层
测试实验设计的很到位

出0入0汤圆

发表于 2014-7-17 18:37:13 | 显示全部楼层
辛苦了,楼主
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-6 06:01

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表