Ejemplo n.º 1
0
 public PanTiltSetting Clone()
 {
     var clone = new PanTiltSetting();
     clone.TiltPercent = TiltPercent;
     clone.PanPercent = PanPercent;
     return clone;
 }
Ejemplo n.º 2
0
        public PanTiltSetting Clone()
        {
            var clone = new PanTiltSetting();

            clone.TiltPercent = TiltPercent;
            clone.PanPercent  = PanPercent;
            return(clone);
        }
Ejemplo n.º 3
0
        public AutonomousTrackStateManager(
            IPanTiltController panTiltController
            , IScreen screen) : base(screen)
        {
            _screen            = screen;
            _panTiltController = panTiltController;

            PursuitBoundaryLower = new PanTiltSetting(10, 40);
            PursuitBoundaryUpper = new PanTiltSetting(80, 90);

            Reset();
        }
        public PanTiltSetting CalculateNewSetting(PanTiltSetting currentSetting)
        {
            var newSetting = currentSetting.Clone();

            var deviation = GetDeviationFromTarget();

            var deflection = CalculatePercentDeflection(deviation);

            var xDeflection = Math.Abs(deviation.X) > DeadZone ? deflection.X : 0;
            var yDeflection = Math.Abs(deviation.Y) > DeadZone ? deflection.Y : 0;

            newSetting.PanPercent += xDeflection;
            newSetting.TiltPercent += yDeflection;

            return newSetting;
        }
Ejemplo n.º 5
0
        public PanTiltSetting CalculateNewSetting(PanTiltSetting currentSetting)
        {
            var newSetting = currentSetting.Clone();

            var deviation = GetDeviationFromTarget();

            var deflection = CalculatePercentDeflection(deviation);

            var xDeflection = Math.Abs(deviation.X) > DeadZone ? deflection.X : 0;
            var yDeflection = Math.Abs(deviation.Y) > DeadZone ? deflection.Y : 0;

            newSetting.PanPercent  += xDeflection;
            newSetting.TiltPercent += yDeflection;

            return(newSetting);
        }
Ejemplo n.º 6
0
        public PanTiltSetting CalculateNewSetting(PanTiltSetting currentSetting)
        {
            var newSetting = new PanTiltSetting();
            ThrottleMultipler = (4 * (-_throttleAxis + 1.1m)); // 1 to bias to +ve, .1 to ensure always non zero

            const decimal deadZone = 0.6m;

            if (Math.Abs(_panAxis) > deadZone)
            {
                newSetting.PanPercent = (currentSetting.PanPercent + (_panAxis * ThrottleMultipler));
            }

            if (Math.Abs(_tiltAxis) > deadZone)
            {
                newSetting.TiltPercent = (currentSetting.TiltPercent + (_tiltAxis * ThrottleMultipler));
            }

            return newSetting;
        }
        public PanTiltSetting CalculateNewSetting(PanTiltSetting currentSetting)
        {
            var newSetting = new PanTiltSetting();

            ThrottleMultipler = (4 * (-_throttleAxis + 1.1m)); // 1 to bias to +ve, .1 to ensure always non zero

            const decimal deadZone = 0.6m;

            if (Math.Abs(_panAxis) > deadZone)
            {
                newSetting.PanPercent = (currentSetting.PanPercent + (_panAxis * ThrottleMultipler));
            }

            if (Math.Abs(_tiltAxis) > deadZone)
            {
                newSetting.TiltPercent = (currentSetting.TiltPercent + (_tiltAxis * ThrottleMultipler));
            }

            return(newSetting);
        }
        public void CalculateNewSettingCalibratedResolution()
        {
            var target    = new Point(160, 120);
            var objective = new Point(128, 120);
            var config    = new CaptureConfig {
                Resolution = new Resolution(320, 240)
            };
            var strategy = new HandCalibratedModifierStrategy(config, target);

            strategy.Objective = objective;

            var setting = new PanTiltSetting(50, 50);

            var newSetting = strategy.CalculateNewSetting(setting);

            // AssertBuilder.Generate(newSetting, "newSetting"); // The following assertions were generated on 07-Mar-2015
            #region CodeGen Assertions
            Assert.AreEqual(53.0720m, newSetting.PanPercent);
            Assert.AreEqual(50m, newSetting.TiltPercent);
            #endregion
        }
Ejemplo n.º 9
0
 public void Start(PanTiltSetting setting)
 {
     Original = setting;
     _stopWatch.Restart();
     Ticks = 0;
 }
Ejemplo n.º 10
0
        private void CalibrateHalfAxis(int signMovement, PanTiltAxis axis)
        {
            decimal accumulatedDeviation = 0;
            bool    foundColour;

            do
            {
                _screen.BeginRepaint();
                ResetToCenter();
                WaitServo("Relocated to center position. About to capture first detection");
                var firstDetection = LocateColour();

                DoStep("Center detection @ {0} is {1}", CurrentSetting, firstDetection.CentralPoint);

                accumulatedDeviation += signMovement * saccadePercentIncrement;

                var movementRequired = new PanTiltSetting();
                if (axis == PanTiltAxis.Horizontal)
                {
                    movementRequired.PanPercent = accumulatedDeviation;
                }
                else
                {
                    movementRequired.TiltPercent = accumulatedDeviation;
                }

                _screen.WriteLine("Sign={0}", signMovement);
                _screen.WriteLine("Axis={0}", axis);
                _screen.WriteLine("Saccade={0}", accumulatedDeviation);

                MoveRelative(movementRequired);
                WaitServo("Settle time after moving to new detection location {0}. About to capture new detection.", movementRequired);

                var newDetection = LocateColour();
                DoStep("New detection @ {0} is {1}", CurrentSetting, newDetection.CentralPoint);

                foundColour = newDetection.IsDetected;

                if (foundColour)
                {
                    Func <PointF, float> getAxisValue;

                    if (axis == PanTiltAxis.Horizontal)
                    {
                        getAxisValue = p => p.X;
                    }
                    else
                    {
                        getAxisValue = p => p.Y;
                    }

                    var pixelDeviation = Convert.ToInt32(getAxisValue(newDetection.CentralPoint) - getAxisValue(firstDetection.CentralPoint));
                    var axisReadings   = _currentResolutionReadings[axis];
                    if (axisReadings.ContainsKey(pixelDeviation))
                    {
                        axisReadings[pixelDeviation].AllReadings.Add(accumulatedDeviation);
                    }
                    else
                    {
                        axisReadings.Add(pixelDeviation, new ReadingSet(accumulatedDeviation));
                    }
                    _screen.WriteLine("Deviation={0}", pixelDeviation);
                }

                _screen.WriteLine("First={0}", firstDetection.CentralPoint);
                _screen.WriteLine("New={0}", newDetection.CentralPoint);
            }while (foundColour && Math.Abs(accumulatedDeviation) < 60);
        }
Ejemplo n.º 11
0
 public void InvokeMoveAbsolute(PanTiltSetting setting)
 {
 }
Ejemplo n.º 12
0
 public PanTiltSetting CalculateNewSetting(PanTiltSetting currentSetting)
 {
     throw new NotImplementedException();
 }