///*===================================================================== // //QGroundControl Open Source Ground Control Station // //(c) 2009, 2010 QGROUNDCONTROL PROJECT // //This file is part of the QGROUNDCONTROL project // // QGROUNDCONTROL is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // QGROUNDCONTROL is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with QGROUNDCONTROL. If not, see . // //======================================================================*/ /** * @file * @brief Definition of the class Pixhawk3DWidget. * * @author Lionel Heng * */ #ifndef PIXHAWK3DWIDGET_H #define PIXHAWK3DWIDGET_H #include #include "HUDScaleGeode.h" #include "Imagery.h" #include "ImageWindowGeode.h" #include "WaypointGroupNode.h" #ifdef QGC_LIBFREENECT_ENABLED #include "Freenect.h" #endif #include "Q3DWidget.h" class UASInterface; /** * @brief A 3D View widget which displays vehicle-centric information. **/ class Pixhawk3DWidget : public Q3DWidget { Q_OBJECT public: explicit Pixhawk3DWidget(QWidget* parent = 0); ~Pixhawk3DWidget(); public slots: void setActiveUAS(UASInterface* uas); private slots: void selectFrame(QString text); void showGrid(int state); void showTrail(int state); void showWaypoints(int state); void selectMapSource(int index); void selectVehicleModel(int index); void recenter(void); void toggleFollowCamera(int state); void insertWaypoint(void); void moveWaypoint(void); void setWaypoint(void); void deleteWaypoint(void); void setWaypointAltitude(void); void clearAllWaypoints(void); protected: QVector< osg::ref_ptr > findVehicleModels(void); void buildLayout(void); virtual void display(void); virtual void keyPressEvent(QKeyEvent* event); virtual void mousePressEvent(QMouseEvent* event); UASInterface* uas; private: void getPose(double& x, double& y, double& z, double& roll, double& pitch, double& yaw, QString& utmZone); void getPose(double& x, double& y, double& z, double& roll, double& pitch, double& yaw); void getPosition(double& x, double& y, double& z, QString& utmZone); void getPosition(double& x, double& y, double& z); osg::ref_ptr createGrid(void); osg::ref_ptr createTrail(void); osg::ref_ptr createMap(void); osg::ref_ptr createRGBD3D(void); void setupHUD(void); void resizeHUD(void); void updateHUD(double robotX, double robotY, double robotZ, double robotRoll, double robotPitch, double robotYaw, const QString& utmZone); void updateTrail(double robotX, double robotY, double robotZ); void updateImagery(double originX, double originY, double originZ, const QString& zone); void updateWaypoints(void); #ifdef QGC_LIBFREENECT_ENABLED void updateRGBD(void); #endif int findWaypoint(int mouseX, int mouseY); void showInsertWaypointMenu(const QPoint& cursorPos); void showEditWaypointMenu(const QPoint& cursorPos); enum Mode { DEFAULT_MODE, MOVE_WAYPOINT_MODE }; Mode mode; int selectedWpIndex; bool displayGrid; bool displayTrail; bool displayImagery; bool displayWaypoints; bool displayRGBD2D; bool displayRGBD3D; bool enableRGBDColor; bool followCamera; osg::ref_ptr trailVertices; QVarLengthArray trail; osg::ref_ptr vehicleModel; osg::ref_ptr hudBackgroundGeometry; osg::ref_ptr statusText; osg::ref_ptr scaleGeode; osg::ref_ptr rgb2DGeode; osg::ref_ptr depth2DGeode; osg::ref_ptr rgbImage; osg::ref_ptr depthImage; osg::ref_ptr gridNode; osg::ref_ptr trailNode; osg::ref_ptr trailGeometry; osg::ref_ptr trailDrawArrays; osg::ref_ptr mapNode; osg::ref_ptr waypointGroupNode; osg::ref_ptr rgbd3DNode; #ifdef QGC_LIBFREENECT_ENABLED QScopedPointer freenect; #endif bool enableFreenect; QVector< osg::ref_ptr > vehicleModels; MAV_FRAME frame; double lastRobotX, lastRobotY, lastRobotZ; }; #endif // PIXHAWK3DWIDGET_H