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

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

psbtree-0.1.16-cp312-cp312-manylinux_2_28_x86_64.whl (8.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

psbtree-0.1.16-cp311-cp311-manylinux_2_28_x86_64.whl (8.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

psbtree-0.1.16-cp310-cp310-manylinux_2_28_x86_64.whl (8.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

psbtree-0.1.16-cp39-cp39-manylinux_2_28_x86_64.whl (8.1 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

File details

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

File metadata

File hashes

Hashes for psbtree-0.1.16-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d91cdd879fa0a5f486898ed4b992a5cb07cd79b424688e4260f29cbec68a0663
MD5 1c514437f292b4c15f7bc162622a3641
BLAKE2b-256 15b512ed9e59b0b78f9ee504ca3d1364ff74b0729b11eda4ab35f74983f9ef57

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psbtree-0.1.16-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 54c85a3f380c7106955e39f67819754abc605c83a03b021a49580a29ec08562b
MD5 1fd1d0976172ded0631a7986a59536bb
BLAKE2b-256 acaf9bfe75c32804c93daa926b1cb53d01924f1e6a68141591be19371bf33e5d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psbtree-0.1.16-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 745f0ecc5b5c58e03493b170e6ede230ef292219dbb0a91d1d1d67715530bc25
MD5 3800ab55a13abc62353392209ff53247
BLAKE2b-256 666cb009696c95e7dde1be60d6058c145bf55cb3a072eb388ea932f6aae2762b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psbtree-0.1.16-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a9d95872ec6d52d97ab53b79fce13935d52d3010648c9ab6f3253f292b8289bd
MD5 2d4c7d4fbdb4ac33b170fb8ddb0ec731
BLAKE2b-256 3ec487367494e8010bd6b6a137dfc072b5ef47c7c4b1da62402455ca3d4bedea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psbtree-0.1.16-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2b96bdfc425ddcf0dd4d8c8260ccece78ee5e52a6b3eb1a4ef700f81313c1ea5
MD5 2c822dfd296c790b3a607a55e6c92d31
BLAKE2b-256 c92968fb162b02b716866f370520e4f2b1450706b65a5082c72a817c46746d0b

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