Skip to content

Releases: BehaviorTree/BehaviorTree.CPP

4.3.8: Bug fixes and Reactive nodes

09 Oct 12:27

Choose a tag to compare

  • fixed a potential busy look caused by WakeUpSignal
  • Added tutorial 13 (how to build your own plugins)
  • The scripting language can now accept (and ignore) newlines.

Important

Both ReactiveSequence and ReactiveFallback were updated to better resemble each other and, partially, the logic they add in version 3.8.

Report any issue you may have.

4.3.7: Fixing generic port type matching

12 Sep 16:56

Choose a tag to compare

This is the most improtant change in this release: 57a2663

Related to this issue: #653

Previously, ports created by SetBlackboard would be recognized as strings instead of being considered "typeless" (as they should).

4.3.6: Changes in Tutorial 12 and ReactiveFallback

31 Aug 13:34

Choose a tag to compare

  • Tutorial 12 was improved to make it easier to register custom type in the "blackboard visualized" of Groot2.

  • ReactiveFallback was fixed

  • Pre conditions script will be invoked less often now (i.e., only when really required)

4.3.5: Bug fixes, mostly

14 Aug 09:39

Choose a tag to compare

  • fix issue #621: ConsumeQueue
  • add template specialization for convertFromString deque (#628)
  • Update groot2_publisher.h (#630)
  • unit test issue #629
  • WhileDoElseNode can have 2 or 3 children (#625)
  • fix issue #624 : add TimeoutNode::halt()
  • fix recording_fist_time issue on windows (#618)

4.3.4: Bug fixes and Node description

25 Jul 09:31

Choose a tag to compare

Hi,

this release fix few bugs.

  • Fix error #617 in TestNode
  • minitrace updated
  • fix issue #615 : don't execute preconditions if state is RUNNING
  • fix issue #605: strip whitespaces and better error message
  • Export cxx-standard with target. (#604)
  • feature #603: add static method [std::string description()] to manifest
  • fix issue with move semantic

The most noteworthy addition is described here: #603

It is now possible to add a description of your node into the manifest of that node. That description will be exported in the section <TreeNodesModel> of your XML.

4.3.3: Fix onHalted and added Groot2 recording

05 Jul 05:05

Choose a tag to compare

Record logs from Groot2

A new functionality introduced in Groot2 (1.0.0) is the ability to record a log in the Monitor mode.
To allow this functionality, version 4.3.3 of BehaviorTree.CPP must be used.

Important bug fix in post conditions

#601 : onHalted was not invoked correctly by some ControlNodes.

4.3.2: More nodes and better error messages

28 Jun 19:16

Choose a tag to compare

Changes since version 4.3.1

  • Added ParallelAll node
  • Much better error messages when there is an error in the scripting language
  • Fix issues preventing Parallel (and probably other nodes) from using correctly _skipIf

4.3 Bug fixes and a ton of refactoring

13 Jun 13:38

Choose a tag to compare

Important

This release is not ABI compatible with the previous one! Please recompile all your plugins, when updating.

Bug fix: Subtree "_autoremap"

This is related to #563 .
I realized that Subtree::_autoremap in V4.x was not an exact drop-in replacement of Subtree::__shared_blackboard in V3.X.

The main problem was that port remapping may not work properly if there is a subtree of a subtree (see this unit test).

To solve this problem, the implementation of the Blackboard and port remapping had to change considerably.

A nice side effect is that not TreeNode::getInput and TreeNode::setOutput is now actually more efficient.

Bug fix: default value for custom types

This solves #580. Note that it also required some radical changes in the Blackboard.

The user facing API did not change, but the internal one did; therefore, those users which use directly the Blackboard (something that is discouraged), might be affected.

Refactoring: Pimpl

To prevent more ABI compatibility issues in the future, we started using the PImpl idiom in multiple classes (TreeNode and BehaviorTreeFactory in particular).

New logger: FileLogger2

This is a replacement of the old FileLogger using Flatbuffers. This version will generate smaller logs and is compatible with the latest version of Groot2 (to be released soon).

4.2 : Important change in Sequence and Fallback!

23 May 10:40

Choose a tag to compare

Breaking change

Since version 4.0, the behavior of Sequence and Fallback was changes, compared to 3.x.

The new implementation would return RUNNING after executing a Synchronous child.

This new behavior was reverted in 4.2.
Now the default behavior is the same as 3.8.

If you want to use the new behavior, you should switch to AsyncSequence and AsyncFallback.

Thread-safe access to ports with reference semantic

It is not uncommon to store objects with reference semantic (for instance std::shared_ptr<T>) in the blackboard.

Unfortunately, this makes it impossible for the setter and getter of the Blackboard to make the access to the object T thread-safe.

We propose a solution to this problem that uses:

  • Blackboard::getAnyLocked
  • TreeNode::getLockedPortContent

These new interfaces return an object called AnyPtrLocked.

This contains the pointer to the object Any, but will also keep the a mutex locked as long as the object exist.

To see a practical example, check LoopNode and the example 4 (ex4_waypoints).

Other changes

  • New FileLogger2, replacing the old (and deprecated) one.
  • RunOnce node added.
  • Tree::getNodesByPath added.

4.1.1: bug fixes and SQLIte logger

30 Mar 09:39

Choose a tag to compare

I must admit that 4.1.0 was kind of a misfire.

Some important bugs were fixed since that release, and you should probably NOT use it.

Notable changes

  • ManualNode and dependency to ncurses . I am assuming that nobody uses that node. If you do... I am sorry? NCurses is a dependency I don't want to have.

  • New logger based on SQLite, that will allow users to log multiple runs in the same database. It is meant to be used with Groot2

  • Now substitution rules can be loaded from JSON at runtime (see tutorial 11)

  • Fixed issue #530

  • some header files (3rd party dependencies) moved from folder util to contrib