autowarefoundation / autoware.core

Apache License 2.0
45 stars 27 forks source link

feat(autoware_node): add AutowareNode base class #57

Closed xmfcx closed 1 year ago

xmfcx commented 2 years ago

Signed-off-by: M. Fatih Cırıt mfc@leodrive.ai

Description

Related Discussion: https://github.com/orgs/autowarefoundation/discussions/3194

This PR is for creating the base class for all the future Autoware Core nodes to inherit from.

This node will be inheriting from the rclcpp_lifecycle::LifecycleNode with (LifeCycle Readme).

I'll be taking ros2 nav2 stack as reference too while combining Lifecycle and Composable node concepts.

While developing this PR, I am going to explore ideas mentioned in previous conversations in the Autoware community.

Related links

Related links - Autoware.Auto discussions: https://gitlab.com/autowarefoundation/autoware.auto/AutowareAuto/-/issues/821 - Discuss Implementing LifeCycleNode Support on Autoware.Auto Nodes - https://gitlab.com/autowarefoundation/autoware.auto/AutowareAuto/-/issues/282 - Autoware Diagnostics and Monitoring - https://gist.github.com/xmfcx/7eaae9750d6317a3a2aa23745ac99444

Communication architecture

Communication architecture ### Registration Service **Service server:** `ACC` **Service client:** `AutowareNode` **Roles:** - Register the `AutowareNode` in `ACC` - Receive the UUID for the `AutowareNode` - If already registered, return error ```mermaid sequenceDiagram participant acc as Autoware Control Center participant node as node_a Note right of node: cli_reg node ->>+ acc: name: node_a Note left of acc: srv_reg acc ->> acc: generate a UUID for the node_a acc ->> acc: create a bond between acc and node_a Note left of acc: srv_reg acc -->>- node: UUID and registration success bool Note right of node: cli_reg ``` ### Heart beat bond ~~https://github.com/ros/bond_core/blob/ros2/ros2_migration_readme.md~~ Slow https://github.com/ros-safety/software_watchdogs https://design.ros2.org/articles/qos_deadline_liveliness_lifespan.html https://docs.ros.org/en/rolling/Concepts/About-Quality-of-Service-Settings.html#qos-events **Roles:** - As long as the `AutowareNode` is alive, it reports with this bond - If the `AutowareNode` dies, it triggers the `on_broken` callback ### Reporting service **Service server:** `ACC` **Service client:** `AutowareNode` **Roles:** - Reporting state of the `AutowareNode` to the `ACC` - Warning - Error ### Control service **Service server:** `AutowareNode` **Service client:** `ACC` Roles: - Shutting down the `AutowareNode` - Toggle `AutowareNode` between active-inactive?

Tasks

Tests performed

PR Review Items ## Notes for reviewers ## Pre-review checklist for the PR author The PR author **must** check the checkboxes below when creating the PR. - [x] I've confirmed the [contribution guidelines]. - [x] The PR follows the [pull request guidelines]. ## In-review checklist for the PR reviewers The PR reviewers **must** check the checkboxes below before approval. - [ ] The PR follows the [pull request guidelines]. - [ ] The PR has been properly tested. - [ ] The PR has been reviewed by the code owners. ## Post-review checklist for the PR author The PR author **must** check the checkboxes below before merging. - [ ] There are no open discussions or they are tracked via tickets. - [ ] The PR is ready for merge. After all checkboxes are checked, anyone who has write access can merge the PR. [contribution guidelines]: https://autowarefoundation.github.io/autoware-documentation/main/contributing/ [pull request guidelines]: https://autowarefoundation.github.io/autoware-documentation/main/contributing/pull-request-guidelines/
mergify[bot] commented 2 years ago

:warning: The sha of the head commit of this PR conflicts with #56. Mergify cannot evaluate rules on this PR. :warning:

stale[bot] commented 1 year ago

This pull request has been automatically marked as stale because it has not had recent activity.

codecov[bot] commented 1 year ago

Codecov Report

:exclamation: No coverage uploaded for pull request base (main@6bafedf). Click here to learn what that means. Patch has no changes to coverable lines.

Additional details and impacted files ```diff @@ Coverage Diff @@ ## main #57 +/- ## ====================================== Coverage ? 0.00% ====================================== Files ? 4 Lines ? 23 Branches ? 0 ====================================== Hits ? 0 Misses ? 23 Partials ? 0 ``` | Flag | Coverage Δ | | |---|---|---| | differential | `0.00% <0.00%> (?)` | | Help us with your feedback. Take ten seconds to tell us [how you rate us](https://about.codecov.io/nps?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=autowarefoundation). Have a feature suggestion? [Share it here.](https://app.codecov.io/gh/feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=autowarefoundation)

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

xmfcx commented 1 year ago

Because of the https://github.com/autowarefoundation/autoware.core/pull/57#issuecomment-1256176040 mergify error, moved to https://github.com/autowarefoundation/autoware.core/pull/73