def __init__(self, scale): super(QtGui.QMainWindow, self).__init__() self.mMapViewer = MapViewer(self) self.timerId = -1 self.mgr = TurtlebotManager(0.5) self.scale = scale self.initUI()
def __init__(self, origin, delta, scale=1.0): super(QtGui.QMainWindow, self).__init__() self.mMapViewer = MapViewer(self) self.timerId = -1 self.mgr = TurtlebotManager(delta, origin, 0.05) self.scale = scale self.initUI()
def __init__(self): super(QtGui.QMainWindow, self).__init__() self.mMapViewer = MapViewer(self) self.addEnvModal = False self.initUI() self.toolWindow = MapViewPlanForm(self) self.toolWindow.show()
def __init__(self, size): super(QtGui.QMainWindow, self).__init__() self.formSize = size self.mMapViewer = MapViewer(self) self.resize(self.formSize[0], self.formSize[1]) self.configWindow = MapViewConfigForm(self) self.initUI() self.cursorPos = None
def __init__(self, size): super(QtGui.QMainWindow, self).__init__() self.formSize = size self.mMapViewer = MapViewer(self) self.resize(self.formSize[0], self.formSize[1]) self.sampleNum = 8 self.populationNum = 200 self.generationNum = 1000 self.fitnessMgr = FitnessSpaceManager() self.configWindow = MapViewConfigForm(self) self.initUI() self.cursorPos = None self.planner = None
def initUI(self): self.setWindowTitle("HDCG Data Gen") openAction = QtGui.QAction('Open', self) openAction.triggered.connect(self.openMap) exportAction = QtGui.QAction('Export', self) exportAction.triggered.connect(self.exportXML) menubar = self.menuBar() fileMenu = menubar.addMenu('&File') fileMenu.addAction(openAction) fileMenu.addAction(exportAction) configAction = QtGui.QAction('Config', self) configAction.triggered.connect(self.openConfig) randomAction = QtGui.QAction('Random', self) randomAction.triggered.connect(self.randomMap) sampleSpatialRelationAction = QtGui.QAction('Random Spatial Relation', self) sampleSpatialRelationAction.triggered.connect(self.sampleSpatialRelation) batchAction = QtGui.QAction('Batch', self) batchAction.triggered.connect(self.batchGen) toolMenu = menubar.addMenu('&Tool') toolMenu.addAction(configAction) toolMenu.addAction(randomAction) toolMenu.addAction(sampleSpatialRelationAction) toolMenu.addAction(batchAction) self.view = MapViewer(self) self.setCentralWidget(self.view) self.obsConfig = ObstacleEditConfig() self.paramConfig = None self.show()
class MapViewForm(QtGui.QMainWindow): ''' classdocs ''' def __init__(self, origin, delta, scale=1.0): super(QtGui.QMainWindow, self).__init__() self.mMapViewer = MapViewer(self) self.timerId = -1 self.mgr = TurtlebotManager(delta, origin, 0.05) self.scale = scale self.initUI() def initUI(self): mapAction = QtGui.QAction('Map', self) mapAction.triggered.connect(self.showOpenMapFileDialog) pathAction = QtGui.QAction('Path', self) pathAction.triggered.connect(self.showOpenPathFileDialog) startAction = QtGui.QAction('Start', self) startAction.triggered.connect(self.startMonitor) stopAction = QtGui.QAction('Stop', self) stopAction.triggered.connect(self.stopMonitor) self.addPointAction = QtGui.QAction('Add', self) self.addPointAction.triggered.connect(self.addPoint) self.clearPointsAction = QtGui.QAction('clear', self) self.clearPointsAction.triggered.connect(self.clearPoints) menubar = self.menuBar() mapMenu = menubar.addMenu('&Map') mapMenu.addAction(mapAction) pathMenu = menubar.addMenu('&Path') pathMenu.addAction(pathAction) startMenu = menubar.addMenu('&Start') startMenu.addAction(startAction) stopMenu = menubar.addMenu('&Stop') stopMenu.addAction(stopAction) self.toolbar = self.addToolBar('toolbar') self.toolbar.addAction(mapAction) self.toolbar.addAction(pathAction) self.toolbar.addAction(startAction) self.toolbar.addAction(stopAction) self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu); self.connect(self, QtCore.SIGNAL('customContextMenuRequested(const QPoint&)'), self.contextMenuRequested) self.setCentralWidget(self.mMapViewer) self.show() def showOpenMapFileDialog(self): fname = QtGui.QFileDialog.getOpenFileName(self, 'Open file') pixmap = QtGui.QPixmap(fname) self.mMapViewer.setPixmap(pixmap) self.world_width = pixmap.width() self.world_height = pixmap.height() print str(self.world_width) + " - " + str(self.world_height) self.mMapViewer.mShowPoint = True self.mgr.scale = self.scale self.mgr.worldsize = [self.world_width, self.world_height] def showOpenPathFileDialog(self): fname = QtGui.QFileDialog.getOpenFileName(self, 'Open file') mapLoader = PlannedPathLoader() print fname mapLoader.load(str(fname)) directory = os.path.dirname(str(fname)) mapFile = directory + "/" + str(mapLoader.mapFile) print mapFile pixmap = QtGui.QPixmap(mapFile) self.mMapViewer.setPixmap(pixmap) self.world_width = pixmap.width() self.world_height = pixmap.height() print str(self.world_width) + " - " + str(self.world_height) self.mMapViewer.mShowPoint = True self.mgr.scale = self.scale self.mgr.worldsize = [self.world_width, self.world_height] self.mgr.loadPath(mapLoader.path) self.mMapViewer.plannedPath = mapLoader.path def timerEvent(self, e): #print "updating" self.mgr.update() #print str(self.mgr.currentPos[0]) + " " + str(self.mgr.currentPos[1]) + " " + str(self.mgr.currentOrientation) #posx = int(self.mgr.currentPos[0] * self.scale) + self.world_width/2 #posy = int(self.mgr.currentPos[1]* self.scale) + self.world_height/2 posx = self.mgr.currentPos[0] posy = self.mgr.currentPos[1] self.mMapViewer.mPoint.setX(posx) self.mMapViewer.mPoint.setY(posy) self.mMapViewer.mPointYaw = self.mgr.currentOrientation self.update() self.mMapViewer.plannedPathReachedIdx = self.mgr.tIdx self.mgr.ctrl() def startMonitor(self): self.timerId = self.startTimer(50) def stopMonitor(self): self.killTimer(self.timerId) def addPoint(self, pos): new_point = [self.clickPoint.x(), self.clickPoint.y()] print "add point " + str(new_point) self.mgr.plannedPath.addWaypoint(new_point) self.mgr.plannedPath.update() self.mMapViewer.plannedPath.addWaypoint(new_point) self.mMapViewer.plannedPath.update() self.update() def clearPoints(self): print "clear points" self.mgr.plannedPath.clearWaypoints() self.mMapViewer.plannedPath.clearWaypoints() self.update() def contextMenuRequested(self, point): menu = QtGui.QMenu(self) addPointAction = menu.addAction("Add Point") addPointAction.triggered.connect(self.addPoint) clearPointsAction = menu.addAction("Clear Points") clearPointsAction.triggered.connect(self.clearPoints) self.clickPoint = self.mMapViewer.mapFromGlobal( self.mapToGlobal(point) ) menu.exec_(self.mapToGlobal(point))
class MapViewForm(QtGui.QMainWindow): def __init__(self): super(QtGui.QMainWindow, self).__init__() self.mMapViewer = MapViewer(self) self.addEnvModal = False self.initUI() self.toolWindow = MapViewPlanForm(self) self.toolWindow.show() def initUI(self): mapAction = QtGui.QAction('Map', self) mapAction.triggered.connect(self.showOpenFileDialog) rndEnvAction = QtGui.QAction('Random', self) rndEnvAction.triggered.connect(self.randEnv) mmEnvAction = QtGui.QAction('MultiModal',self) mmEnvAction.triggered.connect(self.mmEnv) showPlanDiagAction = QtGui.QAction('PlanDiag', self) showPlanDiagAction.triggered.connect(self.showPlanDiag) menubar = self.menuBar() mapMenu = menubar.addMenu('&Map') mapMenu.addAction(mapAction) envMenu = menubar.addMenu('&Env') envMenu.addAction(rndEnvAction) envMenu.addAction(mmEnvAction) self.toolbar = self.addToolBar('toolbar') self.toolbar.addAction(mapAction) self.toolbar.addAction(showPlanDiagAction) self.setCentralWidget(self.mMapViewer) self.mMapViewer.setMouseTracking(True) self.setWindowTitle('Map View') self.setGeometry(300, 300, 200, 200) self.show() def mmEnv(self): self.addEnvModal = True QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.CrossCursor)) def randEnv(self): self.mMapViewer.geneRndEnv() self.mMapViewer.updateEnv() self.update() def showPlanDiag(self): self.toolWindow.show() def showOpenFileDialog(self): fname = QtGui.QFileDialog.getOpenFileName(self, 'Open file', '~') pixmap = QtGui.QPixmap(fname) self.mMapViewer.setPixmap(pixmap) self.mMapViewer.initMapInfo() def mousePressEvent(self, QMouseEvent): super(MapViewForm, self).mousePressEvent(QMouseEvent) if self.addEnvModal == True: if QMouseEvent.button()==QtCore.Qt.RightButton: self.addEnvModal = False self.mMapViewer.addingEnvModal = False QtGui.QApplication.restoreOverrideCursor() def decomposeMap(self): print "I am pressed"
class MapViewForm(QtGui.QMainWindow): ''' classdocs ''' def __init__(self, scale): super(QtGui.QMainWindow, self).__init__() self.mMapViewer = MapViewer(self) self.timerId = -1 self.mgr = TurtlebotManager(0.5) self.scale = scale self.initUI() def initUI(self): mapAction = QtGui.QAction('Map', self) mapAction.triggered.connect(self.showOpenFileDialog) startAction = QtGui.QAction('Start', self) startAction.triggered.connect(self.startMonitor) stopAction = QtGui.QAction('Stop', self) stopAction.triggered.connect(self.stopMonitor) menubar = self.menuBar() mapMenu = menubar.addMenu('&Map') mapMenu.addAction(mapAction) startMenu = menubar.addMenu('&Start') startMenu.addAction(startAction) stopMenu = menubar.addMenu('&Stop') stopMenu.addAction(stopAction) self.toolbar = self.addToolBar('toolbar') self.toolbar.addAction(mapAction) self.toolbar.addAction(startAction) self.toolbar.addAction(stopAction) self.setCentralWidget(self.mMapViewer) self.show() def showOpenFileDialog(self): fname = QtGui.QFileDialog.getOpenFileName(self, 'Open file') mapLoader = PlannedPathLoader() print fname mapLoader.load(str(fname)) directory = os.path.dirname(str(fname)) mapFile = directory + "/" + str(mapLoader.mapFile) print mapFile pixmap = QtGui.QPixmap(mapFile) self.mMapViewer.setPixmap(pixmap) self.world_width = pixmap.width() self.world_height = pixmap.height() print str(self.world_width) + " - " + str(self.world_height) self.mMapViewer.mShowPoint = True self.mgr.scale = 5.0 self.mgr.worldsize = [self.world_width, self.world_height] self.mgr.loadPath(mapLoader.path) self.mMapViewer.plannedPath = mapLoader.path def timerEvent(self, e): #print "updating" self.mgr.update() #print str(self.mgr.currentPos[0]) + " " + str(self.mgr.currentPos[1]) + " " + str(self.mgr.currentOrientation) #posx = int(self.mgr.currentPos[0] * self.scale) + self.world_width/2 #posy = int(self.mgr.currentPos[1]* self.scale) + self.world_height/2 posx = self.mgr.currentPos[0] posy = self.mgr.currentPos[1] ''' xPos = self.mMapViewer.mPoint.x() yPos = self.mMapViewer.mPoint.y() if xPos < self.mMapViewer.width(): self.mMapViewer.mPoint.setX(xPos+1) if self.mMapViewer.mPoint.y() < self.mMapViewer.height(): self.mMapViewer.mPoint.setY(yPos+1) self.statusBar().showMessage(str(xPos)+"+"+str(yPos)) ''' self.mMapViewer.mPoint.setX(posx) self.mMapViewer.mPoint.setY(posy) self.mMapViewer.mPointYaw = self.mgr.currentOrientation self.update() self.mgr.control() self.mMapViewer.plannedPathReachedIdx = self.mgr.tIdx def startMonitor(self): self.timerId = self.startTimer(50) def stopMonitor(self): self.killTimer(self.timerId)
class MapViewWindow(QtGui.QMainWindow): def __init__(self): super(QtGui.QMainWindow, self).__init__() self.initUI() def initUI(self): self.setWindowTitle("HDCG Data Gen") openAction = QtGui.QAction('Open', self) openAction.triggered.connect(self.openMap) exportAction = QtGui.QAction('Export', self) exportAction.triggered.connect(self.exportXML) menubar = self.menuBar() fileMenu = menubar.addMenu('&File') fileMenu.addAction(openAction) fileMenu.addAction(exportAction) configAction = QtGui.QAction('Config', self) configAction.triggered.connect(self.openConfig) randomAction = QtGui.QAction('Random', self) randomAction.triggered.connect(self.randomMap) sampleSpatialRelationAction = QtGui.QAction('Random Spatial Relation', self) sampleSpatialRelationAction.triggered.connect(self.sampleSpatialRelation) batchAction = QtGui.QAction('Batch', self) batchAction.triggered.connect(self.batchGen) toolMenu = menubar.addMenu('&Tool') toolMenu.addAction(configAction) toolMenu.addAction(randomAction) toolMenu.addAction(sampleSpatialRelationAction) toolMenu.addAction(batchAction) self.view = MapViewer(self) self.setCentralWidget(self.view) self.obsConfig = ObstacleEditConfig() self.paramConfig = None self.show() def openMap(self): fname = QtGui.QFileDialog.getOpenFileName(self, 'Open file') if fname != None: self.view.openMap( str(fname) ) self.setWindowTitle( self.view.world.name ) self.path_plan_info = PathPlanningInfo( self.view.world ) self.paramConfig = ParamConfig(self.path_plan_info) def openConfig(self): if self.path_plan_info != None: self.paramConfig.show() def mousePressEvent(self, e): if e.button() == QtCore.Qt.LeftButton: x_pos = e.pos().x() y_pos = e.pos().y() for obs in self.view.world.obstacles: if obs.contains( [x_pos, y_pos] ): print obs.name self.obsConfig.setObstacle(obs) self.obsConfig.show() def randomMap(self): print "random map" self.view.world.start = self.view.world.samplePoint() self.view.world.goal = self.view.world.samplePoint() self.repaint() def sampleSpatialRelation(self, hide_message = False): self.path_plan_info.updateRandomSpatialRelation() if hide_message == False: QtGui.QMessageBox.about( self, "Spatial Relation", str( self.path_plan_info.spatial_relations[0] ) ) def exportXML(self): fname = QtGui.QFileDialog.getSaveFileName(self, 'Save file') if fname != None: self.path_plan_info.write_to_xml(str(fname)) def batchGen(self): batch_info = BatchInfo() batch_config = BatchConfig(batch_info) batch_config.exec_() for i in range(batch_info.batch_num): self.randomMap() self.sampleSpatialRelation(True) self.path_plan_info.path_output_file = batch_info.workspace + "/" + self.path_plan_info.world.name + "-" + str(i) fname = self.path_plan_info.path_output_file + ".xml" self.path_plan_info.write_to_xml(fname) cmd = batch_info.workspace + "/h2p-harrts-demo" os.system(cmd + " " + fname) return
class MapViewForm(QtGui.QMainWindow): def __init__(self, size): super(QtGui.QMainWindow, self).__init__() self.formSize = size self.mMapViewer = MapViewer(self) self.resize(self.formSize[0], self.formSize[1]) self.sampleNum = 8 self.populationNum = 200 self.generationNum = 1000 self.fitnessMgr = FitnessSpaceManager() self.configWindow = MapViewConfigForm(self) self.initUI() self.cursorPos = None self.planner = None def initUI(self): configAction = QtGui.QAction('Config', self) configAction.triggered.connect(self.configParam) optAction = QtGui.QAction('Optimize', self) optAction.triggered.connect(self.optimize) importAction = QtGui.QAction('Import', self) importAction.triggered.connect(self.importData) menubar = self.menuBar() configMenu = menubar.addMenu('&Config') configMenu.addAction(configAction) optMenu = menubar.addMenu('&Optimize') optMenu.addAction(optAction) importMenu = menubar.addMenu('&Import') importMenu.addAction(importAction) self.initContextMenu() self.mMapViewer.resize(self.formSize[0], self.formSize[1]) self.setCentralWidget(self.mMapViewer) self.show() def initContextMenu(self): self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.customContextMenuRequested.connect(self.showContextMenu) self.contextMenu = QtGui.QMenu(self) self.actionAddStart = self.contextMenu.addAction('start') self.actionAddEnd = self.contextMenu.addAction('end') self.actionAddStart.triggered.connect(self.addStart) self.actionAddEnd.triggered.connect(self.addEnd) def showContextMenu(self, pos): self.contextMenu.move(self.pos() + pos) self.cursorPos = pos self.contextMenu.show() def keyPressEvent(self, e): if e.key() == QtCore.Qt.Key_Left: print "letf" if self.fitnessMgr.currentFitnessIdx > 0: self.fitnessMgr.currentFitnessIdx -= 1 self.updateMapviewer() self.updateTitle() self.update() elif e.key() == QtCore.Qt.Key_Right: print "right" if self.fitnessMgr.currentFitnessIdx < self.fitnessMgr.fitnessNum - 1: self.fitnessMgr.currentFitnessIdx += 1 self.updateMapviewer() self.updateTitle() self.update() def addStart(self): self.mMapViewer.addStart(self.cursorPos) def addEnd(self): self.mMapViewer.addEnd(self.cursorPos) def configParam(self): self.configWindow.show() def optimize(self): if len(self.mMapViewer.startPos) == 0 or len( self.mMapViewer.endPos) == 0: msgBox = QtGui.QMessageBox() msgBox.setText("Start or End has not been set.") msgBox.exec_() return self.planner = MultiObjectivePathPlanner(self.fitnessMgr, self.mMapViewer.startPos, self.mMapViewer.endPos, self.sampleNum) position_range = [] for i in range(self.sampleNum): position_range.append([0, self.formSize[0] - 1]) position_range.append([0, self.formSize[1] - 1]) self.mMapViewer.pathList = self.planner.findSolutions( self.populationNum, self.generationNum, position_range) self.update() import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111) for p in self.planner.nsga.population: ax.plot(p.fitness[0], p.fitness[1], 'ro') plt.show() def updateTitle(self): self.setWindowTitle( str(self.fitnessMgr.currentFitnessIdx + 1) + "/" + str(self.fitnessMgr.fitnessNum)) def updateMapviewer(self): pixmap = self.fitnessMgr.pixmaps[self.fitnessMgr.currentFitnessIdx] self.mMapViewer.setPixmap(pixmap) def importData(self): fname = QtGui.QFileDialog.getOpenFileName(self, 'Open file') if fname == "" or fname == None: return pixmap = QtGui.QPixmap(fname) pixmap = pixmap.scaled(self.formSize[0], self.formSize[1]) print "W:" + str(pixmap.width()) + " H:" + str(pixmap.height()) self.fitnessMgr.addFitness(pixmap) self.fitnessMgr.currentFitnessIdx = self.fitnessMgr.fitnessNum - 1 self.updateMapviewer() self.updateTitle() self.update()
def main(): buildingTable = read_in_table_data() columbia = Village(Constants.MAP_NAME, buildingTable) MapViewer.displayMapWithVillage( columbia, highlightByCondition=[ (Building.isRectangular, Constants.RED), (Building.isDoubleSymmetricNotRectangular, Constants.YELLOW), (Building.isOnlyLeftRightSymmetric, Constants.BLUE), (Building.isOnlyTopBottomSymmetric, Constants.GREEN), (Building.isNotSymmetric, Constants.PURPLE) ]) MapViewer.displayMapWithVillage( columbia, highlightByCondition=[(Building.isLongerLeftRight, Constants.RED), (Building.isLongerTopBottom, Constants.BLUE), (Building.isLengthSame, Constants.GREEN)]) MapViewer.displayMapWithVillage( columbia, highlightByCondition=[ (Building.noTouchingBoundingBoxPoints, Constants.PURPLE), (Building.oneTouchingBoundingBoxPoint, Constants.YELLOW), (Building.twoTouchingBoundingBoxPoints, Constants.RED), (Building.threeTouchingBoundingBoxPoints, Constants.GREEN), (Building.fourTouchingBoundingBoxPoints, Constants.BLUE) ]) MapViewer.displayMapWithVillage(columbia, highlightByCondition=[ (Building.isSkinny, Constants.RED), (Building.isNotSkinny, Constants.BLUE) ]) MapViewer.displayMapWithVillage(columbia, highlightByCondition=[ (Building.isSmall, Constants.RED), (Building.isMedium, Constants.BLUE), (Building.isLarge, Constants.GREEN) ]) printBuildingDescriptionsByShape(columbia) printBuildingDescriptionsByShapeAndLocation(columbia) printBuildingsNearby(columbia) printBuildingsByDirectionalPositions(columbia) MapViewer.displayInteractiveMap(columbia) MapViewer.displaySimilarPointCluster(columbia, Utils.largest) MapViewer.displaySimilarPointCluster(columbia, Utils.smallest) MapViewer.displaySimilarPointCluster(columbia, Utils.largestNotInBuilding)
class MapViewForm(QtGui.QMainWindow): ''' classdocs ''' def __init__(self, origin, delta, scale=1.0): super(QtGui.QMainWindow, self).__init__() self.mMapViewer = MapViewer(self) self.timerId = -1 self.mgr = TurtlebotManager(delta, origin, 0.05) self.scale = scale self.initUI() def initUI(self): mapAction = QtGui.QAction('Map', self) mapAction.triggered.connect(self.showOpenMapFileDialog) pathAction = QtGui.QAction('Path', self) pathAction.triggered.connect(self.showOpenPathFileDialog) startAction = QtGui.QAction('Start', self) startAction.triggered.connect(self.startMonitor) stopAction = QtGui.QAction('Stop', self) stopAction.triggered.connect(self.stopMonitor) self.addPointAction = QtGui.QAction('Add', self) self.addPointAction.triggered.connect(self.addPoint) self.clearPointsAction = QtGui.QAction('clear', self) self.clearPointsAction.triggered.connect(self.clearPoints) menubar = self.menuBar() mapMenu = menubar.addMenu('&Map') mapMenu.addAction(mapAction) pathMenu = menubar.addMenu('&Path') pathMenu.addAction(pathAction) startMenu = menubar.addMenu('&Start') startMenu.addAction(startAction) stopMenu = menubar.addMenu('&Stop') stopMenu.addAction(stopAction) self.toolbar = self.addToolBar('toolbar') self.toolbar.addAction(mapAction) self.toolbar.addAction(pathAction) self.toolbar.addAction(startAction) self.toolbar.addAction(stopAction) self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.connect( self, QtCore.SIGNAL('customContextMenuRequested(const QPoint&)'), self.contextMenuRequested) self.setCentralWidget(self.mMapViewer) self.show() def showOpenMapFileDialog(self): fname = QtGui.QFileDialog.getOpenFileName(self, 'Open file') pixmap = QtGui.QPixmap(fname) self.mMapViewer.setPixmap(pixmap) self.world_width = pixmap.width() self.world_height = pixmap.height() print str(self.world_width) + " - " + str(self.world_height) self.mMapViewer.mShowPoint = True self.mgr.scale = self.scale self.mgr.worldsize = [self.world_width, self.world_height] def showOpenPathFileDialog(self): fname = QtGui.QFileDialog.getOpenFileName(self, 'Open file') mapLoader = PlannedPathLoader() print fname mapLoader.load(str(fname)) directory = os.path.dirname(str(fname)) mapFile = directory + "/" + str(mapLoader.mapFile) print mapFile pixmap = QtGui.QPixmap(mapFile) self.mMapViewer.setPixmap(pixmap) self.world_width = pixmap.width() self.world_height = pixmap.height() print str(self.world_width) + " - " + str(self.world_height) self.mMapViewer.mShowPoint = True self.mgr.scale = self.scale self.mgr.worldsize = [self.world_width, self.world_height] self.mgr.loadPath(mapLoader.path) self.mMapViewer.plannedPath = mapLoader.path def timerEvent(self, e): #print "updating" self.mgr.update() #print str(self.mgr.currentPos[0]) + " " + str(self.mgr.currentPos[1]) + " " + str(self.mgr.currentOrientation) #posx = int(self.mgr.currentPos[0] * self.scale) + self.world_width/2 #posy = int(self.mgr.currentPos[1]* self.scale) + self.world_height/2 posx = self.mgr.currentPos[0] posy = self.mgr.currentPos[1] self.mMapViewer.mPoint.setX(posx) self.mMapViewer.mPoint.setY(posy) self.mMapViewer.mPointYaw = self.mgr.currentOrientation self.update() self.mMapViewer.plannedPathReachedIdx = self.mgr.tIdx self.mgr.ctrl() def startMonitor(self): self.timerId = self.startTimer(50) def stopMonitor(self): self.killTimer(self.timerId) def addPoint(self, pos): new_point = [self.clickPoint.x(), self.clickPoint.y()] print "add point " + str(new_point) self.mgr.plannedPath.addWaypoint(new_point) self.mgr.plannedPath.update() self.mMapViewer.plannedPath.addWaypoint(new_point) self.mMapViewer.plannedPath.update() self.update() def clearPoints(self): print "clear points" self.mgr.plannedPath.clearWaypoints() self.mMapViewer.plannedPath.clearWaypoints() self.update() def contextMenuRequested(self, point): menu = QtGui.QMenu(self) addPointAction = menu.addAction("Add Point") addPointAction.triggered.connect(self.addPoint) clearPointsAction = menu.addAction("Clear Points") clearPointsAction.triggered.connect(self.clearPoints) self.clickPoint = self.mMapViewer.mapFromGlobal( self.mapToGlobal(point)) menu.exec_(self.mapToGlobal(point))
class MapViewForm(QtGui.QMainWindow): def __init__(self, size): super(QtGui.QMainWindow, self).__init__() self.formSize = size self.mMapViewer = MapViewer(self) self.resize(self.formSize[0], self.formSize[1]) self.configWindow = MapViewConfigForm(self) self.initUI() self.cursorPos = None def initUI(self): configAction = QtGui.QAction('Config', self) configAction.triggered.connect(self.configParam) optAction = QtGui.QAction('Optimize', self) optAction.triggered.connect(self.optimize) importAction = QtGui.QAction('Import', self) importAction.triggered.connect(self.importData) menubar = self.menuBar() configMenu = menubar.addMenu('&Config') configMenu.addAction(configAction) optMenu = menubar.addMenu('&Optimize') optMenu.addAction(optAction) importMenu = menubar.addMenu('&Import') importMenu.addAction(importAction) self.initContextMenu() self.mMapViewer.resize(self.formSize[0], self.formSize[1]) self.setCentralWidget(self.mMapViewer) self.show() def initContextMenu(self): self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.customContextMenuRequested.connect(self.showContextMenu) self.contextMenu = QtGui.QMenu(self) self.actionAddStart = self.contextMenu.addAction('start') self.actionAddEnd = self.contextMenu.addAction('end') self.actionAddStart.triggered.connect(self.addStart) self.actionAddEnd.triggered.connect(self.addEnd) def showContextMenu(self, pos): self.contextMenu.move(self.pos() + pos) self.cursorPos = pos self.contextMenu.show() def addStart(self): self.mMapViewer.addStart(self.cursorPos) def addEnd(self): self.mMapViewer.addEnd(self.cursorPos) def configParam(self): self.configWindow.show() def optimize(self): self.mMapViewer.mas.evolve(500) self.update() def importData(self): fname = QtGui.QFileDialog.getOpenFileName(self, 'Open file') pixmap = QtGui.QPixmap(fname) self.mMapViewer.setPixmap(pixmap) self.formSize[0] = pixmap.width() self.formSize[1] = pixmap.height() self.mMapViewer.resize(self.formSize[0], self.formSize[1]) self.imageData = pixmap.toImage() self.mMapViewer.updateData() self.update() def getDataVal(x, y): int_x = int(x) int_y = int(y) p = self.imageData.pixel(int_x, int_y) return QtGui.qGray(p)