Qt [GC9-14]:HUD-定速巡航、自适应巡航、车道偏离、车距保持

简介: Qt [GC9-14]:HUD-定速巡航、自适应巡航、车道偏离、车距保持


image.png

我通过观察我车的HUD发现,定速巡航就是自适应巡航的一部分,同时自适应巡航其实就是定速巡航的升级版本。当我们启动巡航是,给车辆一个固定的速度,当车辆检测到前方没有车辆是,那就按照我们给定的速度行驶,这时就是定速巡航,如果检测到前方有车辆,那么这时就是自适应巡航,自适应巡航就是按照前方的车速跟车行驶,当前方车辆大于我们给定速度是,按照我们给定的速度行驶。


车道偏离检测,我观察看来就是在我前风挡玻璃的前面有一个摄像头,通过摄像头拍摄路面情况解析算出车道线的位置,并判断车辆是否压线。当车辆压线是,对应的方向的车道线消失,这个功能在60Km/h的时候才会被激活或者是显示。


车距检测,这个现在大家的做法应该都一样,可能每个车安装的设备都是一家的,就是通过车前方的一个雷达来实时检测前车与我们的位置,并根据当前车数和车身自身参数给定一个安全的距离,HUD上面的分为三个档,即上图中中间那三个矩形。随着我们与前车距离的虽小而减少并至消失。



先来实现我们的定速巡航与自适应巡航。当定数巡航被激活是,HUD上面显示“[ ]”,当车辆检车到前方车辆切换自适应巡航时,图中[]中小汽车图标出现,表示当前工作模式为自适应巡航。当前车消失是,小汽车图标消失,表示切换为定速巡航模式,以我们给定的速度定速实行。实现方式简单,这里就不画流程图了,还是补上流程图吧image.png

首先定义三个宏定义,用来标记巡航的工作模式如下

1.#define ADAPTIVICRUISECONTROL_OFF 0 //巡航关闭
#define ADAPTIVICRUISECONTROL_NOCAR 1   //定速巡航
#define ADAPTIVICRUISECONTROL_CAR 2     //自适应巡航

不定义也可以,自己能分的清楚就可以

实现接口如下

void HUD::set_AdaptiveCruiseControl(int controlModel)
{
    switch (controlModel) {
    case ADAPTIVICRUISECONTROL_OFF:
        ui->label_car->hide();
        ui->label_constSpeed->hide();
        break;
    case ADAPTIVICRUISECONTROL_NOCAR:
        ui->label_car->hide();
        ui->label_constSpeed->show();
        break;
    case ADAPTIVICRUISECONTROL_CAR:
        ui->label_car->show();
        ui->label_constSpeed->show();
        break;
    default:
        break;
    }
}

以上就是定速巡航和自适应巡航的显示部分,逻辑部分后面再说。

车道偏离与上面实现方类似,定义三个混定义表示那个车道线image.png

#define LANEDEPARTTURE_L 1  //左车道线
#define LANEDEPARTTURE_R 2  //右车道线
#define LANEDEPARTTURE_DOUBLE 3 //双车道线

实现接口如下

void HUD::set_LaneDeparture(int position, bool isOn)
{
    switch (position) {
    case LANEDEPARTTURE_L:
    {
        if(isOn)
        {
            ui->label_runLine_L->show();
        }
        else
        {
            ui->label_runLine_L->hide();
        }
        break;
    }
    case LANEDEPARTTURE_R:
    {
        if(isOn)
        {
            ui->label_runLine_R->show();
        }
        else
        {
            ui->label_runLine_R->hide();
        }
        break;
    }
    case LANEDEPARTTURE_DOUBLE:
    {
        if(isOn)
        {
            ui->label_runLine_L->show();
            ui->label_runLine_R->show();
        }
        else
        {
            ui->label_runLine_L->hide();
            ui->label_runLine_R->hide();
        }
        break;
    }
    default:
        break;
    }
}

车距保持,同理定义三个宏定义用来表示当前的距离等级,这里我试用了距离等级这个东西,HUD上面的三个矩形表示的是三个范围,而不是三个具体的值,所以我用了距离等级,呵呵呵。

image.png

#define CARDISTANE_1 1  //距离1离前车太近
#define CARDISTANE_2 2  //距离2离前车存在隐患
#define CARDISTANE_3 3  //距离3离前车安全

实现接口如下

void HUD::set_CarDistance(int level)
{
    switch (level) {
    case CARDISTANE_1:
        ui->label_scale_1->show();
        ui->label_scale_2->hide();
        ui->label_scale_3->hide();
        break;
    case CARDISTANE_2:
        ui->label_scale_1->show();
        ui->label_scale_2->show();
        ui->label_scale_3->hide();
        break;
    case CARDISTANE_3:
        ui->label_scale_1->show();
        ui->label_scale_2->show();
        ui->label_scale_3->show();
        break;
    default:
        break;
    }
}

以上就是今天要实现的内容

image.png



目录
相关文章
|
2月前
|
图形学
【unity小技巧】实现FPS武器的瞄准放大效果(UGUI实现反向遮罩,全屏遮挡,局部镂空效果)
【unity小技巧】实现FPS武器的瞄准放大效果(UGUI实现反向遮罩,全屏遮挡,局部镂空效果)
44 1
|
2月前
|
图形学
【unity小技巧】unity3D寻路指示轨迹预测
【unity小技巧】unity3D寻路指示轨迹预测
41 0
|
2月前
|
算法 图形学
【实现100个unity特效之3】使用PerlinNoise(柏林噪声)实现平滑的灯光闪烁效果
【实现100个unity特效之3】使用PerlinNoise(柏林噪声)实现平滑的灯光闪烁效果
26 0
|
传感器 算法 数据可视化
使用三种不同的照明算法估计场景的照明和执行白平衡
使用三种不同的照明算法估计场景的照明和执行白平衡。 眼睛非常善于判断不同照明条件下的白色。然而,数码相机如果不进行某种调整,就可以很容易地捕捉到具有强烈色偏的不真实图像。自动白平衡(AWB)算法试图以最少的用户输入来校正环境光,以便生成的图像看起来像我们眼睛看到的。
134 0
|
传感器 定位技术 图形学
SIGGRAPH | 6个惯性传感器和1个手机实现人体动作捕捉、定位与环境重建(2)
SIGGRAPH | 6个惯性传感器和1个手机实现人体动作捕捉、定位与环境重建
181 0
|
传感器 机器学习/深度学习 算法
SIGGRAPH | 6个惯性传感器和1个手机实现人体动作捕捉、定位与环境重建(1)
SIGGRAPH | 6个惯性传感器和1个手机实现人体动作捕捉、定位与环境重建
201 0
JM
|
存储 编解码 算法
3D 实时全局光照技术(二)——直接光照
前言游戏引擎中的直接光照一般分为两大类:光源和环境光。光源一般有:平行光、点光源、聚光源、面光源等,而作为直接光照的环境光一般是指基于图片的光照(IBL-Image Based Lighting),这里的环境光要跟环境光遮蔽(AO-Ambient Occlusion) 中的环境光区分一下,AO 概念中的环境光一般指的是间接光照,更多差异可以看看这个知乎问答:Environment Light 和 
JM
389 0
3D 实时全局光照技术(二)——直接光照
|
传感器 并行计算 iOS开发
Metal每日分享,基于色温调整白平衡滤镜效果
Metal每日分享,基于色温调整白平衡滤镜效果
Metal每日分享,基于色温调整白平衡滤镜效果
Threejs实现卫星太阳板折叠动画,信号发射,姿态调整
Threejs实现卫星太阳板折叠动画,信号发射,姿态调整
306 0
Threejs实现卫星太阳板折叠动画,信号发射,姿态调整
Threejs实现镜头跟随物体移动效果,镜头拐弯并保持运动方向
Threejs实现镜头跟随物体移动效果,镜头拐弯并保持运动方向
1075 0
Threejs实现镜头跟随物体移动效果,镜头拐弯并保持运动方向