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’daplus
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’datimes
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’dadiv
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 birTranslation2d
‘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 ++): BuRotation2d
nin rotasyon bileşenineother
rotasyon bileşenini eklerminus
(Java) veya ikili-
(C ++):other
ın rotasyon bileşenini buRotation2d
nin rotasyon bileşeninden çıkarırunaryMinus
(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.