Ana içeriğe geç

MegaTag ile Robot Lokalizasyonu

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 (metre cinsinden x,y,z, derece cinsinden roll, pitch, yaw) aracılığıyla kullanılabilir olacaktır.

Robot lokalizasyon algoritmamız MegaTag olarak adlandırılır. Birden fazla etiket görünümdeyse, bireysel 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 belirsizlik değişimi riski vardır.

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

Buradaki belirgin poz belirsizliğine dikkat edin:

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

Bu düzlemsel etiketlerle sınırlı değildir. Herhangi bir sayıda etikete, tam 3D'de ve herhangi bir yönelimde ölçeklenir. Zemin etiketleri ve tavan etiketleri mükemmel çalışır.

İşte bunun basit bir düzlemsel durumda nasıl çalıştığı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. 3D birleşik MegaTag boyut ve anahtar nokta sayısı olarak arttıkça, kararlılığı da artar.

megatag botpose örneği:

WPILib'in Pose Estimator'ını Kullanma

bilgi

2024'te, WPILib Ekosisteminin çoğu tek-orijinli koordinat sistemine geçiş yaptı. 2023'te, koordinat sistemi orijininiz ittifak renginize göre değişiyordu.

2024 ve sonrası için, koordinat sisteminizin orijini her zaman "mavi" orijin 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 Forward, LL Right ve LL Up, robotu canlandırsaydınız Robotun ileri, sağ ve yukarı vektörleri boyunca mesafeleri temsil eder (metre cinsinden). LL Roll, Pitch ve Yaw, Limelight'ınızın derece cinsinden dönüşünü temsil eder. Bu değerleri değiştirebilir ve 3D görüntüleyicide Limelight'ın 3D 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.