Пример #1
0
        public AxisCalibrationReadings this[PanTiltAxis axis]
        {
            get
            {
                switch (axis)
                {
                case PanTiltAxis.Horizontal: return(Horizontal);

                case PanTiltAxis.Vertical: return(Vertical);

                default: throw new NotSupportedException();
                }
            }
        }
Пример #2
0
        public LinearRegressor this[PanTiltAxis axis]
        {
            get
            {
                switch (axis)
                {
                case PanTiltAxis.Horizontal: return(PanAxis);

                case PanTiltAxis.Vertical: return(TiltAxis);

                default: throw new NotSupportedException();
                }
            }
        }
Пример #3
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);
        }
Пример #4
0
 public string ToCsv(PanTiltAxis axis)
 {
     var yValue = axis == PanTiltAxis.Horizontal ? Setting.PanPercent : Setting.TiltPercent;
     return $"{TimeSpan.TotalMilliseconds},{yValue}";
 }
Пример #5
0
        public string ToCsv(PanTiltAxis axis)
        {
            var yValue = axis == PanTiltAxis.Horizontal ? Setting.PanPercent : Setting.TiltPercent;

            return($"{TimeSpan.TotalMilliseconds},{yValue}");
        }