巡线偏移量计算

简介: 【9月更文挑战第24天】

在双轨车道巡线的问题中,偏移量的计算通常基于车道的宽度和摄像头捕捉到的图像中车道的位置。假设车道宽度是固定的,摄像头的分辨率也是已知的,我们可以根据图像中车道中心的位置来计算车辆相对于车道中心的偏移量。

设车道总宽度为 ( W ) ,摄像头宽度为 ( C ) ,图像中左车道中心到图像左侧边缘的距离为 ( L ) ,图像中右车道中心到图像左侧边缘的距离为 ( R ) 。

偏移量 ( O ) 可以根据以下步骤计算:

  1. 计算两车道中心之间的距离
    [ \text{Lane Center Distance} = R - L ]

  2. 计算车辆相对于两车道中心的位置
    如果车辆位于两车道中心,那么 ( L ) 应该等于 ( R - W/2 ) 。

  3. 计算偏移量
    偏移量 ( O ) 可以表示为车辆中心与左车道中心的距离减去车辆中心与右车道中心的距离,然后除以2,再加上车道宽度的一半(因为我们需要计算的是车辆中心相对于车道中心的偏移)。

    [ O = \frac{(R - L) - (W/2 - L)}{2} ]

    简化后得到:

    [ O = \frac{R - W/2}{2} ]

    当车辆向左车道偏移时,( R ) 会小于 ( W/2 ) ,偏移量 ( O ) 为负值;当车辆向右车道偏移时,( R ) 会大于 ( W/2 ) ,偏移量 ( O ) 为正值。

  4. 考虑摄像头宽度
    由于摄像头宽度 ( C ) 为640,如果车道宽度 ( W ) 大于摄像头宽度,那么实际的偏移量需要考虑摄像头的中心点。假设摄像头中心点在图像中的坐标为 ( M ) ,则:

    [ O = \frac{(R - M) - (W/2 - (M - C/2))}{2} ]

    如果车辆位于两车道中心时,( R ) 应该等于 ( M ) ,此时 ( O ) 为0。

  5. 根据给定的最大偏移量调整公式
    根据题目描述,当左车道位于车辆中心时,最大偏移量是-160;当右车道位于车辆中心时,最大偏移量是160。这意味着偏移量的计算需要根据摄像头捕捉到的图像中车道的位置来调整。

    [ O = (R - C/2) - (W/2 - L) ]

    如果 ( R ) 小于 ( C/2 ) ,则 ( O ) 为负值,表示车辆向左偏移;如果 ( R ) 大于 ( C/2 ) ,则 ( O ) 为正值,表示车辆向右偏移。
    from ugot import ugot
    from camera import UCamera
    import time
    got = ugot.UGOT()
    got.initialize('10.10.7.235')
    got.load_models(['line_recognition'])
    got.set_track_recognition_line(1)

camera = UCamera(got)
camera.open()
'''
type(int): 双轨线类型(1 直线, 2 路口, 0 无线) 2十字路口?
'''
while camera.running:
track_info = got.get_double_track_total_info()
print('-------:', track_info)
got.screen_print_text_newline(track_info, 2)

# got.screen_print_text_newline('1 直线, 2 路口, 0 无线', 1)
# time.sleep(1)
camera.draw(track_info)
目录
相关文章
|
6月前
|
JavaScript 前端开发 Java
根据地球上任意两点的经纬度计算两点间的距离
根据地球上任意两点的经纬度计算两点间的距离
284 2
|
传感器
如何计算摄影参数:分区基准面高程、相对航高、绝对航高、基线长度、航线间隔、航线数、每条航线的相片数、总相片数。
如何计算摄影参数:分区基准面高程、相对航高、绝对航高、基线长度、航线间隔、航线数、每条航线的相片数、总相片数。
1495 0
|
传感器 数据采集 算法
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)
161 0
封装一个函数,山峰 高度不固定、纸张厚度不固定,计算折叠几次后超过山峰
封装一个函数,山峰 高度不固定、纸张厚度不固定,计算折叠几次后超过山峰
51 0
|
定位技术 数据处理
巧用千寻位置GNSS软件| 直线放样有技巧
日常测量作业中,直线放样是对设计好的直线进行放样,其中包括直线的里程,左右偏距及设计直线范围内的高程控制。本文将介绍如何运用千寻位置GNSS软件完成日常的直线放样。
labview数值型数据实验输入显示时间滑动杆旋钮仪表相加相减相乘滚动条
LabVIEW是一种程序开发环境,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。LabVIEW软件是NI设计平台的核心,也是开发测量或控制系统的理想选择。LabVIEW开发环境集成了工程师和科学家快速构建各种应用所需的所有工具,旨在帮助工程师和科学家解决问题、提高生产力和不断创新。
126 0
金刚区计算个数效果实现
金刚区计算个数效果实现
78 0
|
算法 安全 C++
科学家小蓝来到了一个荒岛,准备对这个荒岛进行探测考察。 小蓝使用了一个超声定位设备来对自己进行定位。为了使用这个设备,小蓝需要在不同的点分别安装一个固定的发射器和一个固定的接收器。小蓝手中还有一个移
科学家小蓝来到了一个荒岛,准备对这个荒岛进行探测考察。 小蓝使用了一个超声定位设备来对自己进行定位。为了使用这个设备,小蓝需要在不同的点分别安装一个固定的发射器和一个固定的接收器。小蓝手中还有一个移
280 0
科学家小蓝来到了一个荒岛,准备对这个荒岛进行探测考察。 小蓝使用了一个超声定位设备来对自己进行定位。为了使用这个设备,小蓝需要在不同的点分别安装一个固定的发射器和一个固定的接收器。小蓝手中还有一个移
|
小程序 数据管理 定位技术
小程序中计算距离信息
小程序中计算距离信息
小程序中计算距离信息
|
定位技术
计算两GPS点之间的距离(比较精确)
计算两GPS点之间的距离(比较精确)
153 0