コード例 #1
0
        public SM_TakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool anyObject, string ObjectToFind, string objectLocation, bool succesGetClose)
        {
            SM = new FunctionBasedStateMachine();
            this.brain = brain;
            this.cmdMan = cmdMan;
            this.objectLocation = objectLocation;
            attemptCounter = 0;
            this.finalState = FinalStates.StillRunning;

            this.anyObject = anyObject;
            if (anyObject)
                this.ObjectToFind = ObjectToFind;
            else
                this.ObjectToFind = "objects";

            this.foundObject = ObjectToFind;
            this.succesGetClose = succesGetClose;

            SM.AddState(new FunctionState((int)States.GetCloseObjectLocation, new SMStateFuncion(GetCloseObjectLocation)));
            SM.AddState(new FunctionState((int)States.SearchCloseObjects, new SMStateFuncion(SearchCloseObjects)));
            SM.AddState(new FunctionState((int)States.TakeObject, new SMStateFuncion(TakeObject)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState)));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #2
0
        /// <summary>
        /// Creates the SM of the primite action: Take-Object
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        /// <param name="objectToTake">Name of the object to take. Default: empty string.</param>
        public NavigateTo(HAL9000Brain brain, HAL9000CmdMan cmdMan, GPSR_WORLD SMConfiguration, string locationToReach = "")
        {
            this.brain = brain;
            this.cmdMan = cmdMan;

            finalStatus = Status.Ready;

            this.SMConfiguration = SMConfiguration;
            this.locationToReach = locationToReach;

            navigSucceded = "I reach the location.";
            navigFailed = "I can't reach the location.";

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));

            SM.AddState(new FunctionState((int)States.RiseArms, RiseArms));
            SM.AddState(new FunctionState((int)States.Navigate, Navigate));
            SM.AddState(new FunctionState((int)States.Navigate_Succeeded, Navigate_Succeeded));
            SM.AddState(new FunctionState((int)States.Navigate_Failed, Navigate_Failed));

            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #3
0
        /// <summary>
        /// Creates a state machine for the test.
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        public Restaurant(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain  = brain;
            this.cmdMan = cmdMan;

            tableCommandRecognized   = false;
            kitchenCommandRecognized = false;
            tablesToVisit            = new Queue <MapLocation>();

            finalStatus = Status.Ready;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));
            SM.AddState(new FunctionState((int)States.FollowHuman, FollowHuman));
            SM.AddState(new FunctionState((int)States.WaitForLocationCommand, WaitForLocationCommand));
            SM.AddState(new FunctionState((int)States.WaitForLocationConfirmation, WaitForLocationConfirmation));
            SM.AddState(new FunctionState((int)States.WaitForTableDirectionCommand, WaitForTableDirectionCommand));
            SM.AddState(new FunctionState((int)States.WaitForTableDirectionConfirmation, WaitForTableDirectionConfirmation));
            SM.AddState(new FunctionState((int)States.WaitForOrderingCommand, WaitForOrderingCommand));
            SM.AddState(new FunctionState((int)States.WaitForOrderTableConfirmation, WaitForOrderTableConfirmation));
            SM.AddState(new FunctionState((int)States.GoToOrderTable, GoToOrderTable));
            SM.AddState(new FunctionState((int)States.TakeOrder, TakeOrder));
            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #4
0
        public SM_SearchAndTakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool anyObject, string ObjectToFind, bool useHandOver)
        {
            SM                        = new FunctionBasedStateMachine();
            this.brain                = brain;
            this.cmdMan               = cmdMan;
            this.attemptCounter       = 0;
            this.searchAttemptCounter = 0;
            this.finalState           = FinalStates.StillRunning;

            this.objectsFound    = new List <string>();
            this.useTakeHandOver = useHandOver;

            this.anyObject = anyObject;
            if (anyObject)
            {
                this.ObjectToFind = "objects";
            }
            else
            {
                this.ObjectToFind = ObjectToFind;
            }

            this.foundObject = ObjectToFind;

            SM.AddState(new FunctionState((int)States.SearchCloseObjects, new SMStateFuncion(SearchCloseObjects)));
            SM.AddState(new FunctionState((int)States.SetObjectToTake, new SMStateFuncion(SetObjectToTake)));
            SM.AddState(new FunctionState((int)States.TakeObject, new SMStateFuncion(TakeObject)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState)));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #5
0
        /// <summary>
        /// Creates a state machine for the test.
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        public Restaurant(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;

            tableCommandRecognized = false;
            kitchenCommandRecognized = false;
            tablesToVisit = new Queue<MapLocation>();

            finalStatus = Status.Ready;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));
            SM.AddState(new FunctionState((int)States.FollowHuman, FollowHuman));
            SM.AddState(new FunctionState((int)States.WaitForLocationCommand, WaitForLocationCommand));
            SM.AddState(new FunctionState((int)States.WaitForLocationConfirmation, WaitForLocationConfirmation));
            SM.AddState(new FunctionState((int)States.WaitForTableDirectionCommand, WaitForTableDirectionCommand));
            SM.AddState(new FunctionState((int)States.WaitForTableDirectionConfirmation, WaitForTableDirectionConfirmation));
            SM.AddState(new FunctionState((int)States.WaitForOrderingCommand, WaitForOrderingCommand));
            SM.AddState(new FunctionState((int)States.WaitForOrderTableConfirmation, WaitForOrderTableConfirmation));
            SM.AddState(new FunctionState((int)States.GoToOrderTable, GoToOrderTable));
            SM.AddState(new FunctionState((int)States.TakeOrder, TakeOrder));
            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #6
0
        public SM_TakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool anyObject, string ObjectToFind, string objectLocation, bool succesGetClose)

        {
            SM                  = new FunctionBasedStateMachine();
            this.brain          = brain;
            this.cmdMan         = cmdMan;
            this.objectLocation = objectLocation;
            attemptCounter      = 0;
            this.finalState     = FinalStates.StillRunning;

            this.anyObject = anyObject;
            if (anyObject)
            {
                this.ObjectToFind = ObjectToFind;
            }
            else
            {
                this.ObjectToFind = "objects";
            }

            this.foundObject    = ObjectToFind;
            this.succesGetClose = succesGetClose;

            SM.AddState(new FunctionState((int)States.GetCloseObjectLocation, new SMStateFuncion(GetCloseObjectLocation)));
            SM.AddState(new FunctionState((int)States.SearchCloseObjects, new SMStateFuncion(SearchCloseObjects)));
            SM.AddState(new FunctionState((int)States.TakeObject, new SMStateFuncion(TakeObject)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState)));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #7
0
        /// <summary>
        /// Creates the SM of the primite action: Take-Object
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        /// <param name="objectToTake">Name of the object to take. Default: empty string.</param>
        public NavigateTo(HAL9000Brain brain, HAL9000CmdMan cmdMan, GPSR_WORLD SMConfiguration, string locationToReach = "")
        {
            this.brain  = brain;
            this.cmdMan = cmdMan;

            finalStatus = Status.Ready;

            this.SMConfiguration = SMConfiguration;
            this.locationToReach = locationToReach;

            navigSucceded = "I reach the location.";
            navigFailed   = "I can't reach the location.";

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));

            SM.AddState(new FunctionState((int)States.RiseArms, RiseArms));
            SM.AddState(new FunctionState((int)States.Navigate, Navigate));
            SM.AddState(new FunctionState((int)States.Navigate_Succeeded, Navigate_Succeeded));
            SM.AddState(new FunctionState((int)States.Navigate_Failed, Navigate_Failed));

            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #8
0
        public SM_SearchAndTakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool anyObject, string ObjectToFind, bool useHandOver)
        {
            SM = new FunctionBasedStateMachine();
            this.brain = brain;
            this.cmdMan = cmdMan;
            this.attemptCounter = 0;
            this.searchAttemptCounter = 0;
            this.finalState = FinalStates.StillRunning;

            this.objectsFound = new List<string>();
            this.useTakeHandOver = useHandOver;

            this.anyObject = anyObject;
            if (anyObject)
                this.ObjectToFind = "objects";
            else
                this.ObjectToFind = ObjectToFind;

            this.foundObject = ObjectToFind;

            SM.AddState(new FunctionState((int)States.SearchCloseObjects, new SMStateFuncion(SearchCloseObjects)));
            SM.AddState(new FunctionState((int)States.SetObjectToTake, new SMStateFuncion(SetObjectToTake)));
            SM.AddState(new FunctionState((int)States.TakeObject, new SMStateFuncion(TakeObject)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState)));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #9
0
        public SM_SearchAndTakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool anyObject, string [] objectsToFind, bool useHandOver, int searchAttempts = 2, bool twoArms=false)
        {
            SM = new FunctionBasedStateMachine();
            this.brain = brain;
            this.cmdMan = cmdMan;
            this.attemptCounter = 0;
            this.searchAttemptCounter = 0;
            this.searchAttempts = searchAttempts;
            this.finalState = FinalStates.StillRunning;
            this.twoArms = twoArms;
            this.takeCounter = 0;
            this.firstObjectTaken=false;
            /**********************/
            this.laTaken = false;
            this.armToUse = "";

            this.objectsFound = new List<string>();
            this.useTakeHandOver = useHandOver;

            this.objectsToFind = new string[2];
            this.foundObjects = new string[2];
            this.armsOrder = new string[2];
            this.foundObjects[0] = "";
            this.foundObjects[1] = "";

            this.armsOrder[0] = "";
            this.armsOrder[1] = "";

            this.anyObject = anyObject;
            if (anyObject)
            {
                //this.ObjectToFind = "objects";
                this.objectsToFind[0] = "objects";
                this.objectsToFind[1] = "";
            }
            else
            {
                this.objectsToFind[0] = objectsToFind[0];
                this.objectsToFind[1] = objectsToFind[1];
            }

            //this.objectsToTake = new string[2];
            //this.objectsToTake[0] = "";
            //this.objectsToTake[1] = "";
            //this.foundObjects = new string[2];
            //this.foundObjects[0] = ObjectToFind;
            //this.foundObjects[1] = "";

            //objectsToTake = new string[2];

            SM.AddState(new FunctionState((int)States.SearchCloseObjects, new SMStateFuncion(SearchCloseObjects)));
            SM.AddState(new FunctionState((int)States.SetObjectToTake, new SMStateFuncion(SetObjectToTake)));
            SM.AddState(new FunctionState((int)States.TakeObject, new SMStateFuncion(TakeObject)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState)));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #10
0
        public SM_SearchAndTakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool anyObject, string [] objectsToFind, bool useHandOver, int searchAttempts = 2, bool twoArms = false)
        {
            SM                        = new FunctionBasedStateMachine();
            this.brain                = brain;
            this.cmdMan               = cmdMan;
            this.attemptCounter       = 0;
            this.searchAttemptCounter = 0;
            this.searchAttempts       = searchAttempts;
            this.finalState           = FinalStates.StillRunning;
            this.twoArms              = twoArms;
            this.takeCounter          = 0;
            this.firstObjectTaken     = false;
            /**********************/
            this.laTaken  = false;
            this.armToUse = "";

            this.objectsFound    = new List <string>();
            this.useTakeHandOver = useHandOver;

            this.objectsToFind   = new string[2];
            this.foundObjects    = new string[2];
            this.armsOrder       = new string[2];
            this.foundObjects[0] = "";
            this.foundObjects[1] = "";

            this.armsOrder[0] = "";
            this.armsOrder[1] = "";

            this.anyObject = anyObject;
            if (anyObject)
            {
                //this.ObjectToFind = "objects";
                this.objectsToFind[0] = "objects";
                this.objectsToFind[1] = "";
            }
            else
            {
                this.objectsToFind[0] = objectsToFind[0];
                this.objectsToFind[1] = objectsToFind[1];
            }

            //this.objectsToTake = new string[2];
            //this.objectsToTake[0] = "";
            //this.objectsToTake[1] = "";
            //this.foundObjects = new string[2];
            //this.foundObjects[0] = ObjectToFind;
            //this.foundObjects[1] = "";

            //objectsToTake = new string[2];

            SM.AddState(new FunctionState((int)States.SearchCloseObjects, new SMStateFuncion(SearchCloseObjects)));
            SM.AddState(new FunctionState((int)States.SetObjectToTake, new SMStateFuncion(SetObjectToTake)));
            SM.AddState(new FunctionState((int)States.TakeObject, new SMStateFuncion(TakeObject)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState)));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #11
0
 public NaturalLanguageProcessor(HAL9000Brain hal9000Brain)
 {
     this.hal9000Brain             = hal9000Brain;
     this.commonQuestions          = new SortedList <int, string>();
     this.answersToCommonQuestions = new SortedList <int, string>();
     this.whatAmIThinkingAnswers   = new List <string>();
     this.knownVerbs      = new SortedList <int, string>();
     this.knownVerbsTypes = new SortedList <int, VerbType>();
     this.random          = new Random(DateTime.Now.Second);
 }
コード例 #12
0
        /// <summary>
        /// Creates a state machine to enter the arena up to a location known by the motion planner.
        /// </summary>
        /// <param name="brain">A HAL9000Brain instance</param>
        /// <param name="location">A location known by the motion planner where the robot should try to go when entering the arena.</param>
        public SM_WaitForRequest(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain          = brain;
            this.cmdMan         = cmdMan;
            this.attemptCounter = 0;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, new SMStateFuncion(InitialState)));
            SM.AddState(new FunctionState((int)States.SearchRequest, new SMStateFuncion(SearchRequest)));
            SM.AddState(new FunctionState((int)States.GoToRequest, new SMStateFuncion(GoToRequest)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState), true));

            SM.SetFinalState((int)States.FinalState);
            finalState = FinalStates.StillRunning;
        }
コード例 #13
0
ファイル: Form1.cs プロジェクト: NonatoLagunas/AP_GPSR_2015
        public frmActionPlanner()
        {
            InitializeComponent();
            if (!Directory.Exists(".\\" + DateTime.Today.ToString("yyyy-MM-dd")))
            {
                Directory.CreateDirectory(".\\" + DateTime.Today.ToString("yyyy-MM-dd"));
            }
            TextBoxStreamWriter.DefaultLog = new TextBoxStreamWriter(txtConsole, ".\\" + DateTime.Today.ToString("yyyy-MM-dd") + "\\" +
                                                                     DateTime.Now.ToString("HH.mm.ss") + ".txt", 300);

            TextBoxStreamWriter.DefaultLog.AppendDate                = false;
            TextBoxStreamWriter.DefaultLog.DefaultPriority           = 1;
            TextBoxStreamWriter.DefaultLog.TextBoxVerbosityThreshold = 1;
            this.hal9000Brain = new HAL9000Brain();
        }
コード例 #14
0
        /// <summary>
        /// Creates a state machine to enter the arena up to a location known by the motion planner.
        /// </summary>
        /// <param name="brain">A HAL9000Brain instance</param>
        /// <param name="location">A location known by the motion planner where the robot should try to go when entering the arena.</param>
        public SM_WaitForRequest(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;
            this.attemptCounter = 0;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, new SMStateFuncion(InitialState)));
            SM.AddState(new FunctionState((int)States.SearchRequest, new SMStateFuncion(SearchRequest)));
            SM.AddState(new FunctionState((int)States.GoToRequest, new SMStateFuncion(GoToRequest)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState), true));

            SM.SetFinalState((int)States.FinalState);
            finalState = FinalStates.StillRunning;
        }
コード例 #15
0
        /// <summary>
        /// Creates a state machine for the Navigation test.
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        public NavigationTest(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain  = brain;
            this.cmdMan = cmdMan;

            finalStatus = Status.Ready;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));

            //TODO: Link States-enum whith States-Methods here

            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #16
0
        /// <summary>
        /// Creates a state machine to enter the arena up to a location known by the motion planner.
        /// </summary>
        /// <param name="brain">A HAL9000Brain instance</param>
        /// <param name="location">A location known by the motion planner where the robot should try to go when entering the arena.</param>
        public SM_DetectPersonFall(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain   = brain;
            this.cmdMan  = cmdMan;
            timer        = new System.Diagnostics.Stopwatch();
            fallDetected = false;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, new SMStateFuncion(InitialState)));
            SM.AddState(new FunctionState((int)States.SearchFall, new SMStateFuncion(SearchFall)));
            SM.AddState(new FunctionState((int)States.GoToFall, new SMStateFuncion(GoToFall)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState), true));

            SM.SetFinalState((int)States.FinalState);
            finalState = FinalStates.StillRunning;
        }
コード例 #17
0
        /// <summary>
        /// Creates a state machine to enter the arena up to a location known by the motion planner.
        /// </summary>
        /// <param name="brain">A HAL9000Brain instance</param>
        /// <param name="location">A location known by the motion planner where the robot should try to go when entering the arena.</param>
        public SM_DetectPersonFall(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;
            timer = new System.Diagnostics.Stopwatch();
            fallDetected = false;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, new SMStateFuncion(InitialState)));
            SM.AddState(new FunctionState((int)States.SearchFall, new SMStateFuncion(SearchFall)));
            SM.AddState(new FunctionState((int)States.GoToFall, new SMStateFuncion(GoToFall)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState), true));

            SM.SetFinalState((int)States.FinalState);
            finalState = FinalStates.StillRunning;
        }
コード例 #18
0
        /// <summary>
        /// Creates a state machine to enter the arena up to a location known by the motion planner.
        /// </summary>
        /// <param name="brain">A HAL9000Brain instance</param>
        /// <param name="location">A location known by the motion planner where the robot should try to go when entering the arena.</param>
        /// <param name="tryToOpenDoor">A boolean indicating whether the robot should try to open the door on its own or ask for help directly.</param>
        public SM_EnterArena(HAL9000Brain brain, HAL9000CmdMan cmdMan, string location, bool tryToOpenDoor)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;
            this.location = location;
            this.finalState = FinalStates.StillRunning;
            this.attemptCounter = 0;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, new SMStateFuncion(InitialState)));
            SM.AddState(new FunctionState((int)States.WaitForDoorToBeOpened, new SMStateFuncion(WaitForDoorToBeOpened)));
            SM.AddState(new FunctionState((int)States.EnterArena, new SMStateFuncion(EnterArena)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState), true));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #19
0
        /// <summary>
        /// Creates a state machine to enter the arena up to a location known by the motion planner.
        /// </summary>
        /// <param name="brain">A HAL9000Brain instance</param>
        /// <param name="location">A location known by the motion planner where the robot should try to go when entering the arena.</param>
        /// <param name="tryToOpenDoor">A boolean indicating whether the robot should try to open the door on its own or ask for help directly.</param>
        public SM_EnterArena(HAL9000Brain brain, HAL9000CmdMan cmdMan, string location, bool tryToOpenDoor)
        {
            this.brain          = brain;
            this.cmdMan         = cmdMan;
            this.location       = location;
            this.finalState     = FinalStates.StillRunning;
            this.attemptCounter = 0;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, new SMStateFuncion(InitialState)));
            SM.AddState(new FunctionState((int)States.WaitForDoorToBeOpened, new SMStateFuncion(WaitForDoorToBeOpened)));
            SM.AddState(new FunctionState((int)States.EnterArena, new SMStateFuncion(EnterArena)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState), true));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #20
0
        /// <summary>
        /// Creates a state machine to enter the arena up to a location known by the motion planner.
        /// </summary>
        /// <param name="brain">A HAL9000Brain instance</param>
        /// <param name="location">A location known by the motion planner where the robot should try to go when entering the arena.</param>
        public SM_DetectWaving(HAL9000Brain brain, HAL9000CmdMan cmdMan, double headAngle, double headPan)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;

            this.headAngle = headAngle;
            this.headPan = headPan;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, new SMStateFuncion(InitialState)));
            SM.AddState(new FunctionState((int)States.SearchWaving, new SMStateFuncion(SearchWaving)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState), true));

            SM.SetFinalState((int)States.FinalState);
            finalState = FinalStates.StillRunning;
        }
コード例 #21
0
        /// <summary>
        /// Creates a state machine to enter the arena up to a location known by the motion planner.
        /// </summary>
        /// <param name="brain">A HAL9000Brain instance</param>
        /// <param name="location">A location known by the motion planner where the robot should try to go when entering the arena.</param>
        public SM_DetectWaving(HAL9000Brain brain, HAL9000CmdMan cmdMan, double headAngle, double headPan)
        {
            this.brain  = brain;
            this.cmdMan = cmdMan;

            this.headAngle = headAngle;
            this.headPan   = headPan;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, new SMStateFuncion(InitialState)));
            SM.AddState(new FunctionState((int)States.SearchWaving, new SMStateFuncion(SearchWaving)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState), true));

            SM.SetFinalState((int)States.FinalState);
            finalState = FinalStates.StillRunning;
        }
コード例 #22
0
        /// <summary>
        /// Creates a state machine for the Manipulation test.
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        public ManipulationTest(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;

            finalStatus = Status.Ready;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));

            //TODO: Link States-enum whith States-Methods here

            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #23
0
 public SM_FollowHuman(HAL9000Brain brain, HAL9000CmdMan cmdman)
 {
     this.brain = brain;
     this.cmdMan = cmdman;
     TextBoxStreamWriter.DefaultLog.WriteLine("HAL9000.-> Ejecutando prueba de seguimiento");
     this.brain.Status.TestBeingExecuted = "Fllw1";
     this.brain.OnStatusChanged(new HAL9000StatusArgs(this.brain.Status));
     this.finalState = FinalStates.StillRunning;
     SM = new FunctionBasedStateMachine();
     SM.AddState(new FunctionState((int)States.SubiendoMisBrazos, SubiendoMisBrazos));
     SM.AddState(new FunctionState((int)States.EsperandoPersonaEnFrente, EsperandoPersonaEnFrente));
     SM.AddState(new FunctionState((int)States.SensandoPersona, SensandoPersona));
     SM.AddState(new FunctionState((int)States.PersiguiendoPersona, PersiguiendoPersona));
     SM.AddState(new FunctionState((int)States.AntesDeTerminar, AntesDeTerminar, true));
     SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));
     SM.SetFinalState((int)States.FinalState);
 }
コード例 #24
0
 public SM_FollowHuman(HAL9000Brain brain, HAL9000CmdMan cmdman)
 {
     this.brain  = brain;
     this.cmdMan = cmdman;
     TextBoxStreamWriter.DefaultLog.WriteLine("HAL9000.-> Ejecutando prueba de seguimiento");
     this.brain.Status.TestBeingExecuted = "Fllw1";
     this.brain.OnStatusChanged(new HAL9000StatusArgs(this.brain.Status));
     this.finalState = FinalStates.StillRunning;
     SM = new FunctionBasedStateMachine();
     SM.AddState(new FunctionState((int)States.SubiendoMisBrazos, SubiendoMisBrazos));
     SM.AddState(new FunctionState((int)States.EsperandoPersonaEnFrente, EsperandoPersonaEnFrente));
     SM.AddState(new FunctionState((int)States.SensandoPersona, SensandoPersona));
     SM.AddState(new FunctionState((int)States.PersiguiendoPersona, PersiguiendoPersona));
     SM.AddState(new FunctionState((int)States.AntesDeTerminar, AntesDeTerminar, true));
     SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));
     SM.SetFinalState((int)States.FinalState);
 }
コード例 #25
0
        public SM_TakeTray(HAL9000Brain brain, HAL9000CmdMan cmdMan, double height)
        {
            SM = new FunctionBasedStateMachine();
            this.brain = brain;
            this.cmdMan = cmdMan;
            distance = 0;
            this.height = height;
            headPan = 0;
            headTilt = -1.1;
            percent = 50;
            this.finalState = FinalStates.StillRunning;

            SM.AddState(new FunctionState((int)States.LineTable,LineTable));
            SM.AddState(new FunctionState((int)States.TakeTray, TakeTray));
            SM.AddState(new FunctionState((int)States.FinalState, FinalState,true));
            SM.SetFinalState((int)States.FinalState);
        }
コード例 #26
0
        public SM_TakeTray(HAL9000Brain brain, HAL9000CmdMan cmdMan, double height)

        {
            SM              = new FunctionBasedStateMachine();
            this.brain      = brain;
            this.cmdMan     = cmdMan;
            distance        = 0;
            this.height     = height;
            headPan         = 0;
            headTilt        = -1.1;
            percent         = 50;
            this.finalState = FinalStates.StillRunning;

            SM.AddState(new FunctionState((int)States.LineTable, LineTable));
            SM.AddState(new FunctionState((int)States.TakeTray, TakeTray));
            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));
            SM.SetFinalState((int)States.FinalState);
        }
コード例 #27
0
        /// <summary>
        /// Creates a state machine for the Navigation test.
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        public GraspCereal(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;

            finalStatus = Status.Ready;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));

            //TODO: Link States-enum whith States-Methods here
            SM.AddState(new FunctionState((int)States.PerformAction, PerformAction));
            SM.AddState(new FunctionState((int)States.FindPerson, FindPerson));

            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #28
0
        /// <summary>
        /// Creates the SM of the primite action: Take-Object
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        /// <param name="objectToTake">Name of the object to take. Default: empty string.</param>
        public TellPhrase(HAL9000Brain brain, HAL9000CmdMan cmdMan, GPSR_WORLD SMConfiguration, string phrase)
        {
            this.brain  = brain;
            this.cmdMan = cmdMan;

            finalStatus = Status.Ready;

            this.SMConfiguration = SMConfiguration;
            this.phraseToTell    = phrase;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));

            SM.AddState(new FunctionState((int)States.StateTellPhrase, StateTellPhrase));

            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #29
0
        /// <summary>
        /// Creates the SM of the primite action: Take-Object
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        /// <param name="objectToTake">Name of the object to take. Default: empty string.</param>
        public TellPhrase(HAL9000Brain brain, HAL9000CmdMan cmdMan, GPSR_WORLD SMConfiguration, string phrase)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;

            finalStatus = Status.Ready;

            this.SMConfiguration = SMConfiguration;
            this.phraseToTell = phrase;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));

            SM.AddState(new FunctionState((int)States.StateTellPhrase, StateTellPhrase));

            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #30
0
        /// <summary>
        /// Creates the SM of the primite action: Take-Object
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        /// <param name="objectToTake">Name of the object to take. Default: empty string.</param>
        public AnswerQuestion(HAL9000Brain brain, HAL9000CmdMan cmdMan, GPSR_WORLD SMConfiguration)
        {
            this.brain  = brain;
            this.cmdMan = cmdMan;

            finalStatus    = Status.Ready;
            attemptCounter = 0;

            this.SMConfiguration = SMConfiguration;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));

            SM.AddState(new FunctionState((int)States.StateQuestion, StateQuestion));
            SM.AddState(new FunctionState((int)States.StateAnswer, StateAnswer));

            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #31
0
        /// <summary>
        /// Creates a state machine to enter the arena up to a location known by the motion planner.
        /// </summary>
        /// <param name="brain">A HAL9000Brain instance</param>
        /// <param name="location">A location known by the motion planner where the robot should try to go when entering the arena.</param>
        public SM_SimpleIdentifyPerson(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool startIdentifyPerson, string[] knownPersons, string defaultName, List<string> rejectedNames)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;
            this.startIdentifyPerson = startIdentifyPerson;
            this.defaultName = defaultName;
            this.knownPersons = knownPersons;
            this.rejectedNames = rejectedNames;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, new SMStateFuncion(InitialState)));
            SM.AddState(new FunctionState((int)States.SpeachToHuman, new SMStateFuncion(SpeachToHuman)));
            SM.AddState(new FunctionState((int)States.FindHuman, new SMStateFuncion(FindHuman)));
            SM.AddState(new FunctionState((int)States.AskForName, new SMStateFuncion(AskForName)));
            SM.AddState(new FunctionState((int)States.AsociateName, new SMStateFuncion(AsociateName)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState), true));

            SM.SetFinalState((int)States.FinalState);
            finalState = FinalStates.StillRunning;
        }
コード例 #32
0
        /// <summary>
        /// Creates a state machine to navigate to a predefined MVN-PLN location.
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        public DefaultStateMachineSM(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain  = brain;
            this.cmdMan = cmdMan;

            finalStatus    = Status.Ready;
            attemptCounter = 0;
            objectTaken    = false;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));
            SM.AddState(new FunctionState((int)States.EnterArena, EnterArena));
            SM.AddState(new FunctionState((int)States.GetCloseToTable, GetCloseToTable));
            SM.AddState(new FunctionState((int)States.DropObject, DropObject));
            SM.AddState(new FunctionState((int)States.LeaveArena, LeaveArena));
            SM.AddState(new FunctionState((int)States.SearchAndTakeObject, SearchAndTakeObject));
            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #33
0
        /// <summary>
        /// Creates the SM of the primite action: Take-Object
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        /// <param name="objectToTake">Name of the object to take. Default: empty string.</param>
        public AnswerQuestion(HAL9000Brain brain, HAL9000CmdMan cmdMan, GPSR_WORLD SMConfiguration)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;

            finalStatus = Status.Ready;
            attemptCounter = 0;

            this.SMConfiguration = SMConfiguration;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));

            SM.AddState(new FunctionState((int)States.StateQuestion, StateQuestion));
            SM.AddState(new FunctionState((int)States.StateAnswer, StateAnswer));

            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #34
0
        /// <summary>
        /// Creates a state machine to enter the arena up to a location known by the motion planner.
        /// </summary>
        /// <param name="brain">A HAL9000Brain instance</param>
        /// <param name="location">A location known by the motion planner where the robot should try to go when entering the arena.</param>
        public SM_SimpleIdentifyPerson(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool startIdentifyPerson, string[] knownPersons, string defaultName, List <string> rejectedNames)
        {
            this.brain  = brain;
            this.cmdMan = cmdMan;
            this.startIdentifyPerson = startIdentifyPerson;
            this.defaultName         = defaultName;
            this.knownPersons        = knownPersons;
            this.rejectedNames       = rejectedNames;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, new SMStateFuncion(InitialState)));
            SM.AddState(new FunctionState((int)States.SpeachToHuman, new SMStateFuncion(SpeachToHuman)));
            SM.AddState(new FunctionState((int)States.FindHuman, new SMStateFuncion(FindHuman)));
            SM.AddState(new FunctionState((int)States.AskForName, new SMStateFuncion(AskForName)));
            SM.AddState(new FunctionState((int)States.AsociateName, new SMStateFuncion(AsociateName)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState), true));

            SM.SetFinalState((int)States.FinalState);
            finalState = FinalStates.StillRunning;
        }
コード例 #35
0
        /// <summary>
        /// Creates a state machine to navigate to a predefined MVN-PLN location.
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        public DefaultStateMachineSM(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;

            finalStatus = Status.Ready;
            attemptCounter = 0;
            objectTaken = false;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));
            SM.AddState(new FunctionState((int)States.EnterArena, EnterArena));
            SM.AddState(new FunctionState((int)States.GetCloseToTable, GetCloseToTable));
            SM.AddState(new FunctionState((int)States.DropObject, DropObject));
            SM.AddState(new FunctionState((int)States.LeaveArena, LeaveArena));
            SM.AddState(new FunctionState((int)States.SearchAndTakeObject, SearchAndTakeObject));
            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #36
0
ファイル: GPSR.cs プロジェクト: NonatoLagunas/ActionPlannerRZ
        /// <summary>
        /// Creates a state machine for the test.
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        public GPSR(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;

            finalStatus = Status.Ready;
            second_confirmation = false;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));

            //TODO: Link States-enum whith States-Methods here

            SM.AddState(new FunctionState((int)States.EnterArena, EnterArena));
            SM.AddState(new FunctionState((int)States.WaitForQuestion, WaitForQuestion));
            SM.AddState(new FunctionState((int)States.PerformAction, PerformAction));
            SM.AddState(new FunctionState((int)States.LeaveArena, LeaveArena));
            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));
            SM.SetFinalState((int)States.FinalState);
        }
コード例 #37
0
        public CocktailPartyTest(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;

            TextBoxStreamWriter.DefaultLog.WriteLine("HAL9000.-> Executing Cocktail Party Test");
            this.brain.Status.TestBeingExecuted = "Cocktail Party";
            this.brain.OnStatusChanged(new HAL9000StatusArgs(this.brain.Status));

            this.finalState = FinalStates.StillRunning;
            tryToOpenDoor = false;
            entranceLocation = "frontentrance";
            partyroomLocation = "partyroom";
            drinksLocation = "drinks";
            exitLocation = "exit";
            defaultDrink = "mangojuice";
            attemptCounter = 0;
            gestureFailed = false;
            defaultNames = new string[] { "Alan", "Albert", "Angel" };
            SM = new FunctionBasedStateMachine();
            //orders = new Queue<order>(3);
            ordersCount = 0;
            rejectedNames = new List<string>(3);

            SM.AddState(new FunctionState((int)States.EnterArena, new SMStateFuncion(EnterArena)));
            SM.AddState(new FunctionState((int)States.GoToPartyRoom, new SMStateFuncion(GoToPartyRoom)));
            SM.AddState(new FunctionState((int)States.WaitForRequest, new SMStateFuncion(WaitForRequest)));
            SM.AddState(new FunctionState((int)States.IdentifyPerson, new SMStateFuncion(IdentifyPerson)));
            SM.AddState(new FunctionState((int)States.WaitForOrder, new SMStateFuncion(WaitForOrder)));
            SM.AddState(new FunctionState((int)States.NoGestureRecognized, new SMStateFuncion(NoGestureRecognized)));
            SM.AddState(new FunctionState((int)States.WaitForConfirmation, new SMStateFuncion(WaitForConfirmation)));
            SM.AddState(new FunctionState((int)States.EnqueueOrder, new SMStateFuncion(EnqueueOrder)));
            SM.AddState(new FunctionState((int)States.GoToDrinksLocation, new SMStateFuncion(GoToDrinksLocation)));
            SM.AddState(new FunctionState((int)States.SearchAndTakeObject, new SMStateFuncion(SearchAndTakeObject)));
            SM.AddState(new FunctionState((int)States.GoToHumanLocation, new SMStateFuncion(GoToHumanLocation)));
            SM.AddState(new FunctionState((int)States.DeliverDrink, new SMStateFuncion(DeliverDrink)));
            SM.AddState(new FunctionState((int)States.LeaveArena, new SMStateFuncion(LeaveArena)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState)));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #38
0
        public CocktailPartyTest(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain  = brain;
            this.cmdMan = cmdMan;

            TextBoxStreamWriter.DefaultLog.WriteLine("HAL9000.-> Executing Cocktail Party Test");
            this.brain.Status.TestBeingExecuted = "Cocktail Party";
            this.brain.OnStatusChanged(new HAL9000StatusArgs(this.brain.Status));

            this.finalState   = FinalStates.StillRunning;
            tryToOpenDoor     = false;
            entranceLocation  = "frontentrance";
            partyroomLocation = "partyroom";
            drinksLocation    = "drinks";
            exitLocation      = "exit";
            defaultDrink      = "mangojuice";
            attemptCounter    = 0;
            gestureFailed     = false;
            defaultNames      = new string[] { "Alan", "Albert", "Angel" };
            SM = new FunctionBasedStateMachine();
            //orders = new Queue<order>(3);
            ordersCount   = 0;
            rejectedNames = new List <string>(3);

            SM.AddState(new FunctionState((int)States.EnterArena, new SMStateFuncion(EnterArena)));
            SM.AddState(new FunctionState((int)States.GoToPartyRoom, new SMStateFuncion(GoToPartyRoom)));
            SM.AddState(new FunctionState((int)States.WaitForRequest, new SMStateFuncion(WaitForRequest)));
            SM.AddState(new FunctionState((int)States.IdentifyPerson, new SMStateFuncion(IdentifyPerson)));
            SM.AddState(new FunctionState((int)States.WaitForOrder, new SMStateFuncion(WaitForOrder)));
            SM.AddState(new FunctionState((int)States.NoGestureRecognized, new SMStateFuncion(NoGestureRecognized)));
            SM.AddState(new FunctionState((int)States.WaitForConfirmation, new SMStateFuncion(WaitForConfirmation)));
            SM.AddState(new FunctionState((int)States.EnqueueOrder, new SMStateFuncion(EnqueueOrder)));
            SM.AddState(new FunctionState((int)States.GoToDrinksLocation, new SMStateFuncion(GoToDrinksLocation)));
            SM.AddState(new FunctionState((int)States.SearchAndTakeObject, new SMStateFuncion(SearchAndTakeObject)));
            SM.AddState(new FunctionState((int)States.GoToHumanLocation, new SMStateFuncion(GoToHumanLocation)));
            SM.AddState(new FunctionState((int)States.DeliverDrink, new SMStateFuncion(DeliverDrink)));
            SM.AddState(new FunctionState((int)States.LeaveArena, new SMStateFuncion(LeaveArena)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState)));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #39
0
        /// <summary>
        /// Creates the SM of the primite action: Take-Object
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        /// <param name="objectToTake">Name of the object to take. Default: empty string.</param>
        public BringObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, GPSR_WORLD SMConfiguration, string objectName = "")
        {
            this.brain  = brain;
            this.cmdMan = cmdMan;

            finalStatus = Status.Ready;

            this.SMConfiguration = SMConfiguration;
            this.objectName      = objectName;

            foundPersonMessage = "Human please get close to me and take the object.";

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));

            SM.AddState(new FunctionState((int)States.DeliverObject, DeliverObject));

            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #40
0
        /// <summary>
        /// Creates the SM of the primite action: Take-Object
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        /// <param name="objectToTake">Name of the object to take. Default: empty string.</param>
        public BringObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, GPSR_WORLD SMConfiguration, string objectName="")
        {
            this.brain = brain;
            this.cmdMan = cmdMan;

            finalStatus = Status.Ready;

            this.SMConfiguration = SMConfiguration;
            this.objectName = objectName;

            foundPersonMessage = "Human please get close to me and take the object.";

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));

            SM.AddState(new FunctionState((int)States.DeliverObject, DeliverObject));

            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #41
0
        /// <summary>
        /// Creates a state machine to enter the arena up to a location known by the motion planner.
        /// </summary>
        /// <param name="brain">A HAL9000Brain instance</param>
        /// <param name="location">A location known by the motion planner where the robot should try to go when entering the arena.</param>
        public SM_AssociateNameAndFace(HAL9000Brain brain, HAL9000CmdMan cmdMan, string [] knownPersons, string defaultName, bool usePanAndTilt, List <string> rejectedNames, bool trainPersonsShirt)
        {
            this.brain          = brain;
            this.cmdMan         = cmdMan;
            this.attemptCounter = 0;
            this.defaultName    = defaultName;
            this.knownPersons   = knownPersons;
            this.rejectedNames  = rejectedNames;
            this.usePanAndTilt  = usePanAndTilt;
            this.trainShirt     = trainPersonsShirt;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, new SMStateFuncion(InitialState)));
            SM.AddState(new FunctionState((int)States.AskForName, new SMStateFuncion(AskForName)));
            SM.AddState(new FunctionState((int)States.FindHuman, new SMStateFuncion(FindHuman)));
            SM.AddState(new FunctionState((int)States.TrainFace, new SMStateFuncion(TrainFace)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState), true));

            SM.SetFinalState((int)States.FinalState);
            finalState = FinalStates.StillRunning;
        }
コード例 #42
0
        public OpenChallenge_Training(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain  = brain;
            this.cmdMan = cmdMan;
            this.brain.UseFloorLaser = false;
            height                   = 0;
            LocationTable            = "table";
            LocationTray             = "tray";
            percent                  = 50;
            distance                 = 0;
            headPan                  = 0;
            headTilt                 = -1.1;
            voiceRecognitionAttempts = 0;
            alreadyKnownPersons      = new List <string>();
            defaultNames             = new string[] { "John", "James", "William", "Michael" };
            personCounter            = 0;
            usingRightArm            = true;

            TextBoxStreamWriter.DefaultLog.WriteLine("HAL9000.-> Executing Open Challenge");
            this.brain.Status.TestBeingExecuted = "Open Challenge";
            this.brain.OnStatusChanged(new HAL9000StatusArgs(this.brain.Status));
            this.finalState = FinalStates.StillRunning;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.CallRobot, CallRobot));
            SM.AddState(new FunctionState((int)States.TrainFace, TrainFace));
            SM.AddState(new FunctionState((int)States.DeliverSheet, DeliverSheet));
            SM.AddState(new FunctionState((int)States.TrainVoice, TrainVoice));
            SM.AddState(new FunctionState((int)States.ReceiveSheet, ReceiveSheet));
            SM.AddState(new FunctionState((int)States.AdjustTable, AdjustTable));
            SM.AddState(new FunctionState((int)States.GotoTray, GotoTray));
            SM.AddState(new FunctionState((int)States.TakeTray, TakeTray));
            SM.AddState(new FunctionState((int)States.GotoTable, GotoTable));
            SM.AddState(new FunctionState((int)States.TrayOnTable, TrayOnTable));
            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #43
0
        public OpenChallenge_Training(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;
            this.brain.UseFloorLaser = false;
            height = 0;
            LocationTable = "table";
            LocationTray = "tray";
            percent = 50;
            distance = 0;
            headPan = 0;
            headTilt = -1.1;
            voiceRecognitionAttempts = 0;
            alreadyKnownPersons = new List<string>();
            defaultNames = new string[] {"John", "James", "William", "Michael"};
            personCounter = 0;
            usingRightArm = true;

            TextBoxStreamWriter.DefaultLog.WriteLine("HAL9000.-> Executing Open Challenge");
            this.brain.Status.TestBeingExecuted = "Open Challenge";
            this.brain.OnStatusChanged(new HAL9000StatusArgs(this.brain.Status));
            this.finalState = FinalStates.StillRunning;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.CallRobot, CallRobot));
            SM.AddState(new FunctionState((int)States.TrainFace, TrainFace));
            SM.AddState(new FunctionState((int)States.DeliverSheet, DeliverSheet));
            SM.AddState(new FunctionState((int)States.TrainVoice, TrainVoice));
            SM.AddState(new FunctionState((int)States.ReceiveSheet, ReceiveSheet));
            SM.AddState(new FunctionState((int)States.AdjustTable, AdjustTable));
            SM.AddState(new FunctionState((int)States.GotoTray, GotoTray));
            SM.AddState(new FunctionState((int)States.TakeTray, TakeTray));
            SM.AddState(new FunctionState((int)States.GotoTable, GotoTable));
            SM.AddState(new FunctionState((int)States.TrayOnTable, TrayOnTable));
            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #44
0
ファイル: GPSR.cs プロジェクト: NonatoLagunas/AP_GPSR_2015
        /// <summary>
        /// Creates a state machine for this test.
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        public GPSR(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain  = brain;
            this.cmdMan = cmdMan;

            attemptCounter = 0;
            attemptLimit   = 3;

            finalStatus = Status.Ready;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));
            SM.AddState(new FunctionState((int)States.EnterArena, EnterArena));
            SM.AddState(new FunctionState((int)States.NavigateToOperator, NavigateToOperator));
            SM.AddState(new FunctionState((int)States.WaitForCommand, WaitForCommand));
            SM.AddState(new FunctionState((int)States.ConfirmComand, ConfirmComand));
            SM.AddState(new FunctionState((int)States.ParseCommand, ParseCommand));
            SM.AddState(new FunctionState((int)States.PerformCommand, PerformCommand));
            SM.AddState(new FunctionState((int)States.LeaveArena, LeaveArena));
            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #45
0
ファイル: GPSR.cs プロジェクト: NonatoLagunas/AP_GPSR_2015
        /// <summary>
        /// Creates a state machine for this test.
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        public GPSR(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;

            attemptCounter = 0;
            attemptLimit = 3;

            finalStatus = Status.Ready;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));
            SM.AddState(new FunctionState((int)States.EnterArena, EnterArena));
            SM.AddState(new FunctionState((int)States.NavigateToOperator, NavigateToOperator));
            SM.AddState(new FunctionState((int)States.WaitForCommand, WaitForCommand));
            SM.AddState(new FunctionState((int)States.ConfirmComand, ConfirmComand));
            SM.AddState(new FunctionState((int)States.ParseCommand, ParseCommand));
            SM.AddState(new FunctionState((int)States.PerformCommand, PerformCommand));
            SM.AddState(new FunctionState((int)States.LeaveArena, LeaveArena));
            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #46
0
ファイル: RoboZoo.cs プロジェクト: NonatoLagunas/AP_GPSR_2015
        /// <summary>
        /// Creates a state machine for the RoboZoo test.
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        public RoboZoo(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain  = brain;
            this.cmdMan = cmdMan;


            t_HEADSearchMovements = new Thread(new ThreadStart(HEADSearchMovements));
            t_ARMSSearchMovements = new Thread(new ThreadStart(ARMSSearchMovements));
            t_SPGENSearchPhrases  = new Thread(new ThreadStart(SPGENSearchPhrases));
            t_BASEDanceMovements  = new Thread(new ThreadStart(BASEDanceMovements));
            t_ARMSDanceMovements  = new Thread(new ThreadStart(ARMSDanceMovements));
            t_HEADDanceMovements  = new Thread(new ThreadStart(HEADDanceMovements));
            t_SPGENHypnoSpeech    = new Thread(new ThreadStart(SPGENHypnoSpeech));
            t_ARMSHypnoMovements  = new Thread(new ThreadStart(ARMSHypnoMovements));
            t_HEADHypnoMovements  = new Thread(new ThreadStart(HEADHypnoMovements));

            headRandPos   = new Random();
            searchAttempt = 0;

            stopAllThreads      = false;
            hypnoSpeechFinished = false;
            stopDance           = false;

            finalStatus = Status.Ready;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));
            SM.AddState(new FunctionState((int)States.SearchMarker, SearchMarker));
            SM.AddState(new FunctionState((int)States.MarkerFound, MarkerFound));
            SM.AddState(new FunctionState((int)States.MarkerNotFound, MarkerNotFound));
            SM.AddState(new FunctionState((int)States.PerformPresentation, PerformPresentation));
            SM.AddState(new FunctionState((int)States.PerformDance, PerformDance));
            SM.AddState(new FunctionState((int)States.PerformHipnotize, PerformHipnotize));
            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #47
0
        /// <summary>
        /// Creates the SM of the primite action: Take-Object
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        /// <param name="objectToTake">Name of the object to take. Default: empty string.</param>
        public TakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, GPSR_WORLD SMConfiguration, string objectToTake="")
        {
            this.brain = brain;
            this.cmdMan = cmdMan;

            finalStatus = Status.Ready;

            this.SMConfiguration = SMConfiguration;
            this.objectToTake = objectToTake;

            SATO_succeeded = "I got it.";
            SATO_failed = "I can't take the object.";

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));

            SM.AddState(new FunctionState((int)States.SearchAndTakeObject, SearchAndTakeObject));
            SM.AddState(new FunctionState((int)States.SATO_Failed, SATO_Failed));
            SM.AddState(new FunctionState((int)States.SATO_Succeeded, SATO_Succeeded));

            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #48
0
        /// <summary>
        /// Creates the SM of the primite action: Take-Object
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        /// <param name="objectToTake">Name of the object to take. Default: empty string.</param>
        public TakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, GPSR_WORLD SMConfiguration, string objectToTake = "")
        {
            this.brain  = brain;
            this.cmdMan = cmdMan;

            finalStatus = Status.Ready;

            this.SMConfiguration = SMConfiguration;
            this.objectToTake    = objectToTake;

            SATO_succeeded = "I got it.";
            SATO_failed    = "I can't take the object.";

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));

            SM.AddState(new FunctionState((int)States.SearchAndTakeObject, SearchAndTakeObject));
            SM.AddState(new FunctionState((int)States.SATO_Failed, SATO_Failed));
            SM.AddState(new FunctionState((int)States.SATO_Succeeded, SATO_Succeeded));

            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #49
0
 public SM_AssociateNameAndFace(HAL9000Brain brain, HAL9000CmdMan cmdMan, string [] knownPersons, string defaultName, List <string> rejectedNames) : this(brain, cmdMan, knownPersons, defaultName, true, rejectedNames, false)
 {
 }
コード例 #50
0
 public SM_SearchAndTakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool anyObject, string [] objectsToFind)
     : this(brain, cmdMan, anyObject, objectsToFind, true)
 {
 }
コード例 #51
0
 /// <summary>
 /// Creates a state machine to enter the arena up to a location known by the motion planner called "frontentrance". It will not try to open the door by itself and will ask for help from the beginning instead.
 /// </summary>
 /// <param name="brain">A HAL9000Brain instance</param>
 public SM_EnterArena(HAL9000Brain brain, HAL9000CmdMan cmdMan)
     : this(brain, cmdMan, "frontentrance", false)
 {
 }
コード例 #52
0
 /// <summary>
 /// Creates a state machine to enter the arena up to location known by the motion planner. It will not try to open the door by itself and will ask for help from the beginning instead.
 /// </summary>
 /// <param name="brain">A HAL9000Brain instance</param>
 public SM_EnterArena(HAL9000Brain brain, HAL9000CmdMan cmdMan, string location)
     : this(brain, cmdMan, location, false)
 {
 }
コード例 #53
0
 public SM_SearchAndTakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool anyObject, string[] objectsToFind, int searchAttempts, bool twoArms) : this(brain, cmdMan, anyObject, objectsToFind, true, searchAttempts, twoArms)
 {
 }
コード例 #54
0
 public SM_SearchAndTakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool anyObject, string ObjectToFind) : this(brain, cmdMan, anyObject, ObjectToFind, true)
 {
 }
コード例 #55
0
 public SM_SearchAndTakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool anyObject, string[] objectsToFind, int searchAttempts, bool twoArms)
     : this(brain, cmdMan, anyObject, objectsToFind, true, searchAttempts, twoArms)
 {
 }
コード例 #56
0
 /// <summary>
 /// Creates a state machine to enter the arena up to a location known by the motion planner called "frontentrance".
 /// </summary>
 /// <param name="brain">A HAL9000Brain instance</param>
 /// <param name="tryToOpenDoor">A boolean indicating whether the robot should try to open the door on its own or ask for help directly.</param>
 public SM_EnterArena(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool tryToOpenDoor) : this(brain, cmdMan, "frontentrance", tryToOpenDoor)
 {
 }
コード例 #57
0
 public CmdRecognized(HAL9000Brain brain)
     : base("recognized")
 {
     this.hal9000Brain = brain;
 }
コード例 #58
0
        /// <summary>
        /// Creates a state machine for the RoboZoo test.
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        public RoboZoo(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;

            t_HEADSearchMovements = new Thread(new ThreadStart(HEADSearchMovements));
            t_ARMSSearchMovements = new Thread(new ThreadStart(ARMSSearchMovements));
            t_SPGENSearchPhrases = new Thread(new ThreadStart(SPGENSearchPhrases));
            t_BASEDanceMovements = new Thread(new ThreadStart(BASEDanceMovements));
            t_ARMSDanceMovements = new Thread(new ThreadStart(ARMSDanceMovements));
            t_HEADDanceMovements = new Thread(new ThreadStart(HEADDanceMovements));
            t_SPGENHypnoSpeech = new Thread(new ThreadStart(SPGENHypnoSpeech));
            t_ARMSHypnoMovements = new Thread(new ThreadStart(ARMSHypnoMovements));
            t_HEADHypnoMovements = new Thread(new ThreadStart(HEADHypnoMovements));

            headRandPos = new Random();
            searchAttempt = 0;

            stopAllThreads = false;
            hypnoSpeechFinished  = false;
            stopDance = false;

            finalStatus = Status.Ready;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));
            SM.AddState(new FunctionState((int)States.SearchMarker, SearchMarker));
            SM.AddState(new FunctionState((int)States.MarkerFound, MarkerFound));
            SM.AddState(new FunctionState((int)States.MarkerNotFound, MarkerNotFound));
            SM.AddState(new FunctionState((int)States.PerformPresentation, PerformPresentation));
            SM.AddState(new FunctionState((int)States.PerformDance, PerformDance));
            SM.AddState(new FunctionState((int)States.PerformHipnotize, PerformHipnotize));
            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
コード例 #59
0
 /// <summary>
 /// Creates a state machine to enter the arena up to a location known by the motion planner called "frontentrance".
 /// </summary>
 /// <param name="brain">A HAL9000Brain instance</param>
 /// <param name="tryToOpenDoor">A boolean indicating whether the robot should try to open the door on its own or ask for help directly.</param>
 public SM_EnterArena(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool tryToOpenDoor)
     : this(brain, cmdMan, "frontentrance", tryToOpenDoor)
 {
 }