Ana içeriğe geç

Eş Zamanlı Nişan Alma ve Mesafe Ayarlama

Bu örnek, nişan alma ve mesafe ayarlamayı tek bir yöntemde birleştirir. https://thumbs.gfycat.com/UncommonIncomparableDassierat-size_restricted.gif Bu örnek, nişan alma ve mesafe ayarlama örneklerinden alınan kodları kullanır ve her şeyi tek bir basit fonksiyonda bir araya getirir. Bunu kullanarak, robotunuzu "yaklaştırabilir" ve ardından doğru mesafeye otomatik olarak nişan alıp sürmek için kod kullanabilirsiniz.

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