写在前面
本文是作者在学习上海交通大学AuTop战队开源算法时列的提纲备忘,并做了很多资料的链接,像是一个目录,分享给大家一起学习,
如有侵权,联系删除;
参考:https://github.com/SJTU-AuTop
(一)二值化的技巧
1. 固定阈值二值化
2. 大津法(OTSU)阈值
3. 自适应阈值
总结:
(二)边线的提取
1. “迷宫法”进行边线提取
2. 提出一边巡线一边二值化的算法。即进行“迷宫法”巡线时,直接输入原始灰度图像,当需要某个点的二值化结果时,才对其进行一次自适应二值化。
- 这样一个简单的优化,直接使得我们的算法运行速度极快,O3编译优化。
(三)标定与透视变换
1. 相机标定(张氏标定法)
- 标定是对特定的相机成像模型中的参数进行拟合的过程。
2. 射影变换
- 使用透视变换(射影变换),我们可以将相机斜向下得到的赛道图像变换成完全的俯视图。由于赛道正好在地平面上,满足同一平面的要求,所以可以使用透视变换完成。(这也同时也代表着该算法对于坡道地形无能为力)
- 使用4对点来计算一个透视变换矩阵(不推荐)
- 通过测定当前相机坐标系和俯视情况下相机坐标系的相对位姿来计算透视变换矩阵 H H H(参考文献:《视觉SLAM14讲》第七章 视觉里程计)
3. PnP算法
- PnP算法是一种常于计算机视觉中测定坐标系之间变换关系的方法
- PnP计算得出的旋转矩阵
- 参考《视觉SLAM14讲》第七章的内容。
4. 透视变换在边线提取中的应用
- 从原图中提取到了两条赛道边界。利用去畸变和透视变换,我们可以得到两条处于俯视视角下的赛道边线
(四)边线处理与方向控制
1.边线处理
- 纯跟踪控制
使用纯跟踪控制可以使得小车从当前点平滑的过渡到目标点
- 提取赛道中线
在确定了两条赛道边线后,从图像下方往上依次取左右边线的一个点,将这两个点的中点当作中线上的一点。这个方法对于直道效果不错,但并不适合大转角处。
- 三角滤波
- 等距采样
- 方向控制
一种常用的设定预锚点的方式是使得预锚点和当前速度正相关,即高速行驶时“看”远一些,低速行驶时“看”近一些。
(五)元素识别
1. 角点计算方法
- 角点就是极值点,即在某方面属性特别突出的点,是在某些属性上强度最大或者最小的孤立点、线段的终点。
- 得到稳定且等距的边线前提下,直接取每个点前后20cm构成一个三点,利用向量的角度计算公式算实际角度即可。
- 为方便判断,又进行了角度的非极大抑制,保证只留下角度最大的点,即角点。这样算出来的角度很稳定,跟实际也很接近
- 判断元素时候便可直接通过角点判断
2. 元素识别详解
- 左库循左线,出右库循右线,出库时可适当调近预瞄以获得更好的控制效果。
- 入库完成标志为:左线右线重合,此时角点判断得到两线都存在左右L角点且L角点较近
- 斑马线识别方案:
将透视变换视角下得到的中线反变换回原图,取每一中线点对行做处理,对该点左右各一定区域的黑白区域进行循环记录,黑白区域应交替出现。若黑白交替次数大于阈值,且每一区域点数大于指定阈值
- 三叉的识别与控制
- 圆环的识别与控制
- 十字识别与控制
- 长直道,坡道,上坡的时候微踩一脚刹车,克制飞坡效果显著
- 小S弯,方向环控制算法为Pure Pursuit方案
角点(Corner Point)
- 通常意义上来说,角点就是极值点,即在某方面属性特别突出的点,是在某些属性上强度最大或者最小的孤立点、线段的终点。 对于图像而言,如图所示圆圈内的部分,即为图像的角点,其是物体轮廓线的连接点。
角点的具体描述可以有几种:
- 一阶导数(即灰度的梯度)的局部最大所对应的像素点;
- 两条及两条以上边缘的交点;
- 图像中梯度值和梯度方向的变化速率都很高的点;
- 角点处的一阶导数最大,二阶导数为零,指示物体边缘变化不连续的方向。
(六)Openart识别方案
一.识别基本思路
- Openart上模型的部署
- 直接使用tensorflow将h5模型转化为tflite模型,并量化实现
**(详细步骤可参考nxp工程师Rocky Song的方案,在github上有详细开源记录。) - 通过nncu工具将训练好的h5模型进行量化转化
** 第二种方案,其使用更加方便,量化效果较好,且时间上更优。
二、方案讲解
- 数字识别
- AuTop方案:基于全局分类器的设计思想,。在识别到三叉路口后,取1方框为ROI,使用训练好的分类模型直接对这一区域进行分类识别。
- 逐飞方案:基于Openart的find_rects()可以方便地找到数字矩形的边框,再使用一个十一分类模型即可快速对十个数字进行识别。这一方案的问题在于find_rects()函数本身对光照、背景、设定阈值等较为敏感,找寻方框会耗费大量的时间,甚至可能找不到对应的矩形,运动状况下也很难发现对应的矩形。
- .Apriltag识别
- 在合适的距离内对中线点各取15×15(或更小)的区域,对每一区域分别计算黑色点占比及跳变点占比(方差理论来讲亦可),满足阈值即为Apriltag
- 水果动物的识别
- 加速模型的运行
针对找矩形这一易扰因素,可以考虑提前根据一些因素对目标进行筛选,例如最小长宽、长宽比、指定ROI、矩形与外接矩形的角度偏差等等,这些思路都可以滤去大多的杂乱矩形,只留下需要分类的靶标,可以极快加速模型的运行。
三.模型训练
数据增强方法
- 翻转、旋转、缩放、移位、高斯模糊、椒盐噪声、运动模糊以及对比度和亮度的随机改变等。
(七)三岔数字识别
- 搭建模型
- 数据集生成
- 使用COCO开源数据集作为背景,并将标准数字图片随机贴图到背景图上的方式生成数据集,结合数据增强手段
(八)系统辨识与速度控制算法
1. 常规PID控制算法
- 增量式PID算法对应可由位置式推出
- 过程控制系统(如电机控制)因较慢的响应常采用PI控制,突出积分项的作用
- 随动控制系统(如舵机控制)为了达到较快的响应常采用PD控制
- 速度环使用增量式PID,方向环使用位置式PID,
这是由于增量PID由于也不容易造成电机的正反转切换。但我们认为,在合适的参数下,增量式PID与位置式PID应该是可以等价。
PID算法中,比例环节P的作用是成比例地反映控制系统的偏差信号e(t),一旦产生偏差,比例控制环节立即产生控制作用以减小偏差。积分环节I的作用是消除静差,提高系统的无差度,在使用积分控制时,常常对积分项进行限幅以减少积分饱和的影响。微分环节D的作用是反映偏差信号的变化趋势,能够在偏差信号变化之前先引入一个有效的早期修正信号来提前修正偏差,加快系统的动作速度,减少调节时间。
2. PID调参方案
1. 实验试凑法
- 匿名科创上位机
一般而言,使用实验试凑法进行PID参数的整定步骤为:
先将Ki、Kd置0,整定Kp
待达到合适响应速度控制后,调小Kp(0.8左右)整定Ki
保持Ki不变,重新调整Kp
加入Kd,整定Kd
依次类推,直到获得满意参数。文章来源:https://www.toymoban.com/news/detail-432277.html
2. 基于MATLAB系统辨识的参数整定
- 模型辨识的方案有两种,
- 一是熟知系统模型直接进行机理建模,
- 二是基于数据的黑箱建模。
3. 其它整定方法
临界比例度法、衰减曲线法、反应曲线法、经典Ziegler-Nichols法文章来源地址https://www.toymoban.com/news/detail-432277.html
- Ziegler-Nichols方法通过系统的瞬态响应特性确定参数,若建立在上文模型辨识的基础上,可直接根据打表公式给出PID的值。临界比例度法和衰减曲线法分别利用等幅震荡和衰减比4:1这两个条件,同样可根据打表公式给出PID的值。
- 打表
3、改进式PID思想
-
- 抗积分饱和思想
-
- 抗微分扰动思想
-
- 小偏差弱调节思想
-
- BangBang-PID串级控制
-
- 模糊PID算法
- 模糊PID算法C++实现
-
- 专家PID算法
-
- 神经网络速度控制
九、速度控制方案
1、速度控制方案
1-1常规速度控制
- 根据轨迹斜率的速度控制
- 由比例控制换为PD控制。即建立弯道速度增减PID,
- 突入弯道时,由于微分项的作用,会得到一个较低的target_speed,从而获得更快的减速。
- 三点曲率半径的计算
- 十字交叉法–判断中线与道路有无交点决定基础速度,-
1-2特殊元素速度控制
1-3多模态PID切换
- 变积分PID(增量式)起到缓加速的作用
- 增量式PID在克服打滑、减少猛加速上也有着不错的效果
- 位置环的停车方式,保证小车不会冲出过多看不到二维码
- 大转角PWM限幅的方式,减少打滑
2.差速标定方法
- 机械差速与软件差速(不同速度)
3. 机械机构与轮胎
- 车轮的前束角有内束与外束两种,
- 外束有利于转弯性能,但在直道上容易抖动;
- 内束稳定可以消去较小抖动,保证直线上的稳定动态性能
- 2.轮胎
- 轮胎的打磨一般需要:软化剂,砂纸(砂轮机),硅橡胶等等。
十、电感控制方案
1 电磁基础介绍
2.电磁滤波与控制方案
2-1 电感矫正与归一化
2-2.滤波
- 常规的滤波方案为先经过中值滤波,再使用中位值平均滤波,最后再经过一层低通滤波,如此得到可靠的信号
3.控制算法
- 偏差计算公式得到的偏差恰好与距道路中点的位置成正比
4.、电磁元素识别与控制
- 摄像头高度的组别使用广泛。摄像头的高度被限制,相当于小车可感知的距离变短,视角也变差,
- 电磁前瞻可放置较远的地方(一般25cm-40cm),有着较远的感知距离
十一、激光打靶
1、坐标系定义
- 多自由度机械臂
2、模型建立
3、参数标定
- 通过测量的方式得到变换矩阵,并不精确,所以需要标定
3.1 手眼标定
3.2 相机-激光标定
4.模型简化
- 通过巧妙的设计机械结构,从而简化舵机角度的求解
到了这里,关于【智能车】上海交通大学AuTop战队开源算法提纲备忘的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!