]> rtime.felk.cvut.cz Git - eurobot/public.git/commitdiff
robomon cleaned up and removed warnings
authorMichal Sojka <sojkam1@fel.cvut.cz>
Fri, 20 Mar 2009 15:44:35 +0000 (16:44 +0100)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Fri, 20 Mar 2009 15:44:35 +0000 (16:44 +0100)
13 files changed:
src/motion/trgen.h
src/robomon/MainWindow.cpp
src/robomon/MainWindow.h
src/robomon/RobomonAtlantis.cpp
src/robomon/RobomonTuning.cpp
src/robomon/Robot.cpp
src/robomon/SimLaser.cpp [deleted file]
src/robomon/SimLaser.h [deleted file]
src/robomon/SimMcl.cpp [deleted file]
src/robomon/SimMcl.h [deleted file]
src/robomon/SmallRobot.cpp
src/robomon/robomon.pro
src/robomon/robomon_orte.cpp

index bd84adb8ab47d791f4dae9d2bfea5887129eb7b8..dd729fb0822a7b8d2e6ffb6f94ec3de9e990a709 100644 (file)
@@ -309,7 +309,7 @@ namespace Segment {
                virtual double getLength() const {return 0;}
                virtual double getUnifiedLength() const {return fabs(turnBy);}
                virtual void getPointAt(double distance, Point *p);
-               virtual void shortenBy(double distance, Point *newEnd) {}
+               virtual void shortenBy(double, Point *) {}
                virtual TrajectorySegment* splitAt(double distance, Point *newEnd);
                virtual void getRefPos(double time, Pos &rp);
 #ifdef MATLAB_MEX_FILE
index 747bd1677645a6fbff7ade369df982e6b0560446..0ecfa85e05128decad73094b95406b3f26273dcd 100644 (file)
@@ -14,8 +14,6 @@
 #include "MainWindow.h"
 #include "RobomonTuning.h"
 #include "RobomonAtlantis.h"
-#include "SimMcl.h"
-#include "SimLaser.h"
 
 MainWindow::MainWindow()
 {
@@ -53,13 +51,6 @@ void MainWindow::addRobomonAtlantisTab()
        tabWidget->setCurrentWidget(robomonAtlantis);
 }
 
-void MainWindow::addLaserNavTab()
-{
-       SimLaser *simLaser = new SimLaser();
-       tabWidget->addTab(simLaser, tr("Laser Navigation"));
-       tabWidget->setCurrentWidget(simLaser);
-}
-
 void MainWindow::about()
 {
        QMessageBox::about(this, tr("About Robomon"),
@@ -108,13 +99,6 @@ void MainWindow::createActions()
        connect(robomonAtlantisAct, SIGNAL(triggered()), 
                        this, SLOT(addRobomonAtlantisTab()));
 
-       laserNavAct = new QAction(QIcon(":/images/sim_laser.png"), 
-                       tr("Simulation of the &Laser Navigation"), this);
-       laserNavAct->setShortcut(tr("Ctrl+L"));
-       laserNavAct->setStatusTip(tr("Simulation of the Laser Navigation"));
-       connect(laserNavAct, SIGNAL(triggered()), 
-                       this, SLOT(addLaserNavTab()));
-
        helpAct = new QAction(tr("&Help"), this);
        helpAct->setStatusTip(tr("Show the Qt library's About box"));
        connect(helpAct, SIGNAL(triggered()), this, SLOT(help()));
@@ -135,7 +119,6 @@ void MainWindow::createMenus()
        toolsMenu = menuBar()->addMenu(tr("&Tools"));
        toolsMenu->addAction(robomonTuningAct);
        toolsMenu->addAction(robomonAtlantisAct);
-       toolsMenu->addAction(laserNavAct);
        
        menuBar()->addSeparator();
        
@@ -151,7 +134,6 @@ void MainWindow::createToolBars()
        toolsToolBar = addToolBar(tr("Tools"));
        toolsToolBar->addAction(robomonTuningAct);
        toolsToolBar->addAction(robomonAtlantisAct);
-       toolsToolBar->addAction(laserNavAct);
 }
 
 void MainWindow::createStatusBar()
index 18d07bc1a5879dbbf6b33d1eccfa063537aeb0f1..1094bb83dd3de11a799ff56ad643663abb274ea5 100644 (file)
@@ -35,7 +35,6 @@ private slots:
        void about();
        void addRobomonTuningTab();
        void addRobomonAtlantisTab();
-       void addLaserNavTab();
        int closeCurrentTab();
 
 private:
index 4e521bd57ab94af851292c22fcf0e8501b781875..c8a9b6183d2266b9da17d3ac7e16ad6f44e0723f 100644 (file)
@@ -516,6 +516,7 @@ void RobomonAtlantis::stopMotors()
 
 void RobomonAtlantis::moveServos(int value)
 {
+       Q_UNUSED(value);
        /* FIXME: servos action comes here */
 }
 
@@ -535,7 +536,7 @@ void RobomonAtlantis::moveRightBrush(int state)
                actlib_servos_brush_right_close();
 }
 
-void RobomonAtlantis::setDrives(int state)
+void RobomonAtlantis::setDrives(int)
 {
        orte.drives.brush_left = leftBrushDial->value();
        orte.drives.brush_right = rightBrushDial->value();
@@ -571,6 +572,7 @@ void RobomonAtlantis::setlift_posDriveCB(int state) {
 
 void RobomonAtlantis::setDO(int state)
 {
+       Q_UNUSED(state);
        /* FIXME: digital output control comes here */
 }
 
@@ -917,7 +919,7 @@ void RobomonAtlantis::keyReleaseEvent(QKeyEvent *event)
        event->accept();
 }
 
-void RobomonAtlantis::closeEvent(QCloseEvent *event)
+void RobomonAtlantis::closeEvent(QCloseEvent *)
 {
        robottype_roboorte_destroy(&orte);
 }
index 7c99f039fda0c3fc1788bafb5a52b5f9f45ba658..adae50b83006893b59705a5b2b690a0b63c4c1c7 100644 (file)
@@ -262,7 +262,7 @@ void RobomonTuning::createActions()
                        this, SLOT(setCanMsg()));
 }
 
-void RobomonTuning::setServos(int value)
+void RobomonTuning::setServos(int)
 {
        
        orte.servos.brush_left = (u_int8_t)servoBrushLeft->value();
@@ -306,7 +306,7 @@ void RobomonTuning::setCanMsg()
        ORTEPublicationSend(orte.publication_can_msg);
 
 }
-void RobomonTuning::setMotors(int state)
+void RobomonTuning::setMotors(int)
 {
        orte.drives.brush_left = brushLeft->value();
        orte.drives.brush_right = brushRight->value();
@@ -368,8 +368,6 @@ bool RobomonTuning::event(QEvent *event)
 
 void RobomonTuning::keyPressEvent(QKeyEvent *event)
 {
-       double peak, gain;
-
        if (event->isAutoRepeat()) {
                switch (event->key()) {
                        case Qt::Key_Down:
@@ -423,7 +421,7 @@ void RobomonTuning::keyReleaseEvent(QKeyEvent *event)
        event->accept();
 }
 
-void RobomonTuning::closeEvent(QCloseEvent *event)
+void RobomonTuning::closeEvent(QCloseEvent *)
 {
        robottype_roboorte_destroy(&orte);
 }
@@ -436,7 +434,10 @@ void RobomonTuning::createOrte()
 
        orte.strength = 12;
 
-       robottype_roboorte_init(&orte);
+       if (robottype_roboorte_init(&orte) != 0) {
+               perror("robottype_roboorte_init");
+               exit(1);
+       }
 
        orte.pwr_alert.value = 0;
 
index 2487e8f8aa873090990495a2e94b0d5a2eb86c63..ae1a99c298bb626d62f7c206479810677c320b3b 100644 (file)
@@ -132,7 +132,7 @@ void Robot::paint(QPainter *painter,
 {  
        Q_UNUSED(option);
        Q_UNUSED(widget);
-//     Q_UNUSED(painter);
+       Q_UNUSED(painter);
        
 //     painter->setPen(QPen(QBrush(Qt::black), 1, Qt::SolidLine, 
 //                             Qt::FlatCap, Qt::BevelJoin));
diff --git a/src/robomon/SimLaser.cpp b/src/robomon/SimLaser.cpp
deleted file mode 100644 (file)
index 4d8d4fd..0000000
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * SimLaser.cpp                                07/10/31
- *
- * A simulation to test the laser localization using passive 
- * reflectors.
- *
- * Copyright: (c) 2007 CTU Dragons
- *            CTU FEE - Department of Control Engineering
- * Authors: Martin Zidek, Michal Sojka, Tran Duy Khanh
- * License: GNU GPL v.2
- */
-
-#include <QtGui>
-
-#include "PlaygroundScene.h"
-#include "MiscGui.h"
-#include "SimLaser.h"
-
-SimLaser::SimLaser(QWidget *parent)
-       : QWidget(parent)
-{
-       QFont font;
-       font.setPointSize(8);
-       setFont(font);
-
-       debugWindowEnabled = false;
-
-       createLeftLayout();
-       createRightLayout();
-
-       createActions();
-
-       QGridLayout *mainLayout = new QGridLayout;
-       mainLayout->addLayout(leftLayout, 0, 0);
-       mainLayout->addLayout(rightLayout, 0, 1);
-       setLayout(mainLayout);
-       WDBG("Youuuhouuuu!!");
-}
-
-void SimLaser::createLeftLayout()
-{
-       leftLayout = new QVBoxLayout();
-       QGridLayout *layout = new QGridLayout();
-       
-       createPlaygroundGroupBox();
-       createPositionGroupBox();
-       createMiscGroupBox();
-       createDebugGroupBox();
-       debugWindowEnabled = true;
-
-       layout->addWidget(positionGroupBox, 0, 0);
-       layout->addWidget(miscGroupBox, 0, 1);
-
-       leftLayout->addWidget(playgroundGroupBox);
-       leftLayout->addLayout(layout);
-       leftLayout->addWidget(debugGroupBox);
-}
-
-void SimLaser::createRightLayout()
-{
-       rightLayout = new QVBoxLayout();
-       QGridLayout *layout1 = new QGridLayout();
-       QGridLayout *layout2 = new QGridLayout();
-       
-       createHistogramGroupBox();
-       createCompassGroupBox();
-       createGoniometerGroupBox();
-
-       layout1->addWidget(histogramGroupBox);
-       layout2->addWidget(compassGroupBox, 0, 0);
-       layout2->addWidget(goniometerGroupBox, 0, 1);
-       rightLayout->addLayout(layout1);
-       rightLayout->addLayout(layout2);
-}
-
-void SimLaser::createActions()
-{
-       connect(testHistogramPushButton, SIGNAL(clicked()), this, SLOT(testHistogram()));
-       connect(clearHistogramPushButton, SIGNAL(clicked()), this, SLOT(clearHistogram()));
-}
-
-void SimLaser::createPlaygroundGroupBox()
-{
-       playgroundGroupBox = new QGroupBox(tr("Playground"));
-       QHBoxLayout *layout = new QHBoxLayout();
-
-       playgroundScene = 
-               new PlaygroundScene(PlaygroundScene::PLAYGROUND_EUROBOT2007);
-       playgroundSceneView = new QGraphicsView(playgroundScene);
-       playgroundSceneView->setMinimumWidth((int)(playgroundScene->width())+15);
-       playgroundSceneView->setMinimumHeight((int)(playgroundScene->height())+15);
-       layout->addWidget(playgroundSceneView);
-
-       playgroundGroupBox->setLayout(layout);
-}
-
-void SimLaser::createPositionGroupBox()
-{
-       positionGroupBox = new QGroupBox(tr("Position state"));
-       QGridLayout *layout = new QGridLayout();
-
-       actPosX = new QLineEdit();
-       actPosY = new QLineEdit();
-       actPosPhi = new QLineEdit();
-
-       estPosX = new QLineEdit();
-       estPosY = new QLineEdit();
-       estPosPhi = new QLineEdit();
-       
-       actPosX->setReadOnly(true);
-       actPosY->setReadOnly(true);
-       actPosPhi->setReadOnly(true);
-
-       estPosX->setReadOnly(true);
-       estPosY->setReadOnly(true);
-       estPosPhi->setReadOnly(true);
-
-       layout->addWidget(MiscGui::createLabel("X"), 1, 0);
-       layout->addWidget(MiscGui::createLabel("Y"), 2, 0);
-       layout->addWidget(MiscGui::createLabel("Phi"), 3, 0);
-
-       layout->addWidget(MiscGui::createLabel("Actual", Qt::AlignLeft), 0, 1);
-       layout->addWidget(actPosX, 1, 1);
-       layout->addWidget(actPosY, 2, 1);
-       layout->addWidget(actPosPhi, 3, 1);
-
-       layout->addWidget(MiscGui::createLabel("Estimated", Qt::AlignLeft), 0, 2);
-       layout->addWidget(estPosX, 1, 2);
-       layout->addWidget(estPosY, 2, 2);
-       layout->addWidget(estPosPhi, 3, 2);
-
-       positionGroupBox->setLayout(layout);
-}
-
-void SimLaser::createMiscGroupBox()
-{
-       miscGroupBox = new QGroupBox(tr("Miscellaneous"));
-       QGridLayout *layout = new QGridLayout();
-
-       layout->addWidget(new QLabel("Miscellaneous"), 0, 0);
-
-       miscGroupBox->setLayout(layout);
-}
-
-void SimLaser::createDebugGroupBox()
-{
-       debugGroupBox = new QGroupBox(tr("Debug window"));
-       QHBoxLayout *layout = new QHBoxLayout();
-
-       debugWindow = new QTextEdit();
-       debugWindow->setReadOnly(true);
-
-       layout->addWidget(debugWindow);
-       debugGroupBox->setLayout(layout);
-}
-
-void SimLaser::createHistogramGroupBox()
-{
-       histogramGroupBox = new QGroupBox(tr("Histogram of measured angles"));
-       QVBoxLayout *layout = new QVBoxLayout();
-       QHBoxLayout *hlayout = new QHBoxLayout();
-
-       testHistogramPushButton = new QPushButton("Test Histogram");
-       clearHistogramPushButton = new QPushButton("Clear");
-
-       hlayout->addWidget(testHistogramPushButton);
-       hlayout->addWidget(clearHistogramPushButton);
-
-       layout->addLayout(hlayout);
-       histogramGroupBox->setLayout(layout);
-}
-
-void SimLaser::createCompassGroupBox()
-{
-       compassGroupBox = new QGroupBox(tr("Compass"));
-       QHBoxLayout *layout = new QHBoxLayout();
-
-       compassGroupBox->setLayout(layout);
-}
-
-void SimLaser::createGoniometerGroupBox()
-{
-       goniometerGroupBox = new QGroupBox(tr("Goniometer"));
-       QHBoxLayout *layout = new QHBoxLayout();
-
-       goniometerGroupBox->setLayout(layout);
-}
-
-void SimLaser::testHistogram()
-{
-       WDBG("test histogram");
-}
-
-void SimLaser::updateHistogram()
-{
-       WDBG("update histogram");
-}
-
-void SimLaser::clearHistogram()
-{
-       WDBG("clear histogram");
-}
diff --git a/src/robomon/SimLaser.h b/src/robomon/SimLaser.h
deleted file mode 100644 (file)
index f25082a..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * SimLaser.h                          07/10/31
- *
- * A simulation to test the laser localization using passive
- * reflectors.
- *
- * Copyright: (c) 2007 CTU Dragons
- *            CTU FEE - Department of Control Engineering
- * Authors: Martin Zidek, Michal Sojka, Tran Duy Khanh
- * License: GNU GPL v.2
- */
-
-#ifndef SIM_LASER_H
-#define SIM_LASER_H
-
-#include <QDialog>
-#include "PlaygroundScene.h"
-
-class QVBoxLayout;
-class QGroupBox;
-class QGraphicsView;
-class QLineEdit;
-class QTextEdit;
-
-class SimLaser : public QWidget
-{
-       Q_OBJECT
-
-public:
-       SimLaser(QWidget *parent = 0);
-
-protected:
-
-private slots:
-       void testHistogram();
-       void clearHistogram();
-       void updateHistogram();
-
-private:
-       void createLeftLayout();
-       void createRightLayout();
-       void createActions();
-
-       void createPlaygroundGroupBox();
-       void createPositionGroupBox();
-       void createMiscGroupBox();
-       void createDebugGroupBox();
-       void createHistogramGroupBox();
-       void createCompassGroupBox();
-       void createGoniometerGroupBox();
-
-       QVBoxLayout *leftLayout;
-       QVBoxLayout *rightLayout;
-
-       QGroupBox *playgroundGroupBox;
-       QGroupBox *positionGroupBox;
-       QGroupBox *miscGroupBox;
-       QGroupBox *debugGroupBox;
-       QGroupBox *histogramGroupBox;
-       QGroupBox *compassGroupBox;
-       QGroupBox *goniometerGroupBox;
-
-       PlaygroundScene *playgroundScene;
-       QGraphicsView *playgroundSceneView;
-
-       /* position state */
-       QLineEdit *actPosX;
-       QLineEdit *actPosY;
-       QLineEdit *actPosPhi;
-
-       QLineEdit *estPosX;
-       QLineEdit *estPosY;
-       QLineEdit *estPosPhi;
-
-       /* debug window */
-       QTextEdit *debugWindow;
-       bool debugWindowEnabled;
-
-       /* tools */
-       QPushButton *testHistogramPushButton;
-       QPushButton *clearHistogramPushButton;
-};
-
-#endif /* SIM_LASER_H */
diff --git a/src/robomon/SimMcl.cpp b/src/robomon/SimMcl.cpp
deleted file mode 100644 (file)
index 4058129..0000000
+++ /dev/null
@@ -1,1104 +0,0 @@
-/*
- * SimMcl.cpp                          07/10/31
- *
- * A simulation for testing the Monte Carlo Localization algorithm.
- *
- * Copyright: (c) 2007 CTU Dragons
- *            CTU FEE - Department of Control Engineering
- * Authors: Martin Zidek, Michal Sojka, Tran Duy Khanh
- * License: GNU GPL v.2
- */
-
-#include <QtGui>
-#include <QKeyEvent>
-#include <QCloseEvent>
-#include <QEvent>
-#include <QGLWidget>
-
-#include <math.h>
-#include <robomath.h>
-#include <robodim.h>
-#include <mcl.h>
-#include <laser-nav.h>
-#include <roboorte.h>
-
-#include "PlaygroundScene.h"
-#include "MiscGui.h"
-#include "SimMcl.h"
-#include "GlWidget.h"
-#include "MclPainter.h"
-#include "AnglesHistogramPainter.h"
-
-SimMcl::SimMcl(QWidget *parent)
-       : QWidget(parent)
-{
-       QFont font;
-       font.setPointSize(8);
-       setFont(font);
-
-       debugWindowEnabled = false;
-       hasCurrentWidget = false;
-       glWidgetInitialized = false;
-       widgetInitialized = false;
-       mclPainterInitialized = false;
-       viewObjectsInitialized = false;
-       objectsCountChanged = false;
-       hasOpenGL = QGLFormat::hasOpenGL();
-
-       createLeftLayout();
-       createRightLayout();
-
-       createOrte();
-       createActions();
-       initPln();
-       initPlnData();
-       initMcl();
-       
-       QGridLayout *mainLayout = new QGridLayout;
-       mainLayout->addLayout(leftLayout, 0, 0);
-       mainLayout->addLayout(rightLayout, 0, 1);
-       setLayout(mainLayout);
-
-       setFocusPolicy(Qt::StrongFocus);
-       /*grabKeyboard();*/
-       WDBG("Youuuhouuuu!!");
-
-       /* some default selection */
-       openglCheckBox->setChecked(OPENGL_DEFAULT);
-//     paintObjectsRadioButton->setChecked(true);
-       paintElementsRadioButton->setChecked(true);
-       mclAnglesRadioButton->setChecked(true);
-       mclBlueBeaconsRadioButton->setChecked(true);
-//     mclPositionsRadioButton->setChecked(true);
-       aliasingCheckBox->setChecked(ALIASING_DEFAULT);
-
-       /* FIXME: initialization position of the measurement, used for testing */
-       measPos.x = PLAYGROUND_WIDTH_M / 2.0;
-       measPos.y = PLAYGROUND_HEIGHT_M / 2.0;
-       measPos.angle = 0;
-}
-
-/**********************************************************************
- * GUI
- **********************************************************************/
-void SimMcl::createLeftLayout()
-{
-       leftLayout = new QVBoxLayout();
-       
-       /* create a debug window and enable it */
-       createDebugGroupBox();
-       debugWindowEnabled = true;
-       createPlaygroundGroupBox();
-
-       leftLayout->addWidget(playgroundGroupBox);
-       leftLayout->addWidget(debugGroupBox);
-}
-
-void SimMcl::createRightLayout()
-{
-       rightLayout = new QVBoxLayout();
-       QVBoxLayout *layout = new QVBoxLayout();
-       QGridLayout *layout1 = new QGridLayout();
-
-       createPositionGroupBox();
-       createGraphicGroupBox();
-       createMclGroupBox();
-       createMiscGroupBox();
-
-       layout1->addWidget(positionGroupBox, 0, 0);
-       layout1->addWidget(graphicGroupBox, 0, 1);
-
-       layout->addLayout(layout1);
-       layout->addWidget(mclGroupBox);
-       layout->addWidget(miscGroupBox);
-
-       rightLayout->addLayout(layout);
-}
-
-void SimMcl::createPlaygroundGroupBox()
-{
-       playgroundGroupBox = new QGroupBox(tr("Playground"));
-       playgroundLayout = new QHBoxLayout();
-
-       playgroundScene = 
-               new PlaygroundScene(PlaygroundScene::PLAYGROUND_EUROBOT2007);
-       playgroundScene->setItemIndexMethod(QGraphicsScene::NoIndex);
-       playgroundSceneView = new QGraphicsView(playgroundScene);
-       playgroundSceneView->setMinimumWidth((int)(playgroundScene->width())+15);
-       playgroundSceneView->setMinimumHeight((int)(playgroundScene->height())+15);
-       playgroundSceneView->setRenderHint(QPainter::Antialiasing);
-               playgroundSceneView->setBackgroundBrush(QColor(230, 200, 167));
-
-       playgroundGroupBox->setLayout(playgroundLayout);
-}
-
-void SimMcl::createDebugGroupBox()
-{
-       debugGroupBox = new QGroupBox(tr("Debug window"));
-       QHBoxLayout *layout = new QHBoxLayout();
-
-       debugWindow = new QTextEdit();
-       debugWindow->setReadOnly(true);
-
-       layout->addWidget(debugWindow);
-       debugGroupBox->setLayout(layout);
-}
-
-void SimMcl::createPositionGroupBox()
-{
-       positionGroupBox = new QGroupBox(tr("Position state"));
-       QGridLayout *layout = new QGridLayout();
-
-       actPosX = new QLineEdit();
-       actPosY = new QLineEdit();
-       actPosPhi = new QLineEdit();
-
-       estPosX = new QLineEdit();
-       estPosY = new QLineEdit();
-       estPosPhi = new QLineEdit();
-       
-       actPosX->setReadOnly(true);
-       actPosY->setReadOnly(true);
-       actPosPhi->setReadOnly(true);
-
-       estPosX->setReadOnly(true);
-       estPosY->setReadOnly(true);
-       estPosPhi->setReadOnly(true);
-
-       layout->addWidget(MiscGui::createLabel("X"), 1, 0);
-       layout->addWidget(MiscGui::createLabel("Y"), 2, 0);
-       layout->addWidget(MiscGui::createLabel("Phi"), 3, 0);
-
-       layout->addWidget(MiscGui::createLabel("Actual", Qt::AlignLeft), 0, 1);
-       layout->addWidget(actPosX, 1, 1);
-       layout->addWidget(actPosY, 2, 1);
-       layout->addWidget(actPosPhi, 3, 1);
-
-       layout->addWidget(MiscGui::createLabel("Estimated", Qt::AlignLeft), 0, 2);
-       layout->addWidget(estPosX, 1, 2);
-       layout->addWidget(estPosY, 2, 2);
-       layout->addWidget(estPosPhi, 3, 2);
-
-       positionGroupBox->setLayout(layout);
-}
-
-void SimMcl::createGraphicGroupBox()
-{
-       graphicGroupBox = new QGroupBox(tr("Graphic settings"));
-       QVBoxLayout *layout = new QVBoxLayout();
-       
-       paintObjectsRadioButton = new QRadioButton(tr("&Object style"));
-       paintElementsRadioButton = new QRadioButton(tr("&Element style"));
-       openglCheckBox = new QCheckBox(tr("Open&GL"));
-       aliasingCheckBox = new QCheckBox(tr("A&liasing"));
-
-       paintElementsRadioButton->setShortcut(tr("e"));
-       paintObjectsRadioButton->setShortcut(tr("o"));
-       openglCheckBox->setShortcut(tr("g"));
-       aliasingCheckBox->setShortcut(tr("l"));
-
-       layout->addWidget(paintElementsRadioButton);
-       layout->addWidget(paintObjectsRadioButton);
-       layout->addWidget(openglCheckBox);
-       layout->addWidget(aliasingCheckBox);
-
-       graphicGroupBox->setLayout(layout);
-}
-
-void SimMcl::createMclGroupBox()
-{
-       mclGroupBox = new QGroupBox(tr("MCL"));
-       mclParametersGroupBox = new QGroupBox(tr("Parameters"));
-       mclStyleGroupBox = new QGroupBox(tr("Style"));
-       mclBeaconsGroupBox = new QGroupBox(tr("Beacons"));
-
-       QVBoxLayout *vlayout = new QVBoxLayout();
-       QHBoxLayout *hlayout = new QHBoxLayout();
-       QHBoxLayout *hlayout1 = new QHBoxLayout();
-       QGridLayout *layout = new QGridLayout();
-       QVBoxLayout *layout1 = new QVBoxLayout();
-       QVBoxLayout *layout2 = new QVBoxLayout();
-       QVBoxLayout *layout3 = new QVBoxLayout();
-
-       mclWidthLineEdit = new QLineEdit();
-       mclHeightLineEdit = new QLineEdit();
-       mclXOffLineEdit = new QLineEdit();
-       mclYOffLineEdit = new QLineEdit();
-       mclGenDnoiseLineEdit = new QLineEdit();
-       mclGenAnoiseLineEdit = new QLineEdit();
-       mclMovDnoiseLineEdit = new QLineEdit();
-       mclMovAnoiseLineEdit = new QLineEdit();
-       mclWMinLineEdit = new QLineEdit();
-       mclWMaxLineEdit = new QLineEdit();
-       mclEvalSigmaLineEdit = new QLineEdit();
-       mclAEvalSigmaLineEdit = new QLineEdit();
-       mclMaxavdistLineEdit = new QLineEdit();
-       mclMaxnoisecycleLineEdit = new QLineEdit();
-       mclCountLineEdit = new QLineEdit();
-       mclBeaconCount = new QLineEdit();
-
-       layout->addWidget(MiscGui::createLabel("width"), 0, 0);
-       layout->addWidget(MiscGui::createLabel("height"), 1, 0);
-       layout->addWidget(MiscGui::createLabel("x offset"), 2, 0);
-       layout->addWidget(MiscGui::createLabel("y offset"), 3, 0);
-       layout->addWidget(MiscGui::createLabel("gen_dnoise"), 4, 0);
-       layout->addWidget(MiscGui::createLabel("gen_anoise"), 5, 0);
-       layout->addWidget(MiscGui::createLabel("mov_dnoise"), 6, 0);
-       layout->addWidget(MiscGui::createLabel("mov_anoise"), 7, 0);
-
-       layout->addWidget(mclWidthLineEdit, 0, 1);
-       layout->addWidget(mclHeightLineEdit, 1, 1);
-       layout->addWidget(mclXOffLineEdit, 2, 1);
-       layout->addWidget(mclYOffLineEdit, 3, 1);
-       layout->addWidget(mclGenDnoiseLineEdit, 4, 1);
-       layout->addWidget(mclGenAnoiseLineEdit, 5, 1);
-       layout->addWidget(mclMovDnoiseLineEdit, 6, 1);
-       layout->addWidget(mclMovAnoiseLineEdit, 7, 1);
-
-       layout->addWidget(MiscGui::createLabel("count"), 0, 2);
-       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("aeval sigma"), 4, 2);
-       layout->addWidget(MiscGui::createLabel("maxavdist"), 5, 2);
-       layout->addWidget(MiscGui::createLabel("maxnoisecycle"), 6, 2);
-       layout->addWidget(MiscGui::createLabel("beacon_cnt"), 7, 2);
-
-       layout->addWidget(mclCountLineEdit, 0, 3);
-       layout->addWidget(mclWMinLineEdit, 1, 3);
-       layout->addWidget(mclWMaxLineEdit, 2, 3);
-       layout->addWidget(mclEvalSigmaLineEdit, 3, 3);
-       layout->addWidget(mclAEvalSigmaLineEdit, 4, 3);
-       layout->addWidget(mclMaxavdistLineEdit, 5, 3);
-       layout->addWidget(mclMaxnoisecycleLineEdit, 6, 3);
-       layout->addWidget(mclBeaconCount, 7, 3);
-
-       mclWidthLineEdit->setMinimumWidth(50);
-       mclCountLineEdit->setMinimumWidth(50);
-
-       mclWidthLineEdit->setText("3.000");
-       mclHeightLineEdit->setText("2.100");
-       mclXOffLineEdit->setText("0.000");
-       mclYOffLineEdit->setText("0.000");
-       mclGenDnoiseLineEdit->setText("0.99");
-       mclGenAnoiseLineEdit->setText("360");
-       mclMovDnoiseLineEdit->setText("0.002");
-       mclMovAnoiseLineEdit->setText("2");
-       mclBeaconCount->setText("4");
-
-       mclCountLineEdit->setText("1000");
-       mclWMinLineEdit->setText("0.25");
-       mclWMaxLineEdit->setText("2.0");
-       mclEvalSigmaLineEdit->setText("160");
-       mclAEvalSigmaLineEdit->setText("10");
-       mclMaxavdistLineEdit->setText("0.15");
-       mclMaxnoisecycleLineEdit->setText("10");
-
-       resetMclPushButton = new QPushButton(tr("&Reset MCL"));
-       resetMclPushButton->setShortcut(tr("r"));
-       resetHistogramsPushButton = new QPushButton(tr("Reset &histograms"));
-       resetHistogramsPushButton->setShortcut(tr("h"));
-       generateMeasurementPushButton = new QPushButton(tr("Generate &measurement"));
-       generateMeasurementPushButton->setShortcut(tr("m"));
-       mclPositionsRadioButton = new QRadioButton(tr("&Position"));
-       mclPositionsRadioButton->setShortcut(tr("p"));
-       mclAnglesRadioButton = new QRadioButton(tr("&Angle"));
-       mclAnglesRadioButton->setShortcut(tr("a"));
-       mclBlueBeaconsRadioButton = new QRadioButton(tr("&Blue"));
-       mclBlueBeaconsRadioButton->setShortcut(tr("b"));
-       mclRedBeaconsRadioButton = new QRadioButton(tr("Re&d"));
-       mclRedBeaconsRadioButton->setShortcut(tr("d"));
-       resetHistogramsPeriodicallyCheckBox = 
-               new QCheckBox(tr("Re&set histograms periodically"));
-       updateMclCheckBox = 
-               new QCheckBox(tr("Update MCL"));
-
-       resetHistogramsPeriodicallyCheckBox->setShortcut(tr("s"));
-       updateMclCheckBox->setShortcut(tr("u"));
-
-       layout1->addWidget(mclPositionsRadioButton);
-       layout1->addWidget(mclAnglesRadioButton);
-
-       layout3->addWidget(mclBlueBeaconsRadioButton);
-       layout3->addWidget(mclRedBeaconsRadioButton);
-
-       displayCountSlider = new QSlider(Qt::Horizontal);
-       displayCountSlider->setTracking(false);
-       displayCountSlider->setTickPosition(QSlider::TicksBelow);
-       displayCountSlider->setMinimum(0);
-       displayCountSlider->setMaximum(mclCountLineEdit->text().toInt());
-       displayCountSlider->setValue(mclCountLineEdit->text().toInt());
-       displayCount = displayCountSlider->value();
-
-       mclParametersGroupBox->setLayout(layout);
-       mclStyleGroupBox->setLayout(layout1);
-       mclBeaconsGroupBox->setLayout(layout3);
-
-       hlayout1->addWidget(mclStyleGroupBox);
-       hlayout1->addWidget(mclBeaconsGroupBox);
-
-       layout2->addLayout(hlayout1);
-       layout2->addWidget(resetMclPushButton);
-       layout2->addWidget(resetHistogramsPushButton);
-       layout2->addWidget(generateMeasurementPushButton);
-       layout2->addWidget(resetHistogramsPeriodicallyCheckBox);
-       layout2->addWidget(updateMclCheckBox);
-       layout2->addStretch(1);
-
-       hlayout->addWidget(mclParametersGroupBox);
-       hlayout->addLayout(layout2);
-
-       vlayout->addLayout(hlayout);
-       vlayout->addWidget(MiscGui::createLabel("Number of particles with "
-                               "highest weight to be displayed"));
-       vlayout->addWidget(displayCountSlider);
-
-       mclGroupBox->setLayout(vlayout);
-}
-
-void SimMcl::createMiscGroupBox()
-{
-       miscGroupBox = new QGroupBox(tr("Miscellaneous"));
-       QVBoxLayout *vlayout = new QVBoxLayout();
-
-       measuredAnglesHistogram = 
-               new AnglesHistogramPainter(measuredAnglesFreq, ANGLE_FREQ_COUNT);
-       estimatedAnglesHistogram = 
-               new AnglesHistogramPainter(estimatedAnglesFreq, ANGLE_FREQ_COUNT);
-       measuredAnglesWidget = new Widget(measuredAnglesHistogram, this);
-       estimatedAnglesWidget = new Widget(estimatedAnglesHistogram, this);
-
-       vlayout->addWidget(measuredAnglesWidget);
-       vlayout->addWidget(estimatedAnglesWidget);
-       vlayout->addStretch(1);
-
-       miscGroupBox->setLayout(vlayout);
-}
-
-void SimMcl::setWidgetCurrent(QWidget *widget)
-{
-       if (hasCurrentWidget) {
-               currentWidget->hide();
-               playgroundLayout->removeWidget(currentWidget);
-       }
-
-       currentWidget = widget;
-       playgroundLayout->addWidget(widget);
-       widget->show();
-       hasCurrentWidget = true;
-}
-
-/**********************************************************************
- * GUI actions
- **********************************************************************/
-void SimMcl::createActions()
-{
-       connect(openglCheckBox, SIGNAL(stateChanged(int)), 
-                       this, SLOT(enableOpenGl(int)));
-       connect(aliasingCheckBox, SIGNAL(stateChanged(int)), 
-                       this, SLOT(setAliasing(int)));
-       connect(paintElementsRadioButton, SIGNAL(toggled(bool)),
-                       this, SLOT(usePaintElements(bool)));
-       connect(paintObjectsRadioButton, SIGNAL(toggled(bool)),
-                       this, SLOT(usePaintObjects(bool)));
-       connect(resetMclPushButton, SIGNAL(clicked()), this, SLOT(resetMcl()));
-       connect(resetHistogramsPushButton, SIGNAL(clicked()), 
-                       this, SLOT(resetHistograms()));
-       connect(resetHistogramsPeriodicallyCheckBox, SIGNAL(stateChanged(int)), 
-                       this, SLOT(resetHistogramsPeriodically(int)));
-       connect(generateMeasurementPushButton, SIGNAL(clicked()), 
-                       this, SLOT(generateMeasurement()));
-       connect(this, SIGNAL(updateMclSignal()), this, SLOT(updateMclPainter()));
-       connect(mclCountLineEdit, SIGNAL(textChanged(QString)), 
-                       this, SLOT(mclCountChanged(QString)));
-       connect(displayCountSlider, SIGNAL(valueChanged(int)),
-                       this, SLOT(setDisplayCount(int)));
-       connect(mclPositionsRadioButton, SIGNAL(toggled(bool)),
-                       this, SLOT(usePositionOriented(bool)));
-       connect(mclAnglesRadioButton, SIGNAL(toggled(bool)),
-                       this, SLOT(useAngleOriented(bool)));
-       connect(mclBlueBeaconsRadioButton, SIGNAL(toggled(bool)),
-                       this, SLOT(useBlueBeacons(bool)));
-       connect(mclRedBeaconsRadioButton, SIGNAL(toggled(bool)),
-                       this, SLOT(useRedBeacons(bool)));
-}
-
-bool SimMcl::enableOpenGl(int state) 
-{
-       bool rv;
-
-       if (state == Qt::Unchecked) {
-               WDBG("OpenGL support disabled.");
-               rv = false;
-       }
-       
-       if (state == Qt::Checked) {
-               if (!hasOpenGL) {
-                       WDBG("This system does not support OpenGL objects. "
-                               "Drawing too many samples may take a while.");
-                       openglCheckBox->setCheckState(Qt::Unchecked);
-                       return false;
-               }
-               WDBG("This system supports OpenGL. OpenGL support enabled.");
-               rv = true;
-       }
-
-       if (paintElementsRadioButton->isChecked())
-               usePaintElements(true);
-
-       return rv;
-}
-
-void SimMcl::setAliasing(int state)
-{
-       if (state == Qt::Checked) {
-               if (widgetInitialized)
-                       widget->setAliasing(true);
-               measuredAnglesWidget->setAliasing(true);
-               estimatedAnglesWidget->setAliasing(true);
-               playgroundSceneView->setRenderHint(QPainter::Antialiasing);
-       } else {
-               if (widgetInitialized)
-                       widget->setAliasing(false);
-               measuredAnglesWidget->setAliasing(false);
-               estimatedAnglesWidget->setAliasing(false);
-               playgroundSceneView->setRenderHint(QPainter::Antialiasing, false);
-       }
-       updateMclPainter();
-}
-
-void SimMcl::initPaintElements()
-{
-       struct mcl_robot_pos estimated = { 1.0, 1.0, 0};
-       mclPainter = new MclPainter(mcl, &displayCount);
-       mclPainter->estimated = estimated;
-       mclPainter->setSize(610, 425);
-       mclPainterInitialized = true;
-       widgetInitialized = false;
-       glWidgetInitialized = false;
-}
-
-void SimMcl::usePaintElements(bool state)
-{
-       /* not checked */
-       if (!state) {
-               return;
-       }
-
-       /* initialize the painter */
-       if (!mclPainterInitialized)
-               initPaintElements();
-
-       /* initialize widgets if not initialized */
-       if (openglCheckBox->isChecked() && hasOpenGL &&
-               !glWidgetInitialized) {
-               glWidget = new GLWidget(mclPainter, this);
-               glWidgetInitialized = true;
-       } else if (!widgetInitialized) {
-               widget = new Widget(mclPainter, this);
-               widgetInitialized = true;
-       }
-
-       /* use OpenGL if required */
-       if (openglCheckBox->isChecked()) {
-               setWidgetCurrent(glWidget);
-       } else {
-               setWidgetCurrent(widget);
-       }
-
-       updateMclPainter();
-
-       WDBG("Particles are represented as graphic elements (faster).");
-}
-
-void SimMcl::initPaintObjects()
-{
-       struct mcl_laser *l = mcl_to_laser(mcl);
-       struct mcl_laser_state *parts = l->parts;
-
-       robots = new SmallRobot[mcl->count];
-
-       for (int i=0; i<mcl->count; i++) {
-               robots[i].setZValue(10);
-               robots[i].mclPart = (struct mcl_laser_state *)&parts[i];
-               robots[i].widgetSize = QSize((int)playgroundScene->width(), 
-                                       (int)playgroundScene->height());
-               robots[i].playgroundSize = 
-                       QSizeF(PLAYGROUND_WIDTH_M, PLAYGROUND_HEIGHT_M);
-               robots[i].init();
-               robots[i].setParent(this);
-               playgroundScene->addItem(&robots[i]);
-               robotsList.append(&robots[i]);
-       }
-       viewObjectsInitialized = true;
-}
-
-void SimMcl::usePaintObjects(bool state)
-{
-       /* not checked */
-       if (!state) {
-               return;
-       }
-
-       if (!viewObjectsInitialized)
-               initPaintObjects();
-
-       /* use OpenGL if required */
-       if (openglCheckBox->isChecked()) {
-               playgroundSceneView->setViewport(
-                       new QGLWidget(QGLFormat(QGL::SampleBuffers)));
-       } else {
-               playgroundSceneView->setViewport(0);
-       }
-
-       setWidgetCurrent(playgroundSceneView);
-
-       updateMclPainter();
-
-       WDBG("Particles are represented as objects. You can move over "
-               "particles to see more details. Drag and drop is enabled.");
-}
-
-void SimMcl::removePaintObjects()
-{
-       /* deallocate memory and remove object from the scene */
-       while(!robotsList.empty()) {
-               QGraphicsItem *item = robotsList.takeFirst();
-               playgroundScene->removeItem(item);
-       }
-}
-
-void SimMcl::resetMcl()
-{
-       /* if the object count changed, reinitialize the objects */
-       if (objectsCountChanged) {
-               removePaintObjects();
-               viewObjectsInitialized = false;
-               mclPainterInitialized = false;
-       }
-
-       /* mcl initialization */
-       initMcl();
-
-       /* number of displayed particles */
-       displayCountSlider->setMaximum(mclCountLineEdit->text().toInt());
-       if (mclCountLineEdit->text().toInt() < displayCountSlider->value() ||
-               objectsCountChanged)
-               displayCountSlider->setValue(mclCountLineEdit->text().toInt());
-       displayCount = displayCountSlider->value();
-
-       /* display depends on the selected style */
-       if (paintElementsRadioButton->isChecked())
-               usePaintElements(true);
-       else
-               usePaintObjects(true);
-
-       objectsCountChanged = false;
-
-       emit updateMclSignal();
-}
-
-void SimMcl::resetHistograms()
-{
-       resetHistogram(measuredAnglesFreq);
-       resetHistogram(estimatedAnglesFreq);
-       countMeasuredAnglesFrequency();
-       measuredAnglesWidget->animate();
-       countEstimatedAnglesFrequency();
-       estimatedAnglesWidget->animate();
-}
-
-void SimMcl::resetHistogramsPeriodically(int state)
-{
-}
-
-void SimMcl::updateMclPainter()
-{
-       updatePln();
-       if (paintElementsRadioButton->isChecked()) {
-               if (openglCheckBox->isChecked()) {
-                       glWidget->animate();
-               } else {
-                       widget->animate();
-               }
-       } else {
-               int count = mcl->count-displayCountSlider->value();
-               for (int i=0; i<mcl->count; i++) {
-                       if (i < count) {
-                               robots[i].hide();
-                       } else {
-                               robots[i].show();
-                               robots[i].updateRobot();
-                       }
-               }
-       }
-
-       /* count angles frequency and display histograms */
-       countEstimatedAnglesFrequency();
-       estimatedAnglesWidget->animate();
-
-       /* update estimated position fields */
-       struct mcl_robot_pos estimated = *(struct mcl_robot_pos *)(mcl->estimated);
-       mclPainter->estimated = estimated;
-
-       estPosX->setText(QString("%1").arg(estimated.x, 0, 'f', 3));
-       estPosY->setText(QString("%1").arg(estimated.y, 0, 'f', 3));
-       estPosPhi->setText(QString("%1 (%2 rad)")
-                       .arg(RAD2DEG(estimated.angle), 0, 'f', 0)
-                       .arg(estimated.angle, 0, 'f', 2));
-}
-
-void SimMcl::mclCountChanged(QString text)
-{
-       objectsCountChanged = true;
-}
-
-void SimMcl::setDisplayCount(int value)
-{
-       WDBG(QString("Number of particles to be displayed: %1").arg(value));
-       displayCount = displayCountSlider->value();
-       if (!objectsCountChanged)
-               emit updateMclSignal();
-}
-
-void SimMcl::robotMoved()
-{
-       updatePln();
-}
-
-void SimMcl::usePositionOriented(bool state)
-{
-       if (!state)
-               return;
-
-       /* FIXME */
-//     mcl.update = mcl_update;
-//     mcl.data = measuredPosition;
-}
-
-void SimMcl::useAngleOriented(bool state)
-{
-       if (!state)
-               return;
-
-       /* FIXME */
-//     mcl.update = mcl_update2;
-//     mcl.data = &measuredAngles;
-}
-
-void SimMcl::useBlueBeacons(bool state)
-{
-       if (!state)
-               return;
-
-       mcl_laser.beacon_color = BEACON_BLUE;
-}
-
-void SimMcl::useRedBeacons(bool state)
-{
-       if (!state)
-               return;
-
-       mcl_laser.beacon_color = BEACON_RED;
-}
-
-void SimMcl::generateMeasurement()
-{
-       mcl_thetas theta;
-       measPos.x = (double)((qrand()&0xffff)/65535.0*(double)mcl_laser.width);
-       measPos.y = (double)((qrand()&0xffff)/65535.0*(double)mcl_laser.height);
-       measPos.angle = DEG2RAD((double)((qrand()&0xffff)/65535.0*360));
-       /* convert generated position to angles between reflectors */
-       mcl_pos2ang(&measPos, theta, BEACON_CNT, mcl_laser.beacon_color);
-       measuredAngles.count = BEACON_CNT;
-       for (int i=0; i<BEACON_CNT; i++)
-               measuredAngles.val[i] = theta[i];
-
-       QString dbg = QString("(test) gen. meas.: x=%1 y=%2 head=%3 ")
-                       .arg(measPos.x, 0, 'f', 3)
-                       .arg(measPos.y, 0, 'f', 3)
-                       .arg(RAD2DEG(measPos.angle), 0, 'f', 2);
-
-       dbg.append(QString("  ["));
-       for (int i=0; i<BEACON_CNT-1; i++)
-               dbg.append(QString("%1  ")
-               .arg(RAD2DEG(theta[i]), 0, 'f', 2));
-       dbg.append(QString("%1")
-               .arg(RAD2DEG(theta[BEACON_CNT-1]), 0, 'f', 2));
-       dbg.append(QString("]"));
-
-       WDBG(dbg);
-
-       resetHistogram(measuredAnglesFreq);
-       countMeasuredAnglesFrequency();
-       measuredAnglesWidget->animate();
-}
-/**********************************************************************
- * EVENTS
- **********************************************************************/
-bool SimMcl::event(QEvent *event)
-{
-       switch (event->type()) {
-               case QEVENT(QEV_LASER):
-                       emit laserDataReceivedSignal();
-                       countMeasuredAnglesFrequency();
-                       measuredAnglesWidget->animate();
-                       break;
-               case QEVENT(QEV_MOTION_IRC):
-                       emit motionIrcReceivedSignal();
-                       break;
-               default:
-                       if (event->type() == QEvent::Close)
-                               closeEvent((QCloseEvent *)event);
-                       else if (event->type() == QEvent::KeyPress)
-                               keyPressEvent((QKeyEvent *)event);
-                       else if (event->type() == QEvent::KeyRelease)
-                               keyReleaseEvent((QKeyEvent *)event);
-                       else if (event->type() == QEvent::FocusIn)
-                               grabKeyboard();
-                       else if (event->type() == QEvent::FocusOut)
-                               releaseKeyboard();
-                       else {
-                               event->ignore();
-                               return false;
-                       }
-                       break;
-       }
-       event->accept();
-       return true;
-}
-
-void SimMcl::keyPressEvent(QKeyEvent *event)
-{
-       if (event->isAutoRepeat()) {
-               event->ignore();
-               return;
-       }
-
-       switch (event->key()) {
-               case Qt::Key_Up:
-                       moveParts(0.0, 0.002, 0.0);
-                       break;
-               case Qt::Key_Down:
-                       moveParts(0.0, -0.002, 0.0);
-                       break;
-               case Qt::Key_Left:
-                       moveParts(-0.002, 0.0, 0.0);
-                       break;
-               case Qt::Key_Right:
-                       moveParts(0.002, 0.0, 0.0);
-                       break;
-               /*case Qt::Key_L:
-                       emit laserDataReceivedSignal();
-                       countMeasuredAnglesFrequency();
-                       measuredAnglesWidget->animate();
-                       break;*/
-               default:
-                       event->ignore();
-                       break;
-       }
-       event->accept();
-}
-
-void SimMcl::keyReleaseEvent(QKeyEvent *event)
-{
-       if (event->isAutoRepeat()) {
-               event->ignore();
-               return;
-       }
-
-       switch (event->key()) {
-               case Qt::Key_Up:
-               case Qt::Key_Down:
-               case Qt::Key_Left:
-               case Qt::Key_Right:
-                       /*WDBG("arrow key released");*/
-                       break;
-               default:
-                       event->ignore();
-                       break;
-       }
-       event->accept();
-}
-
-void SimMcl::closeEvent(QCloseEvent *event)
-{
-       robottype_roboorte_destroy(&orte);
-}
-
-/**********************************************************************
- * ORTE
- **********************************************************************/
-void SimMcl::createOrte()
-{
-       int rv;
-
-       orte.strength = 12;
-
-       rv = robottype_roboorte_init(&orte);
-       if (!rv) {
-               printf("SimMcl: Unable to initialize ORTE\n");
-       }
-
-       robottype_subscriber_motion_irc_create(&orte, 
-                               rcv_motion_irc_cb, this);
-       robottype_subscriber_laser_data_create(&orte, 
-                               receiveLaserCallBack, this);
-
-       /* set actions to do when we receive data from orte */
-       connect(this, SIGNAL(laserDataReceivedSignal()), 
-                       this, SLOT(laserReceived()));
-       connect(this, SIGNAL(motionIrcReceivedSignal()), 
-                       this, SLOT(updateOdometry()));
-}
-
-void SimMcl::laserReceived()
-{
-       unsigned int times[LAS_CNT];
-       int cnt;
-
-       /*WDBG("ORTE received: laser");*/
-
-       measuredAngles.count = 1;
-       measuredAngles.val[0] = TIME2ANGLE(orte.laser_data.period, 
-                               orte.laser_data.measure);
-
-       /*QString dbg = QString("theta=%1")
-                       .arg(RAD2DEG(measuredAngles.val[0]), 0, 'f', 3);
-       WDBG(dbg);*/
-
-       countMeasuredAnglesFrequency();
-       measuredAnglesWidget->animate();
-
-       updateMcl();
-}
-
-void SimMcl::updateOdometry()
-{
-       static struct motion_irc_type curr_irc;
-       static struct motion_irc_type prev_irc;
-       static int firstRun = 1;
-       /* spocitat prevodovy pomer */
-       double n = (double)(28.0 / 1.0); 
-       /* vzdalenost na pulz - 4.442 je empiricka konstanta :) */
-       double c = (M_PI*2*ROBOT_WHEEL_RADIUS_M) / (n * 4*500.0);
-        
-       double aktk0 = 0;
-       double aktk1 = 0;
-       double deltaU = 0;
-       double deltAlfa = 0;
-
-//     WDBG("ORTE received: motion_irc");
-
-       curr_irc = orte.motion_irc;
-
-       if(firstRun) {
-               prev_irc = curr_irc;
-               firstRun = 0;
-       }
-       
-       aktk0 = ((prev_irc.left - curr_irc.left) >> 8) * c;
-       aktk1 = ((curr_irc.right - prev_irc.right) >> 8) * c;
-       prev_irc = curr_irc;
-
-       deltaU = (aktk0 + aktk1) / 2;
-       deltAlfa = (aktk1 - aktk0) / (2.0*ROBOT_ROTATION_RADIUS_M);
-
-       struct mcl_robot_odo odo = {deltaU, 0, deltAlfa};
-
-       mcl->predict(mcl, &odo);
-//     if (fabs(deltaU) > 0 || fabs(deltAlfa) > 0) {
-//             QString dbg = QString("du=%1 dphi=%3 ")
-//                             .arg(deltaU, 0, 'f', 3)
-//                             .arg(deltAlfa, 0, 'f', 2);
-//             WDBG(dbg);
-// 
-//     }
-}
-
-/**********************************************************************
- * PLN - Passive Laser Navigation
- **********************************************************************/
-void SimMcl::initPln()
-{
-       /* set reference points. Used to calculate angles, position.. */
-       pln_set_points();
-}
-
-void SimMcl::updatePln()
-{
-}
-
-void SimMcl::initPlnData()
-{
-       measuredAngles.count = 0;
-       for (int i=0; i<10; i++)
-               measuredAngles.val[i] = 0;
-
-       resetHistogram(measuredAnglesFreq);
-       resetHistogram(estimatedAnglesFreq);
-}
-
-void SimMcl::resetHistogram(struct angles_freq *data)
-{
-       for (int i=0; i<ANGLE_FREQ_COUNT; i++) {
-               data[i].angle = (int)i;
-               data[i].frequency = 0;
-       }
-}
-
-void SimMcl::countMeasuredAnglesFrequency()
-{
-       double a;
-
-       if (resetHistogramsPeriodicallyCheckBox->isChecked())
-               resetHistogram(measuredAnglesFreq);
-
-       for (int i=0; i<measuredAngles.count; i++) {
-               /* normalize angles */
-               a = fabs(fmod(RAD2DEG(measuredAngles.val[i]), 360));
-               
-               for (int i=0; i<ANGLE_FREQ_COUNT; i++) {
-                       if ((measuredAnglesFreq[i].angle) == (int)a)
-                               measuredAnglesFreq[i].frequency++;
-               }
-       }
-
-       angles_freq_sort(measuredAnglesFreq, ANGLE_FREQ_COUNT);
-}
-
-void SimMcl::countEstimatedAnglesFrequency()
-{
-       struct mcl_laser *l = mcl_to_laser(mcl);
-       struct mcl_laser_state *parts = l->parts;
-       double a;
-       mcl_thetas theta;
-       int _angles[ANGLE_FREQ_COUNT];
-
-       if (resetHistogramsPeriodicallyCheckBox->isChecked())
-               resetHistogram(estimatedAnglesFreq);
-
-       for (int i=0; i<ANGLE_FREQ_COUNT; i++)
-               _angles[i] = 0;
-
-       for (int i=0; i<displayCountSlider->value(); i++) {
-               mcl_pos2ang(&parts[i], theta, BEACON_CNT, mcl_laser.beacon_color);
-               for (int e=0; e<BEACON_CNT; e++) {
-                       /* normalize angles */
-                       a = fabs(fmod(RAD2DEG(theta[e]), 360));
-                       _angles[(int)a]++;
-               }
-       }
-
-       for (int i=0; i<ANGLE_FREQ_COUNT; i++) {
-               estimatedAnglesFreq[i].angle = (double)i;
-               estimatedAnglesFreq[i].frequency = _angles[i];
-       }
-
-       angles_freq_sort(estimatedAnglesFreq, ANGLE_FREQ_COUNT);
-}
-
-/**********************************************************************
- * MCL
- **********************************************************************/
-void SimMcl::initMcl()
-{
-       /* MCL laser */
-       mcl_laser.width = PLAYGROUND_WIDTH_M;
-       mcl_laser.height = PLAYGROUND_HEIGHT_M;
-       mcl_laser.pred_dnoise = mclMovDnoiseLineEdit->text().toFloat();
-       mcl_laser.pred_anoise = DEG2RAD(mclMovAnoiseLineEdit->text().toFloat());
-       mcl_laser.aeval_sigma = DEG2RAD(mclAEvalSigmaLineEdit->text().toFloat());
-
-       if (mclRedBeaconsRadioButton->isChecked()) {
-               mcl_laser.beacon_color = BEACON_RED;
-       } else {
-               mcl_laser.beacon_color = BEACON_BLUE;
-       }
-
-       mcl = mcl_laser_init(&mcl_laser, mclCountLineEdit->text().toInt());
-
-       /* amount of particles */
-//     if (objectsCountChanged || !viewObjectsInitialized 
-//             || !mclPainterInitialized) {
-//             mcl.parts = (struct mcl_particle *)
-//                     malloc(sizeof(struct mcl_particle)*mcl.count);
-//     }
-
-       /* style of particles evaluation */
-       if (mclPositionsRadioButton->isChecked()) {
-               /* position evaluation oriented update */
-//             mcl.data = measuredPosition;
-       } else {
-               /* angles evalution oriented update */
-//             mcl.data = &measuredAngles;
-       }
-}
-
-void SimMcl::moveParts(double dx, double dy, double dangle)
-{
-       int j=0;
-       mcl_thetas theta;
-       struct mcl_robot_odo odo = { dx, dy, dangle };
-
-       /*WDBG(QString("mcl cycle = %1").arg(mcl.cycle));*/
-
-       /* FIXME: not working yet */
-       /* FIXME */
-       /* normally, the [x,y,angle] are values measured by sensors. In this 
-        * example, the values are quantified as the movement without noises*/
-       for (j=0; j<5; j++) {
-               measPos.x += dx;
-               measPos.y += dy;
-               measPos.angle += dangle;
-
-               measuredPosition[0] = measPos.x;
-               measuredPosition[1] = measPos.y;
-               measuredPosition[2] = measPos.angle;
-
-               mcl_pos2ang(&measPos, theta, BEACON_CNT, mcl_laser.beacon_color);
-               measuredAngles.count = BEACON_CNT;
-               for (int i=0; i<BEACON_CNT; i++)
-                       measuredAngles.val[i] = theta[i];
-               QString dbg = QString("(test) gen. meas.: x=%1 y=%2 head=%3 ")
-                               .arg(measPos.x, 0, 'f', 3)
-                               .arg(measPos.y, 0, 'f', 3)
-                               .arg(RAD2DEG(measPos.angle), 0, 'f', 2);
-
-               dbg.append(QString("  ["));
-               for (int i=0; i<BEACON_CNT-1; i++)
-                       dbg.append(QString("%1  ")
-                       .arg(RAD2DEG(theta[i]), 0, 'f', 2));
-               dbg.append(QString("%1")
-                       .arg(RAD2DEG(theta[BEACON_CNT-1]), 0, 'f', 2));
-               dbg.append(QString("]"));
-
-               WDBG(dbg);
-               countMeasuredAnglesFrequency();
-               measuredAnglesWidget->animate();
-
-       /* MCL */
-               mcl->predict(mcl, &odo);
-
-       }
-
-       /* /FIXME */
-       mcl->update(mcl, &measuredAngles);
-       mcl->resample(mcl);
-
-       /* update MCL painting */
-       emit updateMclSignal();
-}
-
-void SimMcl::updateMcl()
-{
-       /* MCL */
-       if (updateMclCheckBox->isChecked()) {
-//             mcl->predict(mcl, 0.00, 0.00, 0.00);
-               mcl->update(mcl, &measuredAngles);
-               mcl->resample(mcl);
-       }
-
-       /* update MCL painting */
-       emit updateMclSignal();
-}
diff --git a/src/robomon/SimMcl.h b/src/robomon/SimMcl.h
deleted file mode 100644 (file)
index 5504f55..0000000
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * SimMcl.h                            07/10/31
- *
- * A simulation for testing the Monte Carlo Localization algorithm.
- *
- * Copyright: (c) 2007 CTU Dragons
- *            CTU FEE - Department of Control Engineering
- * Authors: Martin Zidek, Michal Sojka, Tran Duy Khanh
- * License: GNU GPL v.2
- */
-
-#ifndef SIM_MCL_H
-#define SIM_MCL_H
-
-#include <QDialog>
-#include <mcl_laser.h>
-#include <robomath.h>
-
-#include "PlaygroundScene.h"
-#include "Widget.h"
-#include "GlWidget.h"
-#include "SmallRobot.h"
-#include "MclPainter.h"
-#include "AnglesHistogramPainter.h"
-#include "robomon_orte.h"
-#include <roboorte.h>
-#include <roboorte_robottype.h>
-
-#define OPENGL_DEFAULT         false
-#define ALIASING_DEFAULT       true
-
-class QHBoxLayout;
-class QVBoxLayout;
-class QGroupBox;
-class QGraphicsView;
-class QLineEdit;
-class QTextEdit;
-class QRadioButton;
-class QCheckBox;
-class QSlider;
-
-class SimMcl : public QWidget
-{
-       Q_OBJECT
-
-public:
-       SimMcl(QWidget *parent = 0);
-
-protected:
-       bool event(QEvent *event);
-       void keyPressEvent(QKeyEvent *event);
-       void keyReleaseEvent(QKeyEvent *event);
-       void closeEvent(QCloseEvent *event);
-
-signals:
-       void laserDataReceivedSignal();
-       void updateMclSignal();
-       void motionIrcReceivedSignal();
-
-private slots:
-       /************************************************************
-        * GUI actions 
-        ************************************************************/
-       bool enableOpenGl(int state);
-       void setAliasing(int state);
-       void usePaintElements(bool state);
-       void usePaintObjects(bool state);
-       void resetMcl();
-       void resetHistograms();
-       void resetHistogramsPeriodically(int state);
-       void generateMeasurement();
-       void updateMclPainter();
-       void mclCountChanged(QString text);
-       void setDisplayCount(int value);
-       void robotMoved();
-       void usePositionOriented(bool state);
-       void useAngleOriented(bool state);
-       void useBlueBeacons(bool state);
-       void useRedBeacons(bool state);
-       /************************************************************
-        * ORTE 
-        ************************************************************/
-       void laserReceived();
-       void updateOdometry();
-
-private:
-       /************************************************************
-        * GUI
-        ************************************************************/
-       void createLeftLayout();
-       void createRightLayout();
-
-       void createPlaygroundGroupBox();
-       void createPositionGroupBox();
-       void createMclGroupBox();
-       void createMiscGroupBox();
-       void createDebugGroupBox();
-       void createGraphicGroupBox();
-
-       void createActions();
-       void setWidgetCurrent(QWidget *widget);
-
-       void initPaintElements();
-       void initPaintObjects();
-       void removePaintObjects();
-
-       QVBoxLayout *leftLayout;
-       QVBoxLayout *rightLayout;
-
-       QGroupBox *playgroundGroupBox;
-       QGroupBox *positionGroupBox;
-       QGroupBox *mclGroupBox;
-       QGroupBox *mclParametersGroupBox;
-       QGroupBox *mclStyleGroupBox;
-       QGroupBox *mclBeaconsGroupBox;
-       QGroupBox *miscGroupBox;
-       QGroupBox *debugGroupBox;
-       QGroupBox *graphicGroupBox;
-
-       QWidget *currentWidget;
-       bool hasCurrentWidget;
-       Widget *widget;
-       GLWidget *glWidget;
-       Widget *measuredAnglesWidget;
-       Widget *estimatedAnglesWidget;
-       bool glWidgetInitialized;
-       bool widgetInitialized;
-       bool mclPainterInitialized;
-       PlaygroundScene *playgroundScene;
-       QGraphicsView *playgroundSceneView;
-       QHBoxLayout *playgroundLayout;
-       bool viewObjectsInitialized;
-       bool objectsCountChanged;
-
-       /* position state */
-       QLineEdit *actPosX;
-       QLineEdit *actPosY;
-       QLineEdit *actPosPhi;
-
-       QLineEdit *estPosX;
-       QLineEdit *estPosY;
-       QLineEdit *estPosPhi;
-
-       /* mcl gui */
-       QLineEdit *mclWidthLineEdit;
-       QLineEdit *mclHeightLineEdit;
-       QLineEdit *mclXOffLineEdit;
-       QLineEdit *mclYOffLineEdit;
-       QLineEdit *mclGenDnoiseLineEdit;
-       QLineEdit *mclGenAnoiseLineEdit;
-       QLineEdit *mclMovDnoiseLineEdit;
-       QLineEdit *mclMovAnoiseLineEdit;
-       QLineEdit *mclWMinLineEdit;
-       QLineEdit *mclWMaxLineEdit;
-       QLineEdit *mclEvalSigmaLineEdit;
-       QLineEdit *mclAEvalSigmaLineEdit;
-       QLineEdit *mclMaxavdistLineEdit;
-       QLineEdit *mclMaxnoisecycleLineEdit;
-       QLineEdit *mclCountLineEdit;
-       QLineEdit *mclBeaconCount;
-       QPushButton *resetMclPushButton;
-       QPushButton *resetHistogramsPushButton;
-       QPushButton *generateMeasurementPushButton;
-       QRadioButton *mclPositionsRadioButton;
-       QRadioButton *mclAnglesRadioButton;
-       QRadioButton *mclBlueBeaconsRadioButton;
-       QRadioButton *mclRedBeaconsRadioButton;
-       QCheckBox *resetHistogramsPeriodicallyCheckBox;
-       QCheckBox *updateMclCheckBox;
-       QSlider *displayCountSlider;
-       int displayCount;
-
-       /* debug window */
-       QTextEdit *debugWindow;
-       bool debugWindowEnabled;
-
-       /* graphic choices */
-       QRadioButton *paintObjectsRadioButton;
-       QRadioButton *paintElementsRadioButton;
-       QCheckBox *openglCheckBox;
-       QCheckBox *aliasingCheckBox;
-       bool hasOpenGL;
-
-       /* robot */
-       QList<QGraphicsItem *> robotsList;
-       MclPainter *mclPainter;
-       SmallRobot *robots;
-
-       /************************************************************
-        * ORTE 
-        ************************************************************/
-       void createOrte();
-
-       struct robottype_orte_data orte;
-
-       /************************************************************
-        * PLN - Passive Laser Navigation
-        ************************************************************/
-       void initPln();
-       void updatePln();
-       void initPlnData();
-       void resetHistogram(struct angles_freq *data);
-       void countMeasuredAnglesFrequency();
-       void countEstimatedAnglesFrequency();
-       AnglesHistogramPainter *measuredAnglesHistogram;
-       AnglesHistogramPainter *estimatedAnglesHistogram;
-
-       #define ANGLE_FREQ_COUNT 360
-       #define LAS_CNT 12
-       struct mcl_laser_measurement measuredAngles;
-       struct angles_freq measuredAnglesFreq[ANGLE_FREQ_COUNT];
-       struct angles_freq estimatedAnglesFreq[ANGLE_FREQ_COUNT];
-
-       /************************************************************
-        * MCL 
-        ************************************************************/
-       void initMcl();
-       void moveParts(double dx, double dy, double dangle);
-       void updateMcl();
-
-       bool mclInitialized;
-       struct mcl_model *mcl;
-       struct mcl_laser mcl_laser;
-       struct mcl_laser_state measPos;
-       struct mcl_laser_state *est_pos;
-       double measuredPosition[3];
-};
-
-#endif /* SIM_MCL_H */
index 20fea58ac8ea48e15ee1479196ae4a47663841a1..71cc8bd4fa0b1fc526bfb5363cdfcf68c331fcca 100644 (file)
@@ -70,7 +70,6 @@ void SmallRobot::move()
 
 void SmallRobot::updateRobot()
 {
-       mcl_thetas theta;
        resetTransform();
        rotate(RAD2DEG(-mclPart->angle));
        setPos((qreal)(mclPart->x / playgroundSize.width() * widgetSize.width()), 
index 397b02f31d780776f0f0a05bcaa3b1dfba1482f3..461e997d811ac3a42c2891ec51e1597d24bd6a9e 100644 (file)
@@ -3,7 +3,6 @@ SOURCES += main.cpp \
            MainWindow.cpp \
            RobomonAtlantis.cpp \
            RobomonTuning.cpp \
-           SimLaser.cpp \
            PlaygroundScene.cpp \
            Robot.cpp \
            SmallRobot.cpp \
@@ -29,7 +28,6 @@ RESOURCES = robomon.qrc
 HEADERS += MainWindow.h \
            RobomonAtlantis.h \
            RobomonTuning.h \
-           SimLaser.h \
            PlaygroundScene.h \
            Robot.h \
            SmallRobot.h \
index e8e26a4629de9355952144209187394c67c247e6..a66fb3b38ceeac03f58d7071358c7191b852c61c 100644 (file)
@@ -34,6 +34,8 @@
 void sendMotorCallBack(const ORTESendInfo *info,
                        void *vinstance, void *arg)
 {
+       Q_UNUSED(vinstance);
+       Q_UNUSED(arg);
        switch (info->status) {
                case NEED_DATA:         
                        break;
@@ -46,10 +48,15 @@ void sendMotorCallBack(const ORTESendInfo *info,
 void dummy_publisher_callback(const ORTESendInfo *info,
                        void *vinstance, void *arg)
 {
+       Q_UNUSED(info);
+       Q_UNUSED(vinstance);
+       Q_UNUSED(arg);
 }
 void sendServoCallBack(const ORTESendInfo *info,
                        void *vinstance, void *arg)
 {
+       Q_UNUSED(vinstance);
+       Q_UNUSED(arg);
        switch (info->status) {
                case NEED_DATA:         
                        break;
@@ -62,6 +69,8 @@ void sendServoCallBack(const ORTESendInfo *info,
 void sendSharpLongsCallBack(const ORTESendInfo *info, 
                        void *vinstance, void *arg) 
 {
+       Q_UNUSED(vinstance);
+       Q_UNUSED(arg);
        switch (info->status) {
                case NEED_DATA:         
                        break;
@@ -74,6 +83,8 @@ void sendSharpLongsCallBack(const ORTESendInfo *info,
 void sendSharpShortsCallBack(const ORTESendInfo *info, 
                        void *vinstance, void *arg)
 {
+       Q_UNUSED(vinstance);
+       Q_UNUSED(arg);
        switch (info->status) {
                case NEED_DATA:         
                        break;
@@ -85,6 +96,8 @@ void sendSharpShortsCallBack(const ORTESendInfo *info,
 void sendPowerControlCallBack(const ORTESendInfo *info,
                        void *vinstance, void *arg)
 {
+       Q_UNUSED(vinstance);
+       Q_UNUSED(arg);
        switch (info->status) {
                case NEED_DATA:         
                        break;
@@ -100,6 +113,7 @@ void sendPowerControlCallBack(const ORTESendInfo *info,
 void receiveMotionStatusCallBack(const ORTERecvInfo *info,
                        void *vinstance, void *arg)
 {
+       Q_UNUSED(vinstance);
        switch (info->status) {
                case NEW_DATA:
                        POST_QEVENT(arg, QEV_MOTION_STATUS);
@@ -114,6 +128,7 @@ void receiveMotionStatusCallBack(const ORTERecvInfo *info,
 void receiveActualPositionCallBack(const ORTERecvInfo *info,
                        void *vinstance, void *arg)
 {
+       Q_UNUSED(vinstance);
        switch (info->status) {
                case NEW_DATA:
                        POST_QEVENT(arg, QEV_ACTUAL_POSITION);
@@ -128,6 +143,7 @@ void receiveActualPositionCallBack(const ORTERecvInfo *info,
 void receiveEstimatedPositionCallBack(const ORTERecvInfo *info,
                        void *vinstance, void *arg)
 {
+       Q_UNUSED(vinstance);
        switch (info->status) {
                case NEW_DATA:
                        POST_QEVENT(arg, QEV_ESTIMATED_POSITION);
@@ -142,6 +158,7 @@ void receiveEstimatedPositionCallBack(const ORTERecvInfo *info,
 void receiveSharpLongsCallBack(const ORTERecvInfo *info,
                        void *vinstance, void *arg)
 {
+       Q_UNUSED(vinstance);
        switch (info->status) {
                case NEW_DATA:
                        POST_QEVENT(arg, QEV_SHARP_LONGS);
@@ -155,6 +172,7 @@ void receiveSharpLongsCallBack(const ORTERecvInfo *info,
 void receiveSharpShortsCallBack(const ORTERecvInfo *info,
                        void *vinstance, void *arg)
 {
+       Q_UNUSED(vinstance);
        switch (info->status) {
                case NEW_DATA:
                        POST_QEVENT(arg, QEV_SHARP_SHORTS);
@@ -168,6 +186,7 @@ void receiveSharpShortsCallBack(const ORTERecvInfo *info,
 void receiveSharpsCallBack(const ORTERecvInfo *info,
                        void *vinstance, void *arg)
 {
+       Q_UNUSED(vinstance);
        switch (info->status) {
                case NEW_DATA:
                        POST_QEVENT(arg, QEV_SHARPS);
@@ -181,6 +200,7 @@ void receiveSharpsCallBack(const ORTERecvInfo *info,
 void receiveIRCallBack(const ORTERecvInfo *info,
                        void *vinstance, void *arg)
 {
+       Q_UNUSED(vinstance);
        switch (info->status) {
                case NEW_DATA:
                        POST_QEVENT(arg, QEV_IR);
@@ -195,6 +215,7 @@ void receiveIRCallBack(const ORTERecvInfo *info,
 void receiveDICallBack(const ORTERecvInfo *info,
                        void *vinstance, void *arg)
 {
+       Q_UNUSED(vinstance);
        switch (info->status) {
                case NEW_DATA:
                        POST_QEVENT(arg, QEV_DI);
@@ -209,6 +230,7 @@ void receiveDICallBack(const ORTERecvInfo *info,
 void receiveLaserCallBack(const ORTERecvInfo *info,
                        void *vinstance, void *arg)
 {
+       Q_UNUSED(vinstance);
        switch (info->status) {
                case NEW_DATA:
                        POST_QEVENT(arg, QEV_LASER);
@@ -242,6 +264,7 @@ void receiveAccelerometerCallBack(const ORTERecvInfo *info,
 void receiveAccumulatorCallBack(const ORTERecvInfo *info, 
                        void *vinstance, void *arg)
 {
+       Q_UNUSED(vinstance);
        switch (info->status) {
                case NEW_DATA:
                        POST_QEVENT(arg, QEV_ACCUMULATOR);
@@ -256,6 +279,7 @@ void receiveAccumulatorCallBack(const ORTERecvInfo *info,
 void receivePowerVoltageCallBack(const ORTERecvInfo *info, 
                        void *vinstance, void *arg)
 {
+       Q_UNUSED(vinstance);
        switch (info->status) {
                case NEW_DATA:
                        //printf("voltage: %2.2f\n",);
@@ -270,6 +294,7 @@ void receivePowerVoltageCallBack(const ORTERecvInfo *info,
 void rcv_motion_irc_cb(const ORTERecvInfo *info, void *vinstance,
                        void *arg)
 {
+       Q_UNUSED(vinstance);
        switch (info->status) {
                case NEW_DATA:
                        POST_QEVENT(arg, QEV_MOTION_IRC);