Viser et ajuster la distance simultanément
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 la distance et rassemble tout dans une seule fonction simple. En utilisant ceci, vous pouvez amener votre robot "proche" de la cible, puis utiliser le code pour viser automatiquement et se déplacer à 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;
}