当前位置: 首页 > news >正文

wordpress 怎么添加网站备案信息怎样开网店流程视频

wordpress 怎么添加网站备案信息,怎样开网店流程视频,石家庄营销网站建设多少钱,网站建设推荐中企动力文章目录一、概念二、黑板功能实现1. 功能实现1.1 头文件定义1.2 源文件实现1.3 main文件实现1.4 my_tree.xml 实现2. 执行结果使用行为树控制机器人(一) —— 节点使用行为树控制机器人(二) —— 黑板使用行为树控制机器人(三) —— 通用端口在 使用行为树控制机器人(一) ——…

文章目录

  • 一、概念
  • 二、黑板功能实现
    • 1. 功能实现
      • 1.1 头文件定义
      • 1.2 源文件实现
      • 1.3 main文件实现
      • 1.4 my_tree.xml 实现
    • 2. 执行结果

使用行为树控制机器人(一) —— 节点
使用行为树控制机器人(二) —— 黑板
使用行为树控制机器人(三) —— 通用端口

使用行为树控制机器人(一) —— 节点 实现了节点执行,但节点间是封闭的无法进行数据传递的,此文的目的即是解决节点间的数据传输问题 —— 黑板。
学习时参考链接:ROS机器人行为树教程

一、概念

黑板” 是一个简单的键/值存储,由树的所有节点共享。黑板上的一个 "条目 "是一个键/值对。输入端口可以读取黑板上的一个条目,而输出端口可以写入一个条目。
下面创建一个行为树逻辑:创建一个ThinWhatToSay节点 使用一个输出端口通过键 topic 写入黑板条目,然后创建另一个节点SaySomething 使用一个输入端口通过键 topic 读取黑板条目该键指向的对应值并将其内容进行打印 (下图中键 topic 其值为"The answer is 42")。

在这里插入图片描述

其中,Script Input 用于调试,可使用内置的名为"Script"的动作将一个静态值写入条目中。

<Script code=" topic1:='message by script' " />

二、黑板功能实现

1. 功能实现

1.1 头文件定义

#ifndef BEHAVIOR_TREE_NODES_H
#define BEHAVIOR_TREE_NODES_H#include "behaviortree_cpp/bt_factory.h"
#include <iostream>namespace BT
{// 带输入端口的同步动作节点
class SaySomething : public SyncActionNode
{
public:SaySomething(const std::string& name, const NodeConfig& config);// 必须实现静态端口声明方法static PortsList providedPorts();// 节点执行函数NodeStatus tick() override;
};// 带输出端口的同步动作节点
class ThinkWhatToSay : public SyncActionNode
{
public:ThinkWhatToSay(const std::string& name, const NodeConfig& config);// 端口声明static PortsList providedPorts();// 节点执行函数NodeStatus tick() override;std::string _info = "The answer is 42";
};} // namespace BT#endif // BEHAVIOR_TREE_NODES_H

注意自定义的TreeNode有输入和/或输出端口时,这些端口必须在静态方法中声明,可以使用模板方法TreeNode::getInput(key)来读取端口消息的输入。

static PortsList providedPorts();

1.2 源文件实现

#include "behavior_tree_nodes.h"using namespace BT;// SaySomething 实现
SaySomething::SaySomething(const std::string& name, const NodeConfig& config) : SyncActionNode(name, config)
{}PortsList SaySomething::providedPorts()
{return { InputPort<std::string>("message") };
}NodeStatus SaySomething::tick()
{// 直接使用 BT::Expected 类型BT::Expected<std::string> msg = getInput<std::string>("message");// 检查是否成功获取输入if (!msg){throw BT::RuntimeError("missing required input [message]: " + msg.error());}// 输出消息std::cout << "Robot says: " << msg.value() << std::endl;return NodeStatus::SUCCESS;
}// ThinkWhatToSay 实现
ThinkWhatToSay::ThinkWhatToSay(const std::string& name, const NodeConfig& config) : SyncActionNode(name, config)
{}PortsList ThinkWhatToSay::providedPorts()
{return {InputPort<std::string>("info"),  // 添加输入端口OutputPort<std::string>("text")};
}NodeStatus ThinkWhatToSay::tick() {auto msg = getInput<std::string>("info");// 检查是否成功获取输入if (!msg){throw BT::RuntimeError("missing required input [info]: " + msg.error());}_info = msg.value();setOutput("text", _info);return NodeStatus::SUCCESS;
}

1.3 main文件实现

#include "behavior_tree_nodes.h"
#include "behaviortree_cpp/bt_factory.h"int main(int argc, char *argv[])
{std::string think_info="The answer is 43";BT::BehaviorTreeFactory factory;factory.registerNodeType<BT::SaySomething>("SaySomething");factory.registerNodeType<BT::ThinkWhatToSay>("ThinkWhatToSay");if (argc > 1) {think_info = argv[1];std::cout << "Using command line argument: " << think_info << std::endl;} else {std::cout << "Using default value: " << think_info << std::endl;}try {auto tree = factory.createTreeFromFile("../trees/my_tree.xml");tree.rootBlackboard()->set("topic1", think_info); // 设置黑板参数std::cout << "------ Behavior Tree Structure ------" << std::endl;BT::printTreeRecursively(tree.rootNode());std::cout << "------------------------------------" << std::endl;tree.tickWhileRunning();} catch (const std::exception& e) {std::cerr << "Error: " << e.what() << std::endl;return 1;}return 0;
}

1.4 my_tree.xml 实现

在这里插入图片描述

行为树实现逻辑如上,xml文件定义如下,使用相同的键(topic) 将输出端口与输入端口 “连接” 起来:

<root BTCPP_format="4" main_tree_to_execute="MainTree"><BehaviorTree ID="MainTree"><Sequence name="root_sequence"><!-- Script code 注释,可命令动态传参 --><Script code=" topic1:='message by script' " /><!-- 直接传递字符串 --><SaySomething name="say_hello" message="hello"/><!-- 通过黑板传递 --><ThinkWhatToSay name="think" text="{topic}" info="{topic1}"/><SaySomething name="say_answer" message="{topic}"/></Sequence></BehaviorTree>
</root>

2. 执行结果

上述行为树执行结果如下:
在这里插入图片描述

如不想通过 <Script code=" topic1:='message by script' " /> ,而是通过命令动态传参,且只需将其注释,重新运行即可。

在这里插入图片描述

在这里插入图片描述

http://www.dtcms.com/a/472853.html

相关文章:

  • 湖南网站备案要多少天亚马逊展示型广告
  • 仓库管理系统网站建设wordpress添加标签云
  • 全景地图网站开发黑马程序员学费
  • 品牌网站建设哪家公司好室内装修设计学校
  • 国外主流媒体网站360免费建站教程
  • 电子商城建设网站怎么删除2345网址导航
  • 青海建设工程云网站给别人做网站
  • 网络系统管理员获取ip企业网站搜索优化外包
  • 网站降权后 换域名the7 wordpress 下载
  • 如何管理网站域名淘宝开店铺网站怎么做
  • 电商设计网站模板百度联盟广告
  • 网站的技术建设网站收录后才可以做排名吗
  • 珠海做网站多少钱博客和网站有什么不同
  • 手机分销网站公司wordpress被入侵
  • 大型网站开发教程一级a做爰片免费网站破解版
  • 分成型网站建设酒店网站建设流程
  • 找做仿网站常州工程交易网
  • 珠海网站开发维护科技公司网站建设的实训周
  • 重庆涪陵网站设计公司推荐购物网站支付页面制作
  • 设计素材网站月收益建立生态产品
  • 长沙网站建设找哪家网页设计免费教程
  • 深圳网站制作搜行者seowordpress 头像打岔
  • 郑州网站推广公司哪家好福田网站建设龙岗网站建设龙岗网站建设
  • 多语言网站如何开发interidea 做网站
  • 怎么登陆建设银行网站看开户行翻译网站开发
  • 网站的基本价格网站空间指的是什么意思
  • 北京欢迎您网站建设厦门做网站个人
  • 企业网站开发公司排行榜小程序制作样式
  • 免费企业网站注册2015网站建设源码
  • jsp网站开发详解 pdf生产erp软件