Go to the documentation of this file.
18 add_field(
"x", &pose.x);
19 add_field(
"y", &pose.y);
20 add_field(
"theta", &pose.theta);
51 namespace chr = std::chrono;
65 return { BT::InputPort<Pose2D>(
"goal") };
const NodeConfig & config() const
StatefulActionNode(const std::string &name, const NodeConfig &config)
std::string_view StringView
BT_JSON_CONVERTER(Pose2D, pose)
std::unordered_map< std::string, PortInfo > PortsList
Point3D convertFromString(StringView key)
MoveBaseAction(const std::string &name, const BT::NodeConfig &config)
std::vector< StringView > splitString(const StringView &strToSplit, char delimeter)
static BT::PortsList providedPorts()
const std::string & name() const
Name of the instance, not the type.
chr::system_clock::time_point _completion_time
double convertFromString< double >(StringView str)
BT::NodeStatus onRunning() override
method invoked when the action is already in the RUNNING state.
BT::NodeStatus onStart() override
The StatefulActionNode is the preferred way to implement asynchronous Actions. It is actually easier ...