/* * 说明: 科三项目[直线行驶]评判 * * 作者: 杨海洋 * 日期: 2024-03-18 * * *************************************************************************************** * * 测绘及项目阶段定义 * * (1)测绘相关 * 直线行驶内部代码:3,测绘点有3个 * 点1:进项目点 点2:直行行驶开始点 点3:直线行驶项目结束点。 * 注:如果设置了SysSet[333](大多数地方不设置),表示读到项目点3后,需要再行驶50米,检查是否有刹车或者减速动作。 * * (2)项目阶段定义 * 直线行驶定义了3个阶段,1:初始行驶阶段 2:直线行驶阶段 3:结束直线行驶阶段。 4:减速带行驶阶段(非必须的,几乎不用) * * (3) 标准评判内容 * 评判距离(其他的都是非标准的),部令规定:距离偏差不能大于30CM。(正负30CM以内) * * * (项目初始化)、项目初始化 * 1)SysSet[503]-->1,得到直线行驶的控制车速。(如果直线行驶设置了对速度要求,那么速度必须在控制车速 +- 控制范围内) * 2)SysSet[503]-->2,得到控制速度范围(结合SysSet[503]-->1 使用) * 3)SysSet[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