1#ifndef GLOBAL_BODY_PLANNER_H
2#define GLOBAL_BODY_PLANNER_H
4#include <nav_msgs/Path.h>
5#include <quad_msgs/RobotPlan.h>
6#include <quad_msgs/RobotState.h>
7#include <quad_utils/ros_utils.h>
9#include <tf2/LinearMath/Quaternion.h>
10#include <tf2_geometry_msgs/tf2_geometry_msgs.h>
11#include <visualization_msgs/MarkerArray.h>
13#include <grid_map_core/grid_map_core.hpp>
14#include <grid_map_ros/GridMapRosConverter.hpp>
15#include <grid_map_ros/grid_map_ros.hpp>
17#include "global_body_planner/gbpl.h"
18#include "global_body_planner/global_body_plan.h"
20using namespace planning_utils;
96 GRF grf,
int primitive_id,
97 quad_msgs::RobotPlan &body_plan_msg);
A class to contain global plan data along with helper functions.
Definition global_body_plan.h:16
A global body planning class for legged robots.
Definition global_body_planner.h:30
void setGoalState()
Set the goal state to be used by the next planning call.
Definition global_body_planner.cpp:180
std::vector< double > cost_vector_
Vector of cost instances in each planning call.
Definition global_body_planner.h:207
GlobalBodyPlan newest_plan_
Plan data for the most recently computed plan (may be suboptimal)
Definition global_body_planner.h:170
double max_planning_time_
Max time to let the algorithm search.
Definition global_body_planner.h:164
int start_index_
Index of active plan from which to begin refinement.
Definition global_body_planner.h:234
void terrainMapCallback(const grid_map_msgs::GridMap::ConstPtr &msg)
Callback function to handle new terrain map data.
Definition global_body_planner.cpp:70
static const int REFINE
Planning status ID for refining (optimize current plan)
Definition global_body_planner.h:240
std::string terrain_map_topic_
Topic name for terrain map (needed to ensure data has been received)
Definition global_body_planner.h:149
void clearPlan()
Clear all data in plan member variables.
double committed_horizon_
Horizon to commit to (replan from the next state after this horizon)
Definition global_body_planner.h:191
bool replanning_allowed_
Boolean for whether replanning is allowed.
Definition global_body_planner.h:225
void triggerReset()
Trigger a reset event.
Definition global_body_planner.cpp:91
ros::Subscriber goal_state_sub_
Subscriber for goal state messages.
Definition global_body_planner.h:137
std::vector< State > state_sequence_
Sequence of discrete states in the plan.
Definition global_body_planner.h:201
void publishCurrentPlan()
Publish the current plan if updated.
Definition global_body_planner.cpp:344
static const int RESET
Planning status ID for resetting (start from scratch)
Definition global_body_planner.h:237
ros::Publisher body_plan_pub_
Publisher for body plan messages.
Definition global_body_planner.h:140
double replan_start_time_
Starting time for planner call during replans relative to t_plan_[0].
Definition global_body_planner.h:188
int planner_status_
ID for status of planner.
Definition global_body_planner.h:231
std::vector< double > cost_vector_times_
Vector of time instances of cost data for each planning call.
Definition global_body_planner.h:210
std::vector< Action > action_sequence_
Sequence of discrete actions in the plan.
Definition global_body_planner.h:204
double reset_publish_delay_
Delay after plan reset before publishing and refining.
Definition global_body_planner.h:222
void setStartState()
Set the start state to be used by the next planning call.
Definition global_body_planner.cpp:128
FullState start_state_
Starting state for planner call.
Definition global_body_planner.h:176
std::string map_frame_
Handle for the map frame.
Definition global_body_planner.h:167
FullState goal_state_
Goal state for planner.
Definition global_body_planner.h:179
int num_calls_
Number of times to call the planner.
Definition global_body_planner.h:161
bool publish_after_reset_delay_
Definition global_body_planner.h:247
void publishPlan()
Publish the current body plan.
ros::Time reset_time_
Time at which reset began.
Definition global_body_planner.h:243
ros::Subscriber robot_state_sub_
Subscriber for robot state messages.
Definition global_body_planner.h:134
bool restart_flag_
Definition global_body_planner.h:198
PlannerConfig planner_config_
Planner config.
Definition global_body_planner.h:219
std::string robot_state_topic_
Topic name for robot state data (needed to ensure data has been received)
Definition global_body_planner.h:152
FullState robot_state_
Current robot state.
Definition global_body_planner.h:182
ros::Time global_plan_timestamp_
Timestamp for t=0 of global plan.
Definition global_body_planner.h:250
void goalStateCallback(const geometry_msgs::PointStamped::ConstPtr &msg)
Callback function to handle new goal state.
Definition global_body_planner.cpp:97
ros::Publisher discrete_body_plan_pub_
Publisher for discrete states in body plan messages.
Definition global_body_planner.h:143
geometry_msgs::PointStamped::ConstPtr goal_state_msg_
goal_state_msg_
Definition global_body_planner.h:185
void robotStateCallback(const quad_msgs::RobotState::ConstPtr &msg)
Callback function to handle new robot state data.
Definition global_body_planner.cpp:86
double dt_
Timestep for interpolation.
Definition global_body_planner.h:228
void waitForData()
Wait until map and state messages have been received and processed.
Definition global_body_planner.cpp:312
int initPlanner()
Initialize the planner by clearing out old plan data and setting the start state.
bool callPlanner()
Call the correct planning class and compute statistics.
Definition global_body_planner.cpp:182
GlobalBodyPlan current_plan_
Plan data for the plan currently being executed.
Definition global_body_planner.h:173
void getInitialPlan()
Call the planner repeatedly until startup_delay has been reached then return.
Definition global_body_planner.cpp:331
void addStateAndGRFToMsg(double t, int plan_index, FullState body_state, GRF grf, int primitive_id, quad_msgs::RobotPlan &body_plan_msg)
Update the body plan with the current plan.
ros::Subscriber terrain_map_sub_
Subscriber for terrain map messages.
Definition global_body_planner.h:131
std::vector< int > vertices_generated_info_
Vector of number of vertices for each planning call.
Definition global_body_planner.h:216
std::vector< double > solve_time_info_
Vector of solve times for each planning call.
Definition global_body_planner.h:213
double update_rate_
Update rate for sending and receiving data;.
Definition global_body_planner.h:158
ros::Publisher tree_pub_
Publisher for the planning tree.
Definition global_body_planner.h:146
ros::NodeHandle nh_
Nodehandle to pub to and sub from.
Definition global_body_planner.h:155
void spin()
Primary work function in class, called in node file for this component.
Definition global_body_planner.cpp:394
double pos_error_threshold_
Threshold of state error to trigger replanning.
Definition global_body_planner.h:194
Define full state with Eigen data.
Definition planning_utils.h:208
Planner Configuration.
Definition planning_utils.h:36