 |
NASA Astrobee Robot Software
Astrobee Version:
Flight software for the Astrobee robots operating inside the International Space Station.
|
Go to the documentation of this file.
22 #include <boost/algorithm/clamp.hpp>
28 #ifndef TRAJ_OPT_PRO_NONLINEAR_TRAJECTORY_H_
29 #define TRAJ_OPT_PRO_NONLINEAR_TRAJECTORY_H_
34 typedef std::vector<Variable *>
NLPoly;
36 typedef std::vector<NLSpline>
NLTraj;
46 typedef std::tuple<Variable *, Variable *, int>
48 typedef std::tuple<Variable *, Variable *, Variable *, int>
74 std::map<PolyTriple, decimal_t> poly_map;
75 std::map<PolyQuad, decimal_t> quad_map;
84 const std::vector<Waypoint> &waypoints,
85 const std::vector<std::pair<MatD, VecD> > &cons,
int deg = 7,
86 int min_dim = 3, boost::shared_ptr<std::vector<decimal_t> > ds =
87 boost::shared_ptr<std::vector<decimal_t> >(),
88 boost::shared_ptr<VecDVec> path = boost::shared_ptr<VecDVec>(),
89 bool time_opt =
false,
decimal_t gap = 1e-8,
int max_it = 200);
106 boost::shared_ptr<std::vector<decimal_t> > ds =
107 boost::shared_ptr<std::vector<decimal_t> >(),
108 boost::shared_ptr<VecDVec> path = boost::shared_ptr<VecDVec>());
112 const std::vector<Waypoint> &waypoints);
113 void add_Axb(
const std::vector<std::pair<MatD, VecD> > &cons);
116 void addTimeBound(boost::shared_ptr<std::vector<decimal_t> > ds =
117 boost::shared_ptr<std::vector<decimal_t> >());
118 void make_convex(boost::shared_ptr<std::vector<decimal_t> > ds);
124 boost::shared_ptr<PolyCost>
cost;
125 boost::shared_ptr<BasisTransformer>
basisT;
145 Eigen::Matrix<int, Eigen::Dynamic, Eigen::Dynamic> cost_n_;
146 void init_constants();
149 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
153 #endif // TRAJ_OPT_PRO_NONLINEAR_TRAJECTORY_H_
SymbolicPoly()
Definition: nonlinear_trajectory.h:52
decimal_t evaluate()
Definition: nonlinear_polynomial.cpp:73
Eigen::Matrix< decimal_t, Eigen::Dynamic, Eigen::Dynamic > MatD
Definition: types.h:51
Definition: trajectory.h:35
Definition: nonlinear_trajectory.h:45
decimal_t getCost()
Definition: nonlinear_trajectory.cpp:133
void addTimeBound(boost::shared_ptr< std::vector< decimal_t > > ds=boost::shared_ptr< std::vector< decimal_t > >())
Definition: nonlinear_trajectory.cpp:372
boost::shared_ptr< PolyCost > cost
Definition: nonlinear_trajectory.h:124
std::vector< Vec4, Eigen::aligned_allocator< Vec4 > > Vec4Vec
Definition: types.h:45
void link_sections()
Definition: nonlinear_trajectory.cpp:171
ETV gradient()
Definition: nonlinear_trajectory.cpp:498
std::vector< NLSpline > NLTraj
Definition: nonlinear_trajectory.h:36
std::vector< Variable * > NLTimes
Definition: nonlinear_trajectory.h:33
Definition: traj_data.h:61
BasisBundlePro basis
Definition: nonlinear_trajectory.h:129
void make_convex(boost::shared_ptr< std::vector< decimal_t > > ds)
Definition: nonlinear_trajectory.cpp:185
SymbolicPoly square()
Definition: nonlinear_polynomial.cpp:272
Vec4Vec getBeads()
Definition: nonlinear_trajectory.cpp:516
bool solved_
Definition: nonlinear_trajectory.h:130
NonlinearSolver solver
Definition: nonlinear_trajectory.h:119
double decimal_t
Definition: types.h:35
Definition: nonlinear_solver.h:116
PolyCost(const NLTraj &traj, const NLTimes ×, BasisBundlePro &basis, int min_dim)
Definition: nonlinear_trajectory.cpp:474
void scaleTime(decimal_t ratio)
Definition: nonlinear_trajectory.cpp:522
ETV hessian()
Definition: nonlinear_polynomial.cpp:118
void add(const SymbolicPoly &rhs)
Definition: nonlinear_polynomial.cpp:33
Definition: polynomial_basis.h:67
void add_Axb(const std::vector< std::pair< MatD, VecD > > &cons)
Definition: nonlinear_trajectory.cpp:386
std::vector< NLChain > NLBeads
Definition: nonlinear_trajectory.h:40
bool isSolved()
Definition: nonlinear_trajectory.h:99
Definition: traj_data.h:74
void addPosTime()
Definition: nonlinear_trajectory.cpp:365
std::vector< Vec3, Eigen::aligned_allocator< Vec3 > > Vec3Vec
Definition: types.h:46
friend SymbolicPoly operator*(decimal_t lhs, const SymbolicPoly &rhs)
Definition: nonlinear_polynomial.cpp:65
Definition: msg_traj.h:27
Definition: nonlinear_trajectory.h:134
NLTimes times
Definition: nonlinear_trajectory.h:121
ETV quad_hessian()
Definition: nonlinear_polynomial.cpp:206
decimal_t evaluate()
Definition: nonlinear_trajectory.cpp:497
SymbolicPoly & operator+=(const SymbolicPoly &rhs)
Definition: nonlinear_polynomial.cpp:57
ETV hessian()
Definition: nonlinear_trajectory.cpp:499
int deg_
Definition: nonlinear_trajectory.h:128
Definition: nonlinear_solver.h:56
ETV gradient(int u_id)
Definition: nonlinear_polynomial.cpp:94
void addCloudConstraint(const Vec3Vec &points)
Definition: nonlinear_trajectory.cpp:501
decimal_t getTotalTime() const
Definition: nonlinear_trajectory.cpp:404
SolverInfo getInfo(std::vector< TrajData > *history=NULL)
Definition: nonlinear_trajectory.cpp:534
std::vector< Variable * > NLPoly
Definition: nonlinear_trajectory.h:34
bool evaluate(decimal_t t, uint derr, VecD &out) const
Definition: nonlinear_trajectory.cpp:409
NonlinearTrajectory(const std::vector< Waypoint > &waypoints, const std::vector< std::pair< MatD, VecD > > &cons, int deg=7, int min_dim=3, boost::shared_ptr< std::vector< decimal_t > > ds=boost::shared_ptr< std::vector< decimal_t > >(), boost::shared_ptr< VecDVec > path=boost::shared_ptr< VecDVec >(), bool time_opt=false, decimal_t gap=1e-8, int max_it=200)
virtual ~NonlinearTrajectory()
Definition: nonlinear_trajectory.h:93
Definition: nonlinear_trajectory.cpp:258
Definition: nonlinear_solver.h:125
NLTraj traj
Definition: nonlinear_trajectory.h:120
void allocate_beads()
Definition: nonlinear_trajectory.cpp:162
std::vector< NLPoly > NLSpline
Definition: nonlinear_trajectory.h:35
Definition: nonlinear_trajectory.cpp:223
friend std::ostream & operator<<(std::ostream &os, const SymbolicPoly &poly)
Definition: nonlinear_trajectory.cpp:455
ETV quad_gradient()
Definition: nonlinear_polynomial.cpp:149
Eigen::Matrix< decimal_t, Eigen::Dynamic, 1 > VecD
Definition: types.h:49
TrajData serialize()
Definition: nonlinear_trajectory.cpp:430
std::vector< Variable * > NLChain
Definition: nonlinear_trajectory.h:39
NLBeads beads
Definition: nonlinear_trajectory.h:122
std::vector< ET > ETV
Definition: nonlinear_solver.h:45
void allocate_poly(boost::shared_ptr< std::vector< decimal_t > > ds=boost::shared_ptr< std::vector< decimal_t > >(), boost::shared_ptr< VecDVec > path=boost::shared_ptr< VecDVec >())
Definition: nonlinear_trajectory.cpp:135
void add_boundary(const std::vector< Waypoint > &waypoints)
Definition: nonlinear_trajectory.cpp:198
int seg_
Definition: nonlinear_trajectory.h:128
boost::shared_ptr< BasisTransformer > basisT
Definition: nonlinear_trajectory.h:125
Definition: nonlinear_trajectory.h:80