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.20-cp313-cp313-manylinux_2_28_x86_64.whl (8.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

psbtree-0.1.20-cp312-cp312-manylinux_2_28_x86_64.whl (8.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

psbtree-0.1.20-cp311-cp311-manylinux_2_28_x86_64.whl (8.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

psbtree-0.1.20-cp310-cp310-manylinux_2_28_x86_64.whl (8.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

psbtree-0.1.20-cp39-cp39-manylinux_2_28_x86_64.whl (8.4 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

File details

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

File metadata

File hashes

Hashes for psbtree-0.1.20-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 eb6ad6cee33df7e367c7fb3c73481a9e9649a4f23af9eed72a4158763a199450
MD5 b7a86d321cb0f9a09a0601d16da39759
BLAKE2b-256 c576a85118f57c918831724ee14e58c82c20570712993777a8f7c81e95ef310f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psbtree-0.1.20-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 97bb9a552432c4db8cfaadc6a07e7120908ba31829e40a46feebd561d35c3da1
MD5 1fc06f12e668313b50d209c58fda7190
BLAKE2b-256 b8de3dbd86ab763663ccc841d1bafea0b3626f7f24853ee4449432e4a1300c88

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psbtree-0.1.20-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7bc6ef5aaea51184c39552de6d6c104fe649655261f836a220a174e9366c1cd4
MD5 0aa76ada83fc6779a9b6cda4ec303362
BLAKE2b-256 a48f1c2c8788370eba78f36513bd20208341b781716442ca9e2a0876674b6ef0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psbtree-0.1.20-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 11595ad2d7898eb12d11f865e694106304be1a86dd7f247fa598cdbe55c83239
MD5 e53a17ce24fd54cf6fa202ebfa34798f
BLAKE2b-256 a4effdc5f84481e2e9e25643a1aa9f5224adcbbd3c79a285c1dff5fddd616851

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psbtree-0.1.20-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8c68a974fbd30e1552136ea536f77ee915003499870c7b9ced93ae8f668e7bb2
MD5 5e1299b021adaace1f762795ef365dd7
BLAKE2b-256 6c8f4b2880d3b39a49e01fe1c12f42cf4af900235b7d4ec77a0550e9c6b00489

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