文章目录

  • 前言
  • 自动控制理论
    • 人工控制系统
    • 自动控制
  • 方向控制
    • 典型环节对应
    • 典型环节分析
      • 给定环节与给定量
      • 比较环节与偏差量
      • 控制环节与控制量
      • 执行机构
        • 舵机
          • PWM技术
          • 舵机中值及限幅
          • 转向控制
      • 被控对象与被控量
      • 反馈对象与反馈量
  • 控制思路
  • 结束语
  • 智能车系列文章汇总

前言

今天接着之前的智能车硬件部分,记录智能车控制部分的个人理解,本文采用自动控制原理来分析智能车的方向控制。

自动控制理论

为了更好地理解“控制”,我们复习一下自动控制原理的相关理论知识。

人工控制系统

首先,通过分析一辆真正在道路上行驶的汽车来开始今天的话题;汽车能够在道路上正常行驶是依托人的控制,从自动控制原理的角度来看人和车组成了一个人工控制系统;其中车的行驶姿态作为系统的被控量,车保持在道路中间行驶作为给定量,人眼对车的行驶姿态进行采集并将信息(反馈量)传输给大脑,大脑分析并比较车的行驶姿态与期望姿态是否有偏差,若偏离,则经过思考按照操作规则(控制量)指挥双手调节方向盘,从而把车辆的行驶姿态恢复到期望值(给定量)上。

自动控制

到这里捋清了汽车的姿态控制,很明显,人在车的正常行驶中起到了主导作用,可以说没有人参与汽车就无法运行。参赛的小车必然是不可能有人去驾驶操作的,而是需要小车能够自动完成所有的赛道元素;要让小车在赛道上自动的正常行驶,就需要寻找可以替代人的设备来完成人的操作,组成一个自动控制系统。这里补充一个知识点——何为自动控制?
自动控制:是指在没有人直接参与的情况下,利用外加的设备或装置(控制装置或控制器),使机器、设备或者生产过程(被控对象)的某个工作态或参数(被控量)自动的按照规律(给定量)运行。

方向控制

对照前面提到的自动控制定义,可以得到小车的方向控制的各个环节。

典型环节对应

典型环节 对应装置
比较器 单片机
控制器 单片机
执行结构 舵机 / 电机驱动
被控对象 前轮打角角度 / 驱动左右轮
反馈环节 摄像头 / 电磁

由于车模结构的不同,小车方向控制的各环节会有所区别,例如L车、B车的执行结构只有舵机;F车、E车的执行机构只有驱动轮;而C车的执行机构既有舵机又有驱动轮。这里以C车为例,各自动控制系统环节与小车实际对应关系如下图所示:

典型环节分析

给定环节与给定量

给定环节可以理解为电磁模块和摄像头模块,给定量可以理解为小车位于直道行驶是的舵机控制占空比值或者摄像头的理论中线值。

比较环节与偏差量

比较环节在智能车系统中可以理解为单片机的偏差计算函数,偏差量就是该函数计算出的误差值。下面是电磁偏差计算代码片

// 此代码一般放在定时其中断,保证偏差计算的时序稳定
//电感采集获取赛道信息,三电感     \\ 000      000     000    //L=adc_once(ADC_P00, ADC_10BIT);//左电感值M=adc_once(ADC_P01, ADC_10BIT);//中间电感值R=adc_once(ADC_P05, ADC_10BIT);//右电感值My_Direction.NowError=50*(R-L)/(L+M+R);//**差比和**计算偏差//My_Direction.NowError就是偏差量

而摄像头的偏差量主要是通过计算前瞻的数值与理想中值的差值或者计算曲率来获取,这个部分打算后面专门出一篇描述摄像头的文章,在此不做详细描述。

控制环节与控制量

整个系统的控制器就是偏差处理函数,方向环多为离散的PD控制器(PD控制器会在后面PID的文章中做介绍),这里就理解为一个公式吧,而控制量就是偏差处理函数计算出的结果,还是以电磁为例;下面是电磁偏差处理代码片

/*******************************************************************************
* 函数名       :Direction_out
* 描述            :方向环
* 参数            :void
* 返回            :void
* 编写者       :   小向是个Der
* 编写日期  :   2021-12-19
*******************************************************************************/
void Direction_Out(void)
{My_Direction.KP=10.0; My_Direction.KD=2.5;//转向PD控制//电感差比和算出的偏差做位置式PD计算My_Direction.SumError=My_Direction.KP*My_Direction.NowError+\My_Direction.KD*(My_Direction.NowError-My_Direction.PrevError);My_Direction.PrevError=My_Direction.NowError;//中心偏差滤波、加权滑动平均滤波My_Direction.Pre1_Error[3]= My_Direction.Pre1_Error[2];My_Direction.Pre1_Error[2]= My_Direction.Pre1_Error[1];My_Direction.Pre1_Error[1]= My_Direction.Pre1_Error[0];My_Direction.Pre1_Error[0]=My_Direction.SumError;My_Direction.Direct_Parameter=My_Direction.Pre1_Error[0]*0.8+My_Direction.Pre1_Error[1]*0.1+\My_Direction.Pre1_Error[2]*0.06+My_Direction.Pre1_Error[3]*0.04 ;//此处Price_PWM就是控制量Price_PWM=(int16)(My_Direction.Direct_Parameter);
}

执行机构

执行机构在此系统中主要是电机驱动和舵机,其中电机驱动已经在硬件篇介绍过,也有大佬们的文章作为参考,原理就是利用控制器输出的控制量这里就是上述代码中的Price_PWM,分别加减到两个电机的PWM占空比上,实现内外轮速度差,进而使小车转向差速代码片如下,这里对于电机驱动不在做过多赘述,重点介绍一下舵机。

 //差速处理dutyL=200+Price_PWM/5+2*error;dutyR=200-Price_PWM/5-2*error;//电机动作 单极控制pwm_duty(PWMA_CH2P_P62, 0);pwm_duty(PWMA_CH1P_P60, dutyL*12);pwm_duty(PWMA_CH4P_P66, 0);pwm_duty(PWMA_CH3P_P64, dutyR*12);

舵机

舵机是一种位置(角度)伺服的驱动器,我们可以通过给信号脚不同的占空比来让舵机进行打角进而控制小车方向。例如C车的S3010舵机,它需要使用周期20ms(50Hz)的PWM驱动,高电平时间和舵机打角的对应关系如下:

PWM技术

这里补充一下PWM技术,我们常说的PWM可以理解为一组方波,其周期就是两个相邻的上升沿或者两个相邻下降沿的时间,上述舵机使用的就是一个周期为20毫秒的PWM驱动;而占空比就是在一个周期内高电平的时间。
PWM技术简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在测量、通信、工控等方面。
PWM的频率:
是指在1秒钟内,信号从高电平到低电平再回到高电平的次数,也就是说一秒钟PWM有多少个周期,单位Hz。
PWM的周期:
T=1/f,T是周期,f是频率。
如果频率为50Hz ,也就是说一个周期是20ms,那么一秒钟就有 50次PWM周期。
占空比:
是一个脉冲周期内,高电平的时间与整个周期时间的比例,单位是% (0%-100%)

舵机中值及限幅

由上图可知S3010舵机位于理论中值时一个周期的高电平时间应该为1.52ms由此可得占空比为7.6%,由此可以推算出单片机的对应占空比值,假设pwm时钟频率为30Mhz,则:计时20ms需要计数30 000 000/1000×20=600 000次
Duty= 7.6%×周期为10ms时的总计数值 (一个周期需要计数300 000次)
则舵机理论中值对应的PWM高电平计数个数为:Duty_mid=45 600;

注意一定是让舵机到达理论中值后再安装转向机构,还需要借助按键找出舵机的左右极限值,并且在程序内部要写限幅,保护舵机避免被烧。
舵机初始化及输出控制函数。

/*******************************************************************************
* 函数名       :Steering_Init
* 描述            :舵机初始化
* 参数            :freq        PWM频率(10Hz-3MHz)   angl
*******************************************************************************/
void Steering_Init(uint32 freq, int16 angl)
{pwm_init(PWMB_CH1_P74,freq,angl);  //PWMA初始化
}
转向控制

根据控制器计算的控制量,通过一定比例给到舵机的PWM输出,从而实现舵机的打角 代码

 //转向限制幅度if(Price_PWM>=500) Price_PWM=500;if(Price_PWM<=-500) Price_PWM=-500;Steering_Angl(Price_PWM/2);//输出到舵机打角

被控对象与被控量

整个方向控制系统的被控对象是小车的转向机构,也就是舵机和左右驱动轮,而被控量就是小车的前进角度。

反馈对象与反馈量

在方向控制系统中,反馈对象是摄像头和电磁模块,而对应的反馈量是电感值和前瞻中心值。

控制思路

利用电感输入的差比和或者摄像头中线与前瞻中心值得差计算出偏差值,并将偏差值通过PID运算,然后将PID计算后的数值赋给舵机转向或者电机差速运行。

结束语

关于方向控制就介绍到这,笔者水平有限,若发现问题欢迎各位私信指出。

智能车系列文章汇总

智能车浅谈——硬件篇
智能车浅谈——方向控制篇
智能车浅谈——电机控制篇
智能车浅谈——图像篇
智能车浅谈——控制规律篇
智能车浅谈——过程通道篇
智能车浅谈——抗干扰技术硬件篇
智能车浅谈——抗干扰技术软件篇

智能车浅谈——方向控制篇相关推荐

  1. 智能车浅谈——电机控制篇

    文章目录 前言 运动控制系统 被控对象 执行机构 控制器 反馈环节 M法测速: T法测速 小结 直流调速系统 桥式可逆PWM变换器 (1)正向运行 (2)反向运行 总结 智能车系列文章汇总 前言 之前 ...

  2. 智能车浅谈——过程通道篇

    文章目录 前言 过程通道 模拟量输入通道 模拟量输出通道 开关量输入/输出通道 小结 模拟信号的调理 信号放大电路 滤波限幅电路 开关量信号调理 信号转换电路 滤波电路 保护电路 触点消抖 光耦隔离 ...

  3. 智能车浅谈——控制规律篇

    文章目录 前言 计算机控制系统 常用控制规律 PID控制 比例(P)控制器 比例积分(PI)控制器 比例积分微分(PID)控制 位置式PID 增量式PID 数字PID控制算法的改进 PID参数整定 小 ...

  4. 智能车浅谈——手把手让车跑起来(电磁篇)

    文章目录 前言 材料准备 备赛组 车模 硬件 练习组 车模 硬件方案 整车原理 赛道信息获取及转向原理 工字电感 运放模块 转向原理 元素判断 电机及舵机控制原理 代码实现 效果欣赏 总结 17届完赛 ...

  5. 智能车浅谈——硬件篇

    目录 初识小车 硬件系统 1.电源系统 线性电源 开关电源 2.人机交互系统 3.MCU最小系统 4.传感器系统 摄像头 电感 编码器 5.驱动系统 机械结构 17届完赛代码 智能车系列文章汇总 前言 ...

  6. 智能车浅谈——抗干扰技术硬件篇

    文章目录 前言 干扰 什么是干扰 干扰窜入的主要途径 干扰的分类 硬件抗干扰技术 控制系统的电源保护技术 输入/输出传输线的抗干扰措施 I/O接口的抗干扰措施 接地技术 总结 智能车系列文章汇总 前言 ...

  7. 智能车浅谈——抗干扰技术软件篇

    文章目录 软件抗干扰技术 数字信号的抗干扰措施 数字输入信号软件抗干扰措施 数字输出信号软件抗干扰措施 数字滤波 算术平均值滤波 中值滤波 滑动平均滤波 归一化 差比和 CPU及程序的抗干扰措施 复位 ...

  8. 智能车浅谈——图像篇

    文章目录 前言 认识图像 基本含义 图像类型 数字图像 彩色图像 灰度图像 黑白图像 小结 图像处理 图像压缩 二值化 固定阈值法 大津法 图像降噪(腐蚀) 寻边线 总结 17届完赛代码 17届完赛代 ...

  9. 智能车浅谈 电磁组——环岛处理

    前言 本文为第十七届全国大学生智能车电磁四轮部分经验分享,转载于智能车电磁组--环岛处理,文中如有不妥之处欢迎批评指正. 智能车电磁组--环岛处理 智能车电磁组--环岛处理 一.电感排布 二.圆环思路 ...

最新文章

  1. 基于机器视觉的智能人机交互技术
  2. python怎么导入视频-python怎么导入数据
  3. Excel:解决Excel表格每一行所有字段在一个单元格的情况
  4. oracle 物化视图 ORA-23413: 表 xxx.xx 不带实体化视图日志
  5. 论文浅尝 | BoxE:一种基于Box的知识图谱表示学习模型
  6. rem布局 html,移动端h5之rem布局/px2rem
  7. python天气数据分析可视化_python可视化爬虫界面之天气查询
  8. Callback、Listener、Worker、Manager的命名说明
  9. 1H413000工业机电工程安装技术—— 1H413020电气工程安装技术
  10. 网页端接入海康监控摄像头画面
  11. silvaco-mobility models(1)
  12. 实验一:Cifar10图像分类竞赛 学习记录
  13. VSSDK 系列 - 创建 灯泡提示 ,替换 单词
  14. linux下,Telnet连接输入正确的用户名和密码后,却还一直提示输用户名和密码,解决方案。
  15. 深度学习入门之神经网络的学习
  16. 云服务器修改虚拟内存,云服务器可以设置虚拟内存
  17. 杰理-AC632x开发之usb无法下载问题和原因
  18. 搭建or部署接口自动化平台从零到一的过程
  19. 【干货】认知智能时代:知识图谱实践案例集.pdf(附下载链接)
  20. 蝙蝠算法(Bat Algorithm,BA)算法

热门文章

  1. 4k显示服务器,远程服务器4k显示器
  2. 市场调研报告-全球与中国4K手术显示器市场现状及未来发展趋势
  3. 人工智能面试总结:160个机器学习面试题,赶紧先考考自己!
  4. office 2016输入超过4阶矩阵
  5. 用python3根据配置自动生成自定义图片logo(一键解决图片侵权困扰)
  6. Android辅助功能 Accessibility Services基本用法笔记
  7. 如何用python语言解一元二次方程式
  8. selenium 模拟键盘事件 复制粘贴、右键、回车等
  9. 基于C+++Mysql实现(WinForm)校友管理系统(面向对象)【100010007】
  10. 三星80亿美元收购Harmon真正意图是它?