车辆行驶PID控制C#仿真(自动驾驶)

C#窗体程序仿真直线自动驾驶界面

平台:
1.visual studio2019
2.C#窗体应用(.NET Framework 4.7.2)
3.附带文件中已经放入了.NET Framework 4.7.2安装包(需联网)

使用者只需会简单的C语言就可以进行使用
工程文件的下载链接放到文章最后了,所需积分为0,大家自行使用
在这里插入图片描述

软件目的

最近在一家做自动驾驶的公司实习,为了解其直线自动驾驶的原理特此制作了一个模拟汽车行驶途中与目标直线的仿真软件。

大家可以在C#工程文件中更改纠正函数来检验自己的纠正算法。
(软件默认算法方式为PID计算)

注:
使用者可以自行增加chart曲线图来显示车辆调整的过程显示。
软件内含部分无效按键,因为此软件仅供学习,所以小编并没有将其完善成为一个界面非常专业的工具。

后文简介
软件的简单使用(软件表面用法)
纠正函数时车辆与路面的具体信息和调整参数介绍(使用者可根据具体参数设定自己的控制算法)

软件表面用法

在这里插入图片描述

1.按键操作车辆:wasd使得汽车脱离直线运动
2.点击运行纠正:车辆会自动回正
(直接运行以上两步即可,其它参数设置均已默认)
界面介绍(左负右正)
主要参数显示:
左下角——转角:此参数为车辆车轮相对于汽车的车轮角角度
左上角——方向:此方向为汽车相对于路面的角度
————————————————————————————
次要参数显示:
右上角——车头偏移:车头距离直线的距离
右上角——车尾偏移:车位距离直线的距离

车辆原理介绍

知识点:
汽车转弯:阿克曼原理

知识点:
软件以每10ms作为单位进行模拟

知识点:
PID控制算法(这里非常推荐取B站上 程欢欢的智能控制集——学会PID-基于板球平衡系统-初中基础就能听懂的简单讲
在这里插入图片描述

模拟人类驾驶的过程:
看到偏离直线后,人类需要手动打方向盘(认真看完),打方向盘时会有一个转动方向盘的过程,例如每秒转几度。

扫描二维码关注公众号,回复: 15258665 查看本文章

软件内部参数介绍(使用者更改部分)

简单看看
下面几个重要参数:

Move_X  	//此变量为车尾距离直线水平距离
OX			//此变量为车头距离车尾的水平距离

重要的:
Move_X + OX//此变量为车头距离目标直线的水平距离(需要由控制实现的目标量)即Y
zhuanjiao//车轮角(控制对象)即X
(jiao / Math.PI) * 180//车辆角

最简单的控制:由X输入控制Y输出

纠正函数的放置位置
因为本软件以10ms为单位进行仿真
所以纠正函数也以10ms为单位进行纠正(放到了Timer控件里)
单位为cm厘米。
在这里插入图片描述
timer里内置了几种简单的控制(被注释掉了),使用者可以自行试试。

最简单的调整原理:
根据车头偏移距离,判断是左偏还是右偏,然后以10ms为单位对车轮角进行加减量(但是最简单的控制 效果最烂):

if((Move_X + OX)>0)
{
    
    
	zhuanjiao=zhuanjiao-1;
}
else if((Move_X + OX)<0)
{
    
    
	zhuanjiao=zhuanjiao+1;
}

结束:
工程文件下载
所需积分:0
大家可以自行学习
https://download.csdn.net/download/weixin_45830602/84994883

猜你喜欢

转载自blog.csdn.net/weixin_45830602/article/details/123546699