From: Kate Alhola Date: Thu, 6 Jan 2011 10:20:02 +0000 (+0200) Subject: Acceleration sensor control and basic vision framework X-Git-Url: https://vcs.maemo.org/git/?a=commitdiff_plain;ds=sidebyside;h=34003bf968627b6ddf7cc279eb5a26423340cc1c;p=mardrone Acceleration sensor control and basic vision framework --- diff --git a/mardrone/ConfigDialog.qml b/mardrone/ConfigDialog.qml index a4fed33..31690fc 100644 --- a/mardrone/ConfigDialog.qml +++ b/mardrone/ConfigDialog.qml @@ -21,7 +21,7 @@ Page { anchors.left:parent.left;anchors.right:parent.right anchors.leftMargin:50;anchors.rightMargin:50 - spacing: 30 + spacing: 40 Text { width:400 text: "Drone IP" @@ -45,7 +45,17 @@ Page { // onEnabledChanged:{drone.confFullScreen=enabled;} onCheckedChanged:{drone.confFullScreen=checked;} } - + Text { + text: "Acceleration Sensor for controll" + } + Switch { + id: useAccelSw + // enabled:drone.confUseAccel + checked:drone.confUseAccel + anchors.right:parent.right +// onEnabledChanged:{drone.confUseAccel=enabled;} + onCheckedChanged:{drone.confUseAccel=checked;} + } Text { text: "Show debug" } @@ -83,7 +93,7 @@ Page { } Text { - text: "Forward gain" + text: "Forward/backward gain" } Slider { @@ -95,6 +105,7 @@ Page { value:drone.confForwardGain onValueChanged:{drone.confForwardGain=value;} } + /* Text { text: "Backward gain" } @@ -122,9 +133,9 @@ Page { value:drone.confLeftGain onValueChanged:{drone.confLeftGain=value;} } - +*/ Text { - text: "Right gain" + text: "Right/Left gain" } Slider { @@ -136,7 +147,19 @@ Page { value:drone.confRightGain onValueChanged:{drone.confRightGain=value;} } + Text { + text: "accel ctrl treshold" + } + Slider { + id: ctrlTreshold + anchors.right:parent.right + // maximumValue:25.0 + // stepSize:0.01 + // steps:1 + value:drone.confCtrlTrsh + onValueChanged:{drone.confCtrlTrsh=value;} + } } } } diff --git a/mardrone/JoyStick.qml b/mardrone/JoyStick.qml index 858c214..ad4e7b1 100644 --- a/mardrone/JoyStick.qml +++ b/mardrone/JoyStick.qml @@ -4,6 +4,7 @@ Item { id:joystick property int xv:(knob.x-(width-knob.width)/2)*(200/(width-knob.width)) property int yv:(knob.y-(height-knob.height)/2)*(200/(height-knob.height)) + property bool pressed:mouse_area.pressed width: 200 height: 200 @@ -29,7 +30,9 @@ Item { drag.maximumX:parent.width-knob.width drag.maximumY:parent.height-knob.height drag.target:knob; - onReleased:{knob.x=parent.width/2-knob.width/2;knob.y=parent.height/2-knob.height/2 + onReleased:{ + knob.x=parent.width/2-knob.width/2; + knob.y=parent.height/2-knob.height/2; } } } diff --git a/mardrone/Makefile b/mardrone/Makefile index a31cd76..620a705 100644 --- a/mardrone/Makefile +++ b/mardrone/Makefile @@ -1,6 +1,6 @@ ############################################################################# # Makefile for building: mardrone -# Generated by qmake (2.01a) (Qt 4.7.0) on: Wed Dec 22 12:56:25 2010 +# Generated by qmake (2.01a) (Qt 4.7.0) on: Wed Jan 5 16:02:29 2011 # Project: mardrone.pro # Template: app # Command: /usr/bin/qmake -o Makefile mardrone.pro @@ -13,10 +13,10 @@ CXX = g++ DEFINES = -DQT_GL_NO_SCISSOR_TEST -DQT_DEFAULT_TEXTURE_GLYPH_CACHE_WIDTH=1024 -DQT_NO_DEBUG -DQT_DECLARATIVE_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED CFLAGS = -pipe -O3 -fno-omit-frame-pointer -fno-optimize-sibling-calls -Wall -W -D_REENTRANT $(DEFINES) CXXFLAGS = -pipe -O3 -fno-omit-frame-pointer -fno-optimize-sibling-calls -Wall -W -D_REENTRANT $(DEFINES) -INCPATH = -I/targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/linux-g++-maemo5 -I. -I/targets/FREMANTLE_ARMEL/usr/include/QtCore -I/targets/FREMANTLE_ARMEL/usr/include/QtNetwork -I/targets/FREMANTLE_ARMEL/usr/include/QtGui -I/targets/FREMANTLE_ARMEL/usr/include/QtDeclarative -I/targets/FREMANTLE_ARMEL/usr/include -I../../../../ARDrone_SDK_1_5_Version_20101004/ARDroneLib/Soft/Common -I../../../../ARDrone_SDK_1_5_Version_20101004/ARDroneLib/VP_SDK -I../../../../ARDrone_SDK_1_5_Version_20101004/ARDroneLib/VP_SDK/VP_Os/linux -I../../../../ARDrone_SDK_1_5_Version_20101004/ARDroneLib/VP_SDK/VP_Os -I../../../../ARDrone_SDK_1_5_Version_20101004/ARDroneLib/Soft/Lib -I../../../../ARDrone_SDK_1_5_Version_20101004/ARDroneLib/VLIB -I../../../../ARDrone_SDK_1_5_Version_20101004/ARDroneLib -I. +INCPATH = -I/targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/linux-g++-maemo5 -I. -I/targets/FREMANTLE_ARMEL/usr/include/QtCore -I/targets/FREMANTLE_ARMEL/usr/include/QtNetwork -I/targets/FREMANTLE_ARMEL/usr/include/QtGui -I/targets/FREMANTLE_ARMEL/usr/include/QtDeclarative -I/targets/FREMANTLE_ARMEL/usr/include -I/targets/FREMANTLE_ARMEL/usr/include/QtSensors -I../../../../ARDrone_SDK_1_5_Version_20101004/ARDroneLib/Soft/Common -I../../../../ARDrone_SDK_1_5_Version_20101004/ARDroneLib/VP_SDK -I../../../../ARDrone_SDK_1_5_Version_20101004/ARDroneLib/VP_SDK/VP_Os/linux -I../../../../ARDrone_SDK_1_5_Version_20101004/ARDroneLib/VP_SDK/VP_Os -I../../../../ARDrone_SDK_1_5_Version_20101004/ARDroneLib/Soft/Lib -I../../../../ARDrone_SDK_1_5_Version_20101004/ARDroneLib/VLIB -I../../../../ARDrone_SDK_1_5_Version_20101004/ARDroneLib -I/targets/FREMANTLE_ARMEL/usr/include -I. LINK = g++ -LFLAGS = -Wl,-rpath-link,/usr/lib -Wl,-O1 -Wl,--hash-style=gnu -LIBS = $(SUBLIBS) -L/usr/lib -lQtComponents -L/home/kathy/ARDrone_SDK_1_5_Version_20101004/lib -lvlib -lsdk -lQtDeclarative -L/usr/lib -L/usr/X11R6/lib -lQtScript -lQtSvg -lQtSql -lQtXmlPatterns -lQtOpenGL -lQtGui -lQtNetwork -lQtDBus -lQtXml -lQtCore -lpthread +LFLAGS = -Wl,-rpath-link,/usr/lib -Wl,-O1 -Wl,--hash-style=gnu -Wl,-rpath,/usr/lib +LIBS = $(SUBLIBS) -L/usr/lib -lQtComponents -L/home/kathy/ARDrone_SDK_1_5_Version_20101004/lib -lvlib -lsdk -L/usr/lib -lQtSensors -lQtDeclarative -L/usr/X11R6/lib -lQtScript -lQtSvg -lQtSql -lQtXmlPatterns -lQtOpenGL -lQtGui -lQtNetwork -lQtDBus -lQtXml -lQtCore -lpthread AR = ar cqs RANLIB = QMAKE = /usr/bin/qmake @@ -80,6 +80,7 @@ DIST = /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/common/unix.conf /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/default_pre.prf \ /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/release.prf \ /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/default_post.prf \ + /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/mobility.prf \ /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/warn_on.prf \ /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/qt.prf \ /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/unix/thread.prf \ @@ -131,6 +132,7 @@ Makefile: mardrone.pro /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/linux-g++ /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/default_pre.prf \ /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/release.prf \ /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/default_post.prf \ + /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/mobility.prf \ /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/warn_on.prf \ /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/qt.prf \ /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/unix/thread.prf \ @@ -162,6 +164,7 @@ Makefile: mardrone.pro /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/linux-g++ /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/default_pre.prf: /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/release.prf: /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/default_post.prf: +/targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/mobility.prf: /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/warn_on.prf: /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/qt.prf: /targets/FREMANTLE_ARMEL/usr/share/qt4/mkspecs/features/unix/thread.prf: @@ -326,6 +329,16 @@ uninstall_target: FORCE -$(DEL_DIR) $(INSTALL_ROOT)/opt/usr/bin/ +install_icon64: first FORCE + @$(CHK_DIR_EXISTS) $(INSTALL_ROOT)/usr/share/icons/hicolor/64x64/apps/ || $(MKDIR) $(INSTALL_ROOT)/usr/share/icons/hicolor/64x64/apps/ + -$(INSTALL_FILE) /home/kathy/sb/harmattan/mardrone/mardrone/mardrone.png $(INSTALL_ROOT)/usr/share/icons/hicolor/64x64/apps/ + + +uninstall_icon64: FORCE + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/icons/hicolor/64x64/apps/mardrone.png + -$(DEL_DIR) $(INSTALL_ROOT)/usr/share/icons/hicolor/64x64/apps/ + + install_desktopfile: first FORCE @$(CHK_DIR_EXISTS) $(INSTALL_ROOT)/usr/share/applications/hildon/ || $(MKDIR) $(INSTALL_ROOT)/usr/share/applications/hildon/ -$(INSTALL_FILE) /home/kathy/sb/harmattan/mardrone/mardrone/mardrone.desktop $(INSTALL_ROOT)/usr/share/applications/hildon/ @@ -336,9 +349,9 @@ uninstall_desktopfile: FORCE -$(DEL_DIR) $(INSTALL_ROOT)/usr/share/applications/hildon/ -install: install_target install_desktopfile FORCE +install: install_target install_icon64 install_desktopfile FORCE -uninstall: uninstall_target uninstall_desktopfile FORCE +uninstall: uninstall_target uninstall_icon64 uninstall_desktopfile FORCE FORCE: diff --git a/mardrone/ardrone.qml b/mardrone/ardrone.qml index 2d8af42..183d743 100644 --- a/mardrone/ardrone.qml +++ b/mardrone/ardrone.qml @@ -37,6 +37,14 @@ Window { opacity:0.5 width:640;height:480; } + Text { + y:100 + visible:drone.confUseAccel + color: "#00FF00" + id: droneCtrlValues + font.pixelSize:20 + text: "cmd:pitch=" + Math.round(drone.pitch) + " roll= " + Math.round(drone.roll) + " yaw=" + Math.round(drone.yaw) + " vv= " + Math.round(drone.vVelocity) + } Text { y:115 @@ -65,6 +73,7 @@ Window { } } Image { + visible: !drone.confUseAccel x:10;y:200 width:280;height:280; source: "joybox.png" @@ -88,8 +97,9 @@ Window { id:rj anchors.fill:parent anchors.margins:50 - onYvChanged:{drone.vVelocity=yv;} + onYvChanged:{drone.vVelocity=-1*yv;} onXvChanged:{drone.yaw=xv;} + onPressedChanged: { drone.ctrlActive=pressed;} } } Row { diff --git a/mardrone/dronecontrol.cpp b/mardrone/dronecontrol.cpp index cbc4f23..03862f9 100644 --- a/mardrone/dronecontrol.cpp +++ b/mardrone/dronecontrol.cpp @@ -35,13 +35,34 @@ DroneControl::DroneControl():QObject() connect(droneThread->navData(),SIGNAL(navDataUpdated()),this,SLOT(navDataUpdated())); connect(droneThread->navData(),SIGNAL(stateUpdated()),this,SLOT(statusUpdated())); droneSettings=new QSettings("katix.org","ardrone"); + m_ctrlActive=false; m_pitch=0; m_roll=0; m_yaw=0; m_vv=0; + m_useAccel=droneSettings->value("useAccel",false).toBool(); + m_ctrlTrsh=droneSettings->value("ctrlTreshold",10.0).toFloat(); + rSensor=new QRotationSensor(); + rSensor->start(); + connect(rSensor,SIGNAL(readingChanged()),this,SLOT(rotationReadingsChanged())); droneThread->setDroneGain(confForwardGain(),confBackwardGain(),confLeftGain(),confRightGain()); } + +void DroneControl::rotationReadingsChanged() +{ + if(m_useAccel && m_ctrlActive) { + m_pitch=rSensor->reading()->x()-m_rotRefX; + m_roll =rSensor->reading()->y()-m_rotRefY; + m_pitch=(fabs(m_pitch)0 ? m_pitch-m_ctrlTrsh:m_pitch+m_ctrlTrsh); + m_roll =(fabs(m_roll )0 ? m_roll- m_ctrlTrsh:m_roll+ m_ctrlTrsh); + droneThread->setDroneControl(m_pitch,m_roll,m_yaw,m_vv); + emit pitchRollChanged(); + //m_rotRefZ=rSensor->reading()->z(); + //qDebug("setCtrlActive ref(%3.1f,%3.1f,%3.1f)",m_rotRefX,m_rotRefY,m_rotRefZ); + } +} + void DroneControl::navDataUpdated() { emit navDataChanged(); @@ -68,14 +89,16 @@ void DroneControl::setRoll(float val_) droneThread->setDroneControl(m_pitch,m_roll,m_yaw,m_vv); }; float DroneControl::roll() {return m_roll;}; -void DroneControl::setYaw(float val_) { - m_yaw=val_; - // qDebug() << "setYaw=" << val_; +void DroneControl::setYaw(float val) { + m_yaw=val; + // qDebug() << "setYaw=" << val; + if(m_useAccel && m_ctrlActive) m_yaw=(fabs(m_yaw)<(m_ctrlTrsh*2) ) ? 0:(m_yaw>0 ? m_yaw-(m_ctrlTrsh*2):m_yaw+(m_ctrlTrsh*2)); droneThread->setDroneControl(m_pitch,m_roll,m_yaw,m_vv); }; float DroneControl::yaw() {return m_yaw;}; -void DroneControl::setVVelocity(float val_) { - m_vv=val_; +void DroneControl::setVVelocity(float val) { + m_vv=val; + if(m_useAccel && m_ctrlActive) m_vv=(fabs(m_vv)<(m_ctrlTrsh*2) ) ? 0:(m_vv>0? m_vv-(m_ctrlTrsh*2):m_vv+(m_ctrlTrsh*2)); // qDebug() << "setVv=" << val_; droneThread->setDroneControl(m_pitch,m_roll,m_yaw,m_vv); }; @@ -86,6 +109,27 @@ void DroneControl::setAltitude(float val_) { float DroneControl::altitude() {return m_altitude;}; void DroneControl::setEnabled(int val_) { m_enabled=val_;}; int DroneControl::enabled() {return m_enabled;}; + +bool DroneControl::ctrlActive() +{ + return m_ctrlActive; +}; +void DroneControl::setCtrlActive(bool val_) +{ + if(val_ && !m_ctrlActive) { // Ctrl switched to active + m_rotRefX=rSensor->reading()->x(); + m_rotRefY=rSensor->reading()->y(); + m_rotRefZ=rSensor->reading()->z(); + qDebug("setCtrlActive ref(%3.1f,%3.1f,%3.1f)",m_rotRefX,m_rotRefY,m_rotRefZ); + } + m_ctrlActive=val_; + if(!m_ctrlActive) { m_pitch=0;m_roll=0; }; + droneThread->setDroneControl(m_pitch,m_roll,m_yaw,m_vv); + emit pitchRollChanged(); + +}; + + void DroneControl::setFly(bool val_) { m_fly=val_; @@ -188,11 +232,13 @@ void DroneControl::setConfShowGauges(bool val) }; bool DroneControl::confUseAccel() { - return droneSettings->value("useAccel",false).toBool(); + //return droneSettings->value("useAccel",false).toBool(); + return m_useAccel; // return cached value }; void DroneControl::setConfUseAccel(bool val) { droneSettings->setValue("useAccel",val); + m_useAccel=val; emit configChanged(); }; bool DroneControl::confUseJoyStick() @@ -225,7 +271,16 @@ void DroneControl::setConfForwardGain(float val) droneThread->setDroneGain(confForwardGain(),confBackwardGain(),confLeftGain(),confRightGain()); emit configChanged(); }; - +float DroneControl::confCtrlTrsh() +{ + return m_ctrlTrsh; +}; +void DroneControl::setConfCtrlTrsh(float val) +{ + droneSettings->setValue("ctrlTreshold",val); + m_ctrlTrsh=val; + emit configChanged(); +}; float DroneControl::confBackwardGain() { @@ -338,6 +393,7 @@ void DroneThread::navDataReady() break; case initialized: sendCmd("AT*CTRL=0\r"); + sendCmd("AT*CONFIG=%1,\"detect:detect_type\",\"2\"\r"); state=ready; break; case ready: diff --git a/mardrone/dronecontrol.h b/mardrone/dronecontrol.h index 9b6a3a2..057833f 100644 --- a/mardrone/dronecontrol.h +++ b/mardrone/dronecontrol.h @@ -9,21 +9,25 @@ #include #include #include +#include #undef _GNU_SOURCE // just get rid of error message double definition #include class DroneThread; +QTM_USE_NAMESPACE + class DroneControl : public QObject { Q_OBJECT - Q_PROPERTY(float pitch READ pitch WRITE setPitch) - Q_PROPERTY(float roll READ roll WRITE setRoll) - Q_PROPERTY(float yaw READ yaw WRITE setYaw) + Q_PROPERTY(float pitch READ pitch WRITE setPitch NOTIFY pitchRollChanged) + Q_PROPERTY(float roll READ roll WRITE setRoll NOTIFY pitchRollChanged) + Q_PROPERTY(float yaw READ yaw WRITE setYaw NOTIFY pitchRollChanged) Q_PROPERTY(float altitude READ altitude WRITE setAltitude) - Q_PROPERTY(float vVelocity READ vVelocity WRITE setVVelocity) + Q_PROPERTY(float vVelocity READ vVelocity WRITE setVVelocity NOTIFY pitchRollChanged) Q_PROPERTY(int enabled READ enabled WRITE setEnabled) Q_PROPERTY(bool fly READ fly WRITE setFly) + Q_PROPERTY(bool ctrlActive READ ctrlActive WRITE setCtrlActive) Q_PROPERTY(float dronePitch READ dronePitch NOTIFY navDataChanged) Q_PROPERTY(float droneRoll READ droneRoll NOTIFY navDataChanged) Q_PROPERTY(float droneYaw READ droneYaw NOTIFY navDataChanged) @@ -49,6 +53,7 @@ class DroneControl : public QObject Q_PROPERTY(float confBackwardGain READ confBackwardGain WRITE setConfBackwardGain NOTIFY configChanged) Q_PROPERTY(float confLeftGain READ confLeftGain WRITE setConfLeftGain NOTIFY configChanged) Q_PROPERTY(float confRightGain READ confRightGain WRITE setConfRightGain NOTIFY configChanged) + Q_PROPERTY(float confCtrlTrsh READ confCtrlTrsh WRITE setConfCtrlTrsh NOTIFY configChanged) public: explicit DroneControl(); @@ -62,6 +67,7 @@ public: int enabled() ; void setEnabled(int val_) ; bool emergency();void setEmergency(bool val_) ; bool fly() ; void setFly(bool val_) ; + bool ctrlActive();void setCtrlActive(bool val_) ; // Read only telemetry and drone status QString decodedStatus(); @@ -76,25 +82,27 @@ public: float droneVBat(); //Config variables - QString confDroneIp(); void setConfDroneIp(QString ip); + QString confDroneIp(); void setConfDroneIp(QString ip); bool confShowDebug(); void setConfShowDebug(bool val); bool confShowHorizon(); void setConfShowHorizon(bool val); bool confShowGauges(); void setConfShowGauges(bool val); bool confUseAccel(); void setConfUseAccel(bool val); - bool confFullScreen();void setConfFullScreen(bool val); + bool confFullScreen(); void setConfFullScreen(bool val); bool confUseJoyStick(); void setConfUseJoyStick(bool val); float confForwardGain(); void setConfForwardGain(float val); float confBackwardGain(); void setConfBackwardGain(float val); float confLeftGain(); void setConfLeftGain(float val); float confRightGain(); void setConfRightGain(float val); - + float confCtrlTrsh(); void setConfCtrlTrsh(float val); signals: void navDataChanged(); void statusChanged(); void configChanged(); + void pitchRollChanged(); public slots: void navDataUpdated(); void statusUpdated(); + void rotationReadingsChanged(); private: float m_pitch; // pitch in horizon @@ -102,10 +110,16 @@ private: float m_yaw; // low value to display float m_vv; // Verticl velocity float m_altitude; // altitude + float m_rotRefX; // Rotation zero reference + float m_rotRefY; + float m_rotRefZ; int m_enabled; // Enable flag bool m_emergency; // Emergency flag QString _emgReason; // Reason of emergency bool m_fly; // Fly flag + bool m_ctrlActive; + bool m_useAccel; + float m_ctrlTrsh; // accel controll treshold QTcpSocket *ctlSock; // TCP port for control/config data QUdpSocket *navSock; // Navigation data receive socket port 5554 @@ -113,6 +127,7 @@ private: DroneThread *droneThread; QSettings *droneSettings; + QRotationSensor *rSensor; // used for controllind drone with device rotation }; diff --git a/mardrone/mardrone b/mardrone/mardrone index 8607320..4d08ee7 100755 Binary files a/mardrone/mardrone and b/mardrone/mardrone differ diff --git a/mardrone/mardrone.pro b/mardrone/mardrone.pro index 92169f8..84c7ae2 100644 --- a/mardrone/mardrone.pro +++ b/mardrone/mardrone.pro @@ -8,6 +8,7 @@ QT += core gui declarative network CONFIG += mobility +MOBILITY += sensors TARGET = mardrone TEMPLATE = app AR_DRONE_SDK= $$(HOME)/ARDrone_SDK_1_5_Version_20101004 @@ -65,6 +66,9 @@ unix:!symbian { desktopfile.files = $${TARGET}.desktop maemo5 { desktopfile.path = /usr/share/applications/hildon + icon64.path = /usr/share/icons/hicolor/64x64/apps + icon64.files = $${TARGET}.png + INSTALLS += icon64 } else { desktopfile.path = /usr/share/applications } diff --git a/mardrone/navdata.cpp b/mardrone/navdata.cpp index 5954c93..85011b4 100644 --- a/mardrone/navdata.cpp +++ b/mardrone/navdata.cpp @@ -112,8 +112,8 @@ void NavData::parseOption(navdata_option_t *op) current_motor4=npwm->current_motor4; pwm_motor4=npwm->motor4; emit navDataUpdated(); - qDebug("pwm1=%3d I1=%4f pwm2=%3d I2=%4f pwm3=%3d I3=%4f pwm4=%3d I4=%4f", - pwm_motor1,current_motor1,pwm_motor2,current_motor2,pwm_motor3,current_motor3,pwm_motor4,current_motor4); + // qDebug("pwm1=%3d I1=%4f pwm2=%3d I2=%4f pwm3=%3d I3=%4f pwm4=%3d I4=%4f", + // pwm_motor1,current_motor1,pwm_motor2,current_motor2,pwm_motor3,current_motor3,pwm_motor4,current_motor4); } break; case NAVDATA_ALTITUDE_TAG: //10 @@ -129,6 +129,19 @@ void NavData::parseOption(navdata_option_t *op) case NAVDATA_TRACKERS_SEND_TAG: break; case NAVDATA_VISION_DETECT_TAG: //16 + { + _navdata_vision_detect_t *nvisd=(_navdata_vision_detect_t*)op; + qDebug("nb_detected=%d type=%d xc=%d yc=%d width=%d height=%d dist=%d",nvisd->nb_detected,nvisd->type[0],nvisd->xc[0],nvisd->yc[0], + nvisd->width[0],nvisd->height[0],nvisd->dist[0]); + for(int i=0;i++;i<4) { + tags[i].type=nvisd->type[i]; + tags[i].xc=nvisd->xc[i]; + tags[i].yc=nvisd->yc[i]; + tags[i].height=nvisd->height[i]; + tags[i].width=nvisd->width[i]; + tags[i].dist=nvisd->dist[i]; + } + } break; case NAVDATA_WATCHDOG_TAG: break; diff --git a/mardrone/navdata.h b/mardrone/navdata.h index 8707766..f46ed61 100644 --- a/mardrone/navdata.h +++ b/mardrone/navdata.h @@ -6,6 +6,15 @@ #include #include "config.h" +struct tag_t { + unsigned int type; + unsigned int xc; + unsigned int yc; + unsigned int width; + unsigned int height; + unsigned int dist; +}; + class NavData : public QObject { Q_OBJECT @@ -34,6 +43,7 @@ public: int pwm_motor2; int pwm_motor3; int pwm_motor4; + tag_t tags[4]; signals: void navDataUpdated(); void stateUpdated(); diff --git a/mardrone/video.cpp b/mardrone/video.cpp index a535999..ae261ea 100644 --- a/mardrone/video.cpp +++ b/mardrone/video.cpp @@ -103,7 +103,6 @@ void VideoThread::run() picture.cr_line_size = pictureWidth / 2; picture.y_pad = 0; picture.c_pad = 0; - qDebug() << "videoThread::run() 3"; video_codec_open(&controller, (codec_type_t)UVLC_CODEC); //stateTimer->start(1000); qDebug() << "videoThread::run() initialized"; @@ -137,7 +136,7 @@ void VideoThread::videoDataReady() quint16 port; videoData.resize(videoSock->pendingDatagramSize ()); l=videoSock->readDatagram(videoData.data(),videoData.size(),&host,&port); - qDebug() << "videoThread::videoDataReady" <<" l=" << l << "from" << host ; +// qDebug() << "videoThread::videoDataReady" <<" l=" << l << "from" << host ; decodeTransform(videoData); } @@ -157,7 +156,7 @@ void VideoThread::decodeTransform(QByteArray &videoData) //video_decode_picture( &controller, &picture, &stream, &got_image ); if( got_image ) { - qDebug() <<"VideoThread::decodeTransform got image" << picture.width << picture.height << image->byteCount() << image->bytesPerLine(); + // qDebug() <<"VideoThread::decodeTransform got image" << picture.width << picture.height << image->byteCount() << image->bytesPerLine(); // we got one picture // out->size = 1; picture.complete = 1; @@ -165,7 +164,7 @@ void VideoThread::decodeTransform(QByteArray &videoData) vp_stages_YUV420P_to_RGB565(NULL,&picture,image->bits(),image->bytesPerLine()); - qDebug() << "pic " << num_picture_decoded; + // qDebug() << "pic " << num_picture_decoded; } diff --git a/mardrone_0.0.1_armel.changes b/mardrone_0.0.1_armel.changes index d24e187..7cdbb68 100644 --- a/mardrone_0.0.1_armel.changes +++ b/mardrone_0.0.1_armel.changes @@ -15,6 +15,6 @@ Changes: . * Initial Release. Files: - 1591b907efe219822b1d5394e97f543e 269 user/hidden optional mardrone_0.0.1.dsc - 08c0e35f2b10481131ba0f08a8c28115 1373656 user/hidden optional mardrone_0.0.1.tar.gz - 898cfeb09dd6c616a146ac6b1869607b 103972 user/hidden optional mardrone_0.0.1_armel.deb + c19e2d3cccf5dcc764da734d0127d6a7 269 user/hidden optional mardrone_0.0.1.dsc + 0552a460cc8b4b7d7413e5637e4be22c 1379887 user/hidden optional mardrone_0.0.1.tar.gz + f097693f6af6d6e2785d3f8d282100a9 107678 user/hidden optional mardrone_0.0.1_armel.deb diff --git a/mardrone_0.0.1_armel.deb b/mardrone_0.0.1_armel.deb index c14d5a8..5c16f7b 100644 Binary files a/mardrone_0.0.1_armel.deb and b/mardrone_0.0.1_armel.deb differ