Release Notes¶
Forthcoming¶
- …
1.4.x (2019-11-07)¶
Breaking API
- [blackboard] fixed read/write ambiguity, now use
py_trees.common.Access
, #250
# Previously
self.blackboard.register_key(key="foo", write=True)
# Now
self.blackboard.register_key(key="foo", access=py_trees.common.Access.WRITE)
- [blackboard] drop
SubBlackboard
, it has problems, #249
New Features
- [blackboard] namespaced blackboard clients, #250
# Previously, a single blackboard client exists per behaviour
# Now, no blackboard client on construction, instead attach on demand:
self.blackboard = self.attach_blackboard_client(name="Foo")
self.parameters = self.attach_blackboard_client(
name="FooParams",
namespace="parameters_foo_"
)
self.state = self.attach_blackboard_client(
name="FooState",
namespace="state_foo_"
)
# create a local key 'speed' that maps to 'state_foo_speed' on the blackboard
self.state.register_key(key="speed", access=py_trees.common.Access.WRITE)
self.state.speed = 30.0
- [blackboard] required keys and batch verification method, #254
self.blackboard = self.attach_blackboard_client(name="Foo")
self.blackboard.register_key(name="foo", access=py_trees.common.Access.READ, required=True)
# ...
self.verify_required_keys_exist() # KeyError if any required keys do not yet exist on the blackboard
- [visitors]
SnapshotVisitor
tracking blackboards on the visited path, #250
# Previously tangled in DisplaySnapshotVisitor:
display_snapshot_visitor.visited.keys() # blackboard client uuid's (also behaviour uuid's), typing.Set[uuid.UUID]
display_snapshot_visitor.visited_keys # blackboard keys, typing.Set[str]
# Now in SnapshotVisitor:
snapshot_visitor.visited_blackboard_client_ids # typing.Set[uuid.UUID]
snapshot_visitor.visited_blackboard_keys # typing.Set[str]
1.3.3 (2019-10-15)¶
- [blackboard] client
Blackboard.unregister_key()
method
1.3.2 (2019-10-15)¶
- [blackboard] global
Blackboard.clear()
method
1.3.1 (2019-10-15)¶
1.3.x (2019-10-03)¶
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
1.2.2 (2019-08-06)¶
1.2.1 (2019-05-21)¶
1.2.x (2019-04-28)¶
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
1.1.0 (2019-03-19)¶
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
1.0.7 (2019-xx-yy)¶
- [display] optional arguments for generate_pydot_graph
1.0.6 (2019-03-06)¶
- [decorators] fix missing root feedback message in ascii graphs
1.0.5 (2019-02-28)¶
- [decorators] fix timeout bug that doesn’t respect a child’s last tick
1.0.4 (2019-02-26)¶
- [display] drop spline curves, it’s buggy with graphviz 2.38
1.0.3 (2019-02-13)¶
- [visitors] winds of change visitor and logging demo
1.0.2 (2019-02-13)¶
- [console] fallbacks for unicode chars when (UTF-8) encoding cannot support them
1.0.1 (2018-02-12)¶
- [trees] don’t use multiprocess on setup if not using timeouts
1.0.0 (2019-01-18)¶
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
0.8.x (2018-10-18)¶
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’
0.8.0 (2018-10-18)¶
- [infra] shortcuts to types in __init__.py removed (PR117)
- [bugfix] python3 rosdeps
- [idioms] pick_up_where_you_left_off added
0.7.5 (2018-10-10)¶
- [idioms] oneshot added
- [bugfix] properly set/reset parents when replacing/removing children in composites
0.7.0 (2018-09-27)¶
- [announce] python3 only support from this point forward
- [announce] now compatible for ros2 projects
0.6.5 (2018-09-19)¶
- [bugfix] pick up missing feedback messages in inverters
- [bugfix] eliminate costly/spammy blackboard variable check feedback message
0.6.4 (2018-09-19)¶
- [bugfix] replace awkward newlines with spaces in ascii trees
0.6.3 (2018-09-04)¶
- [bugfix] don’t send the parellel’s status to running children, invalidate them instead
0.6.2 (2018-08-31)¶
- [bugfix] oneshot now reacts to priority interrupts correctly
0.6.1 (2018-08-20)¶
- [bugfix] oneshot no longer permanently modifies the original class
0.6.0 (2018-05-15)¶
- [infra] python 2/3 compatibility
0.5.10 (2017-06-17)¶
- [meta] add children monkeypatching for composite imposters
- [blackboard] check for nested variables in WaitForBlackboard
0.5.9 (2017-03-25)¶
- [docs] bugfix image links and rewrite the motivation
0.5.8 (2017-03-19)¶
- [infra] setup.py tests_require, not test_require
0.5.7 (2017-03-01)¶
- [infra] update maintainer email
0.5.5 (2017-03-01)¶
- [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
0.5.4 (2017-02-22)¶
- [infra] handle pypi/catkin conflicts with install_requires
0.5.2 (2017-02-22)¶
- [docs] disable colour when building
- [docs] sidebar headings
- [docs] dont require project installation
0.5.1 (2017-02-21)¶
- [infra] pypi package enabled
0.5.0 (2017-02-21)¶
- [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
0.4.0 (2017-01-13)¶
- [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
0.3.0 (2016-08-25)¶
failure_is_running decorator
(meta).
0.2.0 (2016-06-01)¶
- 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
0.1.2 (2015-11-16)¶
- one shot sequences
- abort() renamed more appropriately to stop()
0.1.1 (2015-10-10)¶
- 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