提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、四轮比赛解内容
1.大概比赛内容,小车绕赛道一圈返回车库,比时间。
2.智能车识别道路两边黑线,或者感应赛道中间的电磁线
。
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
二、实现步骤
1.信号——传感器——单片机——舵机和电机。开蓝牙通道实现人机交互。
电磁感应——运放——主控板——通过电动势的值判断赛道信息——速度方向控制——后端打开摄像头看斑马线
2.具体方案
- 摄像头采集信息通过dma自动传输入rt1064通过一定 的软件程序对图像进行反光点去除、边缘检测+二值化预处理、校正、分割 并提取黑色边线, 得到小车预期路径,通过特征判断赛道类型。
- 由规划好的路径,选择参考行,计算出偏差,用模糊 PD 控制舵机转向;当 赛道为坡道时,改用电磁巡线,出坡道回到摄像头状态。平稳赛道用摄像头?
- 编码器值计算速度。路径的偏差计算出预期速度,并利用 PI 控制算 法以及 bang-bang 控制算法调整电机来控制小车速度。
- 陀螺仪坡道判断,用 I2C 协议向陀螺仪 ICM20602 的相关 寄存器中实时读取当前 y 方向(小车的左右方向)的角速度值,以获得小 车前后翻转的角速度,从而判断当前是否正在经过坡道或者颠簸。由于智 能车撞到路肩后可能出现坡道误判,还需加入防误判算法。
- 向uapt转wi-fi,模块以150000的波特率发送串口数据到上机位实时监控,使参数调节更加的方便。
- 拨码开关和按键以及ips显示屏(数据是16位的灰度数据,数据量大,由于软件spi中的延时,图像处理的程序运行仅仅为20帧,不满足高速行驶的需求)进行策略控制选择和参数设置。
1.机械结构
a.前轮安装
b.车模重心
c.舵机安装
d.编码器安装
e.摄像头的安装
f.电感的安装
- 两个水平电感,两个八字电感,两个中间电感
2.软件设计
采集的赛道信息和电磁数据的处理和对舵机的转向控制以及电机的差速控制是整个软件的核心内容
1.巡线控制
- 先初始化摄像头、ADC 读取、OLED 显示、按键
等功能 - 初始化完成后开启定时器,程序运行进主循环,更新 OLED 显示功能和按键检测功能
- 四个定时器(中断)
- a 周期为 3ms 的定时器 0 用于读取电感电压值并进行舵机 PD 控制 和计算两个轮子的差速
- 周期为 5ms 的定时器 1用于执行速度 PID 控制
- 周期为 1ms 的定时器 2 用于检测圆环,并在定时器中设置一个时间变量,用于判断程序运行时间、
- 周期为 5ms 的定时器用于读取摄像头图像并判断斑马线
2. 电感电压数据处理
- 前瞻五个电感中,中间电感判断总偏移量,中两边两个电感判断出线,其余两个电感判断弯道
- 使用长前瞻电感最大的问题是当遇到曲率较大的弯道时电感极易完全偏离赛道,无法检测赛道信息,或者只有一个电感识别到电磁数据(解决方案)
- 电感读取到的数据/最大值*100
3. 巡线控制采用 PD 控制算法
- 最外面两个电感作为偏差量,中间附近两个电感判断弯道
- 计算出电感电压的偏差量得到差和比
- 中间的电感位于赛道中线时的值最大,当车体与赛道产生偏差时,中间电感变化较大
- 在程序中使用电感 1 和电感 3 区分不同的赛道状况,动态切换不同的 Kp、Kd 参数组合(亮点)
3. 停车入库检测
- 车库前面有斑马线,斑马线中间有三片高强度磁铁
- 摄像头传感器采集灰度图像对斑马线和车库进行判断(判断具体方案)
3.亮点方案
1.重心
- 重心尽可能的低,在高速拐弯时,重心高的车可能会抬轮。
- 重心的前后位置,重心靠前,后轮抓地力不够,甩尾。重心靠后,前轮抓地力不足,侧滑。
- 电池位置,对于调试重心很重要,锂电池重量轻,如果前轮侧滑可以加配重。
- 电池用电池固定在后方,稳固不松动且降低重心
2.舵机和前轮
- 使用内八字以便于车模在直道行进的过程中更加贴合中线。
- 最为复杂的一部分,前轮转向部分由舵机,舵机摆杆,拉杆,主销,主销座,轮毂。
- 舵机横放竖放区别不大。摆杆长度适度可以缩短舵机滞后时间。拉杆装成略带v的形状,可以在大弯道获得最大拉力。
- 舵机位置在前,立式安装
3.主销?(前轮上的一个件,是控制前轮角度的,合理了拐弯既轻便又不磨损轮胎)
4.速度控制
- 控速周期不易过短, 由于在一个周期内各个量变化较小,可能会导致速度测量 的误差影响增大。
- 先根据路径计算goal_speed,由于电机的滞后更加严重,应该更有前瞻性。Kp,变速参数,更大的加速度,一般将p调大,但是不易过大,过大在减速时会产生超调(减速时出现速度回升的现象)。以 P 要满足在可承受的 超调下尽量大。
- Ki,消除静态误差,为了防止积分饱和,应该加上限幅
- 补偿速度.高速状态下电机的反电动势变大,表现不灵敏,加一个正比与速度的项来补偿反电动势,在加一项常速项来抵消阻力,正反馈,不宜加太大。
- 差速控制,双电机采用相同速度设定会导致舵机转向不灵敏,
5.电感在弯道时偏离赛道没有读数信息解决
在 100 个采样周期内电磁数据太小时,不对数据进行处理,使舵机和电机保持上一个状态继续运行约 100ms。如仍检测不到电磁数据则视为冲出赛道,停止程序运行。
6.根据赛道动态切换 Kp、Kd 参数组合
7.差速系统
- 智能车在速度较高的情况下行驶过急弯时会发生漂移现象
- 差速系统与电感电压偏差量成线性关系
- 行驶速度越高,两个轮子的差速越大,甚至在弯道特别大的情况下,一个轮子速度为零
8.直道加速系统
9.斑马线检测算法
从图像最左端向最右端遍历,当某行图像出现黑白跳变的次数超过 7 次
则将改行的权值设为 1,否则设为 0。若整幅图像的行权值之和大于 5 即视为识
别到斑马线(识别到斑马线时图像显示如图 5-4)。由于图像处理占用大量资源,
而本车跑完全程至少需要 7 秒,在程序运行的前 7 秒关闭图像处理程序,7 秒后
再打开图像识别,从而减少不必要的资源浪费和避免误判。由于摄像头具有非常
好的前瞻性能,智能车可提前预知前方是车库,并测量出智能车到斑马线的距离,
可控制智能车速度与转向实现顺滑入库,极大减少了入时间。
图 5-4 斑马线识别图像
因为摄像头的方向和位置相对于智能车是固定的,所以当检测到斑马线时,
车体与车库的距离会在一个微小变化的范围内(本组测得范围为 48cm-52cm)。
在已知斑马线到车库距离的情况下,本组可通过速度 PID 控制车体匀速入库。由
于车速过快会产生漂移,所以我们选择了一个不过于小且不发生漂移的速度:
2m/s。本组手动调节智能车转角与智能车与斑马线距离,并用手推智能车进入车
库,多次尝试后发现智能车在距离斑马线 25cm 且舵机转角为 45 度时可实现顺
滑入库且两边都有余量。检测到斑马线后使用编码器记录智能车直行行驶距离,
当行驶 25cm 后设置智能车转角为 45 度,再行驶 50cm 后把转角调零,此时车体
正对车库。测试发现智能车从 2m/s 的速度减速到停车行驶的距离为 30cm 左右。
因此智能车可根据惯性行驶入车库内。
2.问题汇总
1.基本概念
- 正交编码
- 差速控制
- 反观点去除
- 边缘检测
- 二值化预处理,校正,分割,提取黑色边线
- 模糊算法
- 舵机
- bang-bang 控制算法
- I2C 协议
- 陀螺仪
- 坡道防误判算法
- uapt转wi-fi
- 波特率
- 图像信息的获取
- sccb协议
- 中断
- dma技术
- 图像二值化阈值选取(大津法
最大类间差法) - 索贝尔算子
- 方向控制
- 动态阈值
- 斑马线检测
- 预备边界获取
- 环岛画线处理
- 车库画线处理
- 横纵腐蚀滤波
- 阿克曼转角原理
- 前瞻
2.方法问题
3.模块问题
- 上位机
- 按键 OLED
代码如下(示例):
data = pd.read_csv(
'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())
该处使用的url网络请求的数据。
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。