subject-two/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge20Comm.h
2024-05-21 19:45:15 +08:00

230 lines
6.9 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* 说明: 科三项目[通用评判]评判
*
* 作者: 杨海洋
* 日期: 2024-04-26
*
* ***************************************************************************************
*
* 通用评判算法
*
* 一、变量更新及自动进项目处理
* 1、通用评判初始化
* 2、特定变量、发动机怠相关的处理
* 1脚刹车距离、累计用时、次高挡次数
* 说明:科目三科目结束的时候, KM3AllPass() = True需要评判> 行驶中在次高挡位及以上行驶时间不足5s ,所以,次高挡次数 达到25次就不扣这个分。
* 2发动机怠速值处理。
* Set_FDJ_DS();
* 3座椅检查(贵州)。
* doCheck_ZuoYi(JudgeKM3Obj);
*
* 3、起步项目触发
* if (Itmv20_CJH.qbjxmsj = 0) or
* ((Itmv20_CJH.qbjxmsj <> 0) and (cg.Rtk_Enabled = True) and (lscg[zj(1)].Rtk_Enabled = True)
* and (lscg[zj(2)].Rtk_Enabled = True)) then
* begin
* CallQiBu(Itmv20_CJH.qbsjcs);
* end;
*
* 4、靠边停车项目触发
* Call_Auto_KBTC(JudgeKM3Obj);
*
* 5、模拟灯光项目触发
*
* 二、评判细节
* 1、溜车处理
*
* 1PubLCTCptt.X=0PubLCTCPtt.Y=0停车的时候记录一下停车时刻的(X,Y)PubMaxLCValue := 0;溜车值置为0
* 2如果当前是非前进状态当前GPS对应的X1,Y1 与 PubLCTCptt对应的(X,Y)计算距离,同时更新 PubMaxLCValue。如果溜车值大于30立刻评判溜车大于30厘米。
* 3如果当前是前进状态连续2帧评判是否溜车大于10小于30。并且置空溜车状态。PubMaxLCValue:=0; PubLCTCPtt.X=0;
* PubLCTCPtt.Y:=0;
*
* 2、连续两次挂挡不进
* 1当前挡位为空挡
* 2SysSet[507]>5: 2次挂挡不进在停车状态下也判
* 3得到最近一次的前进挡。(LS2的挡位)
* 4首先检测到5秒前从LS3往前推出现过空挡。这个时候是不是表示当前前进挡挂了1次了。
* 5在4的基础上前面又出现了一次LS2的挡位是不是表示2次了。
* 6紧接着在5的基础上我检测到前面出现了挡位0并且离合器是1
*
* 3、空挡滑行
*
* 4、不按规定速度行驶
* 5、压线评判
* 6、起步方向灯、喇叭
* 7、连续变道
* 重点讲解一下思路
* Is_Lxbd_New()
* 110秒内变化了2个或以上的车道
* 2同一个方向灯不关闭变了2次或以上车道
* 8、人行横道网格线内停车
* 9、加速踏板使用错误
* 10、半联动
* 11、制动不平顺
* 12、操作完成后不关灯
* 13、变道方向灯评判2
* 14、副刹车评判
* 15、全程越级加减挡
* 16、连续使用起步挡行驶超过50米
* 17、熄火评判
* 18、启动发动机时挡位未置于空挡
* 19、长时间启动钥匙
* 20、安全带评判
* 21、考试过程中打开车门
* 22、起步挂错挡
* 23、挡位与车速不匹配
* 24、空挡滑行
* 25、全程次高挡相关
* 26、空挡滑行
* 27、其他非法掉头、超速、夜间行驶
*
*/
#ifndef SUB3JUDGE20COMM_H
#define SUB3JUDGE20COMM_H
#include "ISub3JudgeWrap.h"
class JUDGE_API Sub3Judge20Comm : public ISub3JudgeWrap
{
public:
explicit Sub3Judge20Comm();
virtual ~Sub3Judge20Comm();
DEAL_API bool dealJudgeEnter() override;
DEAL_API void dealJudgeItem() override;
protected:
//综合评判初始化
void Init_ZongHe();
void ResetFxp();
void itm20_ckfxd();
//设置发动机怠速
void Set_FDJ_DS();
//检查座椅
void doCheck_ZuoYi();
//加载模拟灯光项目
void CallMoNiDengGuang();
//调用起步
void CallQiBu(int qbsj = 5);
//=======================================
//1、溜车评判
void Judge_LiuChe();
//2、连续两次挂挡不进
void Judge_GuaDangBuJin();
//3、空挡滑行
void Judge_KongDangHuaXing();
//4、不按规定速度
void Judge_GuiDingSuDu();
//5、压线评判重点
void Judge_YaXian_30120();
//5、压边缘线 (重点)
//长时间骑轧车道分界线行驶
void Judge_YaXian_10S_XuXian();
//6、起步方向灯、喇叭
void Judge_QiBu_FXD_LaBa();
//7、连续变更两条以上车道 //重点
void Judge_LianXuBianDao();
bool Is_Lxbd_New(); //是否是连续变道 //徐连刚实现 ***暂时没用到
bool Is_Lxbd_New2(); //是否是连续变道 //老的实现
bool Is_Lxbd_New3(); //是否是连续变道 //杨海洋实现 ***暂时没用到
//8、不能停止人行横道网格线内 //禁停评判
void Judge_ForbiddenTC();
//9、加速踏板错误
void Jugde_JiaSuTaBan();
//10、半联动
void Judge_BanLianDong();
//11、制动不平顺
void Judge_ZhiDongBuPingShun();
//12、操作完成后不关闭灯光
void Judge_BuGuanBiDengGuang();
//13、变道方向灯评判2重点翻译
void Judge_BianDaoFangXiangDeng2();
void Mark_FXD_42_43(bool Flag42);
void HandleSysSet409_1_Common();
void HandleSysSet409_1_Special();
bool CheckJL_CS_Itmv20(int jl, int cscs = 30); //从当前位置向倒退jl米的距离内是否减速低于30
//14、副刹车评判
void Judge_FSC();
//15、越级加减档
void Judge_YueJi_JiaJianDang();
//16、起步挡50
void Judge_QiBuDang_50();
//17、熄火评判
void Judge_XiHuo();
//18、启动发动机挡位未置空挡
void Judge_DW_KongDang();
//19、长时间启动钥匙
void Judge_ChangShiJian_QiDongYaoShi();
//20、安全带
void Judge_AnQuanDai();
//21、打开车门
void Judge_DaKaiCheMen();
//22、起步挂错挡
void Judge_QiBu_GuaCuoDang();
//23、挡位与车速、转速不匹配
void Judge_DangWei_CS_ZS();
//24、全程次高挡评判
void Judge_CiGaoDang();
//25、自动靠边停车重点
void Call_Auto_KBTC();
//26、夜间行驶及其他业务逻辑
void Judge_Extra();
bool Check_Diaotou(int jl, int dtjd);
private:
TSub3Item20Comm_CJH m_itemvCJH;
TSub3Item20Comm_XLG m_itemvXLG;
int m_sys360liji = 0;
bool m_CSHItmv20_Flag = false;
//std::string m_PubTongYong_Msg;
int m_sfyz_state = 0; //模拟灯光是否需要人脸验证
bool m_qbjc_zuoyi = false; //20151207 贵州起步检查
//以下是溜车评判需要用到的变量
int m_PubMaxLCValue = 0;
Pointi m_PubLCTCPtt;
double m_PubLCTC_GPS_JD = 0.0;
double m_PubLCTC_GPS_WD = 0.0;
bool m_PubCanMarkLC50Flag = true; //注意初始必须是true
bool m_Pub_First_QiBu_Flag = false;
//int Pub_JSC_JL = 0; //in car
//bool PubCanJudge_XiHuoFlag = true; //in car
//int PubKaoBianTCFinish_LJJL = 0; //in car
int m_DiaoTou_ID = 0;
int64 m_PubLastMark_XuXian_TK = 0;
const int m_LaneChangeTime = 10; //连续变道时间 单位秒 杨海洋增加
};
#endif // SUB3JUDGE20COMM_H