MainWindow.py
Go to the documentation of this file.
00001 import shlex
00002 
00003 __author__ = 'tom'
00004 from PyQt4.QtGui import *
00005 from GUI.Scheme.imuCalib import Ui_imuCalib
00006 import rospy
00007 from ric_board.srv._calibIMU import calibIMU, calibIMURequest
00008 import subprocess
00009 
00010 
00011 class MainWindow(QDialog, Ui_imuCalib):
00012     def __init__(self, parent=None):
00013         super(MainWindow, self).__init__(parent)
00014         self.setupUi(self)
00015         self._isStartCalib = False
00016 
00017 
00018         self.calibButton.clicked.connect(self.startOrSaveCalib)
00019         self.refreshButton.clicked.connect(self.refresh)
00020 
00021         self.refresh()
00022 
00023     def refresh(self):
00024         try:
00025             rospy.wait_for_service('/imu_Calibration', timeout=0.2)
00026             self.status.setText("Connected")
00027 
00028         except rospy.ROSException:
00029             self.status.setText("Not connected")
00030 
00031     def startOrSaveCalib(self):
00032         try:
00033             if not self._isStartCalib:
00034                 rospy.wait_for_service('/imu_Calibration', timeout=0.2)
00035                 serviceCallBack = rospy.ServiceProxy('/imu_Calibration', calibIMU)
00036 
00037                 request = calibIMURequest()
00038                 request.status = calibIMURequest.START_CALIB
00039                 request.xMax = float(self.maxXLineEdit.text())
00040                 request.yMax = float(self.maxYLineEdit.text())
00041                 request.zMax = float(self.maxZLineEdit.text())
00042                 request.xMin = float(self.minXLineEdit.text())
00043                 request.yMin = float(self.minYLineEdit.text())
00044                 request.zMin = float(self.minZLineEdit.text())
00045 
00046                 serviceCallBack(request)
00047 
00048                 self.calibButton.setText("Save calibration")
00049 
00050                 subprocess.Popen(shlex.split('rqt_plot /imu_calib_publisher/x'))
00051                 subprocess.Popen(shlex.split('rqt_plot /imu_calib_publisher/y'))
00052                 subprocess.Popen(shlex.split('rqt_plot /imu_calib_publisher/z'))
00053 
00054                 self._isStartCalib = True
00055             else:
00056                 rospy.wait_for_service('/imu_Calibration', timeout=0.2)
00057                 serviceCallBack = rospy.ServiceProxy('/imu_Calibration', calibIMU)
00058 
00059                 request = calibIMURequest()
00060                 request.status = calibIMURequest.STOP_CALIB
00061 
00062                 serviceCallBack(request)
00063 
00064                 self.calibButton.setText("Start calibration")
00065 
00066                 self._isStartCalib = False
00067         except rospy.ROSException:
00068             self.status.setText("Not connected")
00069         except:
00070             QMessageBox.critical(self, "Error", "All fields must be float type.")


ric_board
Author(s): RoboTiCan
autogenerated on Fri Oct 27 2017 03:02:30