דלג לתוכן הראשי

כיוון וכיול טווח בו-זמנית

דוגמה זו משלבת כיוון והתאמת טווח לשיטה אחת. https://thumbs.gfycat.com/UncommonIncomparableDassierat-size_restricted.gif דוגמה זו משתמשת בקוד מדוגמאות הכיוון והתאמת הטווח ומשלבת הכל יחד לפונקציה פשוטה אחת. באמצעות זה, תוכלו לקרב את הרובוט שלכם ואז להשתמש בקוד כדי לכוון אוטומטית ולנסוע למרחק הנכון.

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