示例#1
0
 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()
示例#3
0
 def __init__(self):
     super(QtGui.QMainWindow, self).__init__()
     self.mMapViewer = MapViewer(self)
     self.addEnvModal = False
     
     self.initUI()
     
     self.toolWindow = MapViewPlanForm(self)
     self.toolWindow.show()
示例#4
0
    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, 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, scale):
     super(QtGui.QMainWindow, self).__init__()
     self.mMapViewer = MapViewer(self)
     self.timerId = -1
     self.mgr = TurtlebotManager(0.5)
     self.scale = scale
     self.initUI()
示例#7
0
    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
示例#8
0
 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))
示例#10
0
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"
示例#11
0
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)
        
示例#12
0
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
                    
                    
示例#13
0
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()
示例#14
0
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)
示例#15
0
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))
示例#16
0
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)