Add runid#5553
Conversation
|
@adivardi could you give this a review? I just wondered if I comprehend the idea correctly. |
|
Thank you. |
|
@silanus23 any update? |
|
@SteveMacenski Sorry for late update. I couldn't give attention in here and other PRs. I am handling my hiring test case. Deadline is tomorrow. After that I beleive I can give others with this an answer in a week. |
|
@adivardi can you review / close any resolved comments from your review? |
| #include <string> | ||
| #include <vector> | ||
|
|
||
| #include <boost/uuid/uuid.hpp> |
There was a problem hiding this comment.
We need to link this / package.xml the dependency? Please only include just the boost libraries required (not all)
|
|
||
| // To keep track of the execution number | ||
| boost::uuids::random_generator uuid_generator_; | ||
| std::string run_id_; |
There was a problem hiding this comment.
Maybe current_run_id_ to be clear?
| "wait_for_service_timeout", | ||
| wait_for_service_timeout_); | ||
|
|
||
| run_id_ = boost::uuids::to_string(uuid_generator_()); |
There was a problem hiding this comment.
Do we ever actually use run_id_? If not, then we don't need to store this as a member.
| if (getInput("server_name", remapped_action_name)) { | ||
| action_name_ = remapped_action_name; | ||
| } | ||
| getInput("is_global", is_global_); |
There was a problem hiding this comment.
Question: should this be applied to non-action nodes or only the action nodes?
There was a problem hiding this comment.
Also, I think this is also missing the other nodes that have the initialization procedure within their implementations themselves (not just the action server base node). I think that's a key part of the ticket #5036 but I can understand just starting in one spot to get it right before doing all the others!
| BT::InputPort<std::string>("server_name", "Action server name"), | ||
| BT::InputPort<std::chrono::milliseconds>("server_timeout") | ||
| BT::InputPort<std::chrono::milliseconds>("server_timeout"), | ||
| BT::InputPort<bool>("is_global", false, "Use RunID for initialization") |
There was a problem hiding this comment.
The configuration guide would need to be updated to mention this.
Question: does this make more sense as a BT XML parameter for each and every node, or as a ROS configuration parameter applied to every node automatically from a yaml file? Is there a situation we'd want some nodes to do this and not others?
| // first step to be done only at the beginning of the Action | ||
| if (!BT::isStatusActive(status())) { | ||
| if (is_global_) { | ||
| std::string current_run_id = config().blackboard->get<std::string>("run_id"); |
There was a problem hiding this comment.
We should throw an exception if the run_id is not set but is_global_. That's an invalid situation.
|
Any updates here? This would be good to get in before the lyrical sync. If this is not going to be picked up again, letting me know would be awesome :-) |
|
This pull request is in conflict. Could you fix it @silanus23? |
|
Currently I think I have added most of them. I will carry on batch by batch. Edit: When I start to write others I have realized that goal updated and battery nodes in current commit could need a fix please let me+ I have made |
|
@SteveMacenski are these correct nodes? I have gone over the list and some of them might not need so I applied only to these nodes. |
|
@SteveMacenski Don't want to ping you but can you give this a look please? How should I resolve conflict? Should I drop this runid on those nodes? |
Signed-off-by: silanus23 <berkantali23@outlook.com>
Signed-off-by: silanus23 <berkantali23@outlook.com>
Signed-off-by: silanus23 <berkantali23@outlook.com>
Signed-off-by: silanus23 <berkantali23@outlook.com>
…des and their tests Signed-off-by: silanus23 <berkantali23@outlook.com>
…goal_updated and single_trigger node updated. Signed-off-by: silanus23 <berkantali23@outlook.com>
Signed-off-by: silanus23 <berkantali23@outlook.com>
|
Later looking back at conflicting PRs I have seen they are only commenting PRs, I thought that it was something that can deprecate ruin-id at first. So I have handled conflict. That's on me for being too presumptuous :/. I will try to send videos where changes log so review process will be easier. Edit: I later realized typos I will solve them |
Signed-off-by: silanus23 <berkantali23@outlook.com>
Signed-off-by: silanus23 <berkantali23@outlook.com>
|
https://drive.google.com/drive/folders/1_9RymXihTLZuSZ7DOTpwUuDvpsBrIR5c https://drive.google.com/drive/folders/1_9RymXihTLZuSZ7DOTpwUuDvpsBrIR5c I didn't add these nodes battery nodes + is_stopped: live conditions, independent from run Transfrom available condition: This is latch based so runid would ruin this. I guess these are only ones in that list. I will implement on remaining controller decorators too. |
Signed-off-by: silanus23 <berkantali23@outlook.com>
Signed-off-by: silanus23 <berkantali23@outlook.com>
Signed-off-by: silanus23 <berkantali23@outlook.com>
Signed-off-by: silanus23 <berkantali23@outlook.com>
Signed-off-by: silanus23 <berkantali23@outlook.com>
Signed-off-by: silanus23 <berkantali23@outlook.com>
Signed-off-by: silanus23 <berkantali23@outlook.com>
|
OK I have now added controller nodes. I was not sure about the logic of time expired, distance traversed likes. I moved as said in the header. It says it reinits with halts so I reinited them with new runid. I have added initialize to some of those node. I really wonder what you think about nodes I didn't add. They are diffirent than others even they are asynchronus. I am not sure about goal updated condition too. About should this be 1 yaml param or unique xml port question: While implementing I have seen runid is effecting some of them in really diff aspects I would use xml port but that's a guess I am not sure if I can come up with a scenario. Lastly I have tried every node I implemented with log system like I have sent videos above. They all work and robot moves. |
|
Hey before going offline I reviewed code again. I had seen some problems. I will try to push these changes tomorrow. |
Signed-off-by: silanus23 <berkantali23@outlook.com>
Signed-off-by: silanus23 <berkantali23@outlook.com>
Signed-off-by: silanus23 <berkantali23@outlook.com>
Signed-off-by: silanus23 <berkantali23@outlook.com>
|
dropped goal updated cause a new run already comes with a new goal, so it already returns SUCCESS on its own runid wouldn't add anything, just suppress it. not 100% sure, can add it back if wanted. switched to bt error system as said in the prev msg I now take is global from bt input port so I wrote them to nav2_tree_nodes.xml. |
Basic Info
Description of contribution in a few bullet points
I tried to implement the idea at #5036
I added run_id to the blackboard and it's symetrycal to action node template. So that everytime blackboard ticks nodes one can keep track of nodes init time. This is an insurance for synchronization in the background. Made this activated with a parameter so that it won't interfere with current implementations and break them too.
Description of documentation updates required from your changes
Action nodes now have the parameter
is_globalfor this feature.Description of how this change was tested
I have tested this locally with debug lines it was showing so integration tested too. Besides I wrote backward compatibility tests too.
Future work that may be required in bullet points
In future adding current behavior trees
is_global = truefor every nodeAs the final making this a default.
For Maintainers:
backport-*.