-
Notifications
You must be signed in to change notification settings - Fork 683
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 vehicle control command message to AD API #3787
Comments
I think this should be defined in the component interface rather than AD API. See the abstract section in this page for details. |
@isamu-takagi I see, @mitsudome-r do you have any comments? To communicate with simulators, we can consider following options: OptionsOption A - Use autoware_msgsPros
Cons
Using autoware_msgs allows us to maintain consistency and avoid unnecessary work, provided we handle the versioning process correctly. This approach will involve the following steps:
Option B - Define a new interfacePros
Cons
I find this to be a little bit overkill. If we version Option C - Use OSIOSI (Open Simulation Interface) is an option but for our resources, timelines and goals, it's too much of an additional complexity. |
@xmfcx Thank you for the suggestion. I agree with "Option A - Use autoware_msgs" and suggest the following for the disadvantages. There are two features.
The component interface is the public part of the messages for each component. The current update frequency is a little high, but ideally stability is required. You are concerned about the impact on the simulator, but changing the component interface will affect all implementation of that component such as vehicle drivers and sensor drivers. The simulator works as a kind of driver, so we don't need to think about the simulator specially. If the public part becomes clear, the update frequency should decrease. Mandatory changes are handled by type adaptation described later.
This should be resolved by separating the public and private parts of the message. Unnecessary data should probably be moved to private messages. Since the simulator performs by replacing some components such as vehicle and sensing, it is necessary to support the same interface as those components.
Message definitions by rosidl include a serialization layer. If you convert to JSON like rosbridge, you can communicate if the fields are the same, but if you are communicating with DDS using rclcpp or rclpy, communication cannot be guaranteed if messages of different versions are mixed because its binary format may not be the same. One solution is to separate message definition/serialization by rosidl and interface definition using type adaptation. This way, we can safely use multiple versions of the interface because only the latest message is used for serialization even if the message type changes. |
@isamu-takagi thanks for the comprehensive suggestion you've provided. To start simple, I've created following issue:
I should investigate the type adaptation rep thoroughly and then I can also add my thoughts about your proposal. Is it OK to write a simple converter-publisher node for now? And we can consider your proposal in a new issue, where we can discuss about the versioning
I am closing this issue for now, we can discuss versioning in detail in the new issue, you can also copy your message there. |
Checklist
Description
Right now Autoware publishes
/control/command/control_cmd: autoware_control_msgs/msg/Control
in control/vehicle_cmd_gate/src/vehicle_cmd_gate.cpp to control the vehicle.This issue aims to instead, publish a standardized AD API message.
Purpose
Internal messaging API shouldn't affect how outside platforms (simulators, vehicles) interface with the Autoware.
While working on this task: #3677 (comment) I've realized we are using autoware_auto_control_msgs for the:
And with @mitsudome-r 's guidance, agreed that it's a better idea to use the AD API interface to update them.
Possible approaches
Explained in Definition of done section below.
Definition of done
The text was updated successfully, but these errors were encountered: