Ana içeriğe geç

MegaTag ile Robot Lokalizasyonu

Eğer Limelight'ınızın robot-uzay pozu web arayüzünde yapılandırıldıysa ve web arayüzü üzerinden bir saha haritası yüklendiyse, robotun saha uzayındaki konumu getBotpose() ve "botpose" networktables dizisi aracılığıyla kullanılabilir olacaktır (x,y,z metre cinsinden, yuvarlanma, yunuslama, sapma derece cinsinden).

Robot lokalizasyon algoritmamız MegaTag olarak adlandırılır. Birden fazla etiket görüş alanındaysa, tek tek etiket belirsizliklerine ve görüntüdeki gürültüye karşı dayanıklıdır. Tüm anahtar noktalar eş düzlemli ise, hala bazı belirsizlik çevirme riskleri vardır.

  • Yeşil Silindir: Etiket başına bireysel robot pozu
  • Mavi Silindir: Eski BotPose
  • Beyaz Silindir: MegaTag Botpose

Buradaki açık poz belirsizliğine dikkat edin:

Yeni botpose'un (beyaz silindir) eski botpose'a (mavi silindir) kıyasla ne kadar stabil olduğuna dikkat edin. tx ve ty değerlerini de izleyebilirsiniz.

Bu sadece düzlemsel etiketlerle sınırlı değildir. Tam 3B'de ve herhangi bir yönelimde herhangi bir sayıda etikete ölçeklenebilir. Zemin etiketleri ve tavan etiketleri mükemmel çalışır.

İşte basit bir düzlemsel durumda bunun nasıl çalıştığının bir yönünü gösteren bir diyagram. Sonuçlar aslında gösterilenden daha iyidir, çünkü gösterilen MegaTag'de bir nokta yerine üç noktaya önemli bir hata uygulanmıştır. 3B birleşik MegaTag boyut ve anahtar nokta sayısı arttıkça, stabilitesi artar.

megatag botpose örneği:

WPILib'in Poz Tahmincisini Kullanma

bilgi

2024'te, WPILib Ekosisteminin çoğu tek kökenli koordinat sistemine geçiş yaptı. 2023'te, koordinat sisteminizin kökeni ittifak renginize göre değişiyordu.

2024 ve sonrası için, koordinat sisteminizin kökeni her zaman "mavi" köken olmalıdır. FRC takımları poz ile ilgili işlevsellik için her zaman botpose_wpiblue kullanmalıdır

 LimelightHelpers.PoseEstimate mt1 = LimelightHelpers.getBotPoseEstimate_wpiBlue("limelight");

if(mt1.tagCount == 1 && mt1.rawFiducials.length == 1)
{
if(mt1.rawFiducials[0].ambiguity > .7)
{
doRejectUpdate = true;
}
if(mt1.rawFiducials[0].distToCamera > 3)
{
doRejectUpdate = true;
}
}
if(mt1.tagCount == 0)
{
doRejectUpdate = true;
}

if(!doRejectUpdate)
{
m_poseEstimator.setVisionMeasurementStdDevs(VecBuilder.fill(.5,.5,9999999));
m_poseEstimator.addVisionMeasurement(
mt1.pose,
mt1.timestampSeconds);
}

Limelight'ınızın Robot-Uzay Pozunu Yapılandırma

LL İleri, LL Sağ ve LL Yukarı, robotun içinde bulunduğunuzda robotun ileri, sağ ve yukarı vektörleri boyunca olan mesafeleri temsil eder (metre cinsinden). LL Yuvarlanma, Yunuslama ve Sapma, Limelight'ınızın derece cinsinden dönüşünü temsil eder. Bu değerleri değiştirebilir ve 3B görüntüleyicide Limelight'ın 3B modelinin değişimini izleyebilirsiniz. Limelight bu yapılandırmayı dahili olarak kamera uzayındaki hedef pozundan -> saha uzayındaki robot pozuna geçmek için kullanır.