public AxisCalibrationReadings this[PanTiltAxis axis] { get { switch (axis) { case PanTiltAxis.Horizontal: return(Horizontal); case PanTiltAxis.Vertical: return(Vertical); default: throw new NotSupportedException(); } } }
public LinearRegressor this[PanTiltAxis axis] { get { switch (axis) { case PanTiltAxis.Horizontal: return(PanAxis); case PanTiltAxis.Vertical: return(TiltAxis); default: throw new NotSupportedException(); } } }
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); }
public string ToCsv(PanTiltAxis axis) { var yValue = axis == PanTiltAxis.Horizontal ? Setting.PanPercent : Setting.TiltPercent; return $"{TimeSpan.TotalMilliseconds},{yValue}"; }
public string ToCsv(PanTiltAxis axis) { var yValue = axis == PanTiltAxis.Horizontal ? Setting.PanPercent : Setting.TiltPercent; return($"{TimeSpan.TotalMilliseconds},{yValue}"); }