Go to the documentation of this file.00001 __author__ = 'tom1231'
00002 from BAL.Interface.DeviceFrame import DeviceFrame, IMU
00003 from PyQt4.QtGui import *
00004
00005
00006
00007 class Imu(DeviceFrame):
00008 def __init__(self, frame, data):
00009 DeviceFrame.__init__(self, IMU, frame, data)
00010 self._pubHz = '50'
00011 self._name = 'RiC_IMU'
00012 self._frameId = 'RiC_Frame'
00013 self._decAng = '0'
00014 self._orientation = '0'
00015 self._fusionHz = '10'
00016 self._enableFuseGyro = False
00017
00018
00019 def fromDict(self, data):
00020 self._pubHz = data['pubHz']
00021 self._name = data['name']
00022 self._frameId = data['frameId']
00023 self._decAng = data['decAng']
00024 if data.has_key('orientation'):
00025 self._orientation = data['orientation']
00026 if data.has_key('fusionHz'):
00027 self._fusionHz = data['fusionHz']
00028 if data.has_key('enableFuseGyro'):
00029 self._enableFuseGyro = data['enableFuseGyro']
00030
00031 def toDict(self):
00032 data = dict()
00033
00034 data['type'] = IMU
00035 data['pubHz'] = self._pubHz
00036 data['name'] = self._name
00037 data['frameId'] = self._frameId
00038 data['decAng'] = self._decAng
00039 data['orientation'] = self._orientation
00040 data['fusionHz'] = self._fusionHz
00041 data['enableFuseGyro'] = self._enableFuseGyro
00042
00043 return data
00044
00045 def printDetails(self):
00046 self._frame.layout().addRow(QLabel('Publish Hz: '), QLabel(self._pubHz))
00047 self._frame.layout().addRow(QLabel('Name: '), QLabel(self._name))
00048 self._frame.layout().addRow(QLabel('Frame id: '), QLabel(self._frameId))
00049 self._frame.layout().addRow(QLabel('Declination angle: '), QLabel(self._decAng))
00050 self._frame.layout().addRow(QLabel('Board orientation: '), QLabel(self._orientation))
00051 self._frame.layout().addRow(QLabel('Fusion Hz: '), QLabel(self._fusionHz))
00052
00053 isFuseGyro = 'Disable'
00054 if self._enableFuseGyro: isFuseGyro = 'Enable'
00055
00056 self._frame.layout().addRow(QLabel('Fusion gyro: '), QLabel(isFuseGyro))
00057
00058 def saveToFile(self, file):
00059 enableFuseGyro = '0'
00060 if self._enableFuseGyro:
00061 enableFuseGyro = '1'
00062
00063 file.write('IMU/publishHz: ' + self._pubHz + '\n')
00064 file.write('IMU/name: ' + self._name + '\n')
00065 file.write('IMU/frameId: ' + self._frameId + '\n')
00066 file.write('IMU/camp: ' + self._decAng + '\n')
00067 file.write('IMU/orientation: ' + self._orientation + '\n')
00068 file.write('IMU/fusionHz: ' + self._fusionHz + '\n')
00069 file.write('IMU/fuseGyro: ' + enableFuseGyro + '\n')
00070
00071 def showDetails(self, items=None):
00072 self.pubHz = QLineEdit(self._pubHz)
00073 self.name = QLineEdit(self._name)
00074 self.frameId = QLineEdit(self._frameId)
00075 self.decAng = QLineEdit(self._decAng)
00076 self.orientation = QLineEdit(self._orientation)
00077 self.fusionHz = QLineEdit(self._fusionHz)
00078 self.enableFuseGyro = QCheckBox('')
00079
00080 self.enableFuseGyro.setChecked(self._enableFuseGyro)
00081
00082 self._frame.layout().addRow(QLabel('Publish Hz: '), self.pubHz)
00083 self._frame.layout().addRow(QLabel('Name: '), self.name)
00084 self._frame.layout().addRow(QLabel('Frame id: '), self.frameId)
00085 self._frame.layout().addRow(QLabel('Declination angle: '), self.decAng)
00086 self._frame.layout().addRow(QLabel('Board orientation: '), self.orientation)
00087 self._frame.layout().addRow(QLabel('Fusion Hz: '), self.fusionHz)
00088 self._frame.layout().addRow(QLabel('Fusion gyro: '), self.enableFuseGyro)
00089
00090 def getName(self):
00091 return self._name
00092
00093 def add(self):
00094 old = self._name
00095 self._name = str(self.name.text())
00096
00097 if not self.nameIsValid():
00098 error = QErrorMessage()
00099 error.setWindowTitle("Same name error")
00100 error.showMessage("Name already taken.")
00101 error.exec_()
00102 self._name = old
00103 self._isValid = False
00104 return
00105
00106 self._pubHz = str(self.pubHz.text())
00107 self._name = str(self.name.text())
00108 self._frameId = str(self.frameId.text())
00109 self._decAng = str(self.decAng.text())
00110 self._orientation = str(self.orientation.text())
00111 self._fusionHz = str(self.fusionHz.text())
00112 self._enableFuseGyro = self.enableFuseGyro.isChecked()
00113
00114 if int(self._pubHz) > int(self._fusionHz):
00115 QMessageBox.critical(self._frame, "Error", "Fusion Hz must be equal or bigger then publish Hz.")
00116 return
00117
00118 self._isValid = True