public override void CollectObservations()
    {
        // Agent only remains on the 2D XZ plane

        // since target direction is always assumed to be known in the general case
        // we also need to sample more
        //var sensorDataTar = cr_.getSensorsTarget(sw_id, 16, 360, agentSensorLength);

        float signedAngle = Vector3.SignedAngle(agent_.forward, agent_.target - agent_.pos, Vector3.up);

        AddVectorObs(1.0f / (agent_.target - agent_.pos).sqrMagnitude);
        AddVectorObs(agent_.cosineOrientation());
        AddVectorObs(signedAngle > 0.0f ? 1.0f : 0.0f);

        var sensorDataObs = cr_.getSensorsObstacle(sw_id, obsSpaceSize, agentFOV, agentSensorLength);

        // for(int i = 0; i < sensorDataTar.Count; i++){
        //     //Debug.Log("Sensor " + i + ":" + sensorData[i]);
        //     AddVectorObs(sensorDataTar[i]);
        // }
        for (int i = 0; i < sensorDataObs.Count; i++)
        {
            //Debug.Log("Sensor " + i + ":" + sensorData[i]);
            AddVectorObs(sensorDataObs[i]);
        }
    }