Dönüşümler
Translation2d
Bir Translation2d üzerindeki işlemler, Translation2d ile temsil edilen vektör üzerinde işlemler gerçekleştirir.
Addition: Addition between two
Translation2da and b can be performed usingplusin Java, or the+operator in C++/Python. Addition adds the two vectors.Subtraction: Subtraction between two
Translation2dcan be performed usingminusin Java, or the binary-operator in C++/Python. Subtraction subtracts the two vectors.Multiplication: Multiplication of a
Translation2dand a scalar can be performed usingtimesin Java, or the*operator in C++/Python. This multiplies the vector by the scalar.Division: Division of a
Translation2dand a scalar can be performed usingdivin Java, or the/operator in C++/Python. This divides the vector by the scalar.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}\)Additionally, you can rotate a
Translation2dby 180 degrees by usingunaryMinusin Java, or the unary-operator in C++/Python.
Rotation2d
Rotation2d için dönüşümler, Rotation2d ile temsil edilen açı ölçüsündeki aritmetik işlemlerdir.
plus(Java) or+(C++/Python): Adds the rotation component ofotherto thisRotation2d’s rotation componentminus(Java) or binary-(C++/Python): Subtracts the rotation component ofotherto thisRotation2d’s rotation componentunaryMinus(Java) or unary-(C++/Python): Multiplies the rotation component by a scalar of -1.times(Java) or*(C++/Python) : Multiplies the rotation component by a scalar.
Transform2d ve Twist2d
WPILib provides 2 classes, Transform2d (Java, C++, Python), which represents a transformation to a pose, and Twist2d (Java, C++, Python) 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 represents a change in distance along an arc. Usually, this class is used to represent the movement of a drivetrain, where the x component is the forward distance driven, the y component is the distance driven to the side (left positive), and the \(\theta\) component is the change in heading. The underlying math behind finding the pose exponential (new pose after moving the pose forward along the curvature of the twist) can be found here in chapter 10.
Not
Holonomik olmayan aktarma organları için, bir Twist2d nin y bileşeni her zaman 0 olmalıdır.
Both classes can be used to estimate robot location. Twist2d is used in WPILib’s odometry classes to update the robot’s pose based on movement, while Transform2d can be used to estimate the robot’s global position from vision data.