mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-22 01:11:42 +00:00
[wpimath] ChassisSpeeds: Add arithmetic functions (#5293)
Co-authored-by: Ryan Blue <ryanzblue@gmail.com> Co-authored-by: Tyler Veness <calcmogul@gmail.com>
This commit is contained in:
@@ -15,3 +15,55 @@ TEST(ChassisSpeedsTest, FieldRelativeConstruction) {
|
||||
EXPECT_NEAR(1.0, chassisSpeeds.vy.value(), kEpsilon);
|
||||
EXPECT_NEAR(0.5, chassisSpeeds.omega.value(), kEpsilon);
|
||||
}
|
||||
|
||||
TEST(ChassisSpeedsTest, Plus) {
|
||||
const frc::ChassisSpeeds left{1.0_mps, 0.5_mps, 0.75_rad_per_s};
|
||||
const frc::ChassisSpeeds right{2.0_mps, 1.5_mps, 0.25_rad_per_s};
|
||||
|
||||
const frc::ChassisSpeeds result = left + right;
|
||||
|
||||
EXPECT_NEAR(3.0, result.vx.value(), kEpsilon);
|
||||
EXPECT_NEAR(2.0, result.vy.value(), kEpsilon);
|
||||
EXPECT_NEAR(1.0, result.omega.value(), kEpsilon);
|
||||
}
|
||||
|
||||
TEST(ChassisSpeedsTest, Minus) {
|
||||
const frc::ChassisSpeeds left{1.0_mps, 0.5_mps, 0.75_rad_per_s};
|
||||
const frc::ChassisSpeeds right{2.0_mps, 0.5_mps, 0.25_rad_per_s};
|
||||
|
||||
const frc::ChassisSpeeds result = left - right;
|
||||
|
||||
EXPECT_NEAR(-1.0, result.vx.value(), kEpsilon);
|
||||
EXPECT_NEAR(0, result.vy.value(), kEpsilon);
|
||||
EXPECT_NEAR(0.5, result.omega.value(), kEpsilon);
|
||||
}
|
||||
|
||||
TEST(ChassisSpeedsTest, UnaryMinus) {
|
||||
const frc::ChassisSpeeds speeds{1.0_mps, 0.5_mps, 0.75_rad_per_s};
|
||||
|
||||
const frc::ChassisSpeeds result = -speeds;
|
||||
|
||||
EXPECT_NEAR(-1.0, result.vx.value(), kEpsilon);
|
||||
EXPECT_NEAR(-0.5, result.vy.value(), kEpsilon);
|
||||
EXPECT_NEAR(-0.75, result.omega.value(), kEpsilon);
|
||||
}
|
||||
|
||||
TEST(ChassisSpeedsTest, Multiplication) {
|
||||
const frc::ChassisSpeeds speeds{1.0_mps, 0.5_mps, 0.75_rad_per_s};
|
||||
|
||||
const frc::ChassisSpeeds result = speeds * 2;
|
||||
|
||||
EXPECT_NEAR(2.0, result.vx.value(), kEpsilon);
|
||||
EXPECT_NEAR(1.0, result.vy.value(), kEpsilon);
|
||||
EXPECT_NEAR(1.5, result.omega.value(), kEpsilon);
|
||||
}
|
||||
|
||||
TEST(ChassisSpeedsTest, Division) {
|
||||
const frc::ChassisSpeeds speeds{1.0_mps, 0.5_mps, 0.75_rad_per_s};
|
||||
|
||||
const frc::ChassisSpeeds result = speeds / 2;
|
||||
|
||||
EXPECT_NEAR(0.5, result.vx.value(), kEpsilon);
|
||||
EXPECT_NEAR(0.25, result.vy.value(), kEpsilon);
|
||||
EXPECT_NEAR(0.375, result.omega.value(), kEpsilon);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user