Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于决策模块行为树的疑问 #12

Open
popfishy opened this issue Mar 23, 2023 · 2 comments
Open

关于决策模块行为树的疑问 #12

popfishy opened this issue Mar 23, 2023 · 2 comments

Comments

@popfishy
Copy link

关于决策模块的判断比赛是否开始的节点,此处的返回条件不是很明白?应该是game_status为4且比赛剩余时间为正数的条件下返回SUCCESS?

    BehaviorState Update()
    {
        if(blackboard_ptr_->game_status_.game_status == 4 && blackboard_ptr_->game_status_.remaining_time > 0)
        {
            return BehaviorState::FAILURE;
        }
        else
        {
            chassis_exe_ptr_->Stop();
            return BehaviorState::SUCCESS;
        }
    }
@imuncle
Copy link
Collaborator

imuncle commented Mar 23, 2023

这个是行为树设计上的历史遗留问题。我们在代码中设置了一个顺序节点以及多个行为节点,但其实这里的顺序节点其实行使的是选择节点的功能,即:

选择节点,也称为优先级Selector节点,从左到右依次执行所有子节点,只要子节点返回failure,就继续执行后续子节点,直到有一个节点返回success或running为止,这时它会停止后续子节点的执行,向父节点返回success或running。若所有子节点都返回failure,那么它向父节点返回failure。

@popfishy
Copy link
Author

这个是行为树设计上的历史遗留问题。我们在代码中设置了一个顺序节点以及多个行为节点,但其实这里的顺序节点其实行使的是选择节点的功能,即:

选择节点,也称为优先级Selector节点,从左到右依次执行所有子节点,只要子节点返回failure,就继续执行后续子节点,直到有一个节点返回success或running为止,这时它会停止后续子节点的执行,向父节点返回success或running。若所有子节点都返回failure,那么它向父节点返回failure。

原来如此。我看最近版本的行为树文档已经是相反的了:任意一个子节点返回failure,则其父节点返回failure且停止所有子节点。应该是没有问题的。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants