Skip to content
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 external object list to detection list conversion node #2141

Merged
merged 16 commits into from
Sep 11, 2023

Conversation

adamlm
Copy link
Contributor

@adamlm adamlm commented Sep 6, 2023

PR Details

Description

This PR adds support for ingesting locally-perceived objects from CARMA's perception stack into the cooperative perception pipeline. The changes include a new ROS 2 Node that converts ExternalObjectList.msg messages into DetectionList.msg ones. This PR also adds code linting, and the existing code has been updated to pass those checks.

Related GitHub Issue

Closes #2140

Related Jira Key

CDAR-289

Motivation and Context

One of the goals for the cooperative perception pipeline is for CARMA to fuse its locally-perceived detected objects with information it receives from other actors. To do that, we first need to convert the data into a format compatible with the cooperative perception pipeline.

How Has This Been Tested?

Unit tests

Types of changes

  • New feature (non-breaking change that adds functionality)

Checklist:

  • I have added any new packages to the sonar-scanner.properties file
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have read the CONTRIBUTING document.
  • I have added tests to cover my changes.
  • All new and existing tests passed.

The carma_cooperative_perception package now lints the code when testing
is enabled. This commit changes a lot of the existing code to satisfy
the linting requirements. Most of the changes include license header
relocation to the very top of the file, include guard name changes
according to the ROS style guide, and removing namespace
using-declarations.
This commit adds a message conversion node that takes in external
object lists from CARMA's local perception stack and converts the data
into a format compatible with the multiple object tracking pipeline.
The previous name had `node` appended to it, which conflicts with the
naming convention of having node executables append `node` to their
filename. I recommend we use the naming convention `_component` for
nodes that are going to be implemented as ROS components. The proper
node executable source file can then have a `_node` suffix.
Update the name for the sdsm_to_detection_list_component source file.
This package now lints with clang-format for style guide conformity.
The clang-tidy package is also added, but it is currently disabled
because there are some issues with carma_ros2_utils.
Add a link to the external object list to detection list conversion
node documentation page
The external object list to detection list component/node has been
updated to use the new ROS lifecycle node classes.
The code has been updated to address clang-tidy errors
The PROJ conversions will throw errors if there are any problems, so we
should catch them and log the issue. The Node may receive an external
object list message without having a known geoid reference.
The motion model mapping between external object and detection can be
specified as a parameter in the conversion Node, which allows users to
change mappings to their liking.
Update the parameter description table to match the implementation
@adamlm adamlm marked this pull request as ready for review September 7, 2023 21:53
Fix some typos, remove unused code/configs, and move implementations
from header files to cpp source files.
The on_configure and related functions were being overridden from the
CarmaLifecycleNode class, but the handle_on_configure and related
functions should have been overridden instead. This commit also add
lifecycle state change logging and removes clang-tidy references since
we are currently not using it.
The ExternalObjectListToDetectionList node's constructor no longer
creates the subscriptions. From the ROS lifecycle documentation, there
should be no publishers or subscriptions until the Node is in the
inactive state. The Node also uses in-class initializers to provide
defaults for the member variables.
@adamlm adamlm requested a review from JonSmet September 8, 2023 18:17
The handle_on_activate and handle_on_deactivate functions have been
removed from ExternalObjectListToDetectionListNode because the
CarmaLifecycleNode class already covers the necessary functionality.
The lifecycle publishers and param setting callback have been added
to CarmaLifecycleNode's management lists.
@JonSmet JonSmet merged commit 2b5d98f into develop Sep 11, 2023
2 of 3 checks passed
@JonSmet JonSmet deleted the feature/2140-external-object-list branch September 11, 2023 19:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[cooperative perception] Add a node to convert external object lists to detection lists
3 participants