行为树实现导航任务
使用std::function
和boost::any
来创建一个更通用的任务执行框架。添加一个简单的抓取任务节点,并演示如何在任务之间传递参数。
头部导包:
#include <ros/ros.h>
#include <string>
#include <memory>
#include <map>
#include <vector>
#include <boost/any.hpp>
#include <std_srvs/Empty.h> // 示例中使用空服务来触发任务,实际情况根据需要替换为自定义服务类型
#include <actionlib/client/simple_action_client.h>
#include "mbf_msgs/MoveBaseAction.h"
#include "mbf_msgs/ExePathAction.h"
//保存文件
#include <fstream>
#include <iostream>
/**
行为树
*/
using GotoCtrl = actionlib::SimpleActionClient<mbf_msgs::MoveBaseAction>;//点到点
using ExeCtrl = actionlib::SimpleActionClient<mbf_msgs::ExePathAction>;//给路径直接走
行为树节点基类:
// 行为树节点基类
class BTNode {
public:
BTNode(const std::string& name,