// Sample from the proposal distribution. ParticleState ParticleFilterSIRBicycleGlobal::sampleProposal(ParticleState& particleInitial, double timeStep, Control& control, Observation& observation) { //std::random_device rd; //std::normal_distribution<double> normal(0,1); //std::ranlux64_base_01 randengine;//(rd()); //randengine.seed(rd()); //double a=normal(randengine); //std::cout << "normal test = " << a << std::endl; //HERE ParticleState newParticle; //std::cout << "before" << std::endl; std::normal_distribution<double> stdNormal(0., 1.); //std::uniform_real<double> unif(0., 1.); //std::cout << "uniform = " << unif(engine) << std::endl; //std::cout << "normal = " << stdNormal(engine) << std::endl; motion::State2D processNoise; processNoise.right = std::sqrt(noiseVarProcess.right)*stdNormal(engine); processNoise.up = std::sqrt(noiseVarProcess.up)*stdNormal(engine); processNoise.orient = std::sqrt(noiseVarProcess.orient)*stdNormal(engine); //std::cout << "noise = " << processNoise << std::endl; //std::cout << "after" << std::endl; newParticle.state = bicycleModel.predict(particleInitial.state, timeStep, control.speed, control.steeringAngle, processNoise); newParticle.weight = 1.; return newParticle; }
float RNG::normal(float mean, float sd) { return mean + sd * stdNormal(gen); }