⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 beaconandgpsparticlefilter.java

📁 一个基于PlaceLab的室内和室外的智能导航系统
💻 JAVA
字号:
/* * Created on Oct 27, 2004 * */package org.placelab.particlefilter.beacon;import java.util.Vector;import org.placelab.core.BeaconMeasurement;import org.placelab.core.GPSMeasurement;import org.placelab.core.Measurement;import org.placelab.core.Observable;import org.placelab.core.TwoDCoordinate;import org.placelab.mapper.Mapper;import org.placelab.particlefilter.Particle;import org.placelab.particlefilter.SensorModel;/** Spec for BeaconAndGPSParticleFilter *  * @author jhightower */public class BeaconAndGPSParticleFilter extends BeaconParticleFilter {    /**     * @param m     */    public BeaconAndGPSParticleFilter(Mapper m) {        super(m);    }    public BeaconAndGPSParticleFilter(Mapper m, int particleMin, int particleMax) {        super(m, particleMin, particleMax);    }    /**     * @param m     * @param maxX     * @param maxY     * @param gridIncr     */    public BeaconAndGPSParticleFilter(Mapper m, double maxX, double maxY, double gridIncr) {        super(m, maxX, maxY, gridIncr, PARTICLE_MIN, PARTICLE_MAX);    }    /* (non-Javadoc)     * @see org.placelab.particlefilter.ParticleFilter#createDefaultSensorModel()     */    protected SensorModel createDefaultSensorModel() {        return new BeaconAndGPSSensorModel(mapper);    }    /** Construct a new array of particles from either a beacon or GPS measurement.     */    protected Vector createParticles(Observable o) {		Measurement meas = ((MeasurementObservable)o).getMeasurement();		if (meas instanceof BeaconMeasurement) {		    return super.createParticles(o);		} else if (meas instanceof GPSMeasurement) {		    GPSMeasurement gpsMeas = (GPSMeasurement)meas;		    /* return null if the GPS does not have a valid lock */		    if (!gpsMeas.isValid())		        return null;		    			TwoDCoordinate pos = (TwoDCoordinate)gpsMeas.getPosition();			if (pos==null) return null;			TwoDCoordinate origin = (TwoDCoordinate)pos.createCloneAndMove(-maxX/2, -maxY/2);			Vector list = new Vector();			for (double i=0; i < maxX; i += gridIncrement) {				for (double j=0; j < maxY;j += gridIncrement) {					Particle p = new PositionWithMotionParticle(origin.createCloneAndMove(i, j), 0, 0);					list.addElement(p);				}			}			return list;  		} else {		    throw new IllegalArgumentException("Particles can only be created from GPS or Beacon measurements.");		}    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -