subject-two/entry/src/main/cpp/sdk/judge/sub3/Sub3Judge03Zxxs.h

97 lines
4.3 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-03-18
*
* ***************************************************************************************
*
* 测绘及项目阶段定义
*
* (1测绘相关
* 直线行驶内部代码3测绘点有3个
* 点1进项目点 点2直行行驶开始点 点3直线行驶项目结束点。
* 注如果设置了SysSet[333](大多数地方不设置表示读到项目点3后需要再行驶50米检查是否有刹车或者减速动作。
*
* (2项目阶段定义
* 直线行驶定义了3个阶段1初始行驶阶段 2直线行驶阶段 3结束直线行驶阶段。 4:减速带行驶阶段(非必须的,几乎不用)
*
* (3) 标准评判内容
* 评判距离其他的都是非标准的部令规定距离偏差不能大于30CM。(正负30CM以内
*
*
* (项目初始化)、项目初始化
* 1SysSet[503]-->1得到直线行驶的控制车速。如果直线行驶设置了对速度要求那么速度必须在控制车速 +- 控制范围内)
* 2SysSet[503]-->2得到控制速度范围结合SysSet[503]-->1 使用)
* 3SysSet[503]-->3得到直线行驶的最低限速如果需要评判速度到达测绘点3后全程的最高速度不能低于这个速度否则扣分
* 4) SysSet[503]-->4, 减速带减速阈值如果设置了减速带的话几乎没有考场设置减速带也就是SysSet[333])
* 5扣分时间间隔毫秒特殊地方忽略
* 6得到计算距离的参照标准重要参数SysSet[503]-->6默认以本车道的右边线作为参考标准
* 7得到角度变化阈值SysSet[503]-->7必须达到这个角度变化才评判车身与边线的距离
* 8是否评判车速SysSet[503]-->8)
* 9是否评判方向灯(SysSet[503]-->9)(如果设置了判方向灯,过程中是不能有方向灯信号的)
*
* 如果定义了某种车型的特定直线行驶参数car.ZxxsCs按规则翻译即可。(一般不会定义)
*
* 10) SysSet[320]:直线行驶:缓冲距离,项目距离。如果是手工进项目的,行驶到缓冲距离,进入直线行驶阶段。
* 行驶完项目距离直线行驶进入状态3。
*
* 11)计算允许的距离偏差默认30CM。需要加上考车允许的误差系数。Ctl.RtkOffset
*
* (一)初始行驶阶段
* 1如果是手工进入项目的到达设定的直线行驶缓冲距离后切换到直线行驶阶段2手工的不判速度的
*
* 2) 实时更新参考距离和参考角度
*
* 注意自动进项目的项目状态由测绘点2是否穿越作为参考依据。
*
* (二)直线行驶阶段
* 1距离偏差评判
* //判断行驶轨迹是否偏离基准线 20171010 增加角度 20171018
*
* //判断行驶轨迹是否偏离基准线 20171010 增加角度 20171018
*
* 2) 状态切换
* 2.1 项目距离引起的状态切换。
*
* 2.2穿越项目点3引起的状态切换。
*
* 3如果压线了
*
* 4车速评判如果设置了要求评判车速个性的功能讲代码的时候提及一下
*
* (三)结束直线行驶阶段(读到结束点3或者项目距离到达
* 1) 如果需要评判速度(一般不需要,个性参数设置)
* 2) 如果设置了减速带99%以上的地区不设置),进入阶段(四)。如果没有设置,结束直线行驶项目。
*
* (四)减速带行驶阶段(兼容个性需求,几乎用不到)
*
* 50米内有脚刹车动作或者速度降到了设定的值
*
*
* 快速定位到770然后步进跟踪进入直线行驶项目。手工进的
*
*/
#ifndef SUB3JUDGE03ZXXS_H
#define SUB3JUDGE03ZXXS_H
#include "ISub3JudgeWrap.h"
class JUDGE_API Sub3Judge03Zxxs : public ISub3JudgeWrap
{
public:
explicit Sub3Judge03Zxxs();
virtual ~Sub3Judge03Zxxs();
DEAL_API bool dealJudgeEnter() override;
DEAL_API void dealJudgeItem() override;
protected:
private:
TSub3Item03Zxxs m_itemv;
};
#endif // SUB3JUDGE03ZXXS_H