You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We can use it without specifying StartLocation since this parameter can be automatically set by autoparameterization. However, this sets the StartLocation parameter on the blackboard.
Now if the robot is currently at Location0 and we use the drive skill twice in a row:
# Robot location in world model: {Location0}# StartLocation parameter on blackboard: {}self.skill("Drive", "", remap={"TargetLocation: "Location1"}),
# Robot location in world model: {Location1}# StartLocation parameter on blackboard: {Location0}self.skill("Drive", "", remap={"TargetLocation: "Location2"}),
the second execution would fail with a precondition error. This is because the first execution of Drive sets the blacboard parameter StartLocation to Location0. The robot would then move and the world model would be updated so that the robot is at Location1. Now the second Drive skill is started,but because the StartLocation parameter is already set on the blackboard, the autoparameterization does not run again. Unfortunately StartLocation contains the location value, so if this precondition is checked against the world model, it would fail.
A workaround is to "unset` the blackboard parameter with a special skill, but that is not very intuitive and makes BTs larger than necessary.
Some smart handling of this is needed. Maybe detect if a parameter is mapped implicitly, autoparameterization should run instead of taking the blackboard parameter.
The text was updated successfully, but these errors were encountered:
[This is copy of https://github.com/matthias-mayr/skiros2_pyrobosim_lib/issues/2]
Let's assume we have the
Drive
skill from the examplesWe can use it without specifying
StartLocation
since this parameter can be automatically set by autoparameterization. However, this sets theStartLocation
parameter on the blackboard.Now if the robot is currently at
Location0
and we use the drive skill twice in a row:the second execution would fail with a precondition error. This is because the first execution of
Drive
sets the blacboard parameterStartLocation
toLocation0
. The robot would then move and the world model would be updated so that the robot is atLocation1
. Now the secondDrive
skill is started,but because theStartLocation
parameter is already set on the blackboard, the autoparameterization does not run again. UnfortunatelyStartLocation
contains the location value, so if this precondition is checked against the world model, it would fail.A workaround is to "unset` the blackboard parameter with a special skill, but that is not very intuitive and makes BTs larger than necessary.
Some smart handling of this is needed. Maybe detect if a parameter is mapped implicitly, autoparameterization should run instead of taking the blackboard parameter.
The text was updated successfully, but these errors were encountered: