示例#1
0
        /// <summary>
        /// Register the desired startup events, more may be registered separately as needed
        /// </summary>
        private void RegisterEvents()
        {
            //Bumps
            _misty.RegisterBumpSensorEvent(BumpCallback, 0, true, null, null, null);

            //Cap touch
            _misty.RegisterCapTouchEvent(CapTouchCallback, 0, true, null, null, null);

            //TOF
            List <TimeOfFlightValidation> tofFrontRightValidations = new List <TimeOfFlightValidation>();

            tofFrontRightValidations.Add(new TimeOfFlightValidation {
                Name = TimeOfFlightFilter.DistanceInMeters, Comparison = ComparisonOperator.LessThanOrEqual, ComparisonValue = 0.3
            });
            tofFrontRightValidations.Add(new TimeOfFlightValidation {
                Name = TimeOfFlightFilter.SensorName, Comparison = ComparisonOperator.Equal, ComparisonValue = TimeOfFlightPosition.FrontRight
            });
            _misty.RegisterTimeOfFlightEvent(TOFRangeCallback, 300, true, tofFrontRightValidations, null, null);

            List <TimeOfFlightValidation> tofFrontLeftValidations = new List <TimeOfFlightValidation>();

            tofFrontLeftValidations.Add(new TimeOfFlightValidation {
                Name = TimeOfFlightFilter.DistanceInMeters, Comparison = ComparisonOperator.LessThanOrEqual, ComparisonValue = 0.3
            });
            tofFrontLeftValidations.Add(new TimeOfFlightValidation {
                Name = TimeOfFlightFilter.SensorName, Comparison = ComparisonOperator.Equal, ComparisonValue = TimeOfFlightPosition.FrontLeft
            });
            _misty.RegisterTimeOfFlightEvent(TOFRangeCallback, 300, true, tofFrontLeftValidations, null, null);

            List <TimeOfFlightValidation> tofBackValidations = new List <TimeOfFlightValidation>();

            tofBackValidations.Add(new TimeOfFlightValidation {
                Name = TimeOfFlightFilter.DistanceInMeters, Comparison = ComparisonOperator.LessThanOrEqual, ComparisonValue = 0.3
            });
            tofBackValidations.Add(new TimeOfFlightValidation {
                Name = TimeOfFlightFilter.SensorName, Comparison = ComparisonOperator.Equal, ComparisonValue = TimeOfFlightPosition.Back
            });
            _misty.RegisterTimeOfFlightEvent(TOFRangeCallback, 300, true, tofBackValidations, null, null);

            List <TimeOfFlightValidation> tofFrontCenterValidations = new List <TimeOfFlightValidation>();

            tofFrontCenterValidations.Add(new TimeOfFlightValidation {
                Name = TimeOfFlightFilter.DistanceInMeters, Comparison = ComparisonOperator.LessThanOrEqual, ComparisonValue = 0.3
            });
            tofFrontCenterValidations.Add(new TimeOfFlightValidation {
                Name = TimeOfFlightFilter.SensorName, Comparison = ComparisonOperator.Equal, ComparisonValue = TimeOfFlightPosition.FrontCenter
            });
            _misty.RegisterTimeOfFlightEvent(TOFRangeCallback, 300, true, tofFrontCenterValidations, null, null);
        }
        /// <summary>
        /// Register the desired startup events, more may be registered separately as needed
        /// </summary>
        private void RegisterEvents()
        {
            //Voice Rec
            _misty.RegisterKeyPhraseRecognizedEvent(KeyPhraseRecognizedCallback, 0, true, null, null);

            //Face rec
            _misty.RegisterFaceRecognitionEvent(FaceRecCallback, 0, false, null, null, null);

            //Bumps
            _misty.RegisterBumpSensorEvent(BumpCallback, 0, true, null, null, null);

            //Cap touch
            _misty.RegisterCapTouchEvent(CapTouchCallback, 0, true, null, null, null);

            //TOF
            List <TimeOfFlightValidation> tofFrontRightValidations = new List <TimeOfFlightValidation>();

            tofFrontRightValidations.Add(new TimeOfFlightValidation {
                Name = TimeOfFlightFilter.DistanceInMeters, Comparison = ComparisonOperator.LessThanOrEqual, ComparisonValue = 0.15
            });
            tofFrontRightValidations.Add(new TimeOfFlightValidation {
                Name = TimeOfFlightFilter.SensorName, Comparison = ComparisonOperator.Equal, ComparisonValue = TimeOfFlightPosition.FrontRight
            });
            _misty.RegisterTimeOfFlightEvent(TOFRangeCallback, 50, true, tofFrontRightValidations, null, null);

            List <TimeOfFlightValidation> tofFrontLeftValidations = new List <TimeOfFlightValidation>();

            tofFrontLeftValidations.Add(new TimeOfFlightValidation {
                Name = TimeOfFlightFilter.DistanceInMeters, Comparison = ComparisonOperator.LessThanOrEqual, ComparisonValue = 0.15
            });
            tofFrontLeftValidations.Add(new TimeOfFlightValidation {
                Name = TimeOfFlightFilter.SensorName, Comparison = ComparisonOperator.Equal, ComparisonValue = TimeOfFlightPosition.FrontLeft
            });
            _misty.RegisterTimeOfFlightEvent(TOFRangeCallback, 50, true, tofFrontLeftValidations, null, null);

            List <TimeOfFlightValidation> tofBackValidations = new List <TimeOfFlightValidation>();

            tofBackValidations.Add(new TimeOfFlightValidation {
                Name = TimeOfFlightFilter.DistanceInMeters, Comparison = ComparisonOperator.LessThanOrEqual, ComparisonValue = 0.15
            });
            tofBackValidations.Add(new TimeOfFlightValidation {
                Name = TimeOfFlightFilter.SensorName, Comparison = ComparisonOperator.Equal, ComparisonValue = TimeOfFlightPosition.Back
            });
            _misty.RegisterTimeOfFlightEvent(TOFRangeCallback, 50, true, tofBackValidations, null, null);
        }
示例#3
0
        public SkillHelper(IRobotMessenger misty)
        {
            _misty = misty ?? throw new ArgumentNullException(nameof(misty));

            _misty.RegisterDriveEncoderEvent(EncoderEventCallback, 100, true, null, "SkillHelperEncoderEvent", OnResponse);
            _misty.RegisterIMUEvent(ImuEventCallback, 100, true, null, "SkillHelperIMUEvent", OnResponse);
            _misty.RegisterTimeOfFlightEvent(TofEventCallback, 0, true, null, "SkillHelperTofEventEvent", OnResponse);
            _misty.RegisterHazardNotificationEvent(HazardEventCallback, 0, true, "SkillHelperHazardEvent", OnResponse);
        }
示例#4
0
        private void RegisterEvents()
        {
            //Register Bump Sensors with a callback
            _misty.RegisterBumpSensorEvent(BumpCallback, 50, true, null, null, null);

            //Front Right Time of Flight
            List <TimeOfFlightValidation> tofFrontRightValidations = new List <TimeOfFlightValidation>();

            tofFrontRightValidations.Add(new TimeOfFlightValidation {
                Name = TimeOfFlightFilter.SensorName, Comparison = ComparisonOperator.Equal, ComparisonValue = TimeOfFlightPosition.FrontRight
            });
            _misty.RegisterTimeOfFlightEvent(TOFFRRangeCallback, 0, true, tofFrontRightValidations, "FrontRight", null);

            //Front Left Time of Flight
            List <TimeOfFlightValidation> tofFrontLeftValidations = new List <TimeOfFlightValidation>();

            tofFrontLeftValidations.Add(new TimeOfFlightValidation {
                Name = TimeOfFlightFilter.SensorName, Comparison = ComparisonOperator.Equal, ComparisonValue = TimeOfFlightPosition.FrontLeft
            });
            _misty.RegisterTimeOfFlightEvent(TOFFLRangeCallback, 0, true, tofFrontLeftValidations, "FrontLeft", null);

            //Front Center Time of Flight
            List <TimeOfFlightValidation> tofFrontCenterValidations = new List <TimeOfFlightValidation>();

            tofFrontCenterValidations.Add(new TimeOfFlightValidation {
                Name = TimeOfFlightFilter.SensorName, Comparison = ComparisonOperator.Equal, ComparisonValue = TimeOfFlightPosition.FrontCenter
            });
            _misty.RegisterTimeOfFlightEvent(TOFCRangeCallback, 0, true, tofFrontCenterValidations, "FrontCenter", null);

            //Back Time of Flight
            List <TimeOfFlightValidation> tofBackValidations = new List <TimeOfFlightValidation>();

            tofBackValidations.Add(new TimeOfFlightValidation {
                Name = TimeOfFlightFilter.SensorName, Comparison = ComparisonOperator.Equal, ComparisonValue = TimeOfFlightPosition.Back
            });
            _misty.RegisterTimeOfFlightEvent(TOFBRangeCallback, 0, true, tofBackValidations, "Back", null);

            //Setting debounce a little higher to avoid too much traffic
            //Firmware will do the actual stop for edge detection
            List <TimeOfFlightValidation> tofFrontRightEdgeValidations = new List <TimeOfFlightValidation>();

            tofFrontRightEdgeValidations.Add(new TimeOfFlightValidation {
                Name = TimeOfFlightFilter.SensorName, Comparison = ComparisonOperator.Equal, ComparisonValue = TimeOfFlightPosition.DownwardFrontRight
            });
            _misty.RegisterTimeOfFlightEvent(FrontEdgeCallback, 1000, true, tofFrontRightEdgeValidations, "FREdge", null);

            List <TimeOfFlightValidation> tofFrontLeftEdgeValidations = new List <TimeOfFlightValidation>();

            tofFrontLeftEdgeValidations.Add(new TimeOfFlightValidation {
                Name = TimeOfFlightFilter.SensorName, Comparison = ComparisonOperator.Equal, ComparisonValue = TimeOfFlightPosition.DownwardFrontLeft
            });
            _misty.RegisterTimeOfFlightEvent(FrontEdgeCallback, 1000, true, tofFrontLeftEdgeValidations, "FLEdge", null);
        }
示例#5
0
        /// <summary>
        /// This event handler is called when the robot/user sends a start message
        /// The parameters can be set in the Skill Runner (or as json) and used in the skill if desired
        /// </summary>
        /// <param name="parameters"></param>
        public void OnStart(object sender, IDictionary <string, object> parameters)
        {
            try
            {
                _misty.SendDebugMessage("MistyMiner skill started", null);
                _misty.MoveHead(20, 0, 0, 0, AngularUnit.Position, null);
                //_takeImageTimer = new Timer(CheckForOreCallback, null, 0, 5000);
                _misty.RegisterCapTouchEvent(CheckForOreCallback, 1000, true, null, null, null);
                _misty.RegisterIMUEvent(setYaw, 5, true, null, null, null);

                List <ActuatorPositionValidation> HeadPositionValidation = new List <ActuatorPositionValidation>();
                HeadPositionValidation.Add(new ActuatorPositionValidation {
                    Name = ActuatorPositionFilter.SensorName, Comparison = ComparisonOperator.Equal, ComparisonValue = ActuatorPosition.HeadPitch
                });
                _misty.RegisterActuatorEvent(setHeadPitch, 10, true, HeadPositionValidation, null, null);

                List <ActuatorPositionValidation> ArmPositionValidation = new List <ActuatorPositionValidation>();
                ArmPositionValidation.Add(new ActuatorPositionValidation {
                    Name = ActuatorPositionFilter.SensorName, Comparison = ComparisonOperator.Equal, ComparisonValue = ActuatorPosition.RightArm
                });
                _misty.RegisterActuatorEvent(setArmPitch, 100, true, ArmPositionValidation, null, null);

                _misty.RegisterTimeOfFlightEvent(setTimeOfFlight, 0, true, null, null, null);


                //Clean up any lingering runs
                yaw.YawReached -= HandleYawReached;
                yaw.YawReached -= HandleReturnYawReached;
                yaw.YawReached -= FinalYaw;

                tof.DistanceReached -= HandleOreReached;
                tof.DistanceReached -= HandleReturnReached;

                arm.ArmPosReached -= ArmDown;
                arm.ArmPosReached -= ArmUp;
            }
            catch (Exception ex)
            {
                _misty.SkillLogger.Log($"MistyMiner : OnStart: => Exception", ex);
                _misty.SendDebugMessage($"MistyMiner : OnStart: => Exception" + ex, null);
            }
        }