public MonteCarloLocalization(AutonomyConfiguration configuration)
        {
            // Assign fields
            this.configuration = configuration;

            // Initialize random number generator
            MathHelper.random = new Random((int)DateTime.Now.Ticks);

            // Initialize field
            field = new Field(FieldWidth, FieldHeight, DigX, ObstacleX, configuration.WallMargin);
        }
Esempio n. 2
0
        public Particle(Field field, double x, double y, double angle)
        {
            // Assign fields
            this.field = field;
            this.x = x;
            this.y = y;
            this.angle = angle;

            // Create rangefinders
            rangeFinderFront = new RangeFinderModel(field, this, 0.0, 46.99);
            rangeFinderRear = new RangeFinderModel(field, this, 180.0, -18*2.54);
        }
Esempio n. 3
0
        public RangeFinderModel(Field field, MovingObject entity, double mountAngle, double offset)
        {
            // Initialize fields
            this.field = field;
            this.entity = entity;
            this.mountAngle = mountAngle;
            this.offset = offset;

            // Calculate angle delta
            this.angleDelta = (EndSweep - BeginSweep) / ((double)MeasurementCount - 1.0);

            // Calculate starting angle
            startingAngle = mountAngle + entity.Angle - ((EndSweep - BeginSweep) / 2.0);
            // Standard deviation
            standardDeviation = Math.Sqrt(Math.Sqrt(Variance));
        }