97 lines
4.3 KiB
C++
97 lines
4.3 KiB
C++
/*
|
||
* 说明: 科三项目[直线行驶]评判
|
||
*
|
||
* 作者: 杨海洋
|
||
* 日期: 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
|