コード例 #1
0
    def __init__(self, planPlayback, playbackRobotModel,
                 playbackJointController, robotStateModel,
                 robotStateJointController, manipPlanner):

        self.planPlayback = planPlayback
        self.playbackRobotModel = playbackRobotModel
        self.playbackJointController = playbackJointController
        self.robotStateModel = robotStateModel
        self.robotStateJointController = robotStateJointController
        self.manipPlanner = manipPlanner
        manipPlanner.connectPlanCommitted(self.onPlanCommitted)
        manipPlanner.connectUseSupports(self.updateButtonColor)

        self.autoPlay = True
        self.useOperationColors()

        self.planFramesObj = None
        self.plan = None
        self.poseInterpolator = None
        self.startTime = 0.0
        self.endTime = 1.0
        self.animationTimer = TimerCallback()
        self.animationTimer.targetFps = 60
        self.animationTimer.callback = self.updateAnimation
        self.animationClock = SimpleTimer()

        loader = QtUiTools.QUiLoader()
        uifile = QtCore.QFile(':/ui/ddPlaybackPanel.ui')
        assert uifile.open(uifile.ReadOnly)

        self.widget = loader.load(uifile)
        uifile.close()

        self.ui = WidgetDict(self.widget.children())

        self.ui.viewModeCombo.connect('currentIndexChanged(const QString&)',
                                      self.viewModeChanged)
        self.ui.playbackSpeedCombo.connect(
            'currentIndexChanged(const QString&)', self.playbackSpeedChanged)
        self.ui.interpolationCombo.connect(
            'currentIndexChanged(const QString&)', self.interpolationChanged)

        self.ui.samplesSpinBox.connect('valueChanged(int)',
                                       self.numberOfSamplesChanged)
        self.ui.playbackSlider.connect('valueChanged(int)',
                                       self.playbackSliderValueChanged)

        self.ui.animateButton.connect('clicked()', self.animateClicked)
        self.ui.hideButton.connect('clicked()', self.hideClicked)
        self.ui.executeButton.connect('clicked()', self.executeClicked)
        self.ui.executeButton.setShortcut(QtGui.QKeySequence('Ctrl+Return'))
        self.ui.stopButton.connect('clicked()', self.stopClicked)

        self.ui.executeButton.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        self.ui.executeButton.connect(
            'customContextMenuRequested(const QPoint&)',
            self.showExecuteContextMenu)

        self.setPlan(None)
        self.hideClicked()
コード例 #2
0
ファイル: planplayback.py プロジェクト: wxmerkt/director
    def playPoses(self, poseTimes, poses, jointController):

        f = self.getPoseInterpolator(poseTimes, poses)

        timer = SimpleTimer()

        def updateAnimation():

            tNow = timer.elapsed() * self.playbackSpeed

            if tNow > poseTimes[-1]:
                pose = poses[-1]
                jointController.setPose('plan_playback', pose)

                if self.animationCallback:
                    self.animationCallback()

                return False

            pose = f(tNow)
            jointController.setPose('plan_playback', pose)

            if self.animationCallback:
                self.animationCallback()

        self.animationTimer = TimerCallback()
        self.animationTimer.targetFps = 60
        self.animationTimer.callback = updateAnimation
        self.animationTimer.start()
        updateAnimation()
コード例 #3
0
ファイル: matlab.py プロジェクト: wxmerkt/director
    def waitForResult(self, timeout=None):

        t = SimpleTimer()

        while self.isAlive():

            result = self.checkForResult()
            if result is not None:
                return result

            if timeout is not None and t.elapsed() > timeout:
                return None
コード例 #4
0
ファイル: robottasks.py プロジェクト: liutaotao369/director
    def run(self):

        delayTime = self.properties.getProperty('Delay time')
        t = SimpleTimer()

        while True:

            elapsed = t.elapsed()
            if elapsed >= delayTime:
                break

            self.statusMessage = 'Waiting %.1f seconds' % (delayTime - elapsed)
            yield
コード例 #5
0
    def __init__(self):

        self.lastAtlasStatusMessage = None
        self.lastControllerStatusMessage = None
        self.lastAtlasBatteryDataMessage = None
        self.lastAtlasElectricArmStatusMessage = None
        self.lastControllerRateMessage = None
        self.maxPressureHistory = deque([0.0], 10)
        self.averageRecentMaxPressure = 0.0
        self._setupSubscriptions()
        self.timer = SimpleTimer()

        self.sentStandUtime = None
        self.startupStage = 0
        self._behaviorMap = None
        self._controllerStatusMap = None
コード例 #6
0
ファイル: robottasks.py プロジェクト: liutaotao369/director
    def run(self):
        def getMsg():
            return robotSystem.atlasDriver.lastControllerStatusMessage

        def isExecuting():
            return getMsg(
            ).execution_status == lcmdrc.plan_status_t.EXECUTION_STATUS_EXECUTING

        # wait for first status message
        while not getMsg():
            yield

        if isExecuting():
            raise Exception(
                'error, invoked during plan execution and cannot guarantee safety.'
            )

        t = SimpleTimer()
        lastPlanStartTime = getMsg().last_plan_start_utime

        # wait for next plan to begin
        self.statusMessage = 'Waiting for %s to begin...' % self.getTypeLabel()
        while getMsg().last_plan_start_utime == lastPlanStartTime:

            if t.elapsed() > self.properties.getProperty('Timeout'):
                yield self.promptUserForPlanRecommit()
                t.reset()
                self.recommitPlan()
            else:
                yield

        # wait for execution
        self.statusMessage = 'Waiting for %s execution...' % self.getTypeLabel(
        )
        while getMsg(
        ).execution_status == lcmdrc.plan_status_t.EXECUTION_STATUS_EXECUTING:
            if getMsg().plan_type != self.getType():
                raise Exception('error, unexpected execution plan type: %s' %
                                getMsg().plan_type)
            yield

        self.statusMessage = 'Waiting for recent robot state...'
        while robotSystem.robotStateJointController.lastRobotStateMessage.utime < getMsg(
        ).last_plan_start_utime:
            yield
コード例 #7
0
ファイル: lcmloggerwidget.py プロジェクト: wxmerkt/director
    def updateState(self):

        t = SimpleTimer()
        self.manager.updateExistingLoggerProcesses()

        activeLogFiles = self.manager.getActiveLogFilenames()
        self.numProcesses = len(self.manager.getActiveLoggerPids())
        self.numLogFiles = len(activeLogFiles)

        if self.numLogFiles == 1:
            self.lastActiveLogFile = activeLogFiles[0]

        if self.numProcesses == 0:
            self.button.text = 'start logger'
        elif self.numProcesses == 1:
            self.button.text = 'stop logger'
        elif self.numProcesses > 1:
            self.button.text = 'stop all loggers'

        statusDescription = 'active' if self.numProcesses else 'last'
        logFileDescription = self.lastActiveLogFile or '<unknown>'
        self.button.setToolTip('%s log file: %s' %
                               (statusDescription, logFileDescription))
コード例 #8
0
 def delay(self, delayTimeInSeconds):
     yield
     t = SimpleTimer()
     while t.elapsed() < delayTimeInSeconds:
         yield
コード例 #9
0
 def testJoint(self, jointId):
     self.jointId = jointId
     self.testTimer = SimpleTimer()
     self.start()
コード例 #10
0
 def __init__(self):
     self.subscriber = None
     self.transforms = []
     self.timer = SimpleTimer()
     self.paused = True
コード例 #11
0
ファイル: asynctaskqueue.py プロジェクト: wxmerkt/director
    def __call__(self):

        t = SimpleTimer()
        while t.elapsed() < self.delayTimeInSeconds:
            yield