随笔分类 -  状态机

scxml-3
摘要:编译源码: 预先安装如下: sudo apt-get install build-essential libboost-all-dev cmake autorevision xsltproc autorevision用于更新scxml的版本; xsltproc用于编译单元测试; 编译: mkdir 阅读全文

posted @ 2021-05-08 17:30 gary_123 阅读(113) 评论(0) 推荐(0) 编辑

scxml-2
摘要:源码:https://github.com/jp-embedded/scxmlcc scxml状态机的一个c++编译器 scxml目的是制作一个开源的具有状态机编译器完全特征的,可以从scxml状态图中生成简单的有效的c++状态机。 特点: scxmlcc并没有支持scxml的全部特征。不过大部分核 阅读全文

posted @ 2021-05-08 16:41 gary_123 阅读(218) 评论(0) 推荐(0) 编辑

scxml-1
摘要:转载自https://blog.csdn.net/caomiao2006/article/details/44836791 简介: SCXML有限状态机规范概述: State Chart XML(SCXML)是W3C组织制定的一种有限状态机的规范;它提供了一个在 CCXML 和 Harel Stat 阅读全文

posted @ 2021-05-08 16:25 gary_123 阅读(200) 评论(0) 推荐(0) 编辑

Async Actions using Coroutines(异步行为使用协程,协同程序)
摘要:Behavior.CPP提供了两个方便使用的抽象去创建一个异步的行为,例如: 那些行为可能: 花很长时间来得出结论; 可能返回RUNNING; 可能被停止; 第一类是一个AsyncActionNode,其在单独的线程当中执行方法tick(); 本教程中,引入CoroActionNode,一个不同的行 阅读全文

posted @ 2021-04-25 17:17 gary_123 阅读(180) 评论(0) 推荐(0) 编辑

Pass additional arguments during initialization and/or construction
摘要:目的是为了扩展之前的写法,如 MyCustomNode(const std::string& name, const NodeConfiguration& config); 如果需要在构造函数中,添加额外的参数 不建议使用黑板的形式: 理论上可以使用黑板中的输入端口来实现,但是错误情况如下: 参数在 阅读全文

posted @ 2021-04-25 16:43 gary_123 阅读(56) 评论(0) 推荐(0) 编辑

Wraping legacy code
摘要:如何处理不打算在BehaviorTree.CPP中使用的旧代码; 类可能是如下: // This is my custom type. struct Point3D { double x,y,z; }; // We want to create an ActionNode to calls meth 阅读全文

posted @ 2021-04-25 16:27 gary_123 阅读(105) 评论(0) 推荐(0) 编辑

Remapping ports between Trees and SubTrees
摘要:在CrossDoor例子中,我们看到一颗SubTree树,从其父节点(例子中是MainTree)来看其就像是一个叶子节点。 进一步,为了避免在大的树中的命名冲突,任何树和子树使用不同的黑板实例。 针对这个原因,我们需要去显示将一颗树和其子树进行连接; 不需要修改C++实现,因为在XML中完成即可; 阅读全文

posted @ 2021-04-25 16:05 gary_123 阅读(62) 评论(0) 推荐(0) 编辑

Composition of Behaviors with Subtree
摘要:可以构建将多个更小的可重复使用的行为到一个更大的树中; 换句话说,想构建分层的行为树; 通过在XML中定义多个树来实现; CrossDoor behavior This example is inspired by a popular article about behavior trees. It 阅读全文

posted @ 2021-04-25 15:41 gary_123 阅读(135) 评论(0) 推荐(0) 编辑

Sequences and AsyncActionNode
摘要:下面例子将展示SequenceNode和ReactiveSequence的不同 一个异步行为有它自己的线程;允许用户使用阻塞函数,但是要将执行流返回给到树; //Custom type struct Pose2D { double x, y, theta; }; class MoveBaseActi 阅读全文

posted @ 2021-04-25 15:02 gary_123 阅读(209) 评论(0) 推荐(0) 编辑

ports with generic types
摘要:解析字符串 BehaviorTree.CPP支持自动将字符串strings类型转换为公共类型,如int,long,double,bool,NodeStatus等; 用户定义的类型也可以被支持,如 // We want to be able to use this custom type struct 阅读全文

posted @ 2021-04-25 14:29 gary_123 阅读(106) 评论(0) 推荐(1) 编辑

input and output ports
摘要:自定义的TreeNodes用于执行任意简单的或者复杂的软件代码。目的是提供一个更高抽象级别的接口。 因此,其概念上与函数并无不同。 与函数的相似之处: 传递参数到一个节点(inputs); 从一个节点中获取参数(outputs); 一个节点的输出可以作为另一个节点的输入; BehaviorTree. 阅读全文

posted @ 2021-04-25 11:35 gary_123 阅读(194) 评论(0) 推荐(0) 编辑

How to create a BehaviorTree
摘要:行为树类似于状态机,只是一种机制,在正确的条件下,正确的时间来唤醒回调函数。 进一步,我们使用callback和tick来相互替换; 这些回调函数里面具体执行什么取决于你; 怎样创建你自己的ActionNodes 默认的方法是采用继承的方式来实现一个TreeNode: //Example of cu 阅读全文

posted @ 2021-04-23 15:50 gary_123 阅读(200) 评论(0) 推荐(0) 编辑

The XML 格式
摘要:XML基本的纲要 在第一篇教程中这个简单的树被呈现: <root main_tree_to_execute = "MainTree" > <BehaviorTree ID="MainTree"> <Sequence name="root_sequence"> <SaySomething name=" 阅读全文

posted @ 2021-04-23 15:20 gary_123 阅读(97) 评论(0) 推荐(0) 编辑

Decorators
摘要:一个Decorator是一个只有一个子节点的节点; 子节点会被tick多少次以及何时,取决于Decorator; InverterNode 只会tick子节点一次,对子节点的结果取反; ForceSuccessNode 如果子节点返回RUNNING,那么父节点返回RUNNING,否则一直返回SUCC 阅读全文

posted @ 2021-04-23 14:52 gary_123 阅读(180) 评论(0) 推荐(0) 编辑

Fallback
摘要:这个节点家族在其他框架中被称为"Selector"或者"Priority". 他们的目的是尝试不同的策略,直到我们找到一个可以使用的。 他们共有的规则: 在ticking第一个子节点之前,节点状态变为running; 如果第一个节点返回失败,fallback tick下一个子节点; 如果最后一个子节 阅读全文

posted @ 2021-04-23 14:44 gary_123 阅读(551) 评论(0) 推荐(0) 编辑

Sequences
摘要:一个Sequence会tick所有的子节点只要他们返回成功。如果任何的子节点返回失败,这个sequence被终止。 当前这个框架提供了三种节点: Sequence SequenceStar ReactiveSequence 他们共有的规则: 在tick第一个子节点之前,节点状态变成了RUNNING。 阅读全文

posted @ 2021-04-23 14:28 gary_123 阅读(682) 评论(0) 推荐(0) 编辑

Getting started
摘要:BehaviorTree.CPP可以很容易整合进一些分布式的中间件当中,如ROS,SmartSoft; 可以静态链接到你的应用当中; 一些概念的理解: 节点和树 用户必须创建自己的行为节点和条件节点;这个库可以很容易将用户创建的节点组织到树当中; 把叶子节点当做积木(组成部分),可以用于构建复杂的系 阅读全文

posted @ 2021-04-23 14:04 gary_123 阅读(268) 评论(0) 推荐(0) 编辑

介绍行为树
摘要:不像有限状态机,一棵行为树是一个分层节点的树,节点控制着决策流,任务的执行或者我们进一步称之为“行为”。 输的叶子节点是实际的命令,例如,协调组件与系统的其他部分相交互的地方。 例如,在一个以服务导向的结构中,叶子将会包含客户端节点,这些节点与执行操作的服务器相通信。 在以下的例子中,可以看到在一个 阅读全文

posted @ 2021-04-23 13:41 gary_123 阅读(818) 评论(0) 推荐(0) 编辑

行为树-简介
摘要:简介: https://github.com/BehaviorTree/BehaviorTree.CPP https://github.com/miccol/ROS-Behavior-Tree https://github.com/chenjm1109/XM_Studio-guyuehome 本c+ 阅读全文

posted @ 2021-04-23 10:08 gary_123 阅读(677) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示