If you want to get into the math, things like Twist are from Lie groups, but that’s dumb irrelevant nerd talk.

Essentially, all their kinematics stuff (which is now integrated into wpilib) are all just ways to represent position, velocity, etc.

Rotation2D is a rotation vector, essentially the cos and sin components of a given rotation - the “correct” way to represent rotations and angles (as opposed to scalar angles).

Position2D is just a 2D point.

Pose2D composes a rotation and a position, representing a 2D point with heading - handy for robots.

Twist2D is essentially just the derivative of a pose, giving delta x, delta y, and delta theta (heading). You can integrate twists onto poses with the exp() method, which is nice for things like odometry (generate twist from encoders+gyro).

A rigid body is just a solid object with linear + angular position and linear + angular velocity - a handy model to represent a robot as.

This is perfect! Thank you. When you say Position2D I am assuming you are pointing to Translation2D?

Translation2D is a little confusing as it makes me think that they are sliding the points on an axis, but it seems they just use a Translation2D as a point sometimes

Yup - couldn’t remember if they call em position2d or translation2d.

The neat thing is that points are just intrinsically transformations - if I have a point at (3,4) that’s the same as a +3,+4 transformation applied to the point (0,0), so you can sort of just treat transformations as points and vice versa (you can even think of a pose as a transformation from 0 x,0 y, 0° to whatever x/y/θ the pose is representing).

I guess one last question… the Rotation2D is a vector in only the x, y (because we don’t care about z). Are you essentially just visualizing the Robot in the middle of the Unit Circle?

Cos (0) Sin(1) would be a rotation of 90 degrees? Can you think of it like that

A twist is not the derivative of the pose; it’s an element of the tangent space of the pose. Pose and twist both use position units. Derivative of pose uses velocity units.