Visée et Ajustement de Distance Simultanés
Cet exemple combine la visée et l'ajustement de la distance en une seule méthode. https://thumbs.gfycat.com/UncommonIncomparableDassierat-size_restricted.gif Cet exemple utilise le code des exemples de visée et d'ajustement de distance et rassemble tout dans une fonction simple. En utilisant ceci, vous pouvez positionner votre robot "approximativement" puis utiliser le code pour viser et se déplacer automatiquement à 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;
}