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.17-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.17-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.17-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.17-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.17-cp39-cp39-manylinux_2_28_x86_64.whl (8.3 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

File details

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

File metadata

File hashes

Hashes for psbtree-0.1.17-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3968233184ecce57dce17de3b95482ffefb780c020c5c9ef304b6f4ab4c03a6a
MD5 354cc4a5a7aff8c06736568c29dfae4a
BLAKE2b-256 090c1bfdb2d345b7dcc9e6711bcbc5f04c13a65a1ec2288c3b6f354b1702d197

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psbtree-0.1.17-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 514729673e4a015bbac87a5b07e05670279495ad475ea7c1e1e78527da6c1835
MD5 3406ad3d807108b520c4b93579464023
BLAKE2b-256 7b10b8473027820f312470944aace16554e5a46e9ff9551c8fab47a5e84b68e7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psbtree-0.1.17-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f7021c2a8c3b15beebeeef8e09e41a191a71a1749216796b4d68580db466c394
MD5 4cf1ed9caf9b03e342725616fc3066f1
BLAKE2b-256 3c3ba398ad6b1a6239a83e2d196c363bec0fd3205449bff3c5db159a81f767f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psbtree-0.1.17-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e4397ca0f5b7677a4ac8f8db005752845becb37741d723d3a9560008d3be7c78
MD5 7789caba690fbb1ad906702d87024449
BLAKE2b-256 1cbf1ef7648a9e2c2456f8445f45b371d09971b548517bc0b780802f5c3af490

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psbtree-0.1.17-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7a54519d8389c9439f56cee2b883901a3369fbf9076c39b85cbbd32ddd1045c4
MD5 8fc5c8449793c93bd2543ccfbbb92a90
BLAKE2b-256 ff566c17788014293e64a281aaa4401c1c69ca9363eda2de01fba039d168d5bd

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