- [blackboard] drop
SubBlackboard
, it has problems, #249
- [blackboard] client
Blackboard.unregister_key()
method
- [blackboard] global
Blackboard.clear()
method
- [blackboard] don't do any copying, just pass handles around, #239
- [blackboard] client
exists()
method, #238 - [blackboard] global
Blackboard.set()
method - [blackboard] client
Blackboard.unset()
method, #239
Breaking API
- [decorators] updated
EternalGuard
to accommodate new blackboard variable tracking mechanisms - [behaviours] blackboard behaviours decoupled -
CheckBlackboardVariableExists
,WaitForBlackboardVariable
- [behaviours] blackboard behaviours decoupled -
CheckBlackboardVariableValue
,WaitForBlackboardVariableValue
- [behaviours] blackboard behaviours dropped use of the largely redundant
ClearingPolicy
- [visitors] collapsed
SnapshotVisitor
andWindsOfChangeVisitor
functionality, #228
New Features
- [blackboard] read/write access configuration for clients on blackboard keys
- [blackboard] log the activity on the blackboard
- [display] dot graphs now have an option to display blackboard variables
- [display] unicode to console the entire blackboard key-value store
- [display] unicode to console the blackboard activity stream
- [visitors] new
DisplaySnapshotVisitor
to simplify collection/printing the tree to console, #228
Bugfixes
- [infra] only require test html reports on circle ci builds (saves a dependency requirement), #229
- [trees] standalone
setup()
method with timer for use on unmanaged trees, #198 - [examples] fix api in
skeleton_tree.py
, #199
- [decorators]
StatusToBlackboard
reflects the status of it's child to the blackboard, #195 - [decorators]
EternalGuard
decorator that continuously guards a subtree (c.f. Unreal conditions), #195 - [idioms]
eternal_guard
counterpart to the decorator whose conditions are behaviours, #195
Breaking API
- [trees] removes the curious looking and unused
destroy()
method, #193 - [display]
ascii_tree
->ascii_tree
/unicode_tree()
, no longer subverts the choice depending on your stdout, #192 - [display]
dot_graph
->dot_tree
for consistency with the text tree methods, #192
New Features
- [behaviour]
shutdown()
method to complimentsetup()
, #193 - [decorators]
StatusToBlackboard
reflects the status of it's child to the blackboard, #195 - [decorators]
EternalGuard
decorator that continuously guards a subtree (c.f. Unreal conditions), #195 - [display]
xhtml_tree
provides an xhtml compatible equivalent to theascii_tree
representation, #192 - [idioms]
eternal_guard
counterpart to the decorator whose conditions are behaviours, #195 - [trees] walks the tree calling
shutdown()
on each node in it's ownshutdown()
method, #193 - [visitors] get a
finalise()
method called immediately prior to post tick handlers, #191
Breaking API
- [display] print_ascii_tree -> ascii_tree, #178.
- [display] generate_pydot_graph -> dot_graph, #178.
- [trees] tick_tock(sleep_ms, ..) -> tick_tock(period_ms, ...), #182.
New Features
- [trees] add missing
add_visitor()
method - [trees] flexible
setup()
for children via kwargs - [trees] convenience method for ascii tree debugging
- [display] highlight the tip in ascii tree snapshots
Bugfixes
- [trees] threaded timers for setup (avoids multiprocessing problems)
- [behaviour|composites] bugfix tip behaviour, add tests
- [display] correct first indent when non-zero in ascii_tree
- [display] apply same formatting to root as children in ascii_tree
- [display] optional arguments for generate_pydot_graph
- [decorators] fix missing root feedback message in ascii graphs
- [decorators] fix timeout bug that doesn't respect a child's last tick
- [display] drop spline curves, it's buggy with graphviz 2.38
- [visitors] winds of change visitor and logging demo
- [console] fallbacks for unicode chars when (UTF-8) encoding cannot support them
- [trees] don't use multiprocess on setup if not using timeouts
Breaking API
- [behaviour] setup() no longer returns a boolean, catch exceptions instead, #143.
- [behaviour] setup() no longer takes timeouts, responsibility moved to BehaviourTree, #148.
- [decorators] new-style decorators found in py_trees.decorators
- [decorators] new-style decorators stop their running child on completion (SUCCESS||FAILURE)
- [decorators] old-style decorators in py_trees.meta deprecated
New Features
- [blackboard] added a method for clearing the entire blackboard (useful for tests)
- [composites] raise TypeError when children's setup methods don't return a bool (common mistake)
- [composites] new parallel policies, SuccessOnAll, SuccessOnSelected
- [decorators] oneshot policies for activating on completion or successful completion only
- [meta] behaviours from functions can now automagically generate names
Breaking API
- Lower level namespace types no longer exist (PR117), e.g.
py_trees.Status
->py_trees.common.Status
- Python2 support dropped
New Features
- [idioms] 'Pick Up Where You Left Off'
- [idioms] 'OneShot'
- [infra] shortcuts to types in __init__.py removed (PR117)
- [bugfix] python3 rosdeps
- [idioms] pick_up_where_you_left_off added
- [idioms] oneshot added
- [bugfix] properly set/reset parents when replacing/removing children in composites
- [announce] python3 only support from this point forward
- [announce] now compatible for ros2 projects
- [bugfix] pick up missing feedback messages in inverters
- [bugfix] eliminate costly/spammy blackboard variable check feedback message
- [bugfix] replace awkward newlines with spaces in ascii trees
- [bugfix] don't send the parellel's status to running children, invalidate them instead
- [bugfix] oneshot now reacts to priority interrupts correctly
- [bugfix] oneshot no longer permanently modifies the original class
- [infra] python 2/3 compatibility
- [meta] add children monkeypatching for composite imposters
- [blackboard] check for nested variables in WaitForBlackboard
- [docs] bugfix image links and rewrite the motivation
- [infra] setup.py tests_require, not test_require
- [infra] update maintainer email
- [docs] many minor doc updates
- [meta] bugfix so that imposter now ticks over composite children
- [trees] method for getting the tip of the tree
- [programs] py-trees-render program added
- [infra] handle pypi/catkin conflicts with install_requires
- [docs] disable colour when building
- [docs] sidebar headings
- [docs] dont require project installation
- [infra] pypi package enabled
- [ros] components moved to py_trees_ros
- [timeout] bugfix to ensure timeout decorator initialises properly
- [docs] rolled over with napolean style
- [docs] sphinx documentation updated
- [imposter] make sure tip() drills down into composites
- [demos] re-organised into modules
- [trees] add pre/post handlers after setup, just in case setup fails
- [introspection] do parent lookups so you can crawl back up a tree
- [blackboard] permit init of subscriber2blackboard behaviours
- [blackboard] watchers
- [timers] better feedback messages
- [imposter] ensure stop() directly calls the composited behaviour
failure_is_running decorator
(meta).
- do terminate properly amongst relevant classes
- blackboxes
- chooser variant of selectors
- bugfix the decorators
- blackboard updates on change only
- improved dot graph creation
- many bugfixes to composites
- subscriber behaviours
- timer behaviours
- one shot sequences
- abort() renamed more appropriately to stop()
- lots of bugfixing stabilising py_trees for the spain field test
- complement decorator for behaviours
- dot tree views
- ascii tree and tick views
- use generators and visitors to more efficiently walk/introspect trees
- a first implementation of behaviour trees in python