智能车镜头组入门(三)巡线

news2024/12/27 4:14:18

镜头组的特点是通过摄像头来获取赛道的信息,从而达到前瞻的效果,完成转向和速度决策。

我们的方案,带上元素识别,大概在TC264上5ms一帧,所以我们开了100hz的图象。

之前我看别的博客上有人说,他们组的50帧到100帧提升不大,但是我试了下100帧还是有明显的提升的,大家可以都试试

摄像头比较重要的一点是 确定好图象的大小尺寸,摄像头的高度和角度,之后就不要在变化了,确定好前瞻距离和最近距离。近端距离是来控制转向的,前瞻距离是做速度决策的

如果突然卡死了,或是时间出乎意料地长, 大概率是数组越界了,检查下数组的索引

我们采用的是某飞的方案,即先通过近端白线的平均值来获取认为的白块,然后通过这个白块来寻找最长上升白列,然后通过这个白列向左向右的寻找边线,之后我会详细介绍

图象识别有一个比较大的差别就是是否二值化,就是把灰度图转换成只有黑白的图,一般常用的额算法是大津法,我们最开始也是用的这个方法,后来一段时间之后,觉得如果二值化的话时间实在太长了(印象中是>20ms的),就放弃了二值化的方案,采用了某飞的方案

我来简单的介绍下逐飞的方案,具体可以去看他们的直播。

主要用到的函数就是这几个

首先是求图象最近几个的平均值,也就是这一块下面红色区域的平均值,然后用吧这个平均值用于

白线和出界的判断,比如这个值是小于50 那么说明车跑出界了,需要设置一个信号量给调参的同学,让小车停下来。(这个边线不贴合赛道可能是无线图传的问题)

通过这个平均值,可以识别出赛道每一条数值方向的白列,这个白列,可以作为速度决策的依据

                                   (这是逐飞的图象,所示的黄线就是最长上升白列)

之后要做的就是边线的扫描,我们用的也是逐飞的差比和算法,也就是 比如说 ,目前找到的点是(40,100)灰度值为a,我们要搜寻左边线,就是要搜索和这个点的左边隔了一段距离,比如(35,100)的点,灰度值为b,通过这个(a - b)/(a +b) 所得的值 大于某一个阈值的时候,则说明了这个是一个明显的黑白交接点,可以把它认为是赛道的边线。

有些优化的方案,比如每继承每一次的值,如果上一条边找到了左边线,那就往右回撤几个像素 再继续进行差比和运算,可以大大减少运算量。

我们也可以利用前面求到的近端白列的平均值,给定一个比例,例如超过这个像素点110%的即为白色,低于70%的则为黑色。如果遇到白色的情况的话,直接continue,因为这不可能是边界,如果认为是黑色,则直接确定这点为边线,进行下一条线的寻找。

从边线中我们还可以获取到两个信息。一个是左右边线的丢线,和连续丢线的长度。另一个是如果小车在一条大直道的情况下,假设最顶端宽度是25,最低端宽度是150,这样我们就可以估计一个正常赛道的宽度。然后我们计算扫线扫到的赛道宽度,如果这个宽度和理论赛道宽度差距比较大的话,那就有是元素的嫌疑了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2144835.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MyBatis框架SqlSession浅析

1、SqlSessionFactory作用 MyBatis框架SqlSessionFactory是线程安全的,负责创建SqlSession。 DefaultSqlSessionFactory是线程安全的,属性Final。 2、SqlSessionFactoryBuilder SqlSessionFactoryBuilder负责创建SqlSessionFactory。SqlSessionFactory…

C++伟大发明--模版

C起初是不受外界关注的,别人觉得他和C语言没有本质上的区别,只是方便些,直到祖师爷发明了模版,开始和C语言有了根本的区别。 我们通过一个小小的例子来搞清楚什么是模版,模版的作用到底有多大,平时我们想要…

UAC2.0 麦克风——类特殊请求

UAC2.0 麦克风枚举过程参考 UAC2.0 麦克风——单声道 USB 麦克风(16bit) 文章目录 set interfaceget device status类特殊请求get curget rangevolume rangesample rangeset interface USB 请求代码 typedef enum {USB_REQ_GET_STATUS = 0 ,USB_REQ_CLEAR_FEATURE …

自动化中验证码的操作笔记,懂的赶紧收藏!

在自动化测试的过程中,验证码一直被视为一个“拦路虎”。很多测试人员在做接口或UI自动化时都会遇到验证码的阻碍,导致测试无法继续进行。今天,我们就来讨论如何在自动化过程中破解验证码,快速绕过这道关卡,轻松完成自…

【C51】独立按键控制LED灯

1.简介 在单片机应用系统中,常常使用轻触按键组成键盘。轻触按键具有自动回弹的特点,即按下按键,两个触点接通,放开按键,两个触点断开。轻触按键的外形及电路符号如图,通常轻触按键有4个引脚,4个…

Redis - 深入理解Redis事务

目录 Redis是如何实现事务的?事务中执行的命令出现错误,会回滚事务吗?同一个连接可以重复开启事务吗?多个客户端同时开启事务会怎样?使用Redis事务只用MULTI和EXEC吗?Redis中的WATCH机制是怎么实现的&#…

GAMES104:13 引擎工具链基础-学习笔记

文章目录 一,工具链二,复杂的工具2.1 界面GUI2.2 设计模式Design Pattern2.3 数据的加载和存储2.4 资产引用 三,资产加载Deserialization3.1 资产解析Parse3.2 资产版本兼容性(Compatibility) 四, 如何制作…

搞安全必看——IPS和IDS到底有啥区别?

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部 下午好,我的网工朋友。 随着数字化转型的加速推进,网络安全已成为各行业不可或缺的一环。对于现代企业和组织而言&#x…

【JavaEE初阶】多线程6(线程池\定时器)

欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 实例3:线程池 参数解释 核心线程数, 最大线程数 允许空闲的最大时间 ,时间单位 任务队列(阻塞队列) 线程工厂>工厂设计模式 拒绝策略 使用举例 模拟实现一个线…

从零开始讲DDR(0)——DDR的前世今生

一、计算机组成 计算机组成结构(Computer Architecture)是计算机系统的核心,它定义了计算机的基本工作原理和设计模式。计算机的组成可以分成以下3大类:中央处理器(CPU)、存储器和输入/输出子系统。 1.1 中…

Linux文件IO-基础知识了解及文件描述符

1、简介 本章给大家介绍 Linux 应用编程中最基础的知识,即文件 I/O(Input、Outout),文件 I/O 指的是对文件的输入/输出操作,说白了就是对文件的读写操作;Linux 下一切皆文件,文件作为 Linux 系…

深度学习 之 常见损失函数简介:名称、作用及用法

引言 在机器学习和深度学习中,损失函数(Loss Function)是模型训练过程中一个不可或缺的部分。它用来度量模型预测结果与真实值之间的差异,从而指导模型参数的优化。合理选择损失函数对于提高模型的准确性和泛化能力至关重要。本文…

Mint Expedition Season 3 拉开帷幕:登顶高峰的时刻到了

自 7 月 15 日 Mint Expedition 启动以来,Mint,一条专注于 NFT 行业的以太坊 Layer 2,日常交易量和交易额都出现了爆发式增长。这一成功离不开 Mint 社区的合作,包括 Minters、Web3 去中心化应用程序的开发者,以及大量…

模电模块(一)

这个看起来功能挺全的,就是小贵,有时间自己做一个: 首页-康威科技-淘宝网 (taobao.com) 画一个集成板,集合上述模块的功能。

深圳国际VR/AR博览会圆满落下帷幕

近日,深圳国际VR/AR博览会在深圳国际会展中心2号馆圆满落下帷幕。该展会于9月11日至13日举行,是一个与光博会同期举行的大型盛会。 据主办方介绍,深圳国际VR/AR博览会(Shenzhen International VR/AR Expo),…

力扣最热一百题——缺失的第一个正数

目录 题目链接:41. 缺失的第一个正数 - 力扣(LeetCode) 题目描述 示例 提示: 解法一:标记数组法 1. 将非正数和超出范围的数替换 2. 使用数组下标标记存在的数字 3. 找到第一个未标记的位置 4. 为什么时间复杂…

【与C++的邂逅】--- C++的IO流

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏: 与C的邂逅 本篇博客我们来了解C中io流的相关知识。 🏠 C语言输入输出 C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 sc…

数据处理与统计分析篇-day03-Numpy环境搭建

概述 python优势 Python作为当下最为流行的编程语言之一 可以独立完成数据分析的各种任务 数据分析领域里有海量开源库 机器学习/深度学习领域最热门的编程语言 在爬虫,Web开发等领域均有应用 常用开源库 numpy NumPy(NumericalPython) 是 Python 语言的一…

创客中国AIGC专题赛冠军天鹜科技:AI蛋白质设计引领者

“落霞与孤鹜齐飞,秋水共长天一色——这句出自《滕王阁序》的诗句,是我作为江西人熟记于心的佳句。它描绘的天地壮丽景色常浮现于我的脑海,正是这种豁达与壮观,启发我们将公司命名为‘天鹜科技’,我们希望将源自自然的蛋白质与现代科技的创新精神相结合,打造蛋白质设计与应用的…

OpenBayes 教程上新 | AI 时代的「神笔马良」,Hyper-SD 一键启动教程上线!

每次脑海中的画面栩栩如生,想画下来却难以下笔? 每次画完自己觉得非常像,但是旁人却一头雾水? 每次想用文生图,但不知道如何精确地输入 prompt? AI 时代的「神笔马良」Hyper-SD 来了! 仅需简…