DiffClose.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
00004 
00005 
00006 class DiffClose(DeviceFrame):
00007     def __init__(self, frame, data, motors):
00008         DeviceFrame.__init__(self, DIFF_CLOSE, frame, data)
00009         self.motors = motors
00010         self._pubHz = '50'
00011         self._name = 'diff_driver'
00012         self._rWheel = '0.065'
00013         self._width = '0.255'
00014         self._base = 'base_link'
00015         self._odom = 'odom_link'
00016         self._slip = '0.85'
00017         self._maxAg = '16.0'
00018         self._maxLn = '16.0'
00019         self._motorL = '0'
00020         self._motorR = '1'
00021 
00022     def fromDict(self, data):
00023         self._pubHz = data['pubHz']
00024         self._name = data['name']
00025         self._rWheel = data['rWheel']
00026         self._width = data['width']
00027         self._base = data['base']
00028         self._odom = data['odom']
00029         self._slip = data['slip']
00030         self._maxAg = data['maxAg']
00031         self._maxLn = data['maxLn']
00032         self._motorL = data['motorL']
00033         self._motorR = data['motorR']
00034 
00035     def toDict(self):
00036         data = dict()
00037 
00038         data['type'] = DIFF_CLOSE
00039         data['pubHz'] = self._pubHz
00040         data['name'] = self._name
00041         data['rWheel'] = self._rWheel
00042         data['width'] = self._width
00043         data['base'] = self._base
00044         data['odom'] = self._odom
00045         data['slip'] = self._slip
00046         data['maxAg'] = self._maxAg
00047         data['maxLn'] = self._maxLn
00048         data['motorL'] = self._motorL
00049         data['motorR'] = self._motorR
00050 
00051         return data
00052 
00053     def printDetails(self):
00054         self._frame.layout().addRow(QLabel('Publish Hz: '), QLabel(self._pubHz))
00055         self._frame.layout().addRow(QLabel('Name: '), QLabel(self._name))
00056         self._frame.layout().addRow(QLabel('Radius of the wheel (in meters): '), QLabel(self._rWheel))
00057         self._frame.layout().addRow(QLabel('Width of the robot (in meters): '), QLabel(self._width))
00058         self._frame.layout().addRow(QLabel('Base Link name: '), QLabel(self._base))
00059         self._frame.layout().addRow(QLabel('Odometry name: '), QLabel(self._odom))
00060         self._frame.layout().addRow(QLabel('Slip factor: '), QLabel(self._slip))
00061         self._frame.layout().addRow(QLabel('Max angular: '), QLabel(self._maxAg))
00062         self._frame.layout().addRow(QLabel('Max linear: '), QLabel(self._maxLn))
00063         self._frame.layout().addRow(QLabel('MotorL: '), QLabel(self.motors[int(self._motorL)]))
00064         self._frame.layout().addRow(QLabel('MotorR: '), QLabel(self.motors[int(self._motorR)]))
00065 
00066     def getName(self):
00067         return self._name
00068 
00069     def showDetails(self, items=None):
00070         self.motorsL = QComboBox()
00071         self.motorsR = QComboBox()
00072 
00073         for i in xrange(len(self.motors)):
00074             self.motorsL.addItem(self.motors[i], str(i))
00075             self.motorsR.addItem(self.motors[i], str(i))
00076         self.motorsL.setCurrentIndex(int(self._motorL))
00077         self.motorsR.setCurrentIndex(int(self._motorR))
00078         self.pubHz = QLineEdit(self._pubHz)
00079         self.name = QLineEdit(self._name)
00080         self.rWheel = QLineEdit(self._rWheel)
00081         self.width = QLineEdit(self._width)
00082         self.base = QLineEdit(self._base)
00083         self.odom = QLineEdit(self._odom)
00084         self.slip = QLineEdit(self._slip)
00085         self.maxAg = QLineEdit(self._maxAg)
00086         self.maxLn = QLineEdit(self._maxLn)
00087 
00088         self._frame.layout().addRow(QLabel('Publish Hz: '), self.pubHz)
00089         self._frame.layout().addRow(QLabel('Name: '), self.name)
00090         self._frame.layout().addRow(QLabel('Radius of the wheel (in meters): '), self.rWheel)
00091         self._frame.layout().addRow(QLabel('Width of the robot (in meters): '), self.width)
00092         self._frame.layout().addRow(QLabel('Base Link name: '), self.base)
00093         self._frame.layout().addRow(QLabel('Odometry name: '), self.odom)
00094         self._frame.layout().addRow(QLabel('Slip factor: '), self.slip)
00095         self._frame.layout().addRow(QLabel('Max angular: '), self.maxAg)
00096         self._frame.layout().addRow(QLabel('Max linear: '), self.maxLn)
00097         self._frame.layout().addRow(self.motorsL, self.motorsR)
00098 
00099     def add(self):
00100         old = self._name
00101         self._name = str(self.name.text())
00102         self._motorL = str(self.motorsL.itemData(self.motorsL.currentIndex()).toString())
00103         self._motorR = str(self.motorsR.itemData(self.motorsR.currentIndex()).toString())
00104 
00105         if not self.nameIsValid():
00106             error = QErrorMessage()
00107             error.setWindowTitle("Same name error")
00108             error.showMessage("Name already taken.")
00109             error.exec_()
00110             self._name = old
00111             self._isValid = False
00112             return
00113 
00114         if self._motorL == self._motorR:
00115             error = QErrorMessage()
00116             error.setWindowTitle(" Error")
00117             error.showMessage("Can not have the same motor in the right and left fields.")
00118             error.exec_()
00119             self._isValid = False
00120             return
00121 
00122         self._isValid = True
00123         self._pubHz = str(self.pubHz.text())
00124         self._name = str(self.name.text())
00125         self._rWheel = str(self.rWheel.text())
00126         self._width = str(self.width.text())
00127         self._base = str(self.base.text())
00128         self._odom = str(self.odom.text())
00129         self._slip = str(self.slip.text())
00130         self._maxAg = str(self.maxAg.text())
00131         self._maxLn = str(self.maxLn.text())
00132 
00133     def saveToFile(self, file):
00134         file.write('Diff/publishHz: ' + self._pubHz + '\n')
00135         file.write('Diff/name: ' + self._name + '\n')
00136         file.write('Diff/rWheel: ' + self._rWheel + '\n')
00137         file.write('Diff/width: ' + self._width + '\n')
00138         file.write('Diff/baseLink: ' + self._base + '\n')
00139         file.write('Diff/odom: ' + self._odom + '\n')
00140         file.write('Diff/slip: ' + self._slip + '\n')
00141         file.write('Diff/maxAng: ' + self._maxAg + '\n')
00142         file.write('Diff/maxLin: ' + self._maxLn + '\n')
00143         file.write('Diff/motorL: ' + self._motorL + '\n')
00144         file.write('Diff/motorR: ' + self._motorR + '\n')


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