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 84 of file full_discretization_grid_base_se2.h.
Definition at line 111 of file full_discretization_grid_base_se2.h.
using mpc_local_planner::FullDiscretizationGridBaseSE2::OptimizationEdgeSet = corbo::OptimizationEdgeSet |
Definition at line 112 of file full_discretization_grid_base_se2.h.
using mpc_local_planner::FullDiscretizationGridBaseSE2::PartiallyFixedVectorVertex = corbo::PartiallyFixedVectorVertex |
Definition at line 116 of file full_discretization_grid_base_se2.h.
using mpc_local_planner::FullDiscretizationGridBaseSE2::Ptr = std::shared_ptr<FullDiscretizationGridBaseSE2> |
Definition at line 107 of file full_discretization_grid_base_se2.h.
using mpc_local_planner::FullDiscretizationGridBaseSE2::ReferenceTrajectoryInterface = corbo::ReferenceTrajectoryInterface |
Definition at line 109 of file full_discretization_grid_base_se2.h.
Definition at line 114 of file full_discretization_grid_base_se2.h.
using mpc_local_planner::FullDiscretizationGridBaseSE2::SystemDynamicsInterface = corbo::SystemDynamicsInterface |
Definition at line 110 of file full_discretization_grid_base_se2.h.
Definition at line 117 of file full_discretization_grid_base_se2.h.
using mpc_local_planner::FullDiscretizationGridBaseSE2::UPtr = std::unique_ptr<FullDiscretizationGridBaseSE2> |
Definition at line 108 of file full_discretization_grid_base_se2.h.
Definition at line 115 of file full_discretization_grid_base_se2.h.
Definition at line 113 of file full_discretization_grid_base_se2.h.
Enumerator | |
---|---|
LeftSum | |
TrapezoidalRule |
Definition at line 119 of file full_discretization_grid_base_se2.h.
|
default |
|
virtualdefault |
|
inlineprotectedvirtual |
Reimplemented in mpc_local_planner::FiniteDifferencesVariableGridSE2.
Definition at line 228 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 410 of file full_discretization_grid_base_se2.cpp.
|
overridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 546 of file full_discretization_grid_base_se2.cpp.
|
overrideprotectedvirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 584 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 384 of file full_discretization_grid_base_se2.cpp.
|
protected |
Definition at line 324 of file full_discretization_grid_base_se2.cpp.
|
inlineoverridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 218 of file full_discretization_grid_base_se2.h.
|
inline |
get current temporal resolution
Definition at line 191 of file full_discretization_grid_base_se2.h.
|
inline |
get current reference temporal resolution
Definition at line 189 of file full_discretization_grid_base_se2.h.
|
inlineoverridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 137 of file full_discretization_grid_base_se2.h.
|
overridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 361 of file full_discretization_grid_base_se2.cpp.
|
inlineoverridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 135 of file full_discretization_grid_base_se2.h.
|
inlineoverridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 176 of file full_discretization_grid_base_se2.h.
|
inlineoverridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 178 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 183 of file full_discretization_grid_base_se2.h.
|
inline |
get reference horizon length
Definition at line 181 of file full_discretization_grid_base_se2.h.
|
inline |
Return state at time stamp k.
Definition at line 153 of file full_discretization_grid_base_se2.h.
|
overridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 599 of file full_discretization_grid_base_se2.cpp.
|
overridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 571 of file full_discretization_grid_base_se2.cpp.
|
inlineoverridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 140 of file full_discretization_grid_base_se2.h.
|
inlineoverridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 142 of file full_discretization_grid_base_se2.h.
|
protectedvirtual |
Definition at line 156 of file full_discretization_grid_base_se2.cpp.
|
protectedvirtual |
Definition at line 212 of file full_discretization_grid_base_se2.cpp.
|
inlineprotectedvirtual |
Reimplemented in mpc_local_planner::FiniteDifferencesVariableGridSE2, and mpc_local_planner::FiniteDifferencesGridSE2.
Definition at line 240 of file full_discretization_grid_base_se2.h.
|
inlineoverridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 167 of file full_discretization_grid_base_se2.h.
|
inlineprotectedvirtual |
Reimplemented in mpc_local_planner::FiniteDifferencesVariableGridSE2.
Definition at line 242 of file full_discretization_grid_base_se2.h.
|
inlineprotectedvirtual |
Reimplemented in mpc_local_planner::FiniteDifferencesVariableGridSE2.
Definition at line 241 of file full_discretization_grid_base_se2.h.
|
inlineoverridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 144 of file full_discretization_grid_base_se2.h.
|
inlineoverridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 146 of file full_discretization_grid_base_se2.h.
|
inlinevirtual |
Definition at line 169 of file full_discretization_grid_base_se2.h.
|
inlineoverridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 148 of file full_discretization_grid_base_se2.h.
|
protectedvirtual |
Definition at line 460 of file full_discretization_grid_base_se2.cpp.
|
inline |
Set cost integration rule.
Definition at line 204 of file full_discretization_grid_base_se2.h.
|
inline |
set reference temporal resolution
Definition at line 187 of file full_discretization_grid_base_se2.h.
|
inline |
Set finite differences collocation method.
Definition at line 202 of file full_discretization_grid_base_se2.h.
|
inlineoverridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 174 of file full_discretization_grid_base_se2.h.
|
overridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 558 of file full_discretization_grid_base_se2.cpp.
void mpc_local_planner::FullDiscretizationGridBaseSE2::setNRef | ( | int | n | ) |
set reference horizon length
Definition at line 370 of file full_discretization_grid_base_se2.cpp.
|
inline |
activate or deactive warmstart
Definition at line 193 of file full_discretization_grid_base_se2.h.
|
inline |
Set individual components of the final state to fixed or unfixed.
Definition at line 195 of file full_discretization_grid_base_se2.h.
|
overridevirtual |
Implements corbo::DiscretizationGridInterface.
Definition at line 58 of file full_discretization_grid_base_se2.cpp.
|
protected |
Definition at line 425 of file full_discretization_grid_base_se2.cpp.
|
protectedvirtual |
Definition at line 261 of file full_discretization_grid_base_se2.cpp.
|
protected |
Definition at line 251 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 267 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 258 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 264 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 257 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 265 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 246 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 260 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 256 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 255 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 253 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 249 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 259 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 248 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 250 of file full_discretization_grid_base_se2.h.
|
protected |
Definition at line 263 of file full_discretization_grid_base_se2.h.