Thank you for these videos! Are conditions rechecked in parallel to actions being performed? If "Free path to Goal exists" is true, the robot will Move to Goal, but how does it react if something comes in the way while Move to Goal is running?
Yes, conditions are checked all the time. That is what provides the reactivity. Thus if the object is no longer in the gripper (it was dropped), the robot will immediately stop to pick it up again. If "Free path to goal" returns failure (say a human blocked the path to goal), this subtree would return failure (as there is currently no actions for achieving "Free path to goal", but one could imagine having and action "Ask human to move out of the way" or something similar) and the next fallback would be executed, exploring if the robot could pay some other agent to perform the task (if such an agent is nearby). Having multiple ways of achieving a task gives robustness, but one must then make sure to avoid the "avoid restarting failed subtrees" problem, as discussed in the video.
So is backward chained behaviour tree just the concept used to structure the tree? Making it easier to plan out what tasks you need and how to arrange them?
These videos are great and very helpful; thank you for creating them!
Glad you like them!
Great Video! Is there an algorithmic or simple way to check these bugs for large behaviour trees?
Great tutorials, thank you :)
I'm glad you like them!
What is the software package you used for this video which has the virtual environment and the real-time BT in the sidebar?
The virtual environment is the game engine Unity 3d. And the BT package used is Panda BT (the free version).
Thank you for these videos! Are conditions rechecked in parallel to actions being performed? If "Free path to Goal exists" is true, the robot will Move to Goal, but how does it react if something comes in the way while Move to Goal is running?
Yes, conditions are checked all the time. That is what provides the reactivity. Thus if the object is no longer in the gripper (it was dropped), the robot will immediately stop to pick it up again. If "Free path to goal" returns failure (say a human blocked the path to goal), this subtree would return failure (as there is currently no actions for achieving "Free path to goal", but one could imagine having and action "Ask human to move out of the way" or something similar) and the next fallback would be executed, exploring if the robot could pay some other agent to perform the task (if such an agent is nearby). Having multiple ways of achieving a task gives robustness, but one must then make sure to avoid the "avoid restarting failed subtrees" problem, as discussed in the video.
Damn!
So is backward chained behaviour tree just the concept used to structure the tree? Making it easier to plan out what tasks you need and how to arrange them?
Yes, exactly! You can think of it as a design principle.
See detailed description here: ua-cam.com/video/dB7ZSz890cw/v-deo.html
Thanks for the tutorials. I want to ask if the demo you are showing in unity is open source and available to download
Hi Stan. Some of the stuff is from the Unity Asset Store, so I do not think I am allowed to share it.