Dönüşümler

Translation2d

Bir Translation2d üzerindeki işlemler, Translation2d ile temsil edilen vektör üzerinde işlemler gerçekleştirir.

  • Ekleme: İki Translation2d a ve b arasındaki ekleme, Java’da plus veya C ++ ‘da + ‘operatörü kullanılarak gerçekleştirilebilir. Ekleme, iki vektörü ekler.

  • Çıkarma: İki `` Translation2d ‘’ arasındaki çıkarma, Java’da minus``veya C ++ 'da ikili ``- operatörü kullanılarak gerçekleştirilebilir. Çıkarma, iki vektörü çıkarır.

  • Çarpma: Bir Translation2d ve bir sayısal çarpımı, Java’da times veya C ++ ‘da * operatörü kullanılarak gerçekleştirilebilir. Bu, vektörü sayısal olarak çarpar.

  • Bölüm: Bir Translation2d ve bir sayısal bölümü, Java’da div veya C ++ ‘da / operatörü kullanılarak gerçekleştirilebilir. Bu, vektörü sayısal olarak böler.

  • Döndürme: Bir Translation2d nin saat yönünün tersine dönüşle döndürülmesi \(\theta\), rotateBy kullanılarak orijin etrafında yapılabilir. Bu, vektörün matrisle çarpılmasına eşdeğerdir \(\begin{bmatrix} cos\theta & -sin\theta \\ sin\theta & cos\theta \end{bmatrix}\)

  • Ek olarak, Java’da unaryMinus veya C ++ ‘da tekli - operatörünü kullanarak bir Translation2d ‘yi 180 derece döndürebilirsiniz.

Rotation2d

Rotation2d için dönüşümler, Rotation2d ile temsil edilen açı ölçüsündeki aritmetik işlemlerdir.

  • plus (Java) veya + (C ++): Bu Rotation2d nin rotasyon bileşenine other rotasyon bileşenini ekler

  • minus (Java) veya ikili - (C ++): other ın rotasyon bileşenini bu Rotation2d nin rotasyon bileşeninden çıkarır

  • unaryMinus (Java) veya tekil - (C ++): Döndürme bileşenini -1 sayısalıyla çarpar.

  • times (Java) veya * (C ++): Döndürme bileşenini bir sayısal ile çarpar.

Transform2d ve Twist2d

WPILib provides 2 classes, Transform2d (Java, C++), which represents a transformation to a pose, and Twist2d (Java, C++) which represents a movement along an arc. Transform2d and Twist2d all have x, y and \(\theta\) components.

Transform2d, göreceli-relative bir dönüşümü temsil eder. Bir öteleme ve döndürme bileşenine sahiptir. Bir Pose2d nin bir Transform2d ile dönüştürülmesi, dönüşümün çeviri bileşenini pozun dönüşüyle döndürür ve ardından döndürülen çeviri bileşenini ve döndürme bileşenini poza ekler. Başka bir deyişle, Pose2d.plus(Transform2d) şunu döndürür \(\begin{bmatrix} x_p \\ y_p \\ \theta_p \end{bmatrix}+\begin{bmatrix} cos\theta_p & -sin\theta_p & 0 \\ sin\theta_p & cos\theta_p & 0 \\ 0 & 0 & 1 \end{bmatrix}\begin{bmatrix}x_t \\ y_t \\ \theta_t \end{bmatrix}\)

Twist2d, bir yay boyunca mesafedeki bir değişikliği temsil eder. Genellikle, bu sınıf, bir aktarma sisteminin hareketini temsil etmek için kullanılır; burada x bileşeni, sürülen ileri mesafedir, y bileşeni, yana sürülen mesafedir (sol pozitif) ve \(\theta\) bileşeni, başlıktaki değişiklik. Poz üstelini bulmanın ardında yatan matematik (pozu bükülmenin eğriliği boyunca ileriye doğru hareket ettirdikten sonra yeni poz) 10. bölümde burada _ bulunabilir.

Not

Holonomik olmayan aktarma organları için, bir Twist2d nin y bileşeni her zaman 0 olmalıdır.

Her iki sınıf da robot konumunu tahmin etmek için kullanılabilir. Twist2d, WPILib’in odometri sınıflarında, robotun hareketine dayalı duruşunu güncellemek için kullanılırken, Transform2d, robotun küresel konumunu görme verilerinden tahmin etmek için kullanılabilir.