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.18-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.18-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.18-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.18-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.18-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.18-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for psbtree-0.1.18-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a017681e85f28366c595a5700374ffdc9a89d5b32ad05c9f673169295725732a
MD5 2053d638e749cea7ef1fccfdd7b99a6b
BLAKE2b-256 43c5c9e25aac6b27c98490956be8e8d1553344a8bf3315bb7a6f9d8dadafb947

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psbtree-0.1.18-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f422b0b46143038441de061e5c15dffcc47d4df8afc75e418429ab32ee3f7f77
MD5 c755c6efe71fcc962a0ecbc990137495
BLAKE2b-256 1a43baff7425470140c00322678250379d72316d97bcfe6f7a54b516aebcc64c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psbtree-0.1.18-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4040b58dfe508b229641278d5827a6cbb64ce2031ffd711d3c09df21b20f637b
MD5 e4998c3333d6ee38d5841342f7af8587
BLAKE2b-256 0a008d4d5c7cdc0a8c78e38d615ad87ebb8a5e4f5c13eb6d4a2f818b6d1c5d5b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psbtree-0.1.18-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0f9d89d6ba2ff4cbc903ac38661b6bd470c6a12451c4f48b5c8bb86543886b29
MD5 3fa163d58b9f36ff7efc06eb46b49119
BLAKE2b-256 bde74ab2863afaf5f7cadd955f4ef2dfcb9e410c3620df9564c4079387dd063a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psbtree-0.1.18-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 438f31e095a7c3ea5e3ec2e816c725499b7e008b46a5e5163cc95061768088eb
MD5 1acde9c8f9432be5ea854a5e5be8b859
BLAKE2b-256 44fc755a24dda5d9b2f371a19ec1c523a845860f85f8dcb805b64faae03954e3

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