NumRootInports 0
NumRootOutports 0
ParameterArgumentNames ""
- ComputedModelVersion "1.329"
+ ComputedModelVersion "1.332"
NumModelReferences 0
NumTestPointedSignals 0
}
ModifiedByFormat "%<Auto>"
LastModifiedBy "wsh"
ModifiedDateFormat "%<Auto>"
- LastModifiedDate "Wed Apr 30 07:42:20 2008"
- ModelVersionFormat "1.%<AutoIncrement:329>"
+ LastModifiedDate "Wed Apr 30 08:14:46 2008"
+ ModelVersionFormat "1.%<AutoIncrement:332>"
ConfigurationManager "None"
SimulationMode "normal"
LinearizationMsg "none"
MaskIconOpaque on
MaskIconRotate "none"
MaskIconUnits "autoscale"
- MaskValueString "3000|0.01|5/180*pi|10/180*pi"
+ MaskValueString "3000|0.01|5/180*pi|5/180*pi"
MaskTabNameString ",,,"
Port {
PortNumber 1
System {
Name "Robot kinematics"
Location [4, 55, 1176, 412]
- Open off
+ Open on
ModelBrowserVisibility off
ModelBrowserWidth 200
ScreenColor "white"
/* evaluate the weights of each particle */
for (i=0; i<mcl->count; i++) {
- if (parts[i].x < 0 || parts[i].x > l->width ||
- parts[i].y < 0 || parts[i].y > l->height) {
+ struct mcl_laser_state *part = &parts[i];
+ if (part->x < 0 || part->x > l->width ||
+ part->y < 0 || part->y > l->height) {
/* We cannot be out of playground */
mcl->weight[i] = 0;
continue;
}
- mcl_pos2ang(&parts[i], theta, BEACON_CNT, l->beacon_color);
+ mcl_pos2ang(part, theta, BEACON_CNT, l->beacon_color);
for (im=0; im<angles->count; im++) {
p=0;
for (it=0; it < BEACON_CNT; it++) {
if (diff > M_PI) diff = 2*M_PI-diff;
p += gaussian(diff, l->aeval_sigma);
}
- parts[i].w[parts[i].beacon] = p;
- mcl->weight[i] = 1;
- for (it=0; it < BEACON_CNT; it++) {
- mcl->weight[i] *= parts[i].w[it];
- }
-
+ part->w[part->beacon] = p;
- parts[i].beacon++;
- parts[i].beacon %= BEACON_CNT;
+ part->beacon++;
+ part->beacon %= BEACON_CNT;
}
+ mcl->weight[i] = 1;
+ for (it=0; it < BEACON_CNT; it++) {
+ mcl->weight[i] *= part->w[it];
+ }
+
if (mcl->weight[i] > wmax) {
wmax = mcl->weight[i];
- best = &parts[i];
+ best = part;
}
}
*(struct mcl_laser_state*)mcl->estimated = *best;