Aller au contenu principal

Visée et Ajustement de Distance Simultanés

Cet exemple combine la visée et l'ajustement de distance en une seule méthode. https://thumbs.gfycat.com/UncommonIncomparableDassierat-size_restricted.gif Cet exemple utilise du code provenant des exemples de visée et d'ajustement de distance et rassemble le tout en une fonction simple. En utilisant ceci, vous pouvez amener votre robot "proche" de la cible puis utiliser le code pour viser automatiquement et se positionner à la bonne distance.

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;
}