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

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

psbtree-0.1.22-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.22-cp311-cp311-manylinux_2_28_x86_64.whl (8.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

psbtree-0.1.22-cp310-cp310-manylinux_2_28_x86_64.whl (8.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

psbtree-0.1.22-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.22-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for psbtree-0.1.22-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5b66e2d271304487782e2af83a5c1941ee5e4898878a056c9a2e5d28f9400ac8
MD5 5be3dd931aedbc521d9c8c62de5a8d4d
BLAKE2b-256 028f60ace44b159ad6605399a4c0e5871f5dceae27d4d9185868d570be6ea0c5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psbtree-0.1.22-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 96d276c528291be87f4cb11c9998363e731225912a2458b2cb621e74ee1ae0f2
MD5 a2c2381e950be1b7350ca42af90b516d
BLAKE2b-256 ca0621736764b686bb30759b8739c08ebff191aa7e5f06f4a606e127c73bca37

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psbtree-0.1.22-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 539690a15f0516373c5dca07abe0221cc0e35b09aeae9759a3a5084311b4805a
MD5 39836436ccae4755313602c7d9a7e1cd
BLAKE2b-256 7a3753b16323af490d8eccbeb28ca4757e384be3586350bcc8721fbc4d6e9c1b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psbtree-0.1.22-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e0ba4591564c64e86dcfc2e0c4d6e4021caf6191eaf7125e97ac4a6c52245c00
MD5 106a580a926cc282e89cefdd0378a0f4
BLAKE2b-256 0dc20c5f7368d15aaf217c434dfc14387b87f99758fcf42161927ef05ea3a78c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psbtree-0.1.22-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0483b3793cd4a7129394016d7f49b05082397137abd61210fa178d2fddd32121
MD5 2db9618ee1e7d6b4ba3742845f3fa340
BLAKE2b-256 ac6e59038236feb7ff7f68efe4a71127d3ea2c50aab0418c6aa28805d45b307c

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