3#include "core/math/geometry/pose2d.h"
4#include "core/math/geometry/rotation2d.h"
5#include "core/math/geometry/translation2d.h"
6#include "core/math/geometry/twist2d.h"
7#include "core/math/units.h"
14struct ChassisVelocities {
16 units::Velocity
vx = 0_inps;
19 units::Velocity
vy = 0_inps;
22 units::AngularVelocity
omega = 0_radps;
24 ChassisVelocities() =
default;
26 ChassisVelocities(units::Velocity
vx, units::Velocity
vy, units::AngularVelocity
omega)
36 Velocity2d rotated = Velocity2d(
vx,
vy).rotate_by(-robotAngle);
37 return ChassisVelocities(rotated.
x(), rotated.
y(),
omega);
47 Velocity2d rotated = Velocity2d(
vx,
vy).rotate_by(robotAngle);
48 return ChassisVelocities(rotated.
x(), rotated.
y(),
omega);
71 return ChassisVelocities(twist.
dx() / dt, twist.
dy() / dt, twist.
dtheta() / dt);
79 ChassisVelocities operator-(
const ChassisVelocities& other)
const {
83 ChassisVelocities operator-()
const {
return ChassisVelocities(-
vx, -
vy, -
omega); }
85 ChassisVelocities operator*(
double scalar)
const {
86 return ChassisVelocities(
vx * scalar,
vy * scalar,
omega * scalar);
89 ChassisVelocities operator/(
double scalar)
const {
90 return ChassisVelocities(
vx / scalar,
vy / scalar,
omega / scalar);
93 bool operator==(
const ChassisVelocities& other)
const {
97 bool operator!=(
const ChassisVelocities& other)
const {
return !(*
this == other); }
constexpr Q x() const
Gets the x component.
Definition translation2d.h:64
constexpr Q y() const
Gets the y component.
Definition translation2d.h:73
constexpr Twist2d log(const Transform2d &transform) const
Definition pose2d.h:253
Definition rotation2d.h:16
constexpr Rotation2d()=default
Default Constructor for Rotation2d.
constexpr units::Length dx() const
Gets the x displacement.
Definition twist2d.h:56
constexpr units::Length dy() const
Gets the y displacement.
Definition twist2d.h:65
constexpr units::Angle dtheta() const
Gets the Angle displacement.
Definition twist2d.h:74
Represents robot chassis velocities.
Definition chassis_velocities.h:14
units::AngularVelocity omega
Angular velocity of the robot frame. (Counter-Clockwise is positive).
Definition chassis_velocities.h:22
ChassisVelocities to_field_relative(const Rotation2d &robotAngle) const
Converts this robot-relative set of velocities into a field-relative ChassisVelocities object.
Definition chassis_velocities.h:46
units::Velocity vy
Velocity along the y-axis. (Left is positive).
Definition chassis_velocities.h:19
ChassisVelocities to_robot_relative(const Rotation2d &robotAngle) const
Converts this field-relative set of velocities into a robot-relative ChassisVelocities object.
Definition chassis_velocities.h:35
units::Velocity vx
Velocity along the x-axis. (Forward is positive).
Definition chassis_velocities.h:16
ChassisVelocities discretize(units::Time dt) const
Discretizes continuous-time chassis velocities.
Definition chassis_velocities.h:61