DiffCloseFour.py
Go to the documentation of this file.
00001 __author__ = 'tom1231'
00002 from PyQt4.QtGui import *
00003 from BAL.Interface.DeviceFrame import DeviceFrame, DIFF_CLOSE_FOUR
00004 
00005 
00006 class DiffCloseFour(DeviceFrame):
00007 
00008     def __init__(self, frame, data, motors):
00009         DeviceFrame.__init__(self, DIFF_CLOSE_FOUR, frame, data)
00010         self.motors = motors
00011         self._pubHz = '50'
00012         self._name = 'diff_driver'
00013         self._rWheel = '0.065'
00014         self._width = '0.255'
00015         self._base = 'base_link'
00016         self._odom = 'odom_link'
00017         self._slip = '0.85'
00018         self._maxAg = '16.0'
00019         self._maxLn = '16.0'
00020         self._motorFL = '0'
00021         self._motorFR = '1'
00022         self._motorBL = '2'
00023         self._motorBR = '3'
00024 
00025     def fromDict(self, data):
00026         self._pubHz = data['pubHz']
00027         self._name = data['name']
00028         self._rWheel = data['rWheel']
00029         self._width = data['width']
00030         self._base = data['base']
00031         self._odom = data['odom']
00032         self._slip = data['slip']
00033         self._maxAg = data['maxAg']
00034         self._maxLn = data['maxLn']
00035         self._motorFL = data['motorFL']
00036         self._motorFR = data['motorFR']
00037         self._motorBL = data['motorBL']
00038         self._motorBR = data['motorBR']
00039 
00040     def add(self):
00041         old = self._name
00042         self._name = str(self.name.text())
00043         self._motorFL = str(self.motorsFL.itemData(self.motorsFL.currentIndex()).toString())
00044         self._motorFR = str(self.motorsFR.itemData(self.motorsFR.currentIndex()).toString())
00045         self._motorBL = str(self.motorsBL.itemData(self.motorsBL.currentIndex()).toString())
00046         self._motorBR = str(self.motorsBR.itemData(self.motorsBR.currentIndex()).toString())
00047 
00048         if not self.nameIsValid():
00049             error = QErrorMessage()
00050             error.setWindowTitle("Same name error")
00051             error.showMessage("Name already taken.")
00052             error.exec_()
00053             self._name = old
00054             self._isValid = False
00055             return
00056 
00057         if self._motorFL == self._motorFR or self._motorBL == self._motorBR or self._motorFL == self._motorBL or self._motorFL == self._motorBR or self._motorFR == self._motorBL or self._motorFR == self._motorBR:
00058             error = QErrorMessage()
00059             error.setWindowTitle(" Error")
00060             error.showMessage("Can not have the same motor in the right and left fields.")
00061             error.exec_()
00062             self._isValid = False
00063             return
00064 
00065         self._isValid = True
00066         self._pubHz = str(self.pubHz.text())
00067         self._name = str(self.name.text())
00068         self._rWheel = str(self.rWheel.text())
00069         self._width = str(self.width.text())
00070         self._base = str(self.base.text())
00071         self._odom = str(self.odom.text())
00072         self._slip = str(self.slip.text())
00073         self._maxAg = str(self.maxAg.text())
00074         self._maxLn = str(self.maxLn.text())
00075 
00076     def printDetails(self):
00077         self._frame.layout().addRow(QLabel('Publish Hz: '), QLabel(self._pubHz))
00078         self._frame.layout().addRow(QLabel('Name: '), QLabel(self._name))
00079         self._frame.layout().addRow(QLabel('Radius of the wheel (in meters): '), QLabel(self._rWheel))
00080         self._frame.layout().addRow(QLabel('Width of the robot (in meters): '), QLabel(self._width))
00081         self._frame.layout().addRow(QLabel('Base Link name: '), QLabel(self._base))
00082         self._frame.layout().addRow(QLabel('Odometry name: '), QLabel(self._odom))
00083         self._frame.layout().addRow(QLabel('Slip factor: '), QLabel(self._slip))
00084         self._frame.layout().addRow(QLabel('Max angular: '), QLabel(self._maxAg))
00085         self._frame.layout().addRow(QLabel('Max linear: '), QLabel(self._maxLn))
00086         self._frame.layout().addRow(QLabel('Motor front left: '), QLabel(self.motors[int(self._motorFL)]))
00087         self._frame.layout().addRow(QLabel('Motor front right: '), QLabel(self.motors[int(self._motorFR)]))
00088         self._frame.layout().addRow(QLabel('Motor back left: '), QLabel(self.motors[int(self._motorBL)]))
00089         self._frame.layout().addRow(QLabel('Motor back right: '), QLabel(self.motors[int(self._motorBR)]))
00090 
00091 
00092     def showDetails(self, items=None):
00093         self.motorsFL = QComboBox()
00094         self.motorsFR = QComboBox()
00095         self.motorsBL = QComboBox()
00096         self.motorsBR = QComboBox()
00097 
00098         for i in xrange(len(self.motors)):
00099             self.motorsFL.addItem(self.motors[i], str(i))
00100             self.motorsFR.addItem(self.motors[i], str(i))
00101             self.motorsBL.addItem(self.motors[i], str(i))
00102             self.motorsBR.addItem(self.motors[i], str(i))
00103         self.motorsFL.setCurrentIndex(int(self._motorFL))
00104         self.motorsFR.setCurrentIndex(int(self._motorFR))
00105         self.motorsBL.setCurrentIndex(int(self._motorBL))
00106         self.motorsBR.setCurrentIndex(int(self._motorBR))
00107         self.pubHz = QLineEdit(self._pubHz)
00108         self.name = QLineEdit(self._name)
00109         self.rWheel = QLineEdit(self._rWheel)
00110         self.width = QLineEdit(self._width)
00111         self.base = QLineEdit(self._base)
00112         self.odom = QLineEdit(self._odom)
00113         self.slip = QLineEdit(self._slip)
00114         self.maxAg = QLineEdit(self._maxAg)
00115         self.maxLn = QLineEdit(self._maxLn)
00116 
00117         self._frame.layout().addRow(QLabel('Publish Hz: '), self.pubHz)
00118         self._frame.layout().addRow(QLabel('Name: '), self.name)
00119         self._frame.layout().addRow(QLabel('Radius of the wheel (in meters): '), self.rWheel)
00120         self._frame.layout().addRow(QLabel('Width of the robot (in meters): '), self.width)
00121         self._frame.layout().addRow(QLabel('Base Link name: '), self.base)
00122         self._frame.layout().addRow(QLabel('Odometry name: '), self.odom)
00123         self._frame.layout().addRow(QLabel('Slip factor: '), self.slip)
00124         self._frame.layout().addRow(QLabel('Max angular: '), self.maxAg)
00125         self._frame.layout().addRow(QLabel('Max linear: '), self.maxLn)
00126         self._frame.layout().addRow(self.motorsFL, self.motorsFR)
00127         self._frame.layout().addRow(self.motorsBL, self.motorsBR)
00128 
00129     def getName(self):
00130         return self._name
00131 
00132     def saveToFile(self, file):
00133         file.write('Diff/publishHz: ' + self._pubHz + '\n')
00134         file.write('Diff/name: ' + self._name + '\n')
00135         file.write('Diff/rWheel: ' + self._rWheel + '\n')
00136         file.write('Diff/width: ' + self._width + '\n')
00137         file.write('Diff/baseLink: ' + self._base + '\n')
00138         file.write('Diff/odom: ' + self._odom + '\n')
00139         file.write('Diff/slip: ' + self._slip + '\n')
00140         file.write('Diff/maxAng: ' + self._maxAg + '\n')
00141         file.write('Diff/maxLin: ' + self._maxLn + '\n')
00142         file.write('Diff/motorFL: ' + self._motorFL + '\n')
00143         file.write('Diff/motorFR: ' + self._motorFR + '\n')
00144         file.write('Diff/motorBL: ' + self._motorBL + '\n')
00145         file.write('Diff/motorBR: ' + self._motorBR + '\n')
00146 
00147     def toDict(self):
00148         data = dict()
00149 
00150         data['type'] = DIFF_CLOSE_FOUR
00151         data['pubHz'] = self._pubHz
00152         data['name'] = self._name
00153         data['rWheel'] = self._rWheel
00154         data['width'] = self._width
00155         data['base'] = self._base
00156         data['odom'] = self._odom
00157         data['slip'] = self._slip
00158         data['maxAg'] = self._maxAg
00159         data['maxLn'] = self._maxLn
00160         data['motorFL'] = self._motorFL
00161         data['motorFR'] = self._motorFR
00162         data['motorBL'] = self._motorBL
00163         data['motorBR'] = self._motorBR
00164 
00165         return data


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