Example #1
0
        public override Actuator process(Percept p)
        {
            currentTimestamp++;
            Actuator action = new Nothing();

            if (p is LidarSensorInput)
            {
                LidarSensorInput lidarPerception = (LidarSensorInput)p;
                double           currDistance    = lidarPerception.DistanceTo;

                if (hasState)
                {
                    if (currDistance < prevDistance)
                    {
                        double relativeVelocity =
                            (prevDistance - currDistance) / (currentTimestamp - prevDistanceTimestamp);
                        double timeUntilCollision = currDistance / relativeVelocity;

                        if (timeUntilCollision < 5)
                        {
                            action = new Brake();
                        }
                    }
                }

                // Update agent state with new input
                prevDistanceTimestamp = currentTimestamp;
                prevDistance          = currDistance;
                hasState = true;
            }

            return(action);
        }
Example #2
0
        static void Main(string[] args)
        {
            LidarSensorInput sensor = new LidarSensorInput();
            Agent            agent  = new SelfDrivingCar();

            sensor.DistanceTo = 10;
            Actuator action = agent.process(sensor);

            Console.WriteLine(action.ToString());

            sensor.DistanceTo = 15;
            action            = agent.process(sensor);
            Console.WriteLine(action.ToString());

            sensor.DistanceTo = 13;
            action            = agent.process(sensor);
            Console.WriteLine(action.ToString());

            sensor.DistanceTo = 10;
            action            = agent.process(sensor);
            Console.WriteLine(action.ToString());
        }