-
Notifications
You must be signed in to change notification settings - Fork 50
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
feat: add autoware_control_center #191
Conversation
Thank you for contributing to the Autoware project! 🚧 If your pull request is in progress, switch it to draft mode. Please ensure:
|
8f9910d
to
8a572b4
Compare
8a572b4
to
0fe4655
Compare
Signed-off-by: Mete Fatih Cırıt <mfc@autoware.org>
0fe4655
to
6ee5a37
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Before implementing, a PR should be created for message definitions only. Otherwise, the implementation may end up being wasted.
Additionally, autoware_core
is not a suitable place for message definitions. If they are exposed externally, they should be in autoware_msgs
, and if used internally only, they should be in autoware_internal_msgs
.
Since this is in development stage and this is not used by anything yet, and won't be used anytime soon, let's keep it here. And once we solidify the implementation of autoware control center, then we can move it to autoware internal messages. |
Autoware Core is designed as a place to store only the minimal necessary functions and packages. Therefore, we don’t want it to be a place where unused features are added for the time being. |
@youtalk -san, I could develop this in a completely isolated repository too. But one way or another, it will be merged to Core. The reason it's being added here this way is to allow you to review it feature by feature. Even in Core, we should allow for (and aim for) iterative development. I don't understand why you don't review it at its current stage. I had also previously made it all in a single PR too, then you said to split the PRs feature by feature. Now I'm doing it to make it easier for the reviewers to understand. What if this was a readily available external package? What if this was an existing Universe package? We take them in without much questions or understanding how they work into the Core. No questions asked. But for this package, I am ready here to explain and include you as part of the development process. But you are making this very difficult for me and I'm seriously losing my motivation to develop this package. |
I think we just need to agree on the plans about migration to use this Autoware Node and Autoware Control Center node. @xmfcx Could you create an issue ticked to track the required steps and timeline for Autoware base class integration? |
👍 Please let me know if this suits you and please provide your feedback. |
If development is not done step by step or feature by feature, the implemented program may end up being wasted. For example, the heartbeat you are trying to add here would be more compatible with ROS 2 and would not require reimplementation if we use |
This PR is only for ACC, registration and deregistration, node reports. Only extra is the heartbeat message is also here but I can remove it and we can discuss it when I create the pr for heartbeat after this is merged. |
Signed-off-by: Mete Fatih Cırıt <mfc@autoware.org>
I've specifically avoided https://github.com/ros2/common_interfaces/blob/humble/diagnostic_msgs/msg for heartbeats because they are very heavy. The heartbeat message used there is an instance of It contains:
Has 3 strings and a potential array of string pairs. And it is expected to be part of diagnostic_msgs/msg/DiagnosticArray.msg since the time stamp is in the header there. Compared to this, my message is smaller and static in size:
ACC/AN system and the existing established ros diagnostics system is expected to interact with ACC in the future. But not for the ACC-AN communication. We can discuss this in more detail when I make the HB PR. |
The How about first trying an implementation using the |
This is big PR and not a porting from Universe. So, if we don’t develop it little by little, we won’t be able to review it properly. |
ACC can publish diagnostics status messages in addition to the node reports to communicate with existing ROS 2 tooling. But ANs will talk to ACC with the minimal communication bandwidth overhead with this protocol. This way, existing tooling can be used while keeping the actual internal communication lightweight and fast. |
I did not add heartbeat feature in this PR. How much smaller can I make it? The only feature implemented here is the Registration / Deregistration feature, that's it. |
If we use the Again if I were to seriously review this PR, it would take me several hours. Except for simple replacements or porting cases, I can only review PRs with fewer than a few hundred lines. |
No. This PR wouldn't be necessary. You could achieve similar features with these autoware.universe
The issue is that because they are heavy, we cannot make it available for every node. The https://github.com/ros2/common_interfaces/blob/humble/diagnostic_msgs/msg/DiagnosticStatus.msg doesnt allow you to add non-string values, you cannot have incrementing numbers to track if you skipped a heartbeat (unless you use string to store numbers :( ) I will prepare a simple benchmark to measure how much overhead (in terms of memory, bandwidth, cpu usage) and (in terms of how much the existing tools slow down with Case for making this a base classIf we make this a base class and standardize the interface between ACC and AN, this heartbeat feature will be enabled by default for all of our nodes. So it won't be possible to forget implementing heartbeat monitoring feature. As long as we make sure all nodes inherit from this base class, they will register and publish heartbeats. I can see a world where we make this into a library to include in nodes (though this would create its own publishers and services) and tracking them with tests. But this way of base class is the easiest to implement and enforce this new system. Reviewing PRs with >100 linesCan you propose how I should split this PR even more? Anything I take out from this PR makes it dysfunctional. Or I can remove READMEs and you won't know how to use it. I think you are exaggerating the magnitude of this PR. But really, I'm open to cutting this down even more. But I don't know how. |
Description
This PR introduces:
autoware_control_center
nodeautoware_control_center_msgs
Related links
Parent Issue
Parent PR:
How was this PR tested?
Notes for reviewers
Please let me know if you have any questions, I'd be happy to explain.
Interface changes
None.
Effects on system behavior
None.