Refactor TrajectoryGenerator (#1972)

This commit is contained in:
Prateek Machiraju
2019-10-26 12:39:47 -04:00
committed by Peter Johnson
parent 73a30182c3
commit 9440edf2b5
23 changed files with 825 additions and 629 deletions

View File

@@ -34,7 +34,7 @@ TEST(RamseteControllerTest, ReachesReference) {
auto waypoints = std::vector{frc::Pose2d{2.75_m, 22.521_m, 0_rad},
frc::Pose2d{24.73_m, 19.68_m, 5.846_rad}};
auto trajectory = frc::TrajectoryGenerator::GenerateTrajectory(
waypoints, {}, 0_mps, 0_mps, 8.8_mps, 0.1_mps_sq, false);
waypoints, {8.8_mps, 0.1_mps_sq});
constexpr auto kDt = 0.02_s;
auto totalTime = trajectory.TotalTime();

View File

@@ -29,8 +29,12 @@ class CubicHermiteSplineTest : public ::testing::Test {
const auto start = std::chrono::high_resolution_clock::now();
// Generate and parameterize the spline.
const auto [startCV, endCV] =
SplineHelper::CubicControlVectorsFromWaypoints(a, waypoints, b);
const auto splines =
SplineHelper::CubicSplinesFromWaypoints(a, waypoints, b);
SplineHelper::CubicSplinesFromControlVectors(startCV, waypoints, endCV);
std::vector<Spline<3>::PoseWithCurvature> poses;
poses.push_back(splines[0].GetPoint(0.0));

View File

@@ -27,7 +27,8 @@ class QuinticHermiteSplineTest : public ::testing::Test {
const auto start = std::chrono::high_resolution_clock::now();
// Generate and parameterize the spline.
const auto spline = SplineHelper::QuinticSplinesFromWaypoints({a, b})[0];
const auto spline = SplineHelper::QuinticSplinesFromControlVectors(
SplineHelper::QuinticControlVectorsFromWaypoints({a, b}))[0];
const auto poses = SplineParameterizer::Parameterize(spline);
// End timer.

View File

@@ -20,11 +20,11 @@ using namespace frc;
TEST(CentripetalAccelerationConstraintTest, Constraint) {
const auto maxCentripetalAcceleration = 7_fps_sq;
std::vector<std::unique_ptr<TrajectoryConstraint>> constraints;
constraints.emplace_back(std::make_unique<CentripetalAccelerationConstraint>(
maxCentripetalAcceleration));
auto config = TrajectoryConfig(12_fps, 12_fps_sq);
config.AddConstraint(
CentripetalAccelerationConstraint(maxCentripetalAcceleration));
auto trajectory = TestTrajectory::GetTrajectory(std::move(constraints));
auto trajectory = TestTrajectory::GetTrajectory(config);
units::second_t time = 0_s;
units::second_t dt = 20_ms;

View File

@@ -21,12 +21,11 @@ TEST(DifferentialDriveKinematicsConstraintTest, Constraint) {
const auto maxVelocity = 12_fps;
const DifferentialDriveKinematics kinematics{27_in};
std::vector<std::unique_ptr<TrajectoryConstraint>> constraints;
constraints.emplace_back(
std::make_unique<DifferentialDriveKinematicsConstraint>(kinematics,
maxVelocity));
auto config = TrajectoryConfig(12_fps, 12_fps_sq);
config.AddConstraint(
DifferentialDriveKinematicsConstraint(kinematics, maxVelocity));
auto trajectory = TestTrajectory::GetTrajectory(std::move(constraints));
auto trajectory = TestTrajectory::GetTrajectory(config);
units::second_t time = 0_s;
units::second_t dt = 20_ms;

View File

@@ -17,8 +17,8 @@
using namespace frc;
TEST(TrajectoryGenerationTest, ObeysConstraints) {
auto trajectory = TestTrajectory::GetTrajectory(
std::vector<std::unique_ptr<TrajectoryConstraint>>());
TrajectoryConfig config{12_fps, 12_fps_sq};
auto trajectory = TestTrajectory::GetTrajectory(config);
units::second_t time = 0_s;
units::second_t dt = 20_ms;