163 lines
7.1 KiB
C++
163 lines
7.1 KiB
C++
/*
|
||
* 说明: 科三项目[超车]评判
|
||
*
|
||
* 作者: 杨海洋
|
||
* 日期: 2024-03-13
|
||
*
|
||
* ***************************************************************************************
|
||
*
|
||
* 超车和变更车道的项目点1个。
|
||
*
|
||
* 刚进入超车项目的时候,(借道超车,PUB_JDCC_ZT := 0; //借道超车)
|
||
*
|
||
* 定义了全局变量:ChaoChe_Start_TM,进入超车项目的时候赋值。(通用
|
||
* 评判要用到这个全局变量,按要求定义即可,特殊地点版本)
|
||
*
|
||
* 超车项目定义了6个阶段:
|
||
*
|
||
* //1:初始超车道阶段 2:初始普通车道阶段 3:左侧超车阶段 4:完成左侧超车阶段
|
||
* //5:回原车道阶段 6:完成回原车道阶段(结束项目)
|
||
*
|
||
* (一)、项目初始化阶段:
|
||
* 1)记录进项目时刻的时间
|
||
* 2)记录进项目时刻的累计距离。Itmv10.Start_LJJL := cg.ai_ljjl;
|
||
* 3) 计算超车项目的项目距离。(SysSet[504]-->1)
|
||
* 如果设置了(SysSet[504]-->6,以这个参数设定的距离为标准)
|
||
* 4)初始超车道计算
|
||
* SysSet[405]:超车时在超车道上需驶离超车道 (0-否 1-是 2-不进项目)
|
||
* 如果设置成2,那么超车道上是不进项目的。(自动读卡进项目,不进入项目)
|
||
*
|
||
* //最左侧不进项目
|
||
*
|
||
* 6.1、如果初始在超车道上
|
||
* 1)Itmv10.Status:=1;
|
||
*
|
||
* 2)从SysSet[504]-->3 个参数中,得到超车道上的距离限制,必须在这个距离内离开超车道,否则:不按规定考试
|
||
* Itmv10.CS_CCD_Max_XSJL
|
||
*
|
||
* 3)从SysSet[504]-->4个参数中,得到:超车道二次超车距离(CS_CCD_ErCiChaoChe_Min_XSJL)。(驶离超车道后,记录一个
|
||
* 临时距离,必须行驶完这个距离,才能再次进入超车道)
|
||
*
|
||
* 6.2、如果初始不在超车道上
|
||
* 1)Itmv10.Status:=2;
|
||
*
|
||
* 2) 临时记录:车道号、车道数、状态2时刻的车道号、状态2时刻的车道数。
|
||
*
|
||
* Itmv10.Temp_BasePointInLaneNo := cg.RTKKM3.BasePointInLaneNo;
|
||
* Itmv10.Temp_BaseLaneCount := cg.RTKKM3.BaseLaneCount;
|
||
* Itmv10.Temp_St2_CheDaoHao := cg.RTKKM3.BasePointInLaneNo; //初始在普通车道的车道号
|
||
* Itmv10.Temp_St2_CheDaoCount := cg.RTKKM3.BaseLaneCount; //初始在普通车道的车道数
|
||
*
|
||
*
|
||
* 7) 得到完成超车后,必须在超车道上行驶的距离。(行驶完这个距离后,才能返回原车道)
|
||
* SysSet[504]-->5
|
||
*
|
||
* 8) 得到超车的挡位要求(如果没有设置这个参数,那么对挡位没有任何要求)
|
||
* SysSet[504]-->10
|
||
* 超车档位要求,格式:档位^类型 类型为0表示达到一次即可,为1表示超车道上要全程达到。
|
||
*
|
||
* 9) 得到超车时间,在规定的时间内要返回原车道
|
||
* SysSet[504]-->7
|
||
*
|
||
* 10) 得到超车速和时间要求
|
||
* SysSet[482]:超车时车速要求(0-不要求 其它值表示要求 车速^持续时长秒^要求阶段 ^
|
||
*
|
||
* (二)、变道方向计算
|
||
* //计算变道方向
|
||
* BianDaoKind := 0; //0:未变道 1:往左侧变道 2:往右侧变道
|
||
* //1:初始超车道阶段 2:初始普通车道阶段 3:左侧超车阶段 4:完成左侧超车阶段
|
||
* //5:回原车道阶段 6:完成回原车道阶段
|
||
*
|
||
* //左侧变道1
|
||
* //左侧变道2
|
||
* //左侧变道3
|
||
*
|
||
* //右侧变道1(因为我们测绘定义的缺陷,右侧变道暂不考虑车道数变多或者变少的情况)
|
||
*
|
||
* (三)、超车挡位相关的评判
|
||
* //1:初始超车道阶段 2:初始普通车道阶段 3:左侧超车阶段 4:完成左侧超车阶段
|
||
* //5:回原车道阶段 6:完成回原车道阶段
|
||
* //挡位要求计算
|
||
*
|
||
* //如果行驶在超车道上
|
||
*
|
||
* //借道超车的,驶入对向车道了(逆方向)
|
||
*
|
||
* //1:初始超车道阶段 2:初始普通车道阶段 3:左侧超车阶段 4:完成左侧超车阶段
|
||
* //5:回原车道阶段 6:完成回原车道阶段
|
||
*
|
||
* (四)、方向灯赋值相关
|
||
* //方向灯赋值 左方向灯
|
||
*
|
||
* (五)取消项目和项目距离到达逻辑处理
|
||
* //1:初始超车道阶段 2:初始普通车道阶段 3:左侧超车阶段 4:完成左侧超车阶段
|
||
* //5:回原车道阶段 6:完成回原车道阶段
|
||
*
|
||
* //SysSet[405]:超车时在超车道上需驶离超车道
|
||
* //超车时在超车道上需驶离超车道 (0-否 1-是 2-不进项目)
|
||
* //378:变更车道和超车:取消第1个项目 (0-不能 1-不变道也不开转向灯 2-开双跳)
|
||
*
|
||
* //出项目距离,结束
|
||
*
|
||
* (六)借道超车相关业务逻辑
|
||
* //借道超车状态 0:非借道 1:表示超车 2:表示正在返回原车道 3:回原车道道完成
|
||
*
|
||
* //Itmv10.Status = 2 普通车道上,准备超车
|
||
*
|
||
* //借道超车状态 0:非借道 1:表示超车 2:表示正在返回原车道 3:回原车道道完成
|
||
* //以下是借道超车相关的业务逻辑
|
||
*
|
||
*
|
||
* (七)超车各个阶段讲解
|
||
*
|
||
* 2338帧后,步进跟踪超车项目。
|
||
*
|
||
* 超车结束和取消规则:
|
||
* 1、项目只能取消一次;
|
||
* 2、做完一套完整动作的,结束项目
|
||
* 3、378=2,开启双挑灯,立即取消
|
||
* 3、项目距离设置等于0的:读到下一个项目点时,未完成完整动作的,扣分后结束项目
|
||
* 4、项目距离设置大于0,距离达到项目距离的,且378=1:从未变过道的,取消项目;有过变道但未完成完整动作的,扣分后结束项目
|
||
* 5、项目距离设置大于0,距离达到项目距离的,且378!=1:扣分后结束项目
|
||
*
|
||
* 注意:超车项目进项目的时候,如果在最左侧车道并且405参数等于1 不要报超车进项目语音,等回原车道评判会给外壳发语音事件
|
||
*
|
||
*/
|
||
|
||
#ifndef SUB3JUDGE10CCXX_H
|
||
#define SUB3JUDGE10CCXX_H
|
||
|
||
#include "ISub3JudgeWrap.h"
|
||
|
||
class JUDGE_API Sub3Judge10Ccxx : public ISub3JudgeWrap
|
||
{
|
||
public:
|
||
explicit Sub3Judge10Ccxx();
|
||
virtual ~Sub3Judge10Ccxx();
|
||
|
||
DEAL_API bool dealJudgeEnter() override;
|
||
DEAL_API void dealJudgeItem() override;
|
||
|
||
//是否播报驶离超车道语音
|
||
bool pullingLane() { return m_itemv.pullingLane; }
|
||
|
||
protected:
|
||
void Init_Item_10();
|
||
private:
|
||
TSub3Item10Ccxx m_itemv;
|
||
|
||
//**********************以下是新科目三************************
|
||
private:
|
||
//超车前,不通过内、外后视镜观察后方和左侧交通情况并回头观察确认安全
|
||
//向左变道时、车轮压车道分界线前10s内,头部姿态没有大于左后侧角度【23度】
|
||
void NS3JudgeVision_41401();
|
||
//超车时,未回头观察被超越车辆动态
|
||
//在超车道上,头部姿态没有大于右后侧角度【25度】
|
||
void NS3JudgeVision_41403();
|
||
//超车后,驶回原车道前,不通过内、外后视镜观察后方和右侧交通情况并回头观察确认安全
|
||
//向右变道时、车轮压车道分界线前10s内,头部姿态没有大于右后侧角度【25度】
|
||
void NS3JudgeVision_41405();
|
||
};
|
||
|
||
#endif // SUB3JUDGE10CCXX_H
|