7#include <backward_local_planner/BackwardLocalPlannerConfig.h>
8#include <dynamic_reconfigure/server.h>
9#include <geometry_msgs/PoseStamped.h>
10#include <nav_core/base_local_planner.h>
12#include <tf/transform_listener.h>
13#include <tf2_ros/buffer.h>
21namespace backward_local_planner
49 virtual bool setPlan(
const std::vector<geometry_msgs::PoseStamped> &plan)
override;
64 void reconfigCB(::backward_local_planner::BackwardLocalPlannerConfig &config, uint32_t level);
75 double alpha_error,
double betta_error,
double rho_error,
76 geometry_msgs::Twist &cmd_vel);
77 void defaultBackwardCmd(
const tf::Stamped<tf::Pose> &tfpose,
double vetta,
double gamma,
double alpha_error,
78 double betta_error, geometry_msgs::Twist &cmd_vel);
83 double &angular_error);
93 dynamic_reconfigure::Server<::backward_local_planner::BackwardLocalPlannerConfig>
paramServer_;
94 dynamic_reconfigure::Server<::backward_local_planner::BackwardLocalPlannerConfig>::CallbackType
f;
129 void generateTrajectory(
const Eigen::Vector3f &pos,
const Eigen::Vector3f &vel,
float maxdist,
float maxangle,
130 float maxtime,
float dt, std::vector<Eigen::Vector3f> &outtraj);
131 Eigen::Vector3f
computeNewPositions(
const Eigen::Vector3f &pos,
const Eigen::Vector3f &vel,
double dt);
bool findInitialCarrotGoal(tf::Stamped< tf::Pose > &pose)
bool straightBackwardsAndPureSpinningMode_
virtual bool isGoalReached() override
Check if the goal pose has been achieved by the local planner.
const double betta_offset_
const double alpha_offset_
ros::Duration waitingTimeout_
Eigen::Vector3f computeNewPositions(const Eigen::Vector3f &pos, const Eigen::Vector3f &vel, double dt)
bool resamplePrecisePlan()
bool enable_obstacle_checking_
bool updateCarrotGoal(const tf::Stamped< tf::Pose > &tfpose)
void defaultBackwardCmd(const tf::Stamped< tf::Pose > &tfpose, double vetta, double gamma, double alpha_error, double betta_error, geometry_msgs::Twist &cmd_vel)
bool checkCarrotHalfPlainConstraint(const tf::Stamped< tf::Pose > &tfpose)
virtual bool computeVelocityCommands(geometry_msgs::Twist &cmd_vel) override
Given the current position, orientation, and velocity of the robot: compute velocity commands to send...
meter divergenceDetectionLastCarrotLinearDistance_
bool resetDivergenceDetection()
costmap_2d::Costmap2DROS * costmapRos_
void straightBackwardsAndPureSpinCmd(const tf::Stamped< tf::Pose > &tfpose, double vetta, double gamma, double alpha_error, double betta_error, double rho_error, geometry_msgs::Twist &cmd_vel)
void reconfigCB(::backward_local_planner::BackwardLocalPlannerConfig &config, uint32_t level)
rad carrot_angular_distance_
virtual ~BackwardLocalPlanner()
void publishGoalMarker(double x, double y, double phi)
uint64_t currentCarrotPoseIndex_
ros::Publisher goalMarkerPublisher_
double linear_mode_rho_error_threshold_
bool checkCurrentPoseInGoalRange(const tf::Stamped< tf::Pose > &tfpose, double angle_error, bool &inLinearGoal)
double pure_spinning_allowed_betta_error_
double yaw_goal_tolerance_
void generateTrajectory(const Eigen::Vector3f &pos, const Eigen::Vector3f &vel, float maxdist, float maxangle, float maxtime, float dt, std::vector< Eigen::Vector3f > &outtraj)
bool initialPureSpinningStage_
double xy_goal_tolerance_
virtual bool setPlan(const std::vector< geometry_msgs::PoseStamped > &plan) override
Set the plan that the local planner is following.
bool divergenceDetectionUpdate(const tf::Stamped< tf::Pose > &tfpose)
void computeCurrentEuclideanAndAngularErrorsToCarrotGoal(const tf::Stamped< tf::Pose > &tfpose, double &dist, double &angular_error)
std::vector< geometry_msgs::PoseStamped > backwardsPlanPath_
double max_linear_x_speed_
bool inGoalPureSpinningState_
dynamic_reconfigure::Server<::backward_local_planner::BackwardLocalPlannerConfig >::CallbackType f
double max_angular_z_speed_
dynamic_reconfigure::Server<::backward_local_planner::BackwardLocalPlannerConfig > paramServer_