mclWMinLineEdit = new QLineEdit();
mclWMaxLineEdit = new QLineEdit();
mclEvalSigmaLineEdit = new QLineEdit();
+ mclAEvalSigmaLineEdit = new QLineEdit();
mclMaxavdistLineEdit = new QLineEdit();
mclMaxnoisecycleLineEdit = new QLineEdit();
mclCountLineEdit = new QLineEdit();
layout->addWidget(MiscGui::createLabel("w_min"), 1, 2);
layout->addWidget(MiscGui::createLabel("w_max"), 2, 2);
layout->addWidget(MiscGui::createLabel("eval sigma"), 3, 2);
- layout->addWidget(MiscGui::createLabel("maxavdist"), 4, 2);
- layout->addWidget(MiscGui::createLabel("maxnoisecycle"), 5, 2);
+ layout->addWidget(MiscGui::createLabel("aeval sigma"), 4, 2);
+ layout->addWidget(MiscGui::createLabel("maxavdist"), 5, 2);
+ layout->addWidget(MiscGui::createLabel("maxnoisecycle"), 6, 2);
layout->addWidget(mclCountLineEdit, 0, 3);
layout->addWidget(mclWMinLineEdit, 1, 3);
layout->addWidget(mclWMaxLineEdit, 2, 3);
layout->addWidget(mclEvalSigmaLineEdit, 3, 3);
- layout->addWidget(mclMaxavdistLineEdit, 4, 3);
- layout->addWidget(mclMaxnoisecycleLineEdit, 5, 3);
+ layout->addWidget(mclAEvalSigmaLineEdit, 4, 3);
+ layout->addWidget(mclMaxavdistLineEdit, 5, 3);
+ layout->addWidget(mclMaxnoisecycleLineEdit, 6, 3);
mclWidthLineEdit->setText("3000");
mclHeightLineEdit->setText("2100");
mclWMinLineEdit->setText("0.25");
mclWMaxLineEdit->setText("2.0");
mclEvalSigmaLineEdit->setText("160");
+ mclAEvalSigmaLineEdit->setText("0.90");
mclMaxavdistLineEdit->setText("150");
mclMaxnoisecycleLineEdit->setText("10");
WDBG("ORTE received: laser");
-// /* FIXME: just to test, remove it */
-// orteData.orteLaserData.cnt = 5;
-// orteData.orteLaserData.period = 54619;
-// orteData.orteLaserData.measures0 = 1714;
-// orteData.orteLaserData.measures1 = 12312;
-// orteData.orteLaserData.measures2 = 34549;
-// orteData.orteLaserData.measures3 = 41231;
-// orteData.orteLaserData.measures4 = 49670;
-
cnt = orteData.orteLaserData.cnt;
times[0] = orteData.orteLaserData.period;
times[1] = orteData.orteLaserData.measures0;
times[9] = orteData.orteLaserData.measures8;
times[10] = orteData.orteLaserData.measures9;
+ /* avoid segfault when receiving some error */
+ if (cnt > (LAS_CNT-1)) {
+ WDBG(QString("Detected a bad number of received laser data: %1")
+ .arg(cnt));
+ }
+
measuredAngles[0] = (double)cnt;
for (int i=1; i<cnt+1; i++) {
measuredAngles[i] = (double)TIME2ANGLE(times[0],times[i]);
mcl.w_min = mclWMinLineEdit->text().toFloat();
mcl.w_max = mclWMaxLineEdit->text().toFloat();
mcl.eval_sigma = mclEvalSigmaLineEdit->text().toFloat();
+ mcl.aeval_sigma = mclAEvalSigmaLineEdit->text().toFloat();
mcl.maxavdist = mclMaxavdistLineEdit->text().toFloat();
/* bad cycles before reseting */
mcl.maxnoisecycle = mclMaxnoisecycleLineEdit->text().toInt();
void SimMcl::moveParts(double dx, double dy, double dangle)
{
mcl.cycle++;
-// WDBG(QString("mcl cycle = %1").arg(mcl.cycle));
- /* move particles */
- mcl.move(&mcl, dx, dy, dangle);
+ /*WDBG(QString("mcl cycle = %1").arg(mcl.cycle));*/
/* FIXME */
/* normally, the [x,y,angle] are values measured by sensors. In this
measuredPosition[1] = mcl.height/2 + qrand() % 20;
measuredPosition[2] = DEG2RAD(10);
+ /* MCL */
+ mcl.move(&mcl, dx, dy, dangle);
mcl.update(&mcl, mcl.data);
-
mcl.normalize(&mcl);
mcl.sort(&mcl);
mcl.resample(&mcl);