Exemplo n.º 1
0
    void UpdateCar()
    {
        //Get updated track velocity
        float dt       = (1 / Constants.targetHz);
        float trackVel = track.gameObject.GetComponent <TrackSpeedSubscriber>().GetVelocity();

        //Calculate car controls
        Pose    convertedCoordinatesPose      = new Pose(new Vector3(transform.position.z, transform.position.x, 0), transform.rotation);
        Vector2 convertedCoordinatesLinearVel = new Vector2(linearVel.z, linearVel.x);

        CarController.CarCommand command = carController.calculateControls(convertedCoordinatesPose, convertedCoordinatesLinearVel, angularVel, trackVel);
        steer    = steerSys.Output(command.steer);
        throttle = throttleSys.Output(command.throttle);

        //Update bicycle model
        carState.UpdateState(throttle, steer, dt, trackVel);

        //Update the state of the car sprite
        transform.position = new Vector3(carState.x, transform.position.y, carState.z);
        float      newAngle = (carState.psi * Mathf.Rad2Deg);
        Quaternion rotation = Quaternion.Euler(0, (carState.psi * Mathf.Rad2Deg), 0);

        transform.rotation = rotation;
        linearVel          = new Vector3(carState.dx, 0, carState.dz);
        angularVel         = carState.dv;
    }
Exemplo n.º 2
0
    void Update()
    {
        CheckNullSetDefaultState();

        string resultStateName = currentState.UpdateState();

        SetStateByName(resultStateName);
    }
Exemplo n.º 3
0
    void UpdateCar()
    {
        float dt       = (1 / Constants.targetHz);
        float trackVel = track.gameObject.GetComponent <TrackSim>().vel;

        //Update bicycle model
        carState.UpdateState(throttle, steer, dt, trackVel);

        //Update the state of the car sprite
        transform.position = new Vector3(carState.x, carState.y);
        float newAngle = (carState.psi * Mathf.Rad2Deg);// + Constants.neutralHeading;

        Debug.Log(string.Format("newAngle: {0}", newAngle));
        Quaternion rotation = Quaternion.Euler(0, 0, (carState.psi * Mathf.Rad2Deg));// + Constants.neutralHeading);

        Debug.Log(string.Format("rotation quaternion: {0}", rotation));
        transform.rotation = rotation;

        linearVel  = new Vector3(carState.dx, carState.dy, 0);
        angularVel = carState.dv;
        Debug.Log(string.Format("Linear vel X: {0}, Y {1}", linearVel.x, linearVel.y));
    }