转变

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”表示沿弧线的距离变化。通常,这个类用于表示传动系统的运动,其中x组件是向前行驶的距离,y组件是向侧面行驶的距离(左正),而:math: ‘ theta ‘组件是航向的变化。我们可以在第10章,`此处 <https://file.tavsys.net/control/controls-engineering-in-frc.pdf>`找到寻找指数型位姿(沿扭转的曲率向前移动后的新位姿)背后的基本数学原理。

备注

对于非完整的传动系统,``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.