Adım 4: Odometriyi Güncelleme ve Robot Konumunu Görselleştirme

Simüle edilmiş kodlayıcı konumları, hızları ve cayro açıları düzenli olarak doğru bilgilerle güncellendiğinden, bu veriler periyodik bir döngüde robotun pozunu güncellemek için kullanılabilir (örneğin, bir periyodik döngüde periodic() yöntemi Subsystem-Alt Sistem). Simülasyonda, periyodik döngü, odometriyi güncellemek için simüle edilmiş kodlayıcı ve cayro okumalarını kullanır, oysa gerçek robotta aynı kod fiziksel donanımdan gerçek okumaları kullanır.

Not

Odometri kullanma hakkında daha fazla bilgi için bkz this document.

Robot Poz Görselleştirme

Robot duruşu Simülatör GUI’de (simülasyon sırasında) veya Cam gibi bir gösterge panosunda (gerçek bir robot üzerinde) odometre pozunu bir Field2d nesnesi üzerinden göndererek görselleştirilebilir. Bir Field2d, herhangi bir yapıcı argümanı olmadan önemsiz bir şekilde oluşturulabilir:

private Field2d m_field = new Field2d();

Bu Field2d örneği daha sonra NetworkTables üzerinden gönderilmelidir. Bunu yapmak için en iyi yer, alt sisteminizin kurucusudur.

public Drivetrain() {
  ...
  SmartDashboard.putData("Field", m_field);
}

Not

Field2d örneği, daha düşük seviyeli bir NetworkTables API kullanılarak veya Shuffleboard API kullanılarak da gönderilebilir.

Son olarak, odometrinizden alınan poz periyodik olarak Field2d nesnesine güncellenmelidir. Bunun genel bir periodic () yöntemi, yani hem simülasyon sırasında hem de gerçek robot çalışması sırasında çalışan bir yöntem olması gerektiğini unutmayın.

public void periodic() {
  ...
  // This will get the simulated sensor readings that we set
  // in the previous article while in simulation, but will use
  // real values on the robot itself.
  m_odometry.update(m_gyro.getRotation2d(),
                    m_leftEncoder.getDistance(),
                    m_rightEncoder.getDistance());
  m_field.setRobotPose(m_odometry.getPoseMeters());
}

Önemli

Bu kodun, çalışma modundan bağımsız olarak periyodik olarak çağrılan düzenli bir periodic () yöntemine yerleştirilmesi önemlidir. Komut tabanlı kitaplığı kullanıyorsanız, bu yöntem zaten mevcuttur. Değilse, bu yöntemi periyodik olarak ana Robot sınıfından çağırmakla sorumlusunuz.

Not

At this point we have covered all of the code changes required to run your code. You should head to the Simulation User Interface page for more info on how to run the simulation and add the field that your simulated robot will run on to the GUI.