Giter Club home page Giter Club logo

groot2's Introduction

Groot2

Hi!

This repository contains updates about the release of Groot2 and (in the future) tutorials and learning material.

You can use submit issues here: https://github.com/BehaviorTree/Groot2/issues

Changelog

1.2.0 (2023-09-11)

  • [Bugfix]: fixed crash when renaming a Subtree
  • [Bugfix]: Prevent Model editor when double clicking a Subtree.
  • [LogReplay]: add filter-in/filter-out to the Transitions table.
  • [LogReplay]: add the ability to export the result of the query into a JSON file

1.1.1 (2023-08-12)

  • [Bugfix]: fixed crash when inserting a node during the Creation of a Node connection
  • [Bugfix]: fixed crash when pressing the button "Play" on an empty Log Replay
  • [License]: when activating the PRO license, user is asket to agree with the EULA.

1.1.0 (2023-07-23)

  • [Visualization]: improved layout for Pre/Post Conditions boxes.
  • [Editor]: Adding the ability to save XML files using the same syntax used by Groot1 (disabled by default in Preferences).
  • [Editor]: Added ParallelAll and ScriptCondition to the built-in nodes.
  • [Editor]: allow files that only contain include tags, but not BehaviorTree to be loaded.
  • [Monitor]: Breakpoints can now be saved/loaded from file.
  • [Monitor]: Add compatibility with the Groo2Publisher in BT.CPP 3.8+.
  • [LogReplay/Monitor]: Log parsing will now use plugins. Users will be soon able to create their own plugins to save/load logs.
  • [LogReplay]: the range of the log can be changed; in other words, you can zoom on a particular section of the timeline.
  • [Licensing]: append license key to offline activation file.

groot2's People

Contributors

facontidavide avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

groot2's Issues

Moving selected nodes

Is your feature request related to a problem? Please describe.
If more than one node are selected, grabbing any selected node and moving it moves only grabbed one. It would be much easier to modify a large tree.

Describe the solution you'd like
Every selected node is moved.

Binary for arm(64)

Is your feature request related to a problem? Please describe.

No binary distributed for arm64 arch.

Describe the solution you'd like

Provide a build binary for arm64 arch.

Describe alternatives you've considered

n/a

Additional context

n/a

Can't deactivate trial license

Describe the bug
I'm getting an error window "Failed" when trying to deactivate my trial license in the preferences for Groot2
The trial is not canceled

To Reproduce

  • Start pro trial license in Preferences -> License
  • (restart)
  • Press "Deactivate" in Preferences -> License

Expected behavior

  • no error message
  • Trial to not be active anymore and only have access to non-Pro version

Screenshots and videos
Screenshot from Groot2 preferences with error window

Desktop (please complete the following information):

  • OS: Ubuntu 22.04.3 LTS x86_64
  • Groot2 v1.3.1 x86_64 AppImage

Additional context
Terminal output of running Groot2.AppImage

Info: Wed Sep 27 16:33:37 2023 - Running free version
loaded Parser plugin:  "libFileLogger2Parser.so"
loaded Writer plugin:  "libFileLogger2Writer.so"
loaded Parser plugin:  "libFlatbuffersParser.so"
loaded Parser plugin:  "libSQLiteParser.so"
current version:  "1.3.1"
latest online version:  "1.3.1"

Active and Deactive Nodes

Is your feature request related to a problem? Please describe.
I find my self currently testing Nodes and also different implementations of Nodes, and i don't want to have multiple implementations of the Nodes running at execution of the Tree, and i don't want to delete them for conveniance if they have many In / Outputs i would need to refill if i want to test the other node again.

Describe the solution you'd like
It would be nice to simply right click the Node and deactivate it. In Case of Sequences deactivate the whole sequence and so on.
Would be nice if the Node then is visually greyed out or something.

Describe alternatives you've considered
I could pack the Node in a Subtree and therefore don't lose the Information if i remove the subtree but that creates quickly deep trees

Groot Version 1.5.2

More colour palate options

Is your feature request related to a problem? Please describe.
I find the new colour palate for trees in version 1.0.0 very noisy and distracting across a large tree (especially the gradient on nodes in dark mode).

Describe the solution you'd like
Please give an option to go back to the colour scheme of 0.9.0, or an option to downgrade versions of groot2.
Many thanks.

Additional context
Dark mode in 1.0.0:
image

Light mode in 1.0.0:
image

Support for common keyboard shortcuts?

It would be good to have support for common key shortcuts, for example:

  • Ctrl-S / Ctrl-O for saving/opening files, maybe also Ctrl-N for creating new files.
  • Ctrl +/- for zooming in/out current document

Download for Mac

Is your feature request related to a problem? Please describe.
There are windows and Linux downloads. Right now there is no download for MacOS.

Describe the solution you'd like
A built binary for MacOS. This should be pretty straightforward as there is QT for Mac. (See openscad for an open source example of how to build QT apps on Mac)

Describe alternatives you've considered
Using it on a different computer

Additional context
If you need help building on a mac, I can help.

Feature request: multiple tree publishing from behaviortree cpp to groot 2 on the same port

I would request multiple tree publishing from behaviortree cpp to groot 2 on the same port.
For example, I have an initializing sequence tree which when returns a success i move ahead with by ticking main tree. Please let me know if this is a bad design.

Alternatives
Publishing on 2 different ports. But this isn't a good idea because we could have multiple devices running trees and having 1 port for 1 complete lifecycle of the robot would be better.

Multi-Node Copy & Paste Across Tabs

Allow users in the Groot Editor to:

  • Select multiple nodes at once.
  • Copy the selected nodes.
  • Paste them into another tab.

This addition will simplify moving nodes between tabs.

Buggy ports editing

Describe the bug
When editing text in a node's port, the text coursor jumps to the end of the text after every typed character.

To Reproduce

Create a node with a port, place it on a tree. In the port field write some text and try to delete or add some characters in the middle of the word.

Screenshots and videos
https://imgur.com/a/ELNcaUV

Desktop (please complete the following information):

  • OS: Ubuntu 20.04
  • Version: Groot 0.4

Support `ScriptCondition` condition node

Is your feature request related to a problem? Please describe.
In BT.CPP v4.3 the ScriptCondition condition node was added, but it is not supported by Groot 2 (0.9.0).

Describe the solution you'd like
It'd be great if this could be added to Groot 2 - I'm sure a lot of people would like to use it but aren't aware of its existance.

Describe alternatives you've considered
NA

Additional context
NA

Thank you in advance :)

No Option to Create new Subtree in Node Model Editor Window

Describe the bug
There doesn't appear to be any way to create a new subtree using the Node Model Editor Window. It is possible this is by design and each subtree is expected to be in its own file, but there is further clarification needed.

To Reproduce

  • Open the Node Model Editor Window by clicking the "+" in the main Groot2 window.
  • Click the "Type" dropdown and observe there is no "SubTree" option.

Expected behavior

  • Open the Node Model Editor Window by clicking the "+" in the main Groot2 window.
  • Click the "Type" dropdown and select the "SubTree" option.
  • Add ports as needed to the "SubTree" and add it to the node registry.

Screenshots and videos
image

Desktop (please complete the following information):

  • OS: Ubuntu 20.04 in VMWare Workstation 16 Pro
  • Version: 0.2.0

Additional context
Not applicable

Groot2 publisher connection requires tree instance and compile breakpoints

Is your feature request related to a problem? Please describe.

Hi we recently acquired the pro version and it is awesome!

but we were a little frustrated with live monitoring and the dependency of the publisher with a tree instance,
our use case utilizes an action server approach that sends different trees to the robot for execution,
causing groot2 to loose connection each time a new goal/tree is received and the publisher reset.

Furthermore the only time that you can connect now is after the tree instantiation, usually right after is the time to also run the tree unless you block it, so it is a race to connect and place your breakpoints.

Describe the solution you'd like

// now this is the only constructor
BT::Groot2Publisher publisher(tree, 5555);
// option to construct without tree
BT::Groot2Publisher publisher(5555);
publiser.setNewTree(tree);
publiser.clearTree();

About the breakpoints can you only place them at runtime in Groot2?

I think it would be a nice feature to be able to add them also in the XML (so the BT::Tree Leaf/Control Nodes must know them)
and have the option to run the tree with breakpoints or not.
I don't think that Groot2 monitoring should/could edit the xml breakpoints only add new ones at runtime.
Also in second there might not be a good way to do that with subehaviors unless you place them in the subehavior definitions and in the instances pass a parameter to use or not the breakpoints.

Additional context

PS : About the offline log replay ( is super useful ) , but Groot2 could not open .btlog files used by the BT::FileLogger2 only .db3 files from BT::SqliteLogger i manage to replay, is support for this coming soon?

Thanks a lot ,
Panagiotis Angelakis

New builtin nodes for stamped values missing

Describe the bug
With the BehaviorTree.CPP release 4.6, three new builtin nodes is available, but they are not present in the Groot2 Models list:

  • SkipUnlessUpdated
  • WaitValueUpdate
  • WasEntryUpdated

To Reproduce

  1. Open Groot2
  2. Look in the Models list

Expected behavior
I would expect the above nodes to be present in the Models list

Screenshots and videos
missing_models

Desktop (please complete the following information):

  • OS: Ubuntu 20.04
  • Groot2 version 1.6.0

Includes are not loaded if xml doesn't contain BehaviorTree tag

Describe the bug
If included file doesn't contain any trees, it's includes are not loaded.

To Reproduce

Create top level tree:

<?xml version="1.0" encoding="UTF-8"?>
<root BTCPP_format="4">

  <include path="macros.xml"/>

  <BehaviorTree ID="MainTree">
    <SubTree ID="IncludedSubtree"/>
  </BehaviorTree>

</root>

Create macros.xml:

<?xml version="1.0" encoding="UTF-8"?>
<root BTCPP_format="4">

  <include path="macros_sim.xml"/>

<!-- <BehaviorTree ID="aaaaa">
    <AlwaysSuccess/>
  </BehaviorTree> -->

</root>

Create macros_sim.xml:

<?xml version="1.0" encoding="UTF-8"?>
<root BTCPP_format="4">

  <BehaviorTree ID="IncludedSubtree">
    <AlwaysSuccess/>
  </BehaviorTree>

</root>

The subtree IncludedSubtree is loaded only if the dummy tree in macros.xml is uncommented.

Expected behavior

Includes are loaded even if xml doesn't have any behavior trees.

Improve multi-file workflow

Is your feature request related to a problem? Please describe.
Typically, we have multiple "missions" that we choose depending on the robot or use case. Therefore, an ideal structure would be:

  • skills.xml: common subtrees for all missions
  • models.xml: declarations of all available nodes
  • mission_1.xml: an actual mission that we load at runtime depending on arguments
  • mission_2.xml: an actual mission that we load at runtime depending on arguments

Each mission file would include skills.xml and models.xml.

There are two issues with Groot:

  • Groot doesn't recognize the includes. I have to import each file individually.
  • Includes are recognized when I create a high-level .btproj file that includes all .xml files. However, there are two problems with this approach:
    • If I save a .xml file within the .btproj project it inserts all node declarations to the .xml file. There is no need to have node declarations in each .xml file.
    • I need either to create a .btproj project for each mission or we will see irrelevant trees (either of which is undesirable).

Describe the solution you'd like
Ideally, we should be able to work with .xml files directly (without .btproj files) and Groot should be able to follow includes and recognize where the node declarations are stored. At least, Groot should not insert node declarations in XML files if the declarations are already present in the .btproj file.

Additional context
It is possible I use Groot 2 in the wrong way. I would appreciate if you could share a recommended workflow.

Having possibility to define detected ports by model importer as OPTIONAL ports

Is your feature request related to a problem? Please describe.
current model importer detects all ports in the xml node and tries to check the next occurrences with the same PortList assuming all the ports are necessary to be presented again.

Describe the solution you'd like
Being able to mark a checkbox beside the port name or type to set it as optional port.

Distinguish between the most recently ticked nodes and previously ticked nodes at some point.

Is your feature request related to a problem? Please describe.
I want to see the difference of ticked node between the node has ticked and the node just was ticked.
Right now, I can't tell whether a node is just ticked(the most recent tick from root node) or it has been ticked from some point before.

Describe the solution you'd like
Refresh button to refresh all the green, orange, red node to see what nodes are traversed from the upcoming tick.

Describe alternatives you've considered
Maybe draw different boundary for the ticked node. If a node has been ticked but not for the most recent, draw boundary with dash-line just right now.
For the node that was just ticked, draw boundary with bold line.

App crashes when simultaneously connecting and creating a node

Describe the bug
The application crashes with

terminate called after throwing an instance of 'std::out_of_range'
  what():  map::at
Aborted (core dumped)

when I use the node connection button (dot) and at the same time create the target node.

To Reproduce

  1. Create a new project
  2. Remove the AlwaysSuccess node.
  3. While dragging (with left click) the end of Root, use right click to create a new node.
  4. Pick any node from the pop up menu,
  5. BOOM

Expected behavior
The app should create the node of choice from the pop up menu and connect it to the one selected.

Screenshots and videos

groot2_crash-2023-08-01_14.35.25.mp4

Desktop (please complete the following information):

  • OS: KUbuntu 22.04 (kernel 5.19.0-50-generic)
  • Version 1.1.0

Additional context
Fresh installation from the installation script (not AppImage)

Groot2 Linux installer: GLIBCXX_3.4.30 not found

Describe the bug

I'm using the Groot2 Linux installer for Ubuntu 20.04. The installation ends correctly, but when starting groot2 I have issues with missing libc6 version.

In Ubuntu 20.04 the dpkg -L libc6 gives:

/lib/x86_64-linux-gnu/ld-2.31.so
...

I guess 2.43 is given with Ubuntu 22. Maybe you should add this lib inside your Groot2 lib folder?

I have no issue when using the Linux Appimage.

To Reproduce

Starting groot2.

groot2

groot2: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by groot2)
groot2: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by groot2)
groot2: /lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.13' not found (required by groot2)
groot2: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by groot2)
groot2: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by groot2)
groot2: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by groot2)
groot2: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /home/xxx/Groot2/bin/../lib/libdw.so.1)
groot2: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /home/xxx/Groot2/bin/../lib/libdw.so.1)
groot2: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /home/xxx/Groot2/bin/../lib/libunwind.so.8)
groot2: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /home/xxx/Groot2/bin/../lib/libunwind.so.8)
...

Desktop (please complete the following information):

  • OS: Linux
  • Version 20.04

Crash Triggered by Pasting Renamed Subtree into New Tree

To Reproduce

  1. Create a Subtree: Start by creating a new subtree.
  2. Integrate Subtree: Add the newly created subtree to another tree.
  3. Rename the Subtree: Change the name of the original subtree.
  4. Copy the Integrated Subtree: Go to the tree where you added the subtree (before renaming) and copy it.
  5. Paste into a New Tree: Paste the copied subtree into a different tree.
  6. Result: Groot2 crashes.

The bug arises due to the subtree's ID not being updated within the tree where it's utilized. Manually updating the ID serves as a temporary solution to this issue.

High cpu usage when XML editor is active [beta-4]

Describe the bug
High cpu usage when XML editor is active

To Reproduce
Open any XML file, for example tutorial_01_simple_tree, and see cpu usage increasing substantially. When tree is closed, cpu usage returns back to normal.

Screenshots and videos
Screenshot_20230202_123659

Desktop (please complete the following information):

  • OS: Arch Linux/Ubuntu 22.04
  • Groot 0.4.0 (beta-4, 2023-01-28) AppImage

Model Importer does not pass the step when encounters TWO Action tags with different IDs

Describe the bug
Model importer does ot pass the step of importing nodes that are defined with Action Tag and different IDs. It seems that it assumes the same BT node Action is visited again.

To Reproduce

Instead of having nodes like this:

<Sequence>
      <WaitForDigitalInput server_name="" digital_input_names="" states="{state}" connection_timeout_ms="200"/>
      <WaitForDigitalOutput  server_name="" digital_output_names="" states="{state}" connection_timeout_ms="200"/
</Sequence>

if the tree has nodes like the followings, the importer does not works properly:

<Sequence>
      <Action ID="WaitForDigitalInput" server_name="" digital_input_names="" states="{state}" connection_timeout_ms="200"/>
      <Action ID="WaitForDigitalOutput" server_name="" digital_output_names="" states="{state}" connection_timeout_ms="200"/>
</Sequence>

Expected behavior

importing the tree node model correctly

Screenshots and videos
image

Desktop (please complete the following information):

  • OS: Ubuntu
  • Version 20.04.4

Additional context

Indicate BT version a default node origins from

Is your feature request related to a problem? Please describe.
As far as I know the newest Groot2 shows nodes from the newest BTCPP. Using default nodes with an older BTCPP (eg. 4.0.1 like me), eg. RunOnce causes BTCPP to throw "node not found" error.

Describe the solution you'd like
Is it possible Groot2 to show only available default nodes? Or at least to show BTCPP version which they were created.

Inconsistent ordering of attributes in XML output

Is your feature request related to a problem? Please describe.
This is probably less a bug than a feature request: It seems currently the XML that Groot2 saves has very inconsistent ordering of attributes of XML tags. That means if you save XML with Groot2 and then after some edits save again it mixes up the order of attributes in otherwise unchanged elements. If you track your XML in a versioning system this generates much more than the necessary changes which is very annoying.

I didn't find a real pattern when and where it happens, so I can't give a minimal reproducing example. But with my projects it happens basically with every edit & save.

Describe the solution you'd like
Groot2 should not change XML that has not been modified. It could e.g. preserve the order in which the attributes have been added. Or I would also be okay if it just enforced an ordering in the XML output (e.g. alphabetically).

Can't launch Groot2 under ubuntu 22.04

Describe the bug
Qt6 function not found

To Reproduce
With : Groot2-v1.5.2-linux-installer.run

  • install the program
  • launch ~/Groot2/bin$ ./groot2

With : Groot2-v1.5.2-x86_64.AppImage

  • just launch the program

Expected behavior
have the Groot2 started

Screenshots and videos
image

Desktop (please complete the following information):

  • OS: Ubuntu
  • Version Ubuntu 22.04.4 LTS

Additional context
Qt6 installed :
image

Parameter order is ignored when opening/saving .xml files

Is your feature request related to a problem? Please describe.
When opening .xml files which contain nodes with multiple input parameters, Groot shows them in a different order (it seems in alphabetical, but I'm not sure).
In a same way, when saving mission files in Groot, the order of parameters in .xml file is changed.

Describe the solution you'd like
It would be good if Groot was able to keep the original order of input parameters. This would make it possible to put most commonly used parameters first, and add less used ones in the end of the list. Also, some parameters may be related to each other, so it make sense to keep them close to each other.

Pre- and post-conditions of sub-trees are shown as ports

Describe the bug
When I put in a script snippet in the pre- or post-conditions of a sub-tree, save and close the project, and then reopen it, the pre- and post-condition shows up as both a port and a pre-/post-condition.

To Reproduce

  1. I make a new project, add a second tree and add that to the first tree.
  2. Then I input a snippet into a pre- or post-condition.
  3. I save the project.
  4. Close it.
  5. Reopen the project.

This is the resulting XML file:

<?xml version="1.0" encoding="UTF-8"?>
<root BTCPP_format="4">
  <BehaviorTree ID="Main">
    <SubTree ID="MySub"
             _post="test:=true"
             _autoremap="false"/>
  </BehaviorTree>

  <BehaviorTree ID="MySub">
    <AlwaysSuccess/>
  </BehaviorTree>

  <!-- Description of Node Models (used by Groot) -->
  <TreeNodesModel/>

</root>

Expected behavior
I expected the _post part in the example above to not be shown in Groot2 as a port.

Screenshots and videos
behavior_tree

Desktop (please complete the following information):

  • OS: Ubuntu 20.04
  • Groot2 version 1.6.0

The application exits without a warning for unsaved changes.

Describe the bug
The application exits without a warning for unsaved changes.

To Reproduce

  • Open Groot 2
  • Create Empty File
  • Make some changes
  • Close the window

Expected behavior
If there are any changes apart from the default template, the application should warn the user before exiting unsaved changes.

Desktop (please complete the following information):

  • OS: Ubuntu
  • Version: 22.04
  • Arch: x86

Node Model Editor Window is Not Independent from Parent

If you open the Node Model Editor Window and attempt to move the Node Model Editor Window position, it will also move the main Groot2 window with it. This is sometimes annoying because you may want to move the Node Model Editor Window out of the way to look at something in the subtree you were previously looking at.

Code execution cannot proceed becuase LexActivator.dll was not found

Describe the bug
Groot2 fails on start with "The code execution cannot proceed because LexActivator.dll was not found. Reinstalling the program may fix this problem"

To Reproduce

Clean installation of Groot2 0.5.0

Expected behavior
Groot2 should start normally

Screenshots and videos
If applicable, add screenshots to help explain your problem.
Consider using a screen-recording application (for instance, https://www.screencapture.com/)

Desktop (please complete the following information):

  • OS: Windows 11
  • Version 22H2

Additional context
Add any other context about the problem here.

Show useful error message on invalid XML instead of crash

Is your feature request related to a problem? Please describe.
I came across this problem when I accidentally had an invalid name="..." attribute in some of the SubTree XML tags, e.g. like this:

<SubTree ID="MySubTree"
         name="MySubTree"
         some_remap="{some_remap}" />

According to the docs the SubTree tag does not take a name attribute, so this XML was invalid and name probably interpreted as a port.
While the behavior tree would run without any complaint, when trying to connect Groot2 monitoring then Groot2 just crashes without any meaningful message. It took me quite a while to find the cause of this.

When removing the name attributes the same tree can be monitored with Groot2.

Describe the solution you'd like
Instead of a cryptic crash it would be nice if an error message informed me that the XML is invalid, ideally point me roughly to the place where it is invalid.

Additional context
The stack trace of the crash is the following:

version: 1.5.1
Stack trace (most recent call last):
#0  | Source "/usr/include/c++/9/bits/std_function.h", line 300, in _M_invoke
    |   299:       {
    | > 300: 	(*_Base::_M_get_pointer(__functor))(
    |   301: 	    std::forward<_ArgTypes>(__args)...);
    | Source "/media/davide/DATA/ws_behavior/src/Groot2/src_gui/monitor/monitor_mode.cpp", line 500, in operator()
      Source "/home/davide/QtDev/6.5.2/gcc_64/include/QtCore/qstring.h", line 1552, in QString::fromStdString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) [0x56413fe9ffd6]
#1  | Source "/media/davide/DATA/ws_behavior/src/Groot2/src_gui/monitor/monitor_mode.cpp", line 507, in MonitorMode::addTreeItems(QString const&, QMap<QString, std::shared_ptr<groot::TreeInstance> > const&)
      Source "/usr/include/c++/9/bits/std_function.h", line 688, in std::function<void (QString)>::operator()(QString) const [0x56413ffaff14]
        687: 	__throw_bad_function_call();
      > 688:       return _M_invoker(_M_functor, std::forward<_ArgTypes>(__args)...);
        689:     }
#2    Source "/media/davide/DATA/ws_behavior/src/Groot2/src_gui/monitor/monitor_mode.cpp", line 429, in MonitorMode::loadZMQTree(QByteArray const&) [0x56413ffb3300]
#3  | Source "/home/davide/QtDev/6.5.2/gcc_64/include/QtCore/qobjectdefs_impl.h", line 409, in impl
    | Source "/home/davide/QtDev/6.5.2/gcc_64/include/QtCore/qobjectdefs_impl.h", line 241, in call<QtPrivate::List<>, void>
    | Source "/home/davide/QtDev/6.5.2/gcc_64/include/QtCore/qobjectdefs_impl.h", line 127, in call
      Source "/media/davide/DATA/ws_behavior/src/Groot2/src_gui/monitor/monitor_mode.cpp", line 147, in operator() [0x56413ffb367b]
#4    Object "/tmp/.mount_Groot2LPp30z/usr/bin/../lib/libQt6Core.so.6", at 0x7f6f71135f9b, in QObject::event(QEvent*)
#5    Object "/tmp/.mount_Groot2LPp30z/usr/bin/../lib/libQt6Widgets.so.6", at 0x7f6f723a2ff1, in QApplicationPrivate::notify_helper(QObject*, QEvent*)
#6    Object "/tmp/.mount_Groot2LPp30z/usr/bin/../lib/libQt6Core.so.6", at 0x7f6f710e69e9, in QCoreApplication::notifyInternal2(QObject*, QEvent*)
#7    Object "/tmp/.mount_Groot2LPp30z/usr/bin/../lib/libQt6Core.so.6", at 0x7f6f710e9c0c, in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*)
#8    Object "/tmp/.mount_Groot2LPp30z/usr/bin/../lib/libQt6Core.so.6", at 0x7f6f71391df2, in QEventDispatcherGlibPrivate::runTimersOnceWithNormalPriority()
#9    Object "/tmp/.mount_Groot2LPp30z/usr/bin/../lib/libglib-2.0.so.0", at 0x7f6f7063317c, in g_main_context_dispatch
#10   Object "/tmp/.mount_Groot2LPp30z/usr/bin/../lib/libglib-2.0.so.0", at 0x7f6f706333ff, in g_main_context_dispatch
#11   Object "/tmp/.mount_Groot2LPp30z/usr/bin/../lib/libglib-2.0.so.0", at 0x7f6f706334a2, in g_main_context_iteration
#12   Object "/tmp/.mount_Groot2LPp30z/usr/bin/../lib/libQt6Core.so.6", at 0x7f6f71391779, in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
#13   Object "/tmp/.mount_Groot2LPp30z/usr/bin/../lib/libQt6Core.so.6", at 0x7f6f710f22ea, in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)
#14   Object "/tmp/.mount_Groot2LPp30z/usr/bin/../lib/libQt6Core.so.6", at 0x7f6f710eeb1d, in QCoreApplication::exec()
#15   Source "/media/davide/DATA/ws_behavior/src/Groot2/src_gui/main.cpp", line 190, in main [0x56413feb06ed]
-----------------------------

'[main_tree_to_execute] was not specified correctly' error after opening and saving .xml

Describe the bug
When opening and saving .xml file which contains two behavior trees, the main_tree_to_execute declaration is deleted causing malformed xml file.

To Reproduce

Create .xml file with one main tree and one subtree, for example:

<root BTCPP_format="4" main_tree_to_execute="MainTree">

    <BehaviorTree ID="MainTree">
        <SubTree ID="Subtree"/>
    </BehaviorTree>

    <BehaviorTree ID="Subtree">
        <AlwaysSuccess/>
    </BehaviorTree>
    
</root>

Load it in Groot 2 and save again. Notice the main_tree_to_execute is removed:

<?xml version="1.0" encoding="UTF-8"?>
<root BTCPP_format="4">
  <BehaviorTree ID="MainTree">
    <SubTree ID="Subtree"/>
  </BehaviorTree>

  <BehaviorTree ID="Subtree">
    <AlwaysSuccess/>
  </BehaviorTree>

  <!-- Description of Node Models (used by Groot) -->
  <TreeNodesModel/>

</root>

Now when running this xml I see the following error:

terminate called after throwing an instance of 'BT::RuntimeError'
  what():  [main_tree_to_execute] was not specified correctly

Expected behavior
The main_tree_to_execute is preserved when opening and saving xml.

Breakpoint missing highlight and popup

Describe the bug
In Groot2 v1.5.2 monitor mode, when a breakpoint is reached it is no longer highlighted and missing the SUCCEED/FAIL/CONTINUE popup from previous versions.

To Reproduce

  • Create and run a tree with groot monitoring enabled
  • Connect to running tree
  • Add a breakpoint that is reached by logical flow

Expected behavior
Expect breakpoints to have the red highlight and popup, like in older versions of Groot2.

Screenshots and videos

breakpoint_missing_popup.mp4

Desktop (please complete the following information):

  • OS: Ubuntu
  • Version: Focal

Additional context
Running PRO version

Improve process of adding new nodes to the tree

Is your feature request related to a problem? Please describe.
Groot 1 had a convenient method of quickly adding new nodes from the context menu, where you just start typing the name and insert the node with a single click.

Peek.2023-02-09.12-16.webm

Describe the solution you'd like
I have 2 suggestions how to improve searching and placing in Groot 2:

  • add search menu, which can be accessed either by context menu like before, or launched by some keyboard shortcut.
  • make all categories in 'Models' view to be expanded by default, so we don't have to manually unfold each category when searching nodes for the first time.

UI improvement proposal

Following our discussion, I list here the UI improvements we discussed. This is a backlog for possible future improvements.

Editor UI

  • Be able to move/reorganize tabs by click and move
  • On Ubuntu 20/Plasma 5 , the filepicker used is not the same between Groot2 and Groot (1). I prefer the one used in Groot.
  • Autocompletion in ports based on existing ports value

Log mode transitions table - increase filtering capability

Is your feature request related to a problem? Please describe.
It is hard to read the transitions table in log mode if a tree has reactive sequences - the transitions are filled by the continual IDLE->SUCCESS->IDLE->SUCCESS of the conditional child nodes. You have to sift through this noise to find the node transitions of interest.

Describe the solution you'd like
Some things that would improve the readability of the transitions table:

  • filtering OUT based on node name (eg !Node1)
  • filtering IN multiple node names (eg Node2 && Node3)

This achieves a very similar result to what was requested here (BehaviorTree/BehaviorTree.CPP#559), and would be a great draw card for Groot2 Pro.

Describe alternatives you've considered
The 'Hide transition to IDLE' option does cut this down a lot. However, if you have a reactive sequence with 2 conditions and 1 action as children, the transitions panel is 2/3rds noise and only 1/3rd helpful information.

Additional context
Groot2 v1.0.1

Box sometimes do not contain the whole last field when importing from older Groot

Describe the bug
When I opened, the project I was working on about March/April this year with older release of Groot last section of boxes were outside of the scope of the general box. It is hard for me to explain, that is why I am attaching a screenshot. When I clicked to rearrange the tree to be horizontal, and then again vertical, everything was fine. The problem did not appear in previous Groot in the times of old color scheme.

Anyway, this is a minor issue. Just mentioning that is appeared in my case.

To Reproduce
Here are links to the project that showed this issue. Simply opening it should suffice:

Expected behavior
The last section of the given box is contained within it.

Screenshots and videos
Screenshot from 2023-07-13 12-25-35

Desktop (please complete the following information):

  • Ubuntu 20.04, Groot 2 v1.0.1, AppImage
  • Ubuntu 22.04 (seems to work fine)

Minor UI icon bug

Describe the bug
When I double click a node model the "OK" button has a wrong icon in my opinion:

Screenshot from 2024-01-30 11-32-25

Groot2 v1.5.1

Crash Triggered by Renaming Subtree with Port Mappings

I am sorry to report again but after the release I still have the same bug.

  1. Create a Subtree: Begin by crafting a new subtree.
  2. Integrate Subtree: Incorporate the newly created subtree into another tree.
  3. Add Port Remapping: Apply a port remapping to the created subtree.
  4. Rename the Subtree: Modify the original subtree's name.
  5. Result: Groot2 crashes upon renaming.
groot.2023-09-12.135751.mp4

Dark theme

Is your feature request related to a problem? Please describe.
image
image
On a dark desktop theme, some text are difficult to read

Describe the solution you'd like
A dark theme

Additional context
OS : Ubuntu 20
Desktop : Plasma 5
Theme : Yaru Dark

Identify order of child nodes

Is your feature request related to a problem? Please describe.
In many nodes like Sequence or WhileDoElse the order of child nodes is important because it relates to order of execution or function.
In the editor if the nodes are re-arranged the order/function of each one is lost and there is no evident way of telling which is which.

Describe the solution you'd like
Numbers could be associated and displayed next to each edge connecting to the child node. This way it is always evident which node is which.

Describe alternatives you've considered

Additional context

The list of SubTrees is not updated after adding new include from UI

Describe the bug
When adding new include from UI using "Browse for include" button, the subtrees from included xml are not loaded, even after saving and reloading file using "Reload" option in context menu.

To Reproduce
Add new include using "Browse for include" button. Subtrees from included file are not showing in Trees and Models view. Save, close and reopen main tree. Now the list of subtrees is updated.

Expected behavior
List of SubTrees is updated after adding new include from UI

Desktop (please complete the following information):

  • OS: Arch Linux
  • Version: Groot 0.4.0

Highlight the port selected with the same name in all nodes

Is your feature request related to a problem? Please describe.
No

Describe the solution you'd like
When editing in Groot1, if a remapped port name is selected (by double clicking mouse), all other nodes' ports with the same remapped name will be highlighted. I really like this feature since it quickly shows nodes that use the same port. It is really convenient. However in Groot2, no highlight shows. It'd be great if we can re-have this feature.

Windows installer points to wrong version.

Describe the bug
The windows installer appears to still target 0.6.4 instead of 1.2.0 on the website.

To Reproduce

  1. Download windows installer from here https://www.behaviortree.dev/groot/
  2. Install
  3. Open Groot2 to see the pop up shown below.

Expected behavior
Installer installs version shown on webpage.

Screenshots and videos
image

Desktop (please complete the following information):

  • OS: Windows 10
  • Version 1.2.0

Additional context

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.