智能车摄像头基本循迹控制

这篇具有很好参考价值的文章主要介绍了智能车摄像头基本循迹控制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基于摄像头的三种基本巡线控制

开源代码地址: https://github.com/ittuann/Enterprise_E

博客目录:
https://blog.csdn.net/sorcererr/article/details/124989905
https://ittuann.github.io/2021/08/30/Car.html

摄像头的三种基本巡线:

摄像头程序处理后会给出一条中线,使用计算中线与标准值误差,赋予转向环PID。

三行巡线:

类似于线性CCD的控制方案,是最早期使用的方法。不过使用的有效信息太少,中线一旦跳变整个车就会抖动,车速到了一米一左右尤为明显。

aim_line取决于速度和有效行,速度越快aim_line预瞄距离越远,同时限幅在有效行之下。

AngleErr = ((   5 * middleLine[aimLine] +
                3 * middleLine[aimLine + 1] +
                2 * middleLine[aimLine + 2]) / (10.000f)) - middleStandard;

加权计算全图像:

使用了整个图像,对于图像不同区域(行数)给与不同权重。为了防止跳变取近三次输出值加权计算误差。

对于不同元素可以赋予不同权重,如坡道weight3权重整体关注区域更偏向上方,环岛weight2权重关注区域为补线区域,三叉内低速横向循迹weight4权重关注区域更偏下方。

start_row 为补线起始行,valid_row为有效行最顶行,作用相当于限幅。

uint8   weight1[60] = {                        //0为图像最顶行
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         1, 1, 3, 3, 5, 5,10,10,10,10,
        10,10,10,10,10,10,10,10,10,10,
        10,10,10,10,10,10,10,10,10,10,
        10,10,10,10,10, 5, 5, 5, 5, 5,
         3, 3, 3, 1, 1, 1, 0, 0, 0, 0,};    //基础    //注意斜率变化引起的跳变,要平滑

for(i = startRow; i > validRow + 1; i --) {
    weightSum += weight1[i];
    lineSum += weight1[i] * middleLine[i];
}   //从下往上扫

angleErr = (float)lineSum / weightSum - middleStandard;
midline_fff = midline_ff;
midline_ff  = midline_f;
midline_f = angleErr;
angleErr = midline_fff * 0.50f + midline_ff * 0.30f + midline_f * 0.20f;

在这些的基础上增加了最小二乘法对摄像头中线的再拟合,作用也是为了更为了使循迹平滑。文章来源地址https://www.toymoban.com/news/detail-511659.html

slope = RegressionCal(validRow + 3, startRow); 
angleErr = angleErr * 0.80f + slope * 0.20f;

用部分图像计算偏差:

memset(partErr, 0, sizeof(partErr));
improperRowCount = 0;
memset(improperRow, 0, sizeof(improperRow));

if (startPart > startRow)    startPart = startRow - 2;    //起始行限幅
endPart = startPart - partUsed;
if (endPart < validRow)    endPart = validRow + 2;    //截至行限幅

for (i = startPart; i > endPart; i--) {    //从下往上扫
    partErr[startPart - i] = (float)(middleLine[i] - middleStandard) * 100.0f / ((float)imgRealWidth[i] / 2.0f);
    partAve += middleLine[i];
//        if (i == endPart - 2) {
//            Part_Err[startPart - i] = partErr[startPart - i] * 1.20f;
//        }   //放大截至行误差
}    //某种意义上相当于逆透视
    //partUsed 相当于前瞻,区域越小越灵敏 10行适合低速,高速可以取15

partAve = partAve / partUsed;            //计算范围内中线平均值
for (i = startPart; i > endPart; i--) {
    if (ABS(middleLine[i] - partAve) > 10) {
        improperRow[startPart - i] = middleLine[i];
        partUsed--;
        improperRowCount++;
    }
}   //记录偏离中线均值10以上的点 滤掉跳变点

for (i = 0; i < (partUsed / 5); i++) {
    partErr[i] = 0.000f;
}   //最底下1/5区域置零, 为了平滑

for (i = 0; i < partUsed; i++) {
    if (improperRow[i] == 0) {
        partErrSum += partErr[i];
    }
}   //累加非跳变点

angleErr  = partErrSum * errK / (float)partUsed;
angleErr_fff = angleErr_ff;
angleErr_ff = angleErr_f;
angleErr_f = angleErr;
angleErr = angleErr0 * 0.70f + angleErr1 * 0.20f + angleErr2 * 0.10f;

到了这里,关于智能车摄像头基本循迹控制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 海康威视摄像头二次开发_云台控制_视频画面实时预览(基于Qt实现)

    需求:需要在公司的产品里集成海康威视摄像头的SDK,用于控制海康威视的摄像头。 拍照抓图、视频录制、云台控制、视频实时预览等等功能。 开发环境: windows-X64(系统) + Qt5.12.6(Qt版本) + MSVC2017_X64(使用的编译器) 海康威视提供了 设备网络SDK ,设备网络SDK是基于设备私有网

    2024年02月13日
    浏览(39)
  • 基于海康Ehome/ISUP接入到LiveNVR实现海康摄像头、录像机视频统一汇聚,做到物联网无插件直播回放和控制

    LiveNVR基础配置 海康 ISUP 接入配置 ,填写相关信息 服务 IP (设备可以访问到的IP) 服务端口 接入密码 (ISUP接入时要填此密码) 填写上 1、海康 ISUP 接入配置 中配置的相关信息,设备ID( 自定义不要重复 ) 填写上 1、海康 ISUP 接入配置 中配置的相关信息,设备ID( 自定义

    2024年02月08日
    浏览(42)
  • 基于Qt、PYTHON智能校园防御系统应用程序,实现了摄像头数据采集、人脸识别、口罩识别、 数据统计等功能

    完整项目地址:https://download.csdn.net/download/lijunhcn/88453470 项目结构 环境选型 语言:Python 操作系统:Windows 数据库:MySQL 窗口界面:PyQT API接口:百度AI接口,用以实现人脸登陆与注册 远程MySQL表结构 远程表结构sql脚本 项目背景 智能校园防御软件是实现了一款基于摄像头数据

    2024年02月03日
    浏览(44)
  • 【树莓派】摄像头的基本使用

    本次实验目标是: 1、完成树莓派使用CSI摄像头拍取照片,拍摄视频 2、使用socket进行网络拍照控制和图片传输功能。 树莓派4B 树莓派摄像头 VNC-Viewer eclipse/VS Code(Java) 将树莓派断电,并将CSI摄像头接入靠近网孔的排孔中,CSI摄像头蓝色面朝网孔方向。 终端执行指令 使能摄

    2023年04月08日
    浏览(32)
  • 使用MATLAB控制电脑摄像头

    使用MATLAB控制电脑摄像头 随着人工智能和计算机视觉的快速发展,越来越多的应用需要在计算机上使用摄像头。然而,如何控制电脑摄像头成为了很多使用者面临的难题。本篇文章将介绍如何使用MATLAB控制电脑摄像头。 步骤1:安装MATLAB 首先,我们需要安装MATLAB软件。在安装

    2024年02月08日
    浏览(36)
  • 毕设项目——基于Qt、PYTHON智能校园防御系统应用程序,实现了摄像头数据采集、人脸识别、口罩识别、 数据统计等功能

    完整项目地址:https://download.csdn.net/download/lijunhcn/88453470 项目结构 环境选型 语言:Python 操作系统:Windows 数据库:MySQL 窗口界面:PyQT API接口:百度AI接口,用以实现人脸登陆与注册 远程MySQL表结构 远程表结构sql脚本 项目背景 智能校园防御软件是实现了一款基于摄像头数据

    2024年02月04日
    浏览(35)
  • 智能车摄像头算法——圆环元素

    搜上下边线,处理圆环的时,可以利用上下边线的特点。 找凸起的弧,用于圆环的检测。如下图红色的线。 RoundaboutGetArc函数中传入的num代表着,要检测的这个圆弧大小,要求这个圆弧包含多少个点。 以左圆环为例: 先判断边线丢不丢线,不丢线再进行下一步。由于是遍历

    2024年04月27日
    浏览(37)
  • 智能车摄像头三轮PID参数调节

    代码已上传CSDN,包含摄像头和PID控制,设置了VIP可取这个小门槛,有兴趣可以点击下方链接自取哈。 https://download.csdn.net/download/weixin_53129688/87714428 https://download.csdn.net/download/weixin_53129688/87714428  

    2024年02月11日
    浏览(34)
  • 网络攻防——kali操作系统基本使用-调用摄像头

    本文章中生成的木马带有一定的攻击性,使用时请遵守网络安全相关的法律法规(恶意攻击操作系统属于违法行为)。 kali中打开终端最好是进入root sudo su 获取IP ip address 重新打开一个终端 输入指令,注:-p表示攻击载荷,表示的是说明这个程序需要载入什么功能,这里就是

    2024年02月13日
    浏览(35)
  • VUE+websocket编写实现PC web端控制摄像头

    目录 前言 一、WebSocket简介 二、API接口 三、后台服务器 四、实例 视频流框 类“遥控器”模块控制视频画面 五、完整功能展示(视频不懂上传,泪目) 六、完整代码 总结          WebSocket是一种全双工通信的数据通信协议。WebSocket的主要功能用处是允许服务器主动地向客户

    2023年04月08日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包