CaccParameters.java

package org.opentrafficsim.road.gtu.lane.tactical.cacc;

import static org.opentrafficsim.base.parameters.constraint.NumericConstraint.NEGATIVE;
import static org.opentrafficsim.base.parameters.constraint.NumericConstraint.POSITIVE;

import org.djunits.unit.AccelerationUnit;
import org.djunits.unit.DurationUnit;
import org.djunits.unit.LengthUnit;
import org.djunits.unit.SpeedUnit;
import org.djunits.value.vdouble.scalar.Acceleration;
import org.djunits.value.vdouble.scalar.Duration;
import org.djunits.value.vdouble.scalar.Length;
import org.djunits.value.vdouble.scalar.Speed;
import org.opentrafficsim.base.parameters.ParameterTypeAcceleration;
import org.opentrafficsim.base.parameters.ParameterTypeDouble;
import org.opentrafficsim.base.parameters.ParameterTypeDuration;
import org.opentrafficsim.base.parameters.ParameterTypeLength;
import org.opentrafficsim.base.parameters.ParameterTypeSpeed;

public class CaccParameters
{

    public static ParameterTypeDuration T_SYSTEM_CACC;

    public static final ParameterTypeDuration T_SYSTEM_ACC;

    public static final ParameterTypeDouble K;

    public static final ParameterTypeDouble K_A;

    public static final ParameterTypeDouble K_V;

    public static final ParameterTypeDouble K_D;

    public static final ParameterTypeAcceleration A_MIN;

    public static final ParameterTypeAcceleration A_MAX;

    public static final ParameterTypeDouble R_MIN;

    public static final ParameterTypeLength STANDSTILL;

    public static final ParameterTypeDuration T_GAP;

    public static ParameterTypeAcceleration A_REDUCED;

    public static ParameterTypeSpeed SET_SPEED;

    static
    {
        T_SYSTEM_CACC = new ParameterTypeDuration("TsystemCacc", "Constant time gap spacing",
                new Duration(0.5, DurationUnit.SI), POSITIVE);
        T_SYSTEM_ACC = new ParameterTypeDuration("TsystemAcc", "Constant time gap spacing", new Duration(1.5, DurationUnit.SI),
                POSITIVE);
        T_GAP = new ParameterTypeDuration("Tgap", "Gap acceptance headway", new Duration(0.56, DurationUnit.SI), POSITIVE);
        K = new ParameterTypeDouble("k", "General gain", 0.3, POSITIVE);
        K_A = new ParameterTypeDouble("ka", "Acceleration gain", 1.0, POSITIVE);
        K_D = new ParameterTypeDouble("kd", "Spacing gain", 0.1, POSITIVE); // 0.1
        K_V = new ParameterTypeDouble("kv", "Speed gain", 0.58, POSITIVE); // 0.58
        A_MIN = new ParameterTypeAcceleration("Amin", "Maximum (comfortable) deceleration",
                new Acceleration(-5, AccelerationUnit.SI), NEGATIVE);
        A_MAX = new ParameterTypeAcceleration("Amax", "Maximum (comfortable) accceleration",
                new Acceleration(1.25, AccelerationUnit.SI), POSITIVE); // was 2 m/s?
        R_MIN = new ParameterTypeDouble("rmin", "Minimum spacing", 2, POSITIVE);
        STANDSTILL = new ParameterTypeLength("Standstill", "Standstill distance", new Length(3.0, LengthUnit.METER), POSITIVE);
        A_REDUCED = new ParameterTypeAcceleration("Areduced", "Reduction in acceleration to create gaps",
                new Acceleration(0, AccelerationUnit.SI));
        SET_SPEED = new ParameterTypeSpeed("SetSpeed", "Free flow speed for leading platoon vehicle",
                new Speed(80, SpeedUnit.KM_PER_HOUR), POSITIVE);
    }
}