Source code for mobrob_behcon.strategies.rd_strategy

#!/usr/bin/env python
import rospy
from mobrob_behcon.strategies.strategy import Strategy

[docs]class RDStrategy(Strategy): """ The class RDStrategy The class is a child of the abstract class Strategy and manages the strategic level of the behaviours based control of the application **R**\ ightAngle\ **D**\ ock as statemachine. """
[docs] def __init__(self, dock, turn90): """ constructor :param dock: a BehaviourGroup containing the necessary behaviours for first task :type dock: BehaviourGroup :param turn90: a BehaviourGroup containing the necessary behaviours for second task :type turn90: BehaviourGroup """ super(RDStrategy, self).__init__() self.dock = dock self.turn90 = turn90 self.add_behgrp(dock) self.add_behgrp(turn90) self.activate_exclusive(dock)
[docs] def plan(self): """ plan() method, where the magic happens :). It contains and manages the state machine. """ rospy.loginfo("Strategy - dock=%s, turn90=%s", str(self.dock.success), str(self.turn90.success)) if self.dock.success == 0: self.dock.success = -1 self.activate_exclusive(self.turn90) if self.turn90.success == 0: self.finish = True if self.dock.success == 99: # emergency stop rospy.loginfo("success==99 -> emergency stop") self.finish = True