Pular para o conteúdo principal

Mirando e Ajustando Distância Simultaneamente

Este exemplo combina a mira e o ajuste de distância em um único método. https://thumbs.gfycat.com/UncommonIncomparableDassierat-size_restricted.gif Este exemplo utiliza código dos exemplos de mira e ajuste de distância e reúne tudo em uma função simples. Usando isso, você pode posicionar seu robô "próximo" e então usar o código para mirar e dirigir automaticamente até a distância correta.

float KpAim = -0.1f;
float KpDistance = -0.1f;
float min_aim_command = 0.05f;

std::shared_ptr<NetworkTable> table = NetworkTable::GetTable("limelight");
float tx = table->GetNumber("tx");
float ty = table->GetNumber("ty");

if (joystick->GetRawButton(9))
{
float heading_error = -tx;
float distance_error = -ty;
float steering_adjust = 0.0f;

if (tx > 1.0)
{
steering_adjust = KpAim*heading_error - min_aim_command;
}
else if (tx < -1.0)
{
steering_adjust = KpAim*heading_error + min_aim_command;
}

float distance_adjust = KpDistance * distance_error;

left_command += steering_adjust + distance_adjust;
right_command -= steering_adjust + distance_adjust;
}