public Form1()
        {
            ModeCartTraining = ModeRSV2Training = false;
            ModeCartExecutingMetaNetwork = false;
            ModeCartMapping = ModeRSV2Browsing = false;
            ModeRsv2ExecutingMetaNetwork = false;

            InitializeComponent();
            server = new EZRoboNetDevice(1, EZRoboNetDevice.t_Node_Station);

            rnd = new Random((int)DateTime.Now.Ticks);
            SensorDataRequested = CameraFrameRequested = false;
            rsv2pass = cartpass = 0;

            robosapien = new RobosapienV2(server, 2, rnd);
            cart = new LMMobileRobot(server, 3, rnd);

            cartTrainingFSM = new CartTrainingFSM(cart);
            cartMNExecutingFSM = new CartMetaNetworkFSM(cart);
            rsv2MNExecutingFSM = new RSV2MetanetworkFSM(robosapien);

            // creating mapping and browsing FSMs
            mappingFSM = new MappingFSM(cart, 4, MappingFSM.orSOUTH, 1, 1);
            rsv2BrowsingFSM = new RSV2BrowsingFSM(mappingFSM, robosapien, 0, 1, RSV2BrowsingFSM.orSOUTH);

            rsv2TrainingFSM = new RSV2TrainingFSM(robosapien);

            timer1.Start();
            timer2.Start();

            comboBox1.SelectedIndex = 2;
            comboBox2.SelectedIndex = 2;
        }
        // constructor
        public RSV2BrowsingFSM(MappingFSM mapfsm, RobosapienV2 robo,
                                int robIpos, int robJpos, int robOrient)
        {
            mappingFSM = mapfsm;

            Robosapien = robo;
            ipos = robIpos;
            jpos = robJpos;
            orientation = robOrient;

            LastKnownCartIpos = mappingFSM.ipos;
            LastKnownCartJpos = mappingFSM.jpos;

            // creating the task queue
            TaskQueue = new int[MAX_QUEUE_LENGTH];
            TaskQueueLength = 0;

            // registering browsing FSM in mapping FSM
            mappingFSM.registerBrowingFSM(this);

            // now setting up our Last Known location inside the mappingh FSM
            mappingFSM.LastKnownRsv2Ipos = robIpos;
            mappingFSM.LastKnownRsv2Jpos = robJpos;
        }
        // constructor
        public RSV2TrainingFSM(RobosapienV2 rsv2)
        {
            Robosapien = rsv2;

            state = stIdle;
        }
        //constructor
        public RSV2MetanetworkFSM(RobosapienV2 robo)
        {
            Robosapien = robo;

            state = stIdle;
        }