34 #include <mpc_local_planner_msgs/StateFeedback.h> 56 using Ptr = std::shared_ptr<Controller>;
62 const std::vector<teb_local_planner::PoseSE2>& via_points);
66 bool step(
const std::vector<geometry_msgs::PoseStamped>& initial_plan,
const geometry_msgs::Twist& vel,
double dt,
ros::Time t,
100 double inscribed_radius = 0.0,
double circumscribed_radius = 0.0,
101 double min_resolution_collision_check_angular = M_PI,
int look_ahead_idx = -1);
104 void reset()
override;
112 const std::vector<teb_local_planner::PoseSE2>&
via_points);
115 const std::vector<geometry_msgs::PoseStamped>& initial_plan,
bool backward);
147 #endif // CONTROLLER_H_
std::shared_ptr< StageInequalitySE2 > Ptr
RobotDynamicsInterface::Ptr getRobotDynamics()
bool _guess_backwards_motion
teb_local_planner::PoseSE2 _last_goal
Eigen::VectorXd _recent_x_feedback
bool _initial_plan_estimate_orientation
corbo::DiscretizationGridInterface::Ptr _grid
bool step(const PoseSE2 &start, const PoseSE2 &goal, const geometry_msgs::Twist &vel, double dt, ros::Time t, corbo::TimeSeries::Ptr u_seq, corbo::TimeSeries::Ptr x_seq)
static corbo::ControllerInterface::Ptr getInstanceStatic()
void publishOptimalControlResult()
corbo::StructuredOptimalControlProblem::Ptr _structured_ocp
bool generateInitialStateTrajectory(const Eigen::VectorXd &x0, const Eigen::VectorXd &xf, const std::vector< geometry_msgs::PoseStamped > &initial_plan, bool backward)
std::shared_ptr< OptimalControlProblemInterface > Ptr
corbo::ControllerInterface::Ptr getInstance() const override
std::shared_ptr< RobotDynamicsInterface > Ptr
double _force_reinit_new_goal_dist
corbo::NlpSolverInterface::Ptr configureSolver(const ros::NodeHandle &nh)
RobotDynamicsInterface::Ptr _dynamics
corbo::StructuredOptimalControlProblem::Ptr configureOcp(const ros::NodeHandle &nh, const teb_local_planner::ObstContainer &obstacles, teb_local_planner::RobotFootprintModelPtr robot_model, const std::vector< teb_local_planner::PoseSE2 > &via_points)
MPC controller for mobile robots.
void setOptimalControlProblem(corbo::OptimalControlProblemInterface::Ptr ocp)=delete
void stateFeedbackCallback(const mpc_local_planner_msgs::StateFeedback::ConstPtr &msg)
std::vector< ObstaclePtr > ObstContainer
corbo::DiscretizationGridInterface::Ptr configureGrid(const ros::NodeHandle &nh)
std::mutex _x_feedback_mutex
double _force_reinit_new_goal_angular
RobotDynamicsInterface::Ptr configureRobotDynamics(const ros::NodeHandle &nh)
ros::Subscriber _x_feedback_sub
StageInequalitySE2::Ptr _inequality_constraint
std::shared_ptr< DiscretizationGridInterface > Ptr
int _force_reinit_num_steps
bool _publish_ocp_results
std::shared_ptr< NlpSolverInterface > Ptr
ros::Publisher _ocp_result_pub
ViaPointContainer via_points
std::shared_ptr< TimeSeries > Ptr
void setInitialPlanEstimateOrientation(bool estimate)
bool configure(ros::NodeHandle &nh, const teb_local_planner::ObstContainer &obstacles, teb_local_planner::RobotFootprintModelPtr robot_model, const std::vector< teb_local_planner::PoseSE2 > &via_points)
corbo::DiscreteTimeReferenceTrajectory _x_seq_init
std::shared_ptr< ControllerInterface > Ptr
corbo::NlpSolverInterface::Ptr _solver
StageInequalitySE2::Ptr getInequalityConstraint()
std::shared_ptr< StructuredOptimalControlProblem > Ptr
virtual bool isPoseTrajectoryFeasible(base_local_planner::CostmapModel *costmap_model, const std::vector< geometry_msgs::Point > &footprint_spec, double inscribed_radius=0.0, double circumscribed_radius=0.0, double min_resolution_collision_check_angular=M_PI, int look_ahead_idx=-1)
Check whether the planned trajectory is feasible or not.