Dönüşümler
Translation2d
Bir Translation2d üzerindeki işlemler, Translation2d ile temsil edilen vektör üzerinde işlemler gerçekleştirir.
Ekleme: İki
Translation2da ve b arasındaki ekleme, Java’daplusveya 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
Translation2dve bir sayısal çarpımı, Java’datimesveya C ++ ‘da*operatörü kullanılarak gerçekleştirilebilir. Bu, vektörü sayısal olarak çarpar.Bölüm: Bir
Translation2dve bir sayısal bölümü, Java’dadivveya C ++ ‘da/operatörü kullanılarak gerçekleştirilebilir. Bu, vektörü sayısal olarak böler.Döndürme: Bir
Translation2dnin saat yönünün tersine dönüşle döndürülmesi \(\theta\),rotateBykullanı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
unaryMinusveya 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 ++): BuRotation2dnin rotasyon bileşenineotherrotasyon bileşenini eklerminus(Java) veya ikili-(C ++):otherın rotasyon bileşenini buRotation2dnin 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.