智能车舵机PD运算

合集下载

内模PID控制器在智能车转向系统中的应用及仿真

内模PID控制器在智能车转向系统中的应用及仿真

策略. 文献[—] 46 中通过采用 内模控制原理对不 同 特性对 象 进行 控制 , 结果 表 明 : 于 内模 原 理 的控 基
制器设 计 原理 简单 , 同 时考 虑 多 种 控制 指 标 , 可 应
用 范 围 广 , 数 整 定 直 观 方 便 . 析 内模 控 制 与 参 分 P D控制 存在 的对 应 关 系 , P D 控 制 器 设 计 转 I 将 I 化到 内模控 制框 架 下进行 , 以得 到 明确 的解 析结 可 果 . 仅 在 控 制 要 求 上 能 到 达 模 糊 P D控 制 的要 不 I
涵盖控制 、 模式识别 、 传感技术、 电子电气 、 计算机 、 机 械等 多学 科 的科 技 创 意 性 设 计 ,它 主 要 由路 径 识 别 ,速 度 采 集 ,转 向控 制 及 车 速 控 制 等 功 能 模
块组 成 . 设计 要 求小 车在 特定 的场地 上 ,通 过转 向 角 和车 速 的控制 , 其 自动 地沿 着导 航信 号行 驶. 使 系 统 转 向控 制 器 的设 计 是 智 能 车 控制 系统 中 的一 个 十分重 要 的环 节 , 计 使用 的舵 机 _内部 具 设 2 ] 有位 置 反馈 电路 , 它 的舵盘 输 出转 角正 比于 给定 使
作者简介 : 刚(9 8 )男 , 秦 16 一 , 西安工业大学副教授 , 主要研究方向为 自动控制和人工智能. - i qn a g au eu c . Emal ign @x t.d . n :
内模 P D控 制 器在 智 能 车 转 向系统 中 的应 用 及 仿 真 I
秦 刚 , 陈 凯 ,高 惠 中 ,陆 华 颖
(. 1 西安工业大学 电子信息工程 学院 , 西安 7 03 ;. 1 0 2 2 西安交通大学 电子 与信息工程学 院 , 西安 7 0 4 ) 10 9

智能车PID的算法推荐

智能车PID的算法推荐

PID( Proportional Integral Derivative )控制是最早发展起来的控制策略之一,由于其算法简单、鲁棒性(稳定性)好和可靠性高,被广泛应用于工业过程控制,尤其适用于可建立精确数学模型的确定性控制系统。

模拟PID控制系统原理框图PID是一种线性控制器,它根据给定值r in(k)与实际输出值y out(k)的差值e(t)构成控制方案,利用运放实现模拟PID的一个例子:式中:以上为典型模拟PID应用例子。

关于各调节器的作用说明:♥比例调节器P1、起调节作用与输出量和给定量的差成正比,有差就有调节作用,所以他的调节结果总是有差存在,这种调节不可消除差,所以叫这种调节为有静差调节;2、但这种调节作用快,能很快减小误差,是最常用的一种调节器!3、积分I调节慢,所以PI是最常用的一种搭配!♥积分调节器I1、是给定量与输出量的差对时间的积分,在电路里就是用给定量与输出量的差给电容充电,只要时间足够长,电容器的电压总会到达给定量,使输出量与给定量的差为零;2、积分调节器是一种无静差调节器,意思是说可调节到给定值,做到精确、准确输出;♥微分控制调节器D1、,这种控制总是以输出量与给定量的差的变化率成正比,差变化越剧烈,调节作用越大,差变化越平稳,调节作用越弱;2、这种微分调节作用,使得输出量平稳而很少波动;3、这种微分调节作用,对输出量的变化、波动产生强烈的阻尼、抑制的作用,就像摩擦力的作用;数字式PID应用:增量式PID的算式为:如果换换成智能车里的方向控制就变为:Pwm_offset=PWMMiddle+PID_P*(error-last_error)+PID_I*(error)+PID_D*(error+pre_error-2*la st_error);其中:error=middle-offset,注意这个公式里的offset应该有正负之分,左右偏移的值互为相反。

这样自然就确定了最后的方向。

智能汽车控制策略及PID算法分析

智能汽车控制策略及PID算法分析

智能汽车控制策略及其PID 算法分析作者:王保磊机电1103-11221077目录背景简介一.智能汽车竞赛简介: (1)系统建立二.控制策略: (1)2.1:理论分析 (2)2.2 : PID 控制规律的离散化 (3)2.3 : matlab 分析 (4)2.4 :系统校正 (9)总结三.总结: (14)一.智能汽车竞赛简介。

全国大学生“飞思卡尔”杯智能汽车竞赛是在规定的模型汽车平台上,使用飞思卡尔半导体公司的 8 位、 16 位微控制器作为核心控制模块,通过增加道路传感器、电机驱动电路以及编写相应软件,制作一个能够自主识别道路的模型汽车,按照规定路线行进,以完成时间最短者为优胜。

因而该竞赛是涵盖了控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科的比赛。

摄像头组比赛规则:采用模拟或数字摄像头对赛道信息进行采集,通过硬件二值化并进行软件信息处理,获得赛道信息,采用规定的舵机和电机控制小车的行走。

相同的赛道,竞速,完成赛道时间短的队伍获胜。

下图为赛道示意图和实际赛道照片。

为保证小车一直沿着黑色引导线快速行驶,系统主要的控制对象是小车的转向和车速。

即应使小车在直道上以最快的速度行驶。

在进入弯道的时刻尽快减速,且角度的转向要适合弯道的曲率,确保小车平滑地转弯,并在弯道中保持恒速。

从弯道进入直道时,小车的舵机要转向至中间,速度应该立即得到提升,直至以最大的速度行进。

为实现上述控制思想,我们采用不同的控制方法来控制小车的转角和速度。

下图为小车的实物模型:二.控制策略。

2.1:理论分析:Ov7620 数字摄像头采集到的赛道信息为采集点灰度值,这些灰度值与设定的阀值进行比较转化为二进制信息,利用这些二进制信息可以确定赛道黑线位置,进而确定小车当前位置及理想通过曲线。

求得理想通过曲线上各点的斜率进而确定赛道类型,通过算法控制电机转速,以保证小车安全通过赛道防止侧翻和打滑。

计算小车的当前位置横坐标值即摄像头视野中线与理想通过曲线与横坐标交点的差值。

舵机算法

舵机算法

根据前面介绍的CMOS图像传感器采集处理得到的只是40行中每一行的黑线坐标。

并没有得出赛道的具体形状,到底是直道还是弯道,是大弯还是急弯,是偏向一个方向的弯道还是“S型”弯道,是“大S型”弯道还是“小S型”弯道。

这就可以通过曲率的计算来得出。

下面给出曲率的具体计算方法。

首先,将扫描到的40行中每9行分为一组,而且彼此交叉,也就是说,在能扫描到的情况下,划分为从第0行到第8行,从第1行到第9行,从第2行到第10行,依此类推,最后从21行到第29行,一共可以划分为22段,分别计算每一段的曲率,以第一段为例,计算的方法为:将第i行的坐标定义为coordinate[i],将CMOS图像传感器的中心坐标定义为middle,那么每一行相对于中心坐标的偏差就为ek[i]=coordinate[i]-middle (4.1) 再乘以每一行各自的校正值emendation[i],计算公式为ek[i]=ek[i]*emendation[i] (4.2) 就得到了各行实际偏离中心位置的距离。

然后用第0行的偏差加上第8行的偏差之和除以2再减去第4行的偏差,得出一个相对偏差ek_comparatively。

ek_comparatively的计算公式为ek_comparatively=(ek[8]+ek[0])/2-ek[4] (4.3) 然后计算出该段曲线对应的直道,即将第0行的黑点与第8行的黑点直接相连的直线的长度计算出来,计算公式为distance_beeline=sqrt((ek[8]-ek[0])*(ek[8]-ek[0])+48*48) (4.4) 最后将公式(4.3)除以公式(4.4),得到最后曲线的弯曲度为curve_degree。

计算公式为curve_degree=ek_comparatively/ distance_beeline (4.5)就得出了曲线的弯曲程度,然后根据每一段的弯曲程度,最终得出所扫描到的全部道路的形状。

电动舵机模糊pd-常规pid复合控制器设计

电动舵机模糊pd-常规pid复合控制器设计

照蛆电动舵机模糊PD一常规PI D复合控制器设计郭栋李朝富(中国空空导弹研究院,河南洛阳471000)嘲要目控制器是设计高性能电动舵机的关键。

建立了直流无刷电动舵机的数学模型,以此为基础设计了位置环模糊PD-常规PI D复夸控制系统,利用vc++6-o离线计算了模糊PD控制表,利用M adab/si m t l l i nk进行了仿真,仿真结果表明设计的电动舵枫发合控铆系统比仅采用P I D控制性能好,且工程可行洼好。

壕臻悯]元刷直流电动舵机;位显环控制;模糊PD一常规PI D复合控制;计算机仿真近年来,随着直流无刷电机和数字信号处理电路在电动舵机上的应用,电动舵机的输出力矩、抗负载能力、频率响应等指标有了很大提高,而好的控制律对充分发挥数字电动舵机的性能非常重要。

模糊控制作为一种非线性控制,可以离线计算,在线运行的计算量小,且控制性能较好,越来越受到人们的关注。

本文建立了无刷直流电动舵机的数学模型,根据无刷直流电动舵机的特性设计了位置环模糊PD一常规PI D复合控制器,进行了仿真分析,并讨论了该复合控制器的工程可行性。

1电动舵机执行机构的数学模型1.1无刷直流电机建模直流无刷电机线性化模型框图如图1:L,图1直流无刷电机线陛比陵型图1中,£。

为电机电枢等效电感,R。

为电枢等效电阻,e。

为反电动势,i。

为电机电流。

假设负载为0,可以得到电机转速∞。

(S)和电机电压乩(s)之间的传递函数:型。

㈣:!丛。

…哪’(\郴LⅡxA。

/tS2+急肆l~12无刷直流电动舵机拙行机构的数学模型电动舵机减速机构的减速比可认为是常数。

在实际应用中,执行机构的有些非线陛不可忽略。

电机输入电压有电压限幅,电机电枢电流有电流限幅,相当于电机有电压饱和及电流饱和非线I生;减速机构结构件之间有间隙,间隙会使舵机动态性能变坏,必须考虑间隙非线I生;减速机构的结构件之间还有摩擦作用,有时还人为加入摩擦,摩擦非线性也必氛考虑。

在模型中加入这些非线性因素后,带负载的执行机构模型框图如图2:图2电机+摘§l鲥讲矧莫型框图2直流无刷电动舵机的位置环复合模糊控制器设计只利用模糊控制器进行系统控制,往往不能满足控制对象的所有指标(尤其是在控制底层),本文采用了模糊控制和常规P I D控制综合,在偏差比较小时采用常规PID控制,偏差比较大时采用模糊P D控制。

升级版智能车快速转弯的模糊自适应PID控制算法[

升级版智能车快速转弯的模糊自适应PID控制算法[

升级版智能车快速转弯的模糊自适应PID控制算法[
摘要:
针对智能小车在转向尤其是急弯时陀螺仪传感器输出的瞬态信号变化很快,因自身结构和工艺限制而带来的信号测不全、抓不好的问题,设计了一种以STM32转弯控制芯片和FPGA为一次仪表特性改善单元控制核心的验证方法。

测试结果表明,该系统在对转弯信号采集、放大后通过级联特性改善模块可以有效地改善传统转弯下的动态特性,提高急弯下对实时信号处理的精度。

0 引言
谷歌旗下波士顿动力公司最新发布的名为Handle的轮式机器人能力拔高到新的高度,事实上这种智慧型机器人搭载了多种诸如传感采集模块、环境探测以及人机交互模块等。

路况不一样造成不同弯道的曲率不同,如何在急转弯的情况下保持精准的感知与采存处理一直是研究的焦点所在[1]。

智能小车的转弯控制是一个复杂的控制过程,要建立相应的数学模型,单单选用经典的PID算法不够精准,很难做到精确测量和估计。

因此,本文提出在传递函数后面串联一个动态测试修正模块[2-4]。

1 智能车弯道设计背景
智能车要想在急转弯路况下继续保持稳定、快速、安全的行驶,主要体现小车在运动控制上是否可以即时地进行监测和反馈。

由于被测小车所处周边的环境复杂多变,采光条件、路面温度、自身结构产生的相对运动差以及摩擦系数都会引起智能车所带来的参数变动和毛刺现象甚至是检测盲区[5-6]。

考虑到小车单方面在转弯控制下定制控制策略会使整体运行过程的稳定性、及时性出现偏差以至于冲出跑道,针对复杂多变的环境,综合得出一个合理控制策略补偿模块,使小车在弯道环境下既能保持采集的信号可靠、稳定,又能快速、高效、准确地在弯道上进行调姿与控制[7]。

2 系统硬件。

摄像头pid算法思路

摄像头pid算法思路

基于CCD摄像头智能车分段PID控制算法设计自动寻迹智能车涉及到当前高技术领域内的许多先进技术,其中最主要的是传感技术、路径规划和运动控制。

本课题是以飞思卡尔智能车竞赛为背景,以单片机作为核心控制单元,以摄像头作为路径识别传感器,以直流电机作为小车的驱动装置,以舵机控制小车转向。

车模竞赛的赛道是一个具有特定几何尺寸约束、摩擦系数及光学特性的KT板,其中心贴有对可见光及不可见光均有较强吸收特性的黑色条带作为引导线,宽度为2.5 cm。

在行驶过程中,系统通过摄像头获取前方赛道的图像数据,同时通过测速传感器实时获取智能车的速度,采用路径搜索算法进行寻线判断和速度分析,然后作控制决策,控制转向舵机和直流驱动电机工作。

智能车通过实时对自身运动速度及方向等进行调整来“沿”赛道快速行驶。

本文主要介绍摄像头通过提取赛道黑线信息交予单片机处理,通过单片机输出控制信号控制舵机转向来控制车模的转向,从而很好的自动循迹。

1 总体软硬件结构及思路此智能车辆定位系统用摄像头拍摄车辆前方的赛道,通过MC9S12XS128采样视频信号,获得图像数据。

然后用合适的算法,如跟踪边缘检测算法,分析图像数据,提取目标指引线。

然后,系统根据目标指引线的位置信息,对舵机和电机施以合适的控制。

本智能车运动系统的结构图如图1所示。

因为系统是一个有机的整体,所以需配合好系统的摄像头、控制单片机、电机(包括直流伺服电动机、光电编码器)、舵机和辅助电路(电源板、电机驱动板)等各个部分。

舵机是实时控制车模的转向,是比赛快速性和稳定性的关键,舵机控制有很多的控制算法,如:PID经典控制算法、模糊算法、人工智能算法等。

2 系统程序总体控制流程系统的基本软件流程是:首先,对各功能模块和控制参数进行初始化;然后,通过图像采集模块获取前方赛道的图像数据,同时通过速度传感器模块获取赛车的速度。

采用PID对舵机进行反馈控制。

另外根据检测到的速度,结合速度控制策略,对赛车速度不断进行适当调整,使赛车在符合比赛规则的前提下,沿赛道快速行驶。

智能车舵机控制原理

智能车舵机控制原理

智能车舵机控制原理智能车舵机控制原理第一章:引言智能车舵机控制技术是由智能汽车技术衍生而来的一种重要技术。

在现代汽车技术中,智能车舵机控制技术已经得到广泛应用,它可以通过控制车辆的转向动作提高车辆的转弯性能和行驶平稳性。

本章节将简要介绍智能车舵机控制的研究背景和意义,并阐述本论文的研究目的和内容。

第二章:智能车舵机的工作原理智能车舵机是智能汽车控制系统中的一个关键组成部分。

本章节将从机械结构和电气控制两个方面介绍智能车舵机的工作原理。

首先,将详细描述智能车舵机的机械结构,包括转向机构和位置传感器等组成部分。

然后,将介绍智能车舵机的电气控制原理,包括信号输入、控制算法和执行机构等内容。

第三章:智能车舵机控制算法智能车舵机控制的关键是控制算法的设计和优化。

本章节将介绍智能车舵机控制算法的原理和方法。

首先,将介绍传统的车舵机控制算法,包括PID控制、模糊控制和神经网络控制等。

然后,将介绍新型的智能车舵机控制算法,如基于深度学习的控制算法和基于强化学习的控制算法等。

最后,将讨论智能车舵机控制算法的优缺点和应用范围。

第四章:智能车舵机控制系统的实现与测试智能车舵机控制系统的实现和测试是智能车舵机控制研究的重要环节。

本章节将介绍智能车舵机控制系统的硬件实现和软件开发过程。

首先,将介绍智能车舵机控制系统的硬件平台,包括主控芯片、传感器、执行机构等。

然后,将介绍智能车舵机控制系统的软件开发,包括控制算法的实现和系统的调试等。

最后,将介绍智能车舵机控制系统的实验测试方法和结果分析。

第五章:结论与展望本章节将总结本论文的研究内容和主要结果,并给出未来智能车舵机控制研究的展望。

首先,将总结智能车舵机控制原理和算法的重要性和应用价值。

然后,将回顾本论文的研究工作和创新点。

最后,将探讨智能车舵机控制技术未来的发展方向和应用领域。

总结本论文主要介绍了智能车舵机控制原理的研究内容和方法。

通过分析智能车舵机的工作原理和控制算法,可以更好地理解和应用智能车舵机控制技术。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/**********************舵机增量式PID算法*********************** double ref = 0;//设置参数设定值double feb = 0;//采样反馈过程值int pwm_var = 0; //PID调整量int PWM_out = 0; //PWM输出量double Uo = 0;double Ek = 0;double Ei = 0;double Ed = 0;#define Kp 8 //PID调节的比例常数#define Ti 0.05 //PID调节的积分常数#define Td 0.02 //PID调节的微分时间常数#define T 0.02 //采样周期#define Kpp Kp * ( 1 + (T / Ti) + (Td / T) ) #define Ki (-Kp) * ( 1 + (2 * Td / T ) )#define Kd Kp * Td / T//#define Kpp 4//#define Ki 0.8//#define Kd 20//误差的阀值,小于这个数值的时候,不做PID调整,避免误差较小时频繁调节引起震荡#define Emin 3//调整值限幅,防止积分饱和#define Umax 100#define Umin -100//输出值限幅#define Pmax 15500#define Pmin 200///////////////////////////////////////////////////////////////////////// PID运算 ///////void pid_ctrl(void){Ek = ref - feb; //差值运算if( fabs(Ek) < Emin ) //误差的阀值(死区控制??){pwm_var = 0;}else{Uo = Kpp*Ek + Ki*Ei + Kd*Ed;//PID计算Ed = Ei;Ei = Ek;pwm_var = (int)Uo; //制转化调整量,PWM为整数if(pwm_var >= Umax)pwm_var = Umax; //调整值限幅,防止积分饱和 if(pwm_var <= Umin)pwm_var = Umin; //调整值限幅,防止积分饱和 }PWM_out += pwm_var; //调整PWM输出if(PWM_out > Pmax)PWM_out = Pmax; //输出值限幅if(PWM_out < Pmin)PWM_out = Pmin; //输出值限幅TBCCR1 = PWM_out;//输出给寄存器,改变PWM占空比}#define G_Kp 8 //P 8#define G_Ki 15 //I#define G_Kd 0 //Dint error;int pre_error;int last_error;int U_error;uint U_Pre1=9000; //摆头舵机中心位置uint U_Pre2=8600; //方向舵机中心位置uchar sum;uchar temp,tt,ss;/**************************************************函数:delay_ms()描述:延迟x*10微秒**************************************************/void delay(uint time){while(time--){_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop); _asm(nop);_asm(nop);_asm(nop);}}void display(){sum = 0;error = 0;/*********************************/PORTA = 0x00;delay(100);if(PORTA_PA0 == 1){sum++;error -= 12;}/*********************************/ PORTA = 0x02;delay(100);if(PORTA_PA0 == 1){sum++;error -= 10;}/*********************************/ PORTA = 0x04;delay(100);if(PORTA_PA0 == 1){sum++;error -= 8;}/*********************************/ PORTA = 0x08;delay(100);if(PORTA_PA0 == 1){sum++;error -= 6;}/*********************************/ PORTA = 0x0a;delay(100);if(PORTA_PA0 == 1){sum++;error -= 4;}/*********************************/ PORTA = 0x0c;delay(100);if(PORTA_PA0 == 1){sum++;error -= 2;}/*********************************/ PORTA = 0x10;delay(100);if(PORTA_PA0 == 1){sum++;error += 2;}/*********************************/ PORTA = 0x12;delay(100);if(PORTA_PA0 == 1){sum++;error += 4;}/*********************************/ PORTA = 0x14;delay(100);if(PORTA_PA0 == 1){sum++;error += 6;}/*********************************/ PORTA = 0x18;delay(100);if(PORTA_PA0 == 1){sum++;error += 8;}/*********************************/ PORTA = 0x1a;delay(100);if(PORTA_PA0 == 1){sum++;error += 10;}/*********************************/ PORTA = 0x1c;delay(100);if(PORTA_PA0 == 1){sum++;error += 12;}PORTA = 0x17; //激光消影/*********************************/if((sum>0)&&(sum<5)){error = (int)(error/(sum));if(error>4)U_error = 220;else if(error<-4)U_error = -220;else if(error>6)U_error = 320;else if(error<-6)U_error = -320;else if(error>8)U_error = 420;else if(error<-8)U_error = -420;elseU_error = ((G_Kp*(error-pre_error)+G_Ki*error+G_Kd*(error-2*pre_err or+last_error)));if(U_error >420)U_error = 420;else if(U_error <-420)U_error = -420;U_Pre1 += U_error;if(U_Pre1>12000)U_Pre1 = 12000;else if(U_Pre1<6000)U_Pre1 = 6000;PWMDTY01 = U_Pre1;if(U_Pre1 > 9000) U_Pre2 = (8600+(((U_Pre1-9000)*9)/10));else U_Pre2 = (8600-(((9000-U_Pre1)*7)/10));if(U_Pre2 > 9800) U_Pre2 = 9800;else if(U_Pre2 < 7400) U_Pre2 = 7400;PWMDTY45 = U_Pre2;}last_error=pre_error;pre_error=error;/**********************///速度调节if((U_Pre2>9600)||(U_Pre2<7600)){if(temp == 6){PTP_PTP7 = 1; //电机正转delay(100);PTP_PTP7 = 0;}if(temp == 1){tt++;if(tt == 1)PWMDTY3 = 50;} else{tt = 0;temp = 1;}}else if((U_Pre2>9400)||(U_Pre2<7800)){if(temp == 2){tt++;if(tt == 2)PWMDTY3 = 70;} else{tt = 0;temp = 2;}}else if((U_Pre2>9200)||(U_Pre2<8000)){if(temp == 3){tt++;if(tt == 2)PWMDTY3 = 75;} else{tt = 0;temp = 3;}}else if((U_Pre2>9000)||(U_Pre2<8200)){if(temp == 4){tt++;if(tt == 2)PWMDTY3 = 80;} else{tt = 0;temp = 4;}}else if((U_Pre2>8700)||(U_Pre2<8500)){if(temp == 5){tt++;if(tt == 2)PWMDTY3 = 83;}else{tt = 0;temp = 5; }}else if((U_Pre2<8700)||(U_Pre2>8500)) //直道{if(temp == 6){tt++;if(tt == 2)PWMDTY3 = 85;}else{tt = 0;temp = 6; }}/************************************************************/ }。

相关文档
最新文档