转变

Translation2d

在Translation2d上的操作对由Translation2d表示的向量执行操作。

  • Addition: Addition between two Translation2d a and b can be performed using plus in Java, or the + operator in C++/Python. Addition adds the two vectors.

  • Subtraction: Subtraction between two Translation2d can be performed using minus in Java, or the binary - operator in C++/Python. Subtraction subtracts the two vectors.

  • Multiplication: Multiplication of a Translation2d and a scalar can be performed using times in Java, or the * operator in C++/Python. This multiplies the vector by the scalar.

  • Division: Division of a Translation2d and a scalar can be performed using div in Java, or the / operator in C++/Python. This divides the vector by the scalar.

  • 旋转:通过使用“ rotateBy”,可以绕着原点逆时针旋转``Translation2d”。这相当于将向量乘以矩阵:math:begin{bmatrix} costheta & -sintheta \ sintheta & costheta end{bmatrix}

  • Additionally, you can rotate a Translation2d by 180 degrees by using unaryMinus in Java, or the unary - operator in C++/Python.

Rotation2d

``Rotation2d’’的转换只是对由``Rotation2d``表示的角度度量的算术运算。

  • plus (Java) or + (C++/Python): Adds the rotation component of other to this Rotation2d’s rotation component

  • minus (Java) or binary - (C++/Python): Subtracts the rotation component of other to this Rotation2d’s rotation component

  • unaryMinus (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 and 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''代表一个``相对''转换。它具有平移和旋转组件。通过“ Transform2d”变换“ Pose2d”,将通过姿势的旋转来旋转变换的平移分量,然后将旋转的平移分量和旋转分量添加到该位姿。换句话说,``Pose2d.plus(Transform2d) 返回 \(\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.

备注

对于非完整的传动系统,``Twist2d’’的y分量应始终为0。

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.