Ana içeriğe geç

MegaTag2 ile Robot Lokalizasyonu

2024'te tanıtılan Megatag2, mobil robotlar için AprilTag tabanlı hassas ve belirsizlik içermeyen bir lokalizasyon sistemidir. Aşağıdaki hedeflerle geliştirilmiştir:

  • Poz belirsizliği sorununu ortadan kaldırmak ve görüntü/köşe gürültüsüne karşı dayanıklılığı artırmak.
  • Tek bir etiket ile perspektiften bağımsız olarak mükemmel poz tahminleri sağlamak.
  • Fiziksel AprilTag yerleşim hatalarına karşı dayanıklılığı artırmak
  • İyi poz tahmini sonuçları için gerekli filtreleme miktarını azaltmak

Megatag2, tek bir etiket ile herhangi bir mesafede mükemmel sonuçlar sağlar. Bu, yalnızca hem ilgili hem de tolerans dahilindeki etiketlere odaklanmanın ve diğer tüm etiketleri filtrelemenin mümkün olduğu anlamına gelir. Bir etiket doğru konumda değilse, MegaTag2 ile birlikte sunulan dinamik filtreleme özelliğini kullanarak filtreleyebilirsiniz.

int[] validIDs = {3,4};
LimelightHelpers.SetFiducialIDFiltersOverride("limelight", validIDs);

MT1'in aksine, MT2 robotunuzun yönünü (yaw) bildiğinizi varsayar. İsteğe bağlı olarak, Megatag2 tam robot oryantasyonunu ve açısal hızları kabul eder.

Gereksinimler:

  • Limelight'ınızın robot-uzay pozu webUI'da veya API aracılığıyla yapılandırılmış olmalı
  • Bir saha haritası (.fmap) yüklenmiş olmalı
  • LimelightHelpers.SetRobotOrientation(robotYawInDegrees,0,0,0,0,0) robot tarafındaki kodda her karede çağrılmalı
  • SetRobotOrientation merkezlenmiş (harita oluşturucuya bakın) veya mavi-köşe orijinini varsayar. CCW-pozitif, 0 derece -> FRC'de kırmızı ittifak duvarına bakıyor.

NetworkTables Anahtarları:

  • botpose_orb_wpiblue
  • botpose_orb_wpired
  • botpose_orb

JSON Anahtarları:

  • botpose_orb_wpiblue
  • botpose_orb_wpired
  • botpose_orb
  • (Her fiducial hedef için) t6r_fs_orb - yalnızca bu etikete dayalı megatag2 kullanarak saha uzayında robot pozu (çoklu etiket yok)

Bu oldukça belirsiz tek etiketli durumda MegaTag2 (kırmızı robot) ve Megatag (mavi robot) arasındaki farka dikkat edin


  • Altın Silindir / Kırmızı Robot: Filtrelenmemiş Megatag2 botpose
  • Sarı Silindirler: Filtrelenmemiş tek etiketli Megatag2 botposes

  • Beyaz Silindir/Mavi Robot: MegaTag1 Botpose
  • Yeşil Silindir: Etiket başına bireysel bot pozu (MT1)
  • Mavi Silindir: Etiket başına bireysel bot pozlarının ortalaması (MT1)

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_orb_wpiblue kullanmalıdır

WPILib'in Poz Tahmincisini Kullanma

  LimelightHelpers.SetRobotOrientation("limelight", m_poseEstimator.getEstimatedPosition().getRotation().getDegrees(), 0, 0, 0, 0, 0);
LimelightHelpers.PoseEstimate mt2 = LimelightHelpers.getBotPoseEstimate_wpiBlue_MegaTag2("limelight");
if(Math.abs(m_gyro.getRate()) > 720) // eğer açısal hızımız saniyede 720 dereceden fazlaysa, görüş güncellemelerini yoksay
{
doRejectUpdate = true;
}
if(mt2.tagCount == 0)
{
doRejectUpdate = true;
}
if(!doRejectUpdate)
{
m_poseEstimator.setVisionMeasurementStdDevs(VecBuilder.fill(.7,.7,9999999));
m_poseEstimator.addVisionMeasurement(
mt2.pose,
mt2.timestampSeconds);
}

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

LL Forward, LL Right ve LL Up, robotu somutlaştırdığınızda Robotun ileri, sağ ve yukarı vektörleri boyunca olan 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 nasıl değiştiğini izleyebilirsiniz. Limelight bu yapılandırmayı dahili olarak kamera uzayındaki hedef pozundan -> saha uzayındaki robot pozuna geçmek için kullanır.