Example #1
0
    /**
     * Set servo positions (0.0 to 1.0) translated from normalized values
     * (-1.0 to 1.0).
     *
     * @param normalizedHorizontal Pan Position from -1.0 to 1.0.
     * @param normalizedVertical Tilt Position from -1.0 to 1.0.
     */
    void setServoPositions(float normalizedHorizontal,
                           float normalizedVertical)
    {
        float servoH = NormalizeToRange(normalizedHorizontal);

        /* narrow vertical range keep vertical servo from going too far */
        //float servoV = NormalizeToRange(normalizedVertical, 0.2, 0.8);
        float servoV = NormalizeToRange(normalizedVertical);

        float currentH = horizontalServo->Get();
        float currentV = verticalServo->Get();

        /* make sure the movement isn't too small */
        if (fabs(servoH - currentH) > servoDeadband)
        {
            horizontalServo->Set(servoH);
            /* save new normalized horizontal position */
            horizontalPosition = RangeToNormalized(servoH, 1);
        }
        if (fabs(servoV - currentV) > servoDeadband)
        {
            verticalServo->Set(servoV);
            // save new normalized vertical position
            verticalPosition = RangeToNormalized(servoV, 1);
        }
        ShowActivity("Servo set to: x: %f   y: %f", servoH, servoV);
    }
void panForTarget(Servo *panServo, double sinStart)	{
	float normalizedSinPosition = (float)SinPosition(NULL, sinStart);
	float newServoPosition = NormalizeToRange(normalizedSinPosition);
	panServo->Set( newServoPosition );
	//ShowActivity ("pan x: normalized %f newServoPosition = %f" , 
	//		normalizedSinPosition, newServoPosition );
}
Example #3
0
    /**
     * Adjust servo positions (0.0 to 1.0) translated from normalized
     * values (-1.0 to 1.0).
     *
     * @param normalizedHorizontal Pan adjustment from -1.0 to 1.0.
     * @param normalizedVertical Tilt adjustment from -1.0 to 1.0.
     */
    void adjustServoPositions(float normDeltaHorizontal,
                              float normDeltaVertical)
    {
        /* adjust for the fact that servo overshoots based on image input */
        normDeltaHorizontal /= 8.0;
        normDeltaVertical /= 4.0;

        /* compute horizontal goal */
        float currentH = horizontalServo->Get();
        float normCurrentH = RangeToNormalized(currentH, 1);
        float normDestH = normCurrentH + normDeltaHorizontal;
        /* narrow range keep servo from going too far */
        if (normDestH > 1.0)
            normDestH = 1.0;
        if (normDestH < -1.0)
            normDestH = -1.0;
        /* convert inputs to servo range */
        float servoH = NormalizeToRange(normDestH);

        /* compute vertical goal */
        float currentV = verticalServo->Get();
        float normCurrentV = RangeToNormalized(currentV, 1);
        float normDestV = normCurrentV + normDeltaVertical;
        if (normDestV > 1.0)
            normDestV = 1.0;
        if (normDestV < -1.0)
            normDestV = -1.0;

        float servoV = NormalizeToRange(normDestV, 0.2, 0.8);

        /* make sure the movement isn't too small */
        if (fabs(currentH - servoH) > servoDeadband)
        {
            horizontalServo->Set(servoH);
            /* save new normalized horizontal position */
            horizontalPosition = RangeToNormalized(servoH, 1);
        }
        if (fabs(currentV - servoV) > servoDeadband)
        {
            verticalServo->Set(servoV);
            // save new normalized vertical position
            verticalPosition = RangeToNormalized(servoV, 1);
        }
        ShowActivity("Servo set to: x: %f   y: %f", servoH, servoV);
    }
Example #4
0
	/**
	 * Set servo positions (0.0 to 1.0) translated from normalized values (-1.0 to 1.0). 
	 * 
	 * @param normalizedHorizontal Pan Position from -1.0 to 1.0.
	 * @param normalizedVertical Tilt Position from -1.0 to 1.0.
	 */
	void setServoPositions(float normalizedHorizontal, float normalizedVertical)	{

		float servoH = NormalizeToRange(normalizedHorizontal);
		float servoV = NormalizeToRange(normalizedVertical);
		
		float currentH = horizontalServo->Get();		
		float currentV = verticalServo->Get();
		
		/* make sure the movement isn't too small */
		if ( fabs(servoH - currentH) > servoDeadband ) {
			horizontalServo->Set( servoH );
			/* save new normalized horizontal position */
			horizontalPosition = RangeToNormalized(servoH, 1);
		}
		if ( fabs(servoV - currentV) > servoDeadband ) {
			verticalServo->Set( servoV );
			verticalPosition = RangeToNormalized(servoV, 1);
		}
	}