29 #ifndef STEP_CONTROLLER_H__ 30 #define STEP_CONTROLLER_H__ 36 #include <vigir_pluginlib/plugin_manager.h> 38 #include <vigir_footstep_planning_msgs/footstep_planning_msgs.h> 39 #include <vigir_footstep_planning_plugins/plugins/step_plan_msg_plugin.h> 95 if (step_controller_plugin_ && step_controller_plugin_->getState() ==
ACTIVE)
97 ROS_ERROR(
"[StepController] Cannot replace plugin due to active footstep execution!");
101 if (!vigir_pluginlib::PluginManager::addPluginByName(plugin_name))
103 ROS_ERROR(
"[StepController] Could not load plugin '%s'!", plugin_name.c_str());
106 else if (!vigir_pluginlib::PluginManager::getPlugin(plugin))
108 ROS_ERROR(
"[StepController] Could not obtain plugin '%s' from plugin manager!", plugin_name.c_str());
112 ROS_INFO(
"[StepController] Loaded plugin '%s'.", plugin_name.c_str());
122 void executeStepPlan(
const msgs::StepPlan& step_plan);
133 void publishFeedback()
const;
144 void loadStepPlanMsgPlugin(
const std_msgs::StringConstPtr& plugin_name);
145 void loadStepControllerPlugin(
const std_msgs::StringConstPtr& plugin_name);
146 void executeStepPlan(
const msgs::StepPlanConstPtr& step_plan);
149 void executeStepPlanAction(ExecuteStepPlanActionServerPtr as);
150 void executePreemptionAction(ExecuteStepPlanActionServerPtr as);
ros::Subscriber execute_step_plan_sub_
ros::Subscriber load_step_controller_plugin_sub_
boost::shared_ptr< ExecuteStepPlanActionServer > execute_step_plan_as_
ROSCONSOLE_DECL void initialize()
ros::Subscriber load_step_plan_msg_plugin_sub_
bool loadPlugin(const std::string &plugin_name, boost::shared_ptr< T > &plugin)
Loads plugin with specific name to be used by the controller. The name should be configured in the pl...
vigir_footstep_planning::StepPlanMsgPlugin::Ptr step_plan_msg_plugin_
boost::shared_ptr< const StepController > ConstPtr
void update(const std::string &key, const XmlRpc::XmlRpcValue &v)
ros::Publisher feedback_pub_
StepControllerPlugin::Ptr step_controller_plugin_
boost::shared_ptr< StepController > Ptr
boost::unique_lock< Mutex > UniqueLock
actionlib::SimpleActionServer< msgs::ExecuteStepPlanAction > ExecuteStepPlanActionServer
boost::shared_mutex controller_mutex_
boost::shared_ptr< ExecuteStepPlanActionServer > ExecuteStepPlanActionServerPtr