ZERO Notificatons

NO Feedback yet!!

okay

xparo
X.P.A.R.O



Behaviour Tree Visualizer

Paste BehaviorTree.CPP or Groot XML and see it drawn as a tree, with checks for missing subtrees, wrong child counts and other mistakes.

Tree XML

Paste BehaviorTree.CPP 3 or 4 XML, including files saved by Groot. Everything is parsed in your browser.

Tree

100%
  • Control
  • Decorator
  • Action
  • Condition
  • SubTree
  • Dashed: not a built-in node

    How to use the behaviour tree visualizer

    1. Paste or open your XML. Use a file from your package, a Groot export, or one of Nav2's trees. The drawing updates as you type.
    2. Read the tree top to bottom, left to right. That is the order BehaviorTree.CPP ticks children. Colours show what each node is: blue controls decide the order, purple decorators change one child's result, green actions do work and amber conditions check something.
    3. Fix the problems listed under the drawing. Errors stop BehaviorTree.CPP from loading the file, or make it throw as soon as the node runs; warnings load fine but are probably not what you meant. Nodes with errors get a red dashed border.
    4. Explore subtrees and export. Pick another tree from the list, tick Expand subtrees to draw them inline, and download the drawing as SVG for documentation or a pull request.

    What the checker looks for

    CheckWhy it matters
    Well-formed XML with a <root> elementA typo such as an unclosed tag stops the whole file from loading.
    BTCPP_format="4" on the rootBehaviorTree.CPP 4 warns when it is missing, and a file written for version 3 may use node names that version 4 renamed.
    One top-level node per <BehaviorTree>A tree has exactly one root node; wrap several in a Sequence or Fallback.
    A main tree can be foundmain_tree_to_execute must name an existing tree when the file has several.
    Every SubTree ID exists, and subtrees don't call each other in a loopA missing subtree fails at load time; a loop would recurse forever.
    Decorators have exactly one child; leaves have noneBehaviorTree.CPP rejects both at load time.
    Child counts for IfThenElse, WhileDoElse, SwitchN and Nav2's RecoveryNodeThese nodes give each child a fixed role, so the count must match.
    Actions before the last child of a ReactiveSequence or ReactiveFallbackReactive nodes re-tick earlier children on every tick, so such an action restarts while a later child runs. BehaviorTree.CPP loads the tree without a warning.
    Unknown node namesYour own nodes must be registered in code; a TreeNodesModel section documents them for tools like this one.

    The node list covers every built-in node of BehaviorTree.CPP 4.10 and the Nav2 nodes shipped with ROS 2 Jazzy, so a stock Nav2 tree shows no warnings. We test the checker by loading the same files with BehaviorTree.CPP 4.10 itself. Version 3 names such as SequenceStar are flagged with their version 4 replacement: as an error in a version 4 file, which BehaviorTree.CPP 4 refuses to load, and as a warning in a file without BTCPP_format, which may be meant for version 3 (ROS 2 Humble).

    Reading a tree in thirty seconds

    The visualizer reads trees; it does not run them. To design trees with your team and run them on real robots, use the behaviour tree editor in the XPARO fleet dashboard.

    Frequently asked questions

    What does the visualizer check?

    That the XML is well formed, that a main tree can be found, that SubTree references exist, that decorators have exactly one child, that control nodes have children, and that leaf nodes have none.

    Does it know my custom nodes?

    Nodes it does not recognise are drawn as actions or conditions. If your file has a TreeNodesModel section, the visualizer uses it to classify your custom nodes correctly.

    Can I export the drawing?

    Yes. Download the tree as an SVG image for documentation, slides or pull requests.

    Does it run the tree?

    No. It shows the structure only. To execute trees on robots, use BehaviorTree.CPP itself or the XPARO behaviour tree engine.

    Guides for this tool

    In-depth articles that explain the ideas behind the Behaviour Tree Visualizer, with worked examples.

    Behaviour Tree Visualizer has its own project page with the story behind the tool, a gallery and every guide in one place.

    Visit the project page →

    More free tools

    Every tool runs in your browser. Nothing you enter is uploaded.