Kinematik ve Şasi Hızları Sınıfına Giriş

Kinematik nedir?

Yepyeni kinematik paketi, diferansiyel tahrik, dönüş tahriki ve mekânum tahrik kinematiği ve odometri için sınıfları içerir. Kinematik sınıfları, bir robot için doğrusal ve açısal hızları içeren evrensel bir ChassisSpeeds nesnesi arasında, her bir aktarma organı türü için kullanılabilir hızlara, yani diferansiyel tahrik için sol ve sağ tekerlek hızlarına, bir mecanum sürücü için dört tekerlek hızına dönüştürülmesine yardımcı olur veya bir swerve sürücü için ayrı modül durumlarıne yardımcı olur (hız ve açı).

Odometri nedir?

Odometri, robotun sahadaki konumunun bir tahminini oluşturmak için robot üzerindeki sensörlerin kullanılmasını içerir. FRC’de bu sensörler tipik olarak birkaç kodlayıcıdır (tam sayı sürücü tipine bağlıdır) ve robot açısını ölçmek için bir jiroskoptur. Odometri sınıfları, robotun sahadaki konumunun bir tahminini oluşturmak için hızlarla (ve sapma durumunda açılar) ilgili periyodik kullanıcı girdileriyle birlikte kinematik sınıflarını kullanır.

The Chassis Speeds Sınıfları

ChassisSpeeds nesnesi, yeni WPILib kinematik ve odometri takımı için çok önemlidir. ChassisSpeeds nesnesi, bir robot kasasının hızlarını temsil eder. Bu yapının üç bileşeni vardır:

  • `` vx`` : Robotun x (ileri) yönündeki hızı.

  • vy : Robotun y (yana doğru) yönündeki hızı. (Pozitif değerler, robotun sola hareket ettiği anlamına gelir).

  • omega : Robotun saniyede radyan cinsinden açısal hızı.

Not

Holonomik olmayan bir aktarma organı (yani, yana doğru hareket edemeyen bir aktarma organı, örneğin bir diferansiyel tahrik), yanlara doğru hareket edememesi nedeniyle sıfır vy bileşenine sahip olacaktır.

ChassisSpeeds nesnesi oluşturma

ChassisSpeeds nesnesinin kurucusu çok basittir ve vx, vy ve omega için üç argüman kabul eder. Java’da, vx’ ve vy saniyede metre cinsinden olmalıdır. C++ ‘da, birimler kitaplığı herhangi bir doğrusal hız birimi kullanılarak doğrusal bir hız sağlamak için kullanılabilir.

// The robot is moving at 3 meters per second forward, 2 meters
// per second to the right, and rotating at half a rotation per
// second counterclockwise.
var speeds = new ChassisSpeeds(3.0, -2.0, Math.PI);

Saha-bağıl hızlardan ChassisSpeeds Nesnesi Oluşturma

Robot açısı verildiğinde, bir dizi alana bağlı hızdan bir ChassisSpeeds nesnesi de oluşturulabilir. Bu, alana göre bir dizi istenen hızı (örneğin, karşı ittifak istasyonuna doğru ve sağ alan sınırına doğru) robot çerçevesine göre hızları temsil eden bir ChassisSpeeds nesnesine dönüştürür. Bu, bir sapma veya mecanum tahrik robotu için saha odaklı kontrolleri uygulamak için kullanışlıdır.

Statik ChassisSpeeds.fromFieldRelativeSpeeds (Java) / ChassisSpeeds::FromFieldRelativeSpeeds (C++) yöntemi, saha-bağıl hızlardan ChassisSpeeds nesnesini oluşturmak için kullanılabilir. Bu yöntem, vx (sahaya göre), vy (sahaya göre), omega ve robot açısını kabul eder.

// The desired field relative speed here is 2 meters per second
// toward the opponent's alliance station wall, and 2 meters per
// second toward the left field boundary. The desired rotation
// is a quarter of a rotation per second counterclockwise. The current
// robot angle is 45 degrees.
ChassisSpeeds speeds = ChassisSpeeds.fromFieldRelativeSpeeds(
  2.0, 2.0, Math.PI / 2.0, Rotation2d.fromDegrees(45.0));

Not

Açısal hız, açık bir şekilde “sahaya göre” olarak belirtilmemiştir çünkü açısal hız, bir alan perspektifinden veya bir robot perspektifinden ölçülen ile aynıdır.