-
Notifications
You must be signed in to change notification settings - Fork 659
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
Add packages for providing stable interfaces #6419
Comments
Hi @isamu-takagi, I am interested in this proposal as a third-party verification tool developer, which needs a well-defined interface specification for Autoware and simulators. Would this proposal include a machine-readable declarative specification format for interfaces? Is there any pointer for any work done in that direction? Do you prefer this issue for further discussion or the original discussion thread? |
@doganulus Are you talking about a file listing topics and services such as following? If so, that is not the goal of this task. But I want that too, so let's create a new discussion. { type: subscription, name: /diagnostics }
{ type: publisher, name: /diagnostics_agg } |
Yes @isamu-takagi, such a file is what I meant. I thought it may be used for a config for third-party tools that interact with Autoware. I have a few technical concerns, like how to address dynamic topic names and the overhead in this case. But maybe your proposal will allow us to see better the landscape. Finally, in the current form, you do require a third-party client tool to use |
@doganulus I've added a diagram about the implementation to this task description. As shown in the diagram, to use versioned message you need to use the wrapper class that will be added in this task.
I don't think it can provide the same functionality. The problem is that ROS topics and services only have one layer of data structures. This means that when the data structure is changed due to implementation reasons, the interface is also affected. So at least two data structures are required: an implementation and an interface. It may be possible if you can customize serialization and deserialization of DDS client, but it would be difficult. |
I cannot say for sure without measuring but the overhead of all these conversions seems to be the weakest point of the proposal. Maybe your example implementation can give any hint on how serious it could be. Have you considered publishing twice for old and new interfaces? (this has the overhead of bandwidth but is limited to the transition period.) Ok I see this: https://github.com/orgs/autowarefoundation/discussions/3922#discussioncomment-7325535 Double publishing is really prohibitive? |
I think there are some mixed issues about messages, so I will create a thread in the original discussion to organize it. |
@doganulus I considered it again here https://github.com/orgs/autowarefoundation/discussions/3922#discussioncomment-8886781. In conclusion, it seems better to provide an accessor class. This method is simpler and does not require copying the message. I will create a new discussion about interface definition files later. |
@isamu-takagi Thank you very much for letting me know! For interface definitions files, I have something in my mind similar to Zenoh's use of configuration files as here: I like to configure our apps to listen to some specific subset of Autoware topics (possibly determined dynamically) so having stable interfaces is quite important. |
This pull request has been automatically marked as stale because it has not had recent activity. |
Checklist
Description
Add interface class. See https://github.com/orgs/autowarefoundation/discussions/3922 for background.
Purpose
Autoware uses ROS messages for the following two purposes, so we will make it possible to separate them.
Possible approaches
Add type alias and interface class. Developers can use interface classes instead of ROS messages with the following changes.
The interface class has a pointer or reference to ROS message.
Definition of done
component_interface_utils
package.tier4_api_utils
package.The text was updated successfully, but these errors were encountered: