joystickTeleop.py
Go to the documentation of this file.
00001 __author__ = 'tom1231'
00002 from PyQt4.QtGui import *
00003 from BAL.Interface.DeviceFrame import DeviceFrame, EX_DEV, JOYSTICK
00004 from lxml.etree import SubElement
00005 
00006 
00007 class JoystickTeleop(DeviceFrame):
00008     def __init__(self, frame, data):
00009         DeviceFrame.__init__(self, EX_DEV, frame, data)
00010 
00011         self._maxSpeed = '1'
00012         self._maxSpeedAngular = '0.5'
00013         self._boost = '2'
00014         self._topic = 'diff/command'
00015         self._pubHz = '20'
00016         self._joystickNum = '0'
00017         self._upAndDownAxis = '1'
00018         self._leftAndRightNum = '0'
00019         self._boostButton = '4'
00020         self._driveButton = '5'
00021         self._upAndDownAxisDir = False
00022         self._leftAndRightDir = False
00023 
00024     def showDetails(self, items=None):
00025         self.maxSpeed = QLineEdit(self._maxSpeed)
00026         self.maxSpeedAngular = QLineEdit(self._maxSpeedAngular)
00027         self.boost = QLineEdit(self._boost)
00028         self.topic = QLineEdit(self._topic)
00029         self.pubHz = QLineEdit(self._pubHz)
00030         self.joystickNum = QLineEdit(self._joystickNum)
00031         self.upAndDownAxis = QLineEdit(self._upAndDownAxis)
00032         self.leftAndRightNum = QLineEdit(self._leftAndRightNum)
00033         self.boostButton = QLineEdit(self._boostButton)
00034         self.driveButton = QLineEdit(self._driveButton)
00035         self.upAndDownAxisDir = QCheckBox('')
00036         self.leftAndRightDir = QCheckBox('')
00037 
00038         self.upAndDownAxisDir.setChecked(self._upAndDownAxisDir)
00039         self.leftAndRightDir.setChecked(self._leftAndRightDir)
00040 
00041         self._frame.layout().addRow(QLabel('Publish Hz: '), self.pubHz)
00042         self._frame.layout().addRow(QLabel('Differential drive topic: '), self.topic)
00043         self._frame.layout().addRow(QLabel('Max Speed linear: '), self.maxSpeed)
00044         self._frame.layout().addRow(QLabel('Max Speed angular: '), self.maxSpeedAngular)
00045         self._frame.layout().addRow(QLabel('Scale: '), self.boost)
00046         self._frame.layout().addRow(QLabel('Joystick number: '), self.joystickNum)
00047         self._frame.layout().addRow(QLabel('Up and down axis number: '), self.upAndDownAxis)
00048         self._frame.layout().addRow(QLabel('Left and right axis number: '), self.leftAndRightNum)
00049         self._frame.layout().addRow(QLabel('Scale button  number: '), self.boostButton)
00050         self._frame.layout().addRow(QLabel('Enable to drive button  number: '), self.driveButton)
00051         self._frame.layout().addRow(QLabel('Reverse  up and down axis: '), self.upAndDownAxisDir)
00052         self._frame.layout().addRow(QLabel('Reverse  left and right axis: '), self.leftAndRightDir)
00053 
00054     def add(self):
00055         if not self.nameIsValid():
00056             error = QErrorMessage()
00057             error.setWindowTitle("Same name error")
00058             error.showMessage("Name already taken.")
00059             error.exec_()
00060             self._isValid = False
00061             return
00062 
00063         self._maxSpeed = str(self.maxSpeed.text())
00064         self._boost = str(self.boost.text())
00065         self._topic = str(self.topic.text())
00066         self._pubHz = str(self.pubHz.text())
00067         self._maxSpeedAngular = str(self.maxSpeedAngular.text())
00068         self._joystickNum = str(self.joystickNum.text())
00069         self._upAndDownAxis = str(self.upAndDownAxis.text())
00070         self._leftAndRightNum = str(self.leftAndRightNum.text())
00071         self._boostButton = str(self.boostButton.text())
00072         self._driveButton = str(self.driveButton.text())
00073         self._upAndDownAxisDir = self.upAndDownAxisDir.isChecked()
00074         self._leftAndRightDir = self.leftAndRightDir.isChecked()
00075         self._isValid = True
00076 
00077     def printDetails(self):
00078         self._frame.layout().addRow(QLabel('Publish Hz: '), QLabel(self._pubHz))
00079         self._frame.layout().addRow(QLabel('Differential drive topic: '), QLabel(self._topic))
00080         self._frame.layout().addRow(QLabel('Max Speed linear: '), QLabel(self._maxSpeed))
00081         self._frame.layout().addRow(QLabel('Max Speed angular: '), QLabel(self._maxSpeedAngular))
00082         self._frame.layout().addRow(QLabel('Scale: '), QLabel(self._boost))
00083         self._frame.layout().addRow(QLabel('Joystick number: '), QLabel(self._joystickNum))
00084         self._frame.layout().addRow(QLabel('Up and down axis number: '), QLabel(self._upAndDownAxis))
00085         self._frame.layout().addRow(QLabel('Left and right axis number: '), QLabel(self._leftAndRightNum))
00086         self._frame.layout().addRow(QLabel('Scale button  number: '), QLabel(self._boostButton))
00087         self._frame.layout().addRow(QLabel('Enable to drive button  number: '), QLabel(self._driveButton))
00088 
00089         upAndDownDirText = 'Disable'
00090         leftAndRightDirText = 'Disable'
00091 
00092         if self._upAndDownAxisDir: upAndDownDirText = 'Enable'
00093         if self._leftAndRightDir: leftAndRightDirText = 'Enable'
00094 
00095         self._frame.layout().addRow(QLabel('Reverse  up and down axis: '), QLabel(upAndDownDirText))
00096         self._frame.layout().addRow(QLabel('Reverse  left and right axis: '), QLabel(leftAndRightDirText))
00097 
00098     def getName(self):
00099         return 'joystick_teleop'
00100 
00101     def toDict(self):
00102         data = dict()
00103 
00104         data['type'] = JOYSTICK
00105         data['maxSpeed'] = self._maxSpeed
00106         data['boost'] = self._boost
00107         data['topic'] = self._topic
00108         data['maxSpeedAngular'] = self._maxSpeedAngular
00109         data['pubHz'] = self._pubHz
00110         data['joystickNum'] = self._joystickNum
00111         data['upAndDownAxis'] = self._upAndDownAxis
00112         data['leftAndRightNum'] = self._leftAndRightNum
00113         data['driveButton'] = self._driveButton
00114         data['upAndDownAxisDir'] = self._upAndDownAxisDir
00115         data['leftAndRightDir'] = self._leftAndRightDir
00116         data['boostButton'] = self._boostButton
00117 
00118         return data
00119 
00120     def fromDict(self, data):
00121         self._maxSpeed = data['maxSpeed']
00122         self._boost = data['boost']
00123         self._topic = data['topic']
00124 
00125         if data.has_key('maxSpeedAngular'):
00126             self._maxSpeedAngular = data['maxSpeedAngular']
00127         if data.has_key('pubHz'):
00128             self._pubHz = data['pubHz']
00129         if data.has_key('joystickNum'):
00130             self._joystickNum = data['joystickNum']
00131         if data.has_key('upAndDownAxis'):
00132             self._upAndDownAxis = data['upAndDownAxis']
00133         if data.has_key('leftAndRightNum'):
00134             self._leftAndRightNum = data['leftAndRightNum']
00135         if data.has_key('driveButton'):
00136             self._driveButton = data['driveButton']
00137         if data.has_key('upAndDownAxisDir'):
00138             self._upAndDownAxisDir = data['upAndDownAxisDir']
00139         if data.has_key('leftAndRightDir'):
00140             self._leftAndRightDir = data['leftAndRightDir']
00141         if data.has_key('boostButton'):
00142             self._boostButton = data['boostButton']
00143 
00144     def saveToFile(self, parent):
00145         element = SubElement(parent, 'include', {
00146             'file': '$(find ric_base_station)/launch/joystick_teleop.launch'
00147         })
00148 
00149         SubElement(element, 'arg', {
00150             'name': 'maxspeed',
00151             'value': self._maxSpeed
00152         })
00153 
00154         SubElement(element, 'arg', {
00155             'name': 'boost',
00156             'value': self._boost
00157         })
00158 
00159         SubElement(element, 'arg', {
00160             'name': 'topic',
00161             'value': self._topic
00162         })
00163 
00164         SubElement(element, 'arg', {
00165             'name': 'pubHz',
00166             'value': self._pubHz
00167         })
00168 
00169         SubElement(element, 'arg', {
00170             'name': 'maxSpeedAngular',
00171             'value': self._maxSpeedAngular
00172         })
00173         SubElement(element, 'arg', {
00174             'name': 'LEFT_RIGHT_NUM',
00175             'value': self._leftAndRightNum
00176         })
00177         SubElement(element, 'arg', {
00178             'name': 'UP_DOWN_NUM',
00179             'value': self._upAndDownAxis
00180         })
00181         SubElement(element, 'arg', {
00182             'name': 'BOOST_SPEED_BUTTON',
00183             'value': self._boostButton
00184         })
00185         SubElement(element, 'arg', {
00186             'name': 'ENABLE_BUTTON',
00187             'value': self._driveButton
00188         })
00189         SubElement(element, 'arg', {
00190             'name': 'JOY_NUM',
00191             'value': self._joystickNum
00192         })
00193 
00194         upAndDownDirValue = '1'
00195         leftAndRightDirValue = '1'
00196 
00197         if self._upAndDownAxisDir: upAndDownDirValue = '-1'
00198         if self._leftAndRightDir: leftAndRightDirValue = '-1'
00199 
00200         SubElement(element, 'arg', {
00201             'name': 'REV_UP_DOWN',
00202             'value': upAndDownDirValue
00203         })
00204         SubElement(element, 'arg', {
00205             'name': 'REV_LEFT_RIGHT',
00206             'value': leftAndRightDirValue
00207         })


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