Skip to main content

Python Behavior Tree Framework with C++ Core

Project description

PSBTree 行为树引擎

基于 C++ 和 Python 实现的高性能行为树引擎,支持顺序和并行执行模式,适用于机器人控制、游戏 AI 和自动化系统。

项目结构

.
├── src/                    # 源代码目录
│   └── psbtree/            # 主包目录
│       ├── engine/         # 引擎实现(顺序和并行)
│       ├── nodes/          # 节点实现(动作、条件、控制、装饰器)
│       ├── plugins/        # 插件系统
│       └── utils/          # 工具函数
├── sample/                 # 示例代码
├── tests/                  # 测试代码
├── doc/                    # 文档
├── source_cpp/             # C++ 源代码
├── dependencies/           # 依赖项
├── scripts/                # 构建脚本
├── pyproject.toml          # 项目配置
├── setup.py                # 安装脚本
└── README.md               # 项目文档

核心功能

  • 行为树引擎: 支持顺序和并行执行模式
  • 节点系统: 提供丰富的节点类型(动作、条件、控制、装饰器)
  • 高性能: 核心功能使用 C++ 实现,通过 Cython 与 Python 集成
  • 授权系统: 内置授权验证机制
  • 插件扩展: 支持通过插件系统扩展功能

快速开始

  1. 安装依赖:

    pip install -r requirements.txt
    
  2. 安装包:

    pip install .
    
  3. 设置授权码:

    from psbtree import set_sk_code
    set_sk_code("您的授权码")
    
  4. 运行示例:

    python sample/sequential_engine_sample.py
    

依赖管理

核心依赖包括:

  • loguru: 日志记录
  • psdec: 授权验证
  • opencv-python: 图像处理(示例中使用)

使用示例

顺序引擎示例

from psbtree.engine.sequential_engine import SequentialEngine
from psbtree.nodes import SimpleActionNode, TreeNode, NodeStatus
from psbtree import set_sk_code

# 设置授权码
set_sk_code("您的授权码")

# 创建顺序引擎
engine = SequentialEngine()

# 注册节点
engine.register_action_class(YourActionNode, "YourActionNode")

# 定义行为树XML
xml_text = """
<root BTCPP_format="4">
    <BehaviorTree ID="MainTree">
        <Sequence name="root_sequence">
            <YourActionNode />
        </Sequence>
    </BehaviorTree>
</root>
"""

# 从XML创建行为树
engine.create_tree_from_text(xml_text)

# 运行行为树
status = engine.tick_once()

并行引擎示例

from psbtree.engine.parallel_engine import ParallelEngine
from psbtree.nodes import SimpleActionNode, TreeNode, NodeStatus
from psbtree import set_sk_code

# 设置授权码
set_sk_code("您的授权码")

# 创建并行引擎
engine = ParallelEngine()

# 注册节点
engine.register_action_class(YourActionNode, "YourActionNode")

# 定义多个行为树XML
xml_text_tree0 = """
<root BTCPP_format="4">
    <BehaviorTree ID="Tree0">
        <Sequence name="root_sequence">
            <YourActionNode />
        </Sequence>
    </BehaviorTree>
</root>
"""

# 从XML创建行为树
tree_id0 = engine.create_tree_from_text(xml_text_tree0, "tree0")

# 运行行为树
status0 = engine.tick_once(tree_id0)

开发指南

  • 使用 SimpleActionNode 作为基类创建自定义节点
  • 通过 ports 静态变量定义节点的输入输出端口
  • 实现 tick 静态方法定义节点的行为
  • 使用 XML 格式定义行为树结构
  • 遵循行为树设计模式最佳实践

贡献

欢迎提交 PR 和 issue。请确保:

  • 代码符合项目编码规范
  • 包含必要的单元测试
  • 更新相关文档

许可证

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

psbtree-0.1.9-cp313-cp313-manylinux_2_28_x86_64.whl (5.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

psbtree-0.1.9-cp312-cp312-manylinux_2_28_x86_64.whl (5.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

psbtree-0.1.9-cp311-cp311-manylinux_2_28_x86_64.whl (5.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

psbtree-0.1.9-cp310-cp310-manylinux_2_28_x86_64.whl (4.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

psbtree-0.1.9-cp39-cp39-manylinux_2_28_x86_64.whl (4.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

File details

Details for the file psbtree-0.1.9-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for psbtree-0.1.9-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b762a79189fa3a35001907f547114337b28842ec71221e66a6ed09bee2d57182
MD5 ae6cf440bd99a3beb9241e5243a04c73
BLAKE2b-256 dd1ab5cc0775f47e7fd4462abe1bbe0f459024a9f2c38e95690055cccd099dab

See more details on using hashes here.

File details

Details for the file psbtree-0.1.9-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for psbtree-0.1.9-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cd5972d733c31ec33c6509f31d48e9828557f2182f169ec20b82d728702c2f73
MD5 4ce12e5da0f1ca9615a4e3eb640a61c4
BLAKE2b-256 09f79fff631d305222056f260ccb1ffc17ced84943d7c19319c9ab6e07ae468f

See more details on using hashes here.

File details

Details for the file psbtree-0.1.9-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for psbtree-0.1.9-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cbaa9ef91295779059c33761cc1da656accc9e22af9f4c149dee7902bce69df2
MD5 9b74bbf3a3ff02d37c25dc9edaea6af5
BLAKE2b-256 754af234d5a7e132ce445215583027f18f8045620c57bba8ec15a7c5e7d88bb2

See more details on using hashes here.

File details

Details for the file psbtree-0.1.9-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for psbtree-0.1.9-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 925f0be239a5f9cdb3b50e9a14c06d7baf9aecda941f9d5f8c74490f51731081
MD5 7eae56f5e84a97c0699e55f6320fa2df
BLAKE2b-256 d5770c39431dd077caef4b41fe32753703010cb2eb500451d4603711911a23cd

See more details on using hashes here.

File details

Details for the file psbtree-0.1.9-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for psbtree-0.1.9-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 41e0c0877bbffc619206cf1b9c2d864301ce26ad90c06799d96830309184a015
MD5 5d2e541a367af8d8ea7ed177d6288b4a
BLAKE2b-256 74f0b3bad4ebee4ada18aee955a51232eff0379d488e78d1c502de4ce6a3476c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page