00001 #include "gui_manager.h"
00002
00003
00004 GUImanager::GUImanager(QMainWindow &widget, Ui::MainWindow &win, QApplication &app)
00005 {
00006
00007 qRegisterMetaType<long int>("long int");
00008 qRegisterMetaType<Led*>("Led*");
00009
00010 _widget = &widget;
00011 _win = &win;
00012 _app = &app;
00013 _timer = _nh.createTimer(ros::Duration(LOOP_RATE), &GUImanager::_loopEvents, this);
00014
00015 _eventSlot.initiate(win, app);
00016
00017 _initiateLbls();
00018 _initiateLeds();
00019 _connectEvents();
00020 _subscribeListeners();
00021
00022 _win->move_pbar->setVisible(false);
00023
00024
00025 std::string filePath = ros::package::getPath("robotican_armadillo_moveit_config") + "/config/armadillo_robot.srdf";
00026 TiXmlDocument doc(filePath);
00027 if (doc.LoadFile())
00028 {
00029 TiXmlElement* root = doc.FirstChildElement("robot");
00030
00031 for(TiXmlElement* e = root->FirstChildElement("group_state"); e != NULL; e = e->NextSiblingElement("group_state"))
00032 _win->cmbox_preset->addItem(QString::fromStdString(e->Attribute("name")));
00033 }
00034 else
00035 {
00036 std::string msg = "Can't load file ";
00037 msg.append(filePath);
00038 msg.append(" . Presets list will be empty. Check that the file exist, and is not corrupted");
00039 QMessageBox::warning(_widget, "Can't Load file", QString::fromStdString(msg));
00040 }
00041 }
00042
00043 void GUImanager::startGUI()
00044 {
00045 _timer.start();
00046 }
00047
00048 void GUImanager::_connectEvents()
00049 {
00050
00051 QObject::connect(&_eventSignal, SIGNAL(batValChanged(int)),
00052 &_eventSlot, SLOT(setBatPwr(int)));
00053
00054
00055 QObject::connect(&_eventSignal, SIGNAL(ledChanged(long int, Led*)),
00056 &_eventSlot, SLOT(setLed(long int, Led*)));
00057
00058
00059 QObject::connect(_win->drive_btn, SIGNAL(clicked()),
00060 &_eventSlot, SLOT(moveArmToDrive()));
00061
00062
00063 QObject::connect(_win->preset_btn, SIGNAL(clicked()),
00064 &_eventSlot, SLOT(moveArmToPreset()));
00065
00066
00067 QObject::connect(_win->exit_btn, SIGNAL(clicked()),
00068 &_eventSlot, SLOT(closeApp()));
00069 }
00070
00071
00072
00073
00074
00075
00076 void GUImanager::_loopEvents(const ros::TimerEvent &timerEvent)
00077 {
00078 _eventSignal.signalBatVal(_batListener.getBatteryPwr());
00079 _eventSignal.signalLed(_batListener.getLastSignal(), &_batteryLed);
00080 _eventSignal.signalLed(_armListener.getLastSignal(), &_armLed);
00081 _eventSignal.signalLed(_panTiltListenere.getLastSignal(), &_panTiltLed);
00082 _eventSignal.signalLed(_odomListener.getLastSignal(), &_odomLed);
00083 _eventSignal.signalLed(_gripperListener.getLastSignal(), &_gripperLed);
00084 _eventSignal.signalLed(_imuListener.getLastSignal(), &_imuLed);
00085 _eventSignal.signalLed(_lidarListener.getLastSignal(), &_lidarLed);
00086 _eventSignal.signalLed(_gpsListener.getLastSignal(), &_gpsLed);
00087 _eventSignal.signalLed(_frontCamListener.getLastSignal(), &_frontCamLed);
00088 _eventSignal.signalLed(_rearCamListener.getLastSignal(), &_rearCamLed);
00089 _eventSignal.signalLed(_urfLeftListener.getLastSignal(), &_urfLeftLed);
00090 _eventSignal.signalLed(_urfRearListener.getLastSignal(), &_urfRearLed);
00091 _eventSignal.signalLed(_urfRightListener.getLastSignal(), &_urfRightLed);
00092 _eventSignal.signalLed(_kinect2Listener.getLastSignal(), &_kinect2Led);
00093 _eventSignal.signalLed(_sr300.getLastSignal(), &_sr300Led);
00094 }
00095
00096 void GUImanager::_initiateLeds()
00097 {
00098 _armLed.initiate(*_win->arm_led);
00099 _panTiltLed.initiate(*_win->pan_tilt_led);
00100 _odomLed.initiate(*_win->odom_led);
00101 _gripperLed.initiate(*_win->gripper_led);
00102 _imuLed.initiate(*_win->imu_led);
00103 _lidarLed.initiate(*_win->lidar_led);
00104 _gpsLed.initiate(*_win->gps_led);
00105 _frontCamLed.initiate(*_win->front_cam_led);
00106 _rearCamLed.initiate(*_win->rear_cam_led);
00107 _urfLeftLed.initiate(*_win->urf_left_led);
00108 _urfRearLed.initiate(*_win->urf_rear_led);
00109 _urfRightLed.initiate(*_win->urf_right_led);
00110 _kinect2Led.initiate(*_win->kinect2_led);
00111 _sr300Led.initiate(*_win->sr300_led);
00112 _batteryLed.initiate(*_win->battery_led);
00113 }
00114
00115 void GUImanager::_subscribeListeners()
00116 {
00117
00118 _batListener.subscribe();
00119 _armListener.subscribe();
00120 _panTiltListenere.subscribe();
00121 _odomListener.subscribe();
00122 _gripperListener.subscribe();
00123 _imuListener.subscribe();
00124 _lidarListener.subscribe();
00125 _gpsListener.subscribe();
00126 _rearCamListener.subscribe();
00127 _frontCamListener.subscribe();
00128 _urfRightListener.subscribe();
00129 _urfRearListener.subscribe();
00130 _urfLeftListener.subscribe();
00131 _kinect2Listener.subscribe();
00132 _sr300.subscribe();
00133 }
00134
00135 void GUImanager::_initiateLbls()
00136 {
00137 std::string tempParam;
00138
00139 _nh.param<std::string>("battery_lbl_name",tempParam, "BATTERY");
00140 _win->battery_lbl->setText(QApplication::translate("MainWindow", tempParam.c_str(), 0));
00141
00142 _nh.param<std::string>("gps_lbl_name",tempParam, "GPS");
00143 _win->gps_lbl->setText(QApplication::translate("MainWindow", tempParam.c_str(), 0));
00144
00145 _nh.param<std::string>("imu_lbl_name",tempParam, "IMU");
00146 _win->imu_lbl->setText(QApplication::translate("MainWindow", tempParam.c_str(), 0));
00147
00148 _nh.param<std::string>("lidar_lbl_name",tempParam, "LIDAR");
00149 _win->lidar_lbl->setText(QApplication::translate("MainWindow", tempParam.c_str(), 0));
00150
00151 _nh.param<std::string>("odom_lbl_name",tempParam, "ODOM");
00152 _win->odom_lbl->setText(QApplication::translate("MainWindow", tempParam.c_str(), 0));
00153
00154 _nh.param<std::string>("arm_lbl_name",tempParam, "ARM");
00155 _win->arm_lbl->setText(QApplication::translate("MainWindow", tempParam.c_str(), 0));
00156
00157 _nh.param<std::string>("gripper_lbl_name",tempParam, "GRIPPER");
00158 _win->gripper_lbl->setText(QApplication::translate("MainWindow", tempParam.c_str(), 0));
00159
00160 _nh.param<std::string>("left_urf_lbl_name",tempParam, "LEFT");
00161 _win->left_urf_lbl->setText(QApplication::translate("MainWindow", tempParam.c_str(), 0));
00162
00163 _nh.param<std::string>("right_urf_lbl_name",tempParam, "RIGHT");
00164 _win->right_urf_lbl->setText(QApplication::translate("MainWindow", tempParam.c_str(), 0));
00165
00166 _nh.param<std::string>("rear_urf_lbl_name",tempParam, "REAR");
00167 _win->rear_urf_lbl->setText(QApplication::translate("MainWindow", tempParam.c_str(), 0));
00168
00169 _nh.param<std::string>("kinect2_lbl_name",tempParam, "KINECT2");
00170 _win->kinnect2_lbl->setText(QApplication::translate("MainWindow", tempParam.c_str(), 0));
00171
00172 _nh.param<std::string>("sr300_lbl_name",tempParam, "SR300");
00173 _win->sr300_lbl->setText(QApplication::translate("MainWindow", tempParam.c_str(), 0));
00174
00175 _nh.param<std::string>("rear_cam_lbl_name",tempParam, "REAR");
00176 _win->rear_cam_lbl->setText(QApplication::translate("MainWindow", tempParam.c_str(), 0));
00177
00178 _nh.param<std::string>("front_cam_name",tempParam, "FRONT");
00179 _win->front_cam_lbl->setText(QApplication::translate("MainWindow", tempParam.c_str(), 0));
00180
00181 _nh.param<std::string>("pan_tilt_name",tempParam, "PAN-TILT");
00182 _win->pan_tilt_lbl->setText(QApplication::translate("MainWindow", tempParam.c_str(), 0));
00183 }
00184