0001 function priorpartiklar = motion(target, tidssteg);
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 global N;
0014 global R_BRUS;
0015 global localAreaofInterest;
0016 global roads_struct;
0017
0018
0019 partiklar = target.particles;
0020
0021
0022 max_speed = target.max_speed;
0023 localAreaofInterest = 3;
0024 R_BRUS = [0.5 0.5 0.1 pi/20];
0025 N = length(partiklar(:,1));
0026 priorpartiklar = [];
0027 alive_priorpartiklar = [];
0028
0029
0030
0031
0032
0033
0034
0035 noOfDeadParticles = 0;
0036 for t = 1:tidssteg
0037 for p = 1:N
0038 [new_particle] = propagateParticle(round(partiklar(p,:)));
0039 if ~isempty(new_particle)
0040 priorpartiklar = [priorpartiklar; new_particle];
0041 else
0042 noOfDeadParticles = noOfDeadParticles + 1;
0043 end;
0044 end;
0045
0046
0047 priorpartiklar = [priorpartiklar; reIncarnation(noOfDeadParticles,priorpartiklar)];
0048 priorpartiklar = priorpartiklar + randn(N, 4).*(ones(N, 1)*R_BRUS);
0049
0050 priorpartiklar(:,3) = max_speed.*rand(N, 1);
0051 noOfDeadParticles = 0;
0052 for p = 1:N
0053 if inMatrix(roads_struct.costMap, round(priorpartiklar(p,1)),round(priorpartiklar(p,2)))
0054 alive_priorpartiklar = [alive_priorpartiklar; priorpartiklar(p,:)];
0055 else
0056 noOfDeadParticles = noOfDeadParticles + 1;
0057 end;
0058 end;
0059 alive_priorpartiklar = [alive_priorpartiklar; reIncarnation(noOfDeadParticles, alive_priorpartiklar)];
0060 partiklar = alive_priorpartiklar;
0061 noOfDeadParticles = 0;
0062 priorpartiklar = [];
0063 alive_priorpartiklar = [];
0064 end;
0065 priorpartiklar = partiklar;