-
Notifications
You must be signed in to change notification settings - Fork 711
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bug fix/set blackboard #955
base: master
Are you sure you want to change the base?
Conversation
Previous SetBlackboard action node did not update the sequence id, the timestamp when called on a pre-existing entry. Moreover, it allowed to bypass type checking.
Btw... By investigating on this bug, I realized that how the Blackboard::set itself is handled is pretty weird wrt port remappings. Take this tree for instance....
It's completely useless... I grant you that, but it should work... Some key points to understand it:
The first iteration runs without any issue, but on the second I would have a Any::copyInto failure due to the fact that the UpdatePosition is trying to push there through the SetOutput call an object of type Position2D, but encounters a string.... Please note that this error is not due whatsover to my modifications proposed in the PR and it's not resolved by them either... Maybe we shall rethink a little bit how the current port remapping and type checking work (for instance... the type check when there is an autoremap to resolve is not as flexible as when there is not: in the latter case string conversion or math acceptable casts are accepted, while in the former not....) I hope the explanation is sufficiently clear.. @facontidavide what do you think about it ? |
Made sure to handle possible type inconsistencies which might arise when using port remapping with subtrees.
SetBlackboard action bug fix
Previous SetBlackboard action node did not update the sequence id, the timestamp when called on a pre-existing entry.
Moreover, it allowed to bypass type checking.
This occurred only when the input was a blackboard pointer.
By using the BT::Blackboard::set method I believe also is thread safe which before was not, but I provided test that were failing previously and now are passing exclusively for the two cases above