Sigmoid() public static méthode

public static Sigmoid ( Vector3 v3, float scale = 1f ) : Vector3
v3 Vector3
scale float
Résultat Vector3
        public override void CollectObservations(VectorSensor sensor)
        {
            if (sensor != null)
            {
                sensor.AddObservation(stats.steer);

                float speed = Mathf.Clamp(stats.speed, 0f, 40f);
                sensor.AddObservation(speed / 20f - 1f);

                float angle = Mathf.Clamp(stats.orientation, -45f, 45f);
                sensor.AddObservation(angle / 45f);

                float offset = Mathf.Clamp(stats.offset, -Chunk.RoadExtent, Chunk.RoadExtent);
                sensor.AddObservation(offset / Chunk.RoadExtent);

                sensor.AddObservation(vehicle.Inclination);
                sensor.AddObservation(Normalization.Sigmoid(vehicle.Velocity));
                sensor.AddObservation(Normalization.Sigmoid(vehicle.AngularVelocity));

                sensor.AddObservation(road.GetNormalizedObstacleDistances(60));

                foreach (var dir in road.GetWayPointDirections(5, 16))
                {
                    sensor.AddObservation(dir);
                }
            }
        }
Exemple #2
0
        public override void CollectObservations(VectorSensor sensor)
        {
            sensor.AddObservation(m_NormTargetSpeed);
            sensor.AddObservation(NormTargetWalkAngle);
            sensor.AddObservation(NormTargetLookAngle);

            sensor.AddObservation(m_Body.Gyro);
            sensor.AddObservation(Normalization.Sigmoid(m_Body.LocalVelocity));
            sensor.AddObservation(Normalization.Sigmoid(m_Body.LocalAngularVelocity));

            for (int i = 0; i < m_Bones.Length; i++)
            {
                sensor.AddObservation(m_Bones[i].NormAngle);
                sensor.AddObservation(m_Bones[i].NormLocalVelocity);
            }

            foreach (var detector in m_GroundRayDetectors)
            {
                sensor.AddObservation(detector.GetGroundDistance());
            }

            foreach (var detector in m_GroundContactDetectors)
            {
                sensor.AddObservation(detector.HasGroundContact);
            }
        }
Exemple #3
0
        public override void CollectObservations(VectorSensor sensor)
        {
            sensor.AddObservation(m_PrevActions);
            sensor.AddObservation(Health * 2 - 1);

            var v = Normalization.Sigmoid(m_Walker.LocalVelocity);

            sensor.AddObservation(v.x);
            sensor.AddObservation(v.z);
        }
Exemple #4
0
        public override void CollectObservations(VectorSensor sensor)
        {
            Info.Position = transform.position;
            Info.Forward  = transform.forward;
            road.UpdateInfo(Info);

            if (Info.IsOffRoad)
            {
                AddReward(Mathf.Abs(Info.Deviation) * -offRoadPenaltyFactor);
            }
            else
            {
                AddReward(Vector3.Dot(Info.Frame.Forward, physics.Velocity) * speedRewardFactor);
            }

            sensor.AddObservation(Info.Angle / 180f);
            sensor.AddObservation(Mathf.Clamp(Info.Deviation * 0.2f, -1f, 1f));
            sensor.AddObservation(physics.Inclination3);
            Vector3 v = physics.Localize(physics.Velocity);

            sensor.AddObservation(Normalization.Sigmoid(v.x));
            sensor.AddObservation(Normalization.Sigmoid(v.y));
            // Forward Speed: 0 - 25 m/s => 0 - 90 km/h
            // http://fooplot.com/#W3sidHlwZSI6MCwiZXEiOiJzcXJ0KHgqMC4wNCkqMi0xIiwiY29sb3IiOiIjMDAwMDAwIn0seyJ0eXBlIjoxMDAwLCJ3aW5kb3ciOlsiLTI1LjA2MzAwMTE5MjUzMjk2NSIsIjExNy45ODgxNDYyNjg0MDQzOSIsIi01LjgzMzQzOTgyNjk2NTMyMyIsIjguNDcxNjc0OTE5MTI4NDA3Il19XQ--
            sensor.AddObservation(Mathf.Min(Mathf.Sqrt(Mathf.Max(v.z, 0f) * 0.04f) * 2f - 1f, 1f));
            sensor.AddObservation(Normalization.Sigmoid(physics.AngularVelocity));

            sensor.AddObservation(physics.WheelR.NormMotorTorque);
            sensor.AddObservation(physics.WheelF.NormSteer);
            sensor.AddObservation(physics.WheelR.NormBrakeTorque);
            sensor.AddObservation(physics.WheelF.NormBrakeTorque);
            sensor.AddObservation(physics.WheelR.GetHeightAboveGround());
            sensor.AddObservation(physics.WheelF.GetHeightAboveGround());

            Vector3 origin = GetRayOrigin();

            foreach (int i in lookAhead)
            {
                Vector3 p = road.GetFrame(Info.Frame.Index + i).Position;
                sensor.AddObservation((p - origin).normalized);
                Debug.DrawRay(p, Vector3.up, Color.white);
            }

            foreach (float distance in rayObs)
            {
                // Buffered
                sensor.AddObservation(distance);
            }
            CastRays(origin);
            foreach (float distance in rayObs)
            {
                // Current
                sensor.AddObservation(distance);
            }
        }
        public override void CollectObservations(VectorSensor sensor)
        {
            sensor.AddObservation(multicopter.Inclination);
            sensor.AddObservation(Normalization.Sigmoid(
                                      multicopter.LocalizeVector(multicopter.Rigidbody.velocity), 0.25f));
            sensor.AddObservation(Normalization.Sigmoid(
                                      multicopter.LocalizeVector(multicopter.Rigidbody.angularVelocity)));

            foreach (var rotor in multicopter.Rotors)
            {
                sensor.AddObservation(rotor.CurrentThrust);
            }
        }