Ana içeriğe geç

Menzile Girme

FRC robotlarının, skor mekanizmalarının iyi çalışabilmesi için genellikle skor hedefinden belirli bir mesafede konumlandırılması gerekir. Limelight'ın kalibre edilmiş artı işaretiyle birlikte basit bir oransal kontrol döngüsü kullanarak robotunuzun hedefe belirli bir mesafeden gitmesini çok kolay bir şekilde sağlayabilirsiniz.

Bu örnek için robotunuzun hedefe nişan aldığından emin olmalısınız. Daha sonra nişan alma ve mesafe ayarlamayı tek bir fonksiyonda birleştireceğiz ancak bu örnekte sadece robotu doğru mesafeye götüren koda odaklanıyoruz.

Nişan alma örneğine benzer şekilde, burada robotunuzun güncelleme döngüsünde çalıştırılabilecek bir fonksiyon gösteriyoruz.

float KpDistance = -0.1f;  // Mesafe için oransal kontrol sabiti
float current_distance = Estimate_Distance(); // 'Vaka Çalışması: Mesafe Tahmini' bölümüne bakın

if (joystick->GetRawButton(9))
{
float distance_error = desired_distance - current_distance;
driving_adjust = KpDistance * distance_error;

left_command += distance_adjust;
right_command += distance_adjust;
}

KpDistance ayarının biraz ayarlanmasıyla, robotunuz çok hızlı ve doğru bir şekilde istenen mesafeye gitmelidir. Nişan almaya kıyasla, doğru mesafeye gitme genellikle daha kolaydır çünkü çoğu robot yerinde dönmekten çok daha kolay ileri ve geri hareket eder.

Şimdi doğru mesafeye gitmeyi daha da kolaylaştıracak basit bir hile anlatacağız. Mesafeyi gerçekten hesaplamak yerine, limelight artı işaretini kullanabilirsiniz. Robotunuzu hedeften ideal mesafenize konumlandırın ve artı işaretinin y-konumunu kalibre edin. Artık robotunuz doğru mesafedeyken y-açınız 0.0 olarak raporlanacaktır. Bu hileyi kullanarak, gerçek mesafeyi hiç hesaplamanız gerekmez ve kodunuz şöyle görünebilir:

float KpDistance = -0.1f; 

std::shared_ptr<NetworkTable> table = NetworkTable::GetTable("limelight");
float distance_error = table->GetNumber("ty");

if (joystick->GetRawButton(9))
{
driving_adjust = KpDistance * distance_error;

left_command += distance_adjust;
right_command += distance_adjust;
}

Atış mesafesini değiştirmeniz gerekirse, robotunuzu yeni mesafeye taşıyın ve limelight artı işaretini yeniden kalibre edin.

Image

İşte yukarıdaki fikri kullanan bir robot örneği. Sürücü sürmeyi bırakıp "nişan al" düğmesine bastığında robotun otomatik olarak doğru menzile nasıl geri gittiğine dikkat edin:

Image