Full discretization grid specialization for SE2. More...
#include <full_discretization_grid_base_se2.h>
Public Types | |
enum | CostIntegrationRule { CostIntegrationRule::LeftSum, CostIntegrationRule::TrapezoidalRule } |
using | NlpFunctions = corbo::NlpFunctions |
using | OptimizationEdgeSet = corbo::OptimizationEdgeSet |
using | PartiallyFixedVectorVertex = corbo::PartiallyFixedVectorVertex |
using | Ptr = std::shared_ptr< FullDiscretizationGridBaseSE2 > |
using | ReferenceTrajectoryInterface = corbo::ReferenceTrajectoryInterface |
using | ScalarVertex = corbo::ScalarVertex |
using | SystemDynamicsInterface = corbo::SystemDynamicsInterface |
using | TimeSeries = corbo::TimeSeries |
using | UPtr = std::unique_ptr< FullDiscretizationGridBaseSE2 > |
using | VectorVertex = corbo::VectorVertex |
using | VertexInterface = corbo::VertexInterface |
![]() | |
typedef std::shared_ptr< DiscretizationGridInterface > | Ptr |
typedef std::unique_ptr< DiscretizationGridInterface > | UPtr |
![]() | |
typedef std::shared_ptr< VertexSetInterface > | Ptr |
Public Member Functions | |
void | clear () override |
int | findClosestPose (double x_ref, double y_ref, int start_idx=0, double *distance=nullptr) const |
Find the closest pose (first part of the state vector) on the grid w.r.t. to a provided reference point. More... | |
FullDiscretizationGridBaseSE2 ()=default | |
std::vector< VertexInterface * > & | getActiveVertices () override |
double | getDt () const |
get current temporal resolution More... | |
double | getDtRef () const |
get current reference temporal resolution More... | |
double | getFinalTime () const override |
bool | getFirstControlInput (Eigen::VectorXd &u0) override |
double | getFirstDt () const override |
double | getInitialDt () const override |
int | getInitialN () const override |
corbo::DiscretizationGridInterface::Ptr | getInstance () const override=0 |
Return a newly created shared instance of the implemented class. More... | |
int | getN () const override |
get current horizon length More... | |
int | getNRef () const |
get reference horizon length More... | |
const Eigen::VectorXd & | getState (int k) const |
Return state at time stamp k. More... | |
void | getStateAndControlTimeSeries (TimeSeries::Ptr x_sequence, TimeSeries::Ptr u_sequence, double t_max=corbo::CORBO_INF_DBL) const override |
void | getVertices (std::vector< VertexInterface *> &vertices) override |
bool | hasConstantControls () const override |
bool | hasSingleDt () const override |
bool | isEmpty () const override |
bool | isTimeVariableGrid () const override |
bool | isUniformGrid () const override |
virtual bool | isValid () const |
bool | providesStateTrajectory () const override |
void | setCostIntegrationRule (CostIntegrationRule integration) |
Set cost integration rule. More... | |
void | setDtRef (double dt) |
set reference temporal resolution More... | |
void | setFiniteDifferencesCollocationMethod (corbo::FiniteDifferencesCollocationInterface::Ptr fd_eval) |
Set finite differences collocation method. More... | |
void | setInitialDt (double dt) override |
void | setN (int n, bool try_resample=true) override |
void | setNRef (int n) |
set reference horizon length More... | |
void | setWarmStart (bool active) |
activate or deactive warmstart More... | |
void | setXfFixed (const Eigen::Matrix< bool, -1, 1 > &xf_fixed) |
Set individual components of the final state to fixed or unfixed. More... | |
corbo::GridUpdateResult | update (const Eigen::VectorXd &x0, ReferenceTrajectoryInterface &xref, ReferenceTrajectoryInterface &uref, NlpFunctions &nlp_fun, OptimizationEdgeSet &edges, SystemDynamicsInterface::Ptr dynamics, bool new_run, const corbo::Time &t, ReferenceTrajectoryInterface *sref=nullptr, const Eigen::VectorXd *prev_u=nullptr, double prev_u_dt=0, ReferenceTrajectoryInterface *xinit=nullptr, ReferenceTrajectoryInterface *uinit=nullptr) override |
virtual | ~FullDiscretizationGridBaseSE2 ()=default |
![]() | |
DiscretizationGridInterface ()=default | |
DiscretizationGridInterface (int state_dim, int control_dim) | |
virtual | ~DiscretizationGridInterface ()=default |
![]() | |
void | applyIncrementNonFixed (const Eigen::Ref< const Eigen::VectorXd > &increment) |
void | applyIncrementNonFixed (int idx, double increment) |
void | backupParametersActiveVertices () |
void | clearConnectedEdges () |
void | computeVertexIndices () |
void | discardBackupParametersActiveVertices (bool all=false) |
void | getBounds (Eigen::Ref< Eigen::VectorXd > lb, Eigen::Ref< Eigen::VectorXd > ub) |
double | getLowerBound (int idx) |
int | getParameterDimension () |
double | getParameterValue (int idx) |
void | getParameterVector (Eigen::Ref< Eigen::VectorXd > x) |
double | getUpperBound (int idx) |
bool | isModified () const |
void | restoreBackupParametersActiveVertices (bool keep_backup) |
void | setBounds (const Eigen::Ref< const Eigen::VectorXd > &lb, const Eigen::Ref< const Eigen::VectorXd > &ub) |
void | setLowerBound (int idx, double lb) |
void | setModified (bool modified) |
void | setParameterValue (int idx, double x) |
void | setParameterVector (const Eigen::Ref< const Eigen::VectorXd > &x) |
void | setUpperBound (int idx, double ub) |
VertexSetInterface () | |
virtual | ~VertexSetInterface () |
Protected Member Functions | |
virtual bool | adaptGrid (bool new_run, NlpFunctions &nlp_fun) |
bool | checkAndInitializeXfFixedFlags (int dim_x) |
void | computeActiveVertices () override |
virtual void | createEdges (NlpFunctions &nlp_fun, OptimizationEdgeSet &edges, SystemDynamicsInterface::Ptr dynamics)=0 |
int | findNearestState (const Eigen::VectorXd &x0) |
virtual void | initializeSequences (const Eigen::VectorXd &x0, const Eigen::VectorXd &xf, ReferenceTrajectoryInterface &uref, NlpFunctions &nlp_fun) |
virtual void | initializeSequences (const Eigen::VectorXd &x0, const Eigen::VectorXd &xf, ReferenceTrajectoryInterface &xref, ReferenceTrajectoryInterface &uref, NlpFunctions &nlp_fun) |
virtual bool | isDtFixedIntended () const |
virtual bool | isGridAdaptActive () const |
virtual bool | isMovingHorizonWarmStartActive () const |
virtual void | resampleTrajectory (int n_new) |
void | updateBounds (const NlpFunctions &nlp_fun) |
virtual void | warmStartShifting (const Eigen::VectorXd &x0) |
![]() | |
void | setLastControlRef (const Eigen::VectorXd &last_u_ref) |
void | setPreviousControl (const Eigen::VectorXd &prev_u, double prev_u_dt) |
![]() | |
void | setVertexIdx (VertexInterface &vertex, int idx) |
Protected Attributes | |
std::vector< VertexInterface * > | _active_vertices |
CostIntegrationRule | _cost_integration |
ScalarVertex | _dt |
double | _dt_lb = 0 |
double | _dt_ref = 0.1 |
double | _dt_ub = corbo::CORBO_INF_DBL |
corbo::FiniteDifferencesCollocationInterface::Ptr | _fd_eval = std::make_shared<corbo::CrankNicolsonDiffCollocation>() |
bool | _first_run = true |
int | _n_adapt = 0 |
int | _n_ref = 11 |
const NlpFunctions * | _nlp_fun = nullptr |
std::vector< VectorVertex > | _u_seq |
bool | _warm_start = false |
std::vector< VectorVertexSE2 > | _x_seq |
PartiallyFixedVectorVertexSE2 | _xf |
Eigen::Matrix< bool, -1, 1 > | _xf_fixed |
![]() | |
VectorVertex | _u_prev |
ScalarVertex | _u_prev_dt |
VectorVertex | _u_ref |
![]() | |
bool | _modified |
Additional Inherited Members | |
![]() | |
static Factory< DiscretizationGridInterface > & | getFactory () |
Full discretization grid specialization for SE2.
This class defines the basis for full discretization grids similar to corbo::FullDiscretizationGridBase. However, the main difference is, that this grid requires the first three state components to be embedded in SE2. Whereas the first two states are ordinary real numbers on (-inf, inf), the third component must remain in [-pi, pi).
Therefore, the minimum dimension state dimension is 3. However, larger dimensions are allowed, but the related state components are considered as standard real numbers on (-inf, inf).
Note the full discretization grid currently supports only finite difference collocation to discretize the continuous time dynamics. Full discretization is also possible with multiple shooting and (expicit) numerical integration, but for this purpose we need to specialize corbo::ShootingGridBase for SE2.
Definition at line 64 of file full_discretization_grid_base_se2.h.
Definition at line 71 of file full_discretization_grid_base_se2.h.
using mpc_local_planner::FullDiscretizationGridBaseSE2::OptimizationEdgeSet = corbo::OptimizationEdgeSet |
Definition at line 72 of file full_discretization_grid_base_se2.h.
using mpc_local_planner::FullDiscretizationGridBaseSE2::PartiallyFixedVectorVertex = corbo::PartiallyFixedVectorVertex |
Definition at line 76 of file full_discretization_grid_base_se2.h.
using mpc_local_planner::FullDiscretizationGridBaseSE2::Ptr = std::shared_ptr<FullDiscretizationGridBaseSE2> |
Definition at line 67 of file full_discretization_grid_base_se2.h.
using mpc_local_planner::FullDiscretizationGridBaseSE2::ReferenceTrajectoryInterface = corbo::ReferenceTrajectoryInterface |
Definition at line 69 of file full_discretization_grid_base_se2.h.
Definition at line 74 of file full_discretization_grid_base_se2.h.
using mpc_local_planner::FullDiscretizationGridBaseSE2::SystemDynamicsInterface = corbo::SystemDynamicsInterface |
Definition at line 70 of file full_discretization_grid_base_se2.h.
Definition at line 77 of file full_discretization_grid_base_se2.h.
using mpc_local_planner::FullDiscretizationGridBaseSE2::UPtr = std::unique_ptr<FullDiscretizationGridBaseSE2> |
Definition at line 68 of file full_discretization_grid_base_se2.h.
Definition at line 75 of file full_discretization_grid_base_se2.h.
Definition at line 73 of file full_discretization_grid_base_se2.h.
Enumerator | |
---|---|
LeftSum | |
TrapezoidalRule |
Definition at line 79 of file full_discretization_grid_base_se2.h.
|
default |
|
virtualdefault |
|
inlineprotectedvirtual |
Reimplemented in mpc_local_planner::FiniteDifferencesVariableGridSE2.
Definition at line 188 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 390 of file full_discretization_grid_base_se2.cpp.
|
overridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 526 of file full_discretization_grid_base_se2.cpp.
|
overrideprotectedvirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 564 of file full_discretization_grid_base_se2.cpp.
|
protectedpure virtual |
Implemented in mpc_local_planner::FiniteDifferencesGridSE2.
int mpc_local_planner::FullDiscretizationGridBaseSE2::findClosestPose | ( | double | x_ref, |
double | y_ref, | ||
int | start_idx = 0 , |
||
double * | distance = nullptr |
||
) | const |
Find the closest pose (first part of the state vector) on the grid w.r.t. to a provided reference point.
[in] | x_ref | X-position of the reference point |
[in] | y_ref | Y-position of the reference point |
[in] | begin_idx | Start search at this time stamp |
[out] | distance | [optional] the resulting minimum distance |
Definition at line 364 of file full_discretization_grid_base_se2.cpp.
|
protected |
Definition at line 304 of file full_discretization_grid_base_se2.cpp.
|
inlineoverridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 178 of file full_discretization_grid_base_se2.h.
|
inline |
get current temporal resolution
Definition at line 151 of file full_discretization_grid_base_se2.h.
|
inline |
get current reference temporal resolution
Definition at line 149 of file full_discretization_grid_base_se2.h.
|
inlineoverridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 97 of file full_discretization_grid_base_se2.h.
|
overridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 341 of file full_discretization_grid_base_se2.cpp.
|
inlineoverridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 95 of file full_discretization_grid_base_se2.h.
|
inlineoverridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 136 of file full_discretization_grid_base_se2.h.
|
inlineoverridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 138 of file full_discretization_grid_base_se2.h.
|
overridepure virtual |
Return a newly created shared instance of the implemented class.
Implements corbo::DiscretizationGridInterface.
Implemented in mpc_local_planner::FiniteDifferencesVariableGridSE2, and mpc_local_planner::FiniteDifferencesGridSE2.
|
inlineoverridevirtual |
get current horizon length
Implements corbo::DiscretizationGridInterface.
Definition at line 143 of file full_discretization_grid_base_se2.h.
|
inline |
get reference horizon length
Definition at line 141 of file full_discretization_grid_base_se2.h.
|
inline |
Return state at time stamp k.
Definition at line 113 of file full_discretization_grid_base_se2.h.
|
overridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 579 of file full_discretization_grid_base_se2.cpp.
|
overridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 551 of file full_discretization_grid_base_se2.cpp.
|
inlineoverridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 100 of file full_discretization_grid_base_se2.h.
|
inlineoverridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 102 of file full_discretization_grid_base_se2.h.
|
protectedvirtual |
Definition at line 136 of file full_discretization_grid_base_se2.cpp.
|
protectedvirtual |
Definition at line 192 of file full_discretization_grid_base_se2.cpp.
|
inlineprotectedvirtual |
Reimplemented in mpc_local_planner::FiniteDifferencesVariableGridSE2, and mpc_local_planner::FiniteDifferencesGridSE2.
Definition at line 200 of file full_discretization_grid_base_se2.h.
|
inlineoverridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 127 of file full_discretization_grid_base_se2.h.
|
inlineprotectedvirtual |
Reimplemented in mpc_local_planner::FiniteDifferencesVariableGridSE2.
Definition at line 202 of file full_discretization_grid_base_se2.h.
|
inlineprotectedvirtual |
Reimplemented in mpc_local_planner::FiniteDifferencesVariableGridSE2.
Definition at line 201 of file full_discretization_grid_base_se2.h.
|
inlineoverridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 104 of file full_discretization_grid_base_se2.h.
|
inlineoverridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 106 of file full_discretization_grid_base_se2.h.
|
inlinevirtual |
Definition at line 129 of file full_discretization_grid_base_se2.h.
|
inlineoverridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 108 of file full_discretization_grid_base_se2.h.
|
protectedvirtual |
Definition at line 440 of file full_discretization_grid_base_se2.cpp.
|
inline |
Set cost integration rule.
Definition at line 164 of file full_discretization_grid_base_se2.h.
|
inline |
set reference temporal resolution
Definition at line 147 of file full_discretization_grid_base_se2.h.
|
inline |
Set finite differences collocation method.
Definition at line 162 of file full_discretization_grid_base_se2.h.
|
inlineoverridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 134 of file full_discretization_grid_base_se2.h.
|
overridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 538 of file full_discretization_grid_base_se2.cpp.
void mpc_local_planner::FullDiscretizationGridBaseSE2::setNRef | ( | int | n | ) |
set reference horizon length
Definition at line 350 of file full_discretization_grid_base_se2.cpp.
|
inline |
activate or deactive warmstart
Definition at line 153 of file full_discretization_grid_base_se2.h.
|
inline |
Set individual components of the final state to fixed or unfixed.
Definition at line 155 of file full_discretization_grid_base_se2.h.
|
overridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 38 of file full_discretization_grid_base_se2.cpp.
|
protected |
Definition at line 405 of file full_discretization_grid_base_se2.cpp.
|
protectedvirtual |
Definition at line 241 of file full_discretization_grid_base_se2.cpp.
|
protected |
Definition at line 211 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 227 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 218 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 224 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 217 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 225 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 206 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 220 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 216 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 215 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 213 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 209 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 219 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 208 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 210 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 223 of file full_discretization_grid_base_se2.h.