[wpimath] Make copies of trajectory constraint arguments (#3832)

This avoids stack-use-after-scope bugs in code like the following when
the original argument goes out of scope:
```cpp
frc2::Command* RobotContainer::GetAutonomousCommand() {
  // Create a voltage constraint to ensure we don't accelerate too fast
  frc::DifferentialDriveVoltageConstraint autoVoltageConstraint(
      frc::SimpleMotorFeedforward<units::meters>(
          DriveConstants::ks, DriveConstants::kv, DriveConstants::ka),
      DriveConstants::kDriveKinematics, 10_V);
```
This commit is contained in:
Tyler Veness
2021-12-25 05:19:43 -08:00
committed by GitHub
parent 9d13ae8d01
commit eafa947338
4 changed files with 5 additions and 5 deletions

View File

@@ -32,7 +32,7 @@ class WPILIB_DLLEXPORT DifferentialDriveKinematicsConstraint
units::meters_per_second_t speed) const override;
private:
const DifferentialDriveKinematics& m_kinematics;
DifferentialDriveKinematics m_kinematics;
units::meters_per_second_t m_maxSpeed;
};
} // namespace frc

View File

@@ -44,8 +44,8 @@ class WPILIB_DLLEXPORT DifferentialDriveVoltageConstraint
units::meters_per_second_t speed) const override;
private:
const SimpleMotorFeedforward<units::meter>& m_feedforward;
const DifferentialDriveKinematics& m_kinematics;
SimpleMotorFeedforward<units::meter> m_feedforward;
DifferentialDriveKinematics m_kinematics;
units::volt_t m_maxVoltage;
};
} // namespace frc

View File

@@ -33,7 +33,7 @@ class WPILIB_DLLEXPORT MecanumDriveKinematicsConstraint
units::meters_per_second_t speed) const override;
private:
const MecanumDriveKinematics& m_kinematics;
MecanumDriveKinematics m_kinematics;
units::meters_per_second_t m_maxSpeed;
};
} // namespace frc

View File

@@ -32,7 +32,7 @@ class SwerveDriveKinematicsConstraint : public TrajectoryConstraint {
units::meters_per_second_t speed) const override;
private:
const frc::SwerveDriveKinematics<NumModules>& m_kinematics;
frc::SwerveDriveKinematics<NumModules> m_kinematics;
units::meters_per_second_t m_maxSpeed;
};
} // namespace frc