The linear time-varying unicycle controller has a similar form to the LQR, but the model used to compute the controller gain is the nonlinear unicycle model linearized around the drivetrain's current state.
More...
#include <frc/controller/LTVUnicycleController.h>
|
| LTVUnicycleController (units::second_t dt) |
| Constructs a linear time-varying unicycle controller with default maximum desired error tolerances of (x = 0.0625 m, y = 0.125 m, heading = 2 rad) and default maximum desired control effort of (linear velocity = 1 m/s, angular velocity = 2 rad/s).
|
|
| LTVUnicycleController (const wpi::array< double, 3 > &Qelems, const wpi::array< double, 2 > &Relems, units::second_t dt) |
| Constructs a linear time-varying unicycle controller.
|
|
| LTVUnicycleController (LTVUnicycleController &&)=default |
| Move constructor.
|
|
LTVUnicycleController & | operator= (LTVUnicycleController &&)=default |
| Move assignment operator.
|
|
bool | AtReference () const |
| Returns true if the pose error is within tolerance of the reference.
|
|
void | SetTolerance (const Pose2d &poseTolerance) |
| Sets the pose error which is considered tolerable for use with AtReference().
|
|
ChassisSpeeds | Calculate (const Pose2d ¤tPose, const Pose2d &poseRef, units::meters_per_second_t linearVelocityRef, units::radians_per_second_t angularVelocityRef) |
| Returns the linear and angular velocity outputs of the LTV controller.
|
|
ChassisSpeeds | Calculate (const Pose2d ¤tPose, const Trajectory::State &desiredState) |
| Returns the linear and angular velocity outputs of the LTV controller.
|
|
void | SetEnabled (bool enabled) |
| Enables and disables the controller for troubleshooting purposes.
|
|
The linear time-varying unicycle controller has a similar form to the LQR, but the model used to compute the controller gain is the nonlinear unicycle model linearized around the drivetrain's current state.
See section 8.9 in Controls Engineering in FRC for a derivation of the control law we used shown in theorem 8.9.1.
◆ LTVUnicycleController() [1/3]
frc::LTVUnicycleController::LTVUnicycleController |
( |
units::second_t | dt | ) |
|
|
inlineexplicit |
Constructs a linear time-varying unicycle controller with default maximum desired error tolerances of (x = 0.0625 m, y = 0.125 m, heading = 2 rad) and default maximum desired control effort of (linear velocity = 1 m/s, angular velocity = 2 rad/s).
- Parameters
-
dt | Discretization timestep. |
◆ LTVUnicycleController() [2/3]
frc::LTVUnicycleController::LTVUnicycleController |
( |
const wpi::array< double, 3 > & | Qelems, |
|
|
const wpi::array< double, 2 > & | Relems, |
|
|
units::second_t | dt ) |
|
inline |
◆ LTVUnicycleController() [3/3]
◆ AtReference()
bool frc::LTVUnicycleController::AtReference |
( |
| ) |
const |
|
inline |
Returns true if the pose error is within tolerance of the reference.
◆ Calculate() [1/2]
ChassisSpeeds frc::LTVUnicycleController::Calculate |
( |
const Pose2d & | currentPose, |
|
|
const Pose2d & | poseRef, |
|
|
units::meters_per_second_t | linearVelocityRef, |
|
|
units::radians_per_second_t | angularVelocityRef ) |
Returns the linear and angular velocity outputs of the LTV controller.
The reference pose, linear velocity, and angular velocity should come from a drivetrain trajectory.
- Parameters
-
currentPose | The current pose. |
poseRef | The desired pose. |
linearVelocityRef | The desired linear velocity. |
angularVelocityRef | The desired angular velocity. |
◆ Calculate() [2/2]
Returns the linear and angular velocity outputs of the LTV controller.
The reference pose, linear velocity, and angular velocity should come from a drivetrain trajectory.
- Parameters
-
currentPose | The current pose. |
desiredState | The desired pose, linear velocity, and angular velocity from a trajectory. |
◆ operator=()
Move assignment operator.
◆ SetEnabled()
void frc::LTVUnicycleController::SetEnabled |
( |
bool | enabled | ) |
|
|
inline |
Enables and disables the controller for troubleshooting purposes.
- Parameters
-
enabled | If the controller is enabled or not. |
◆ SetTolerance()
void frc::LTVUnicycleController::SetTolerance |
( |
const Pose2d & | poseTolerance | ) |
|
|
inline |
Sets the pose error which is considered tolerable for use with AtReference().
- Parameters
-
poseTolerance | Pose error which is tolerable. |
The documentation for this class was generated from the following file: