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

Reorganize the autoware.universe/common packages #5077

Open
31 of 32 tasks
Tracked by #5079 ...
youtalk opened this issue Aug 13, 2024 · 19 comments
Open
31 of 32 tasks
Tracked by #5079 ...

Reorganize the autoware.universe/common packages #5077

youtalk opened this issue Aug 13, 2024 · 19 comments
Assignees
Labels
component:openadkit Issues or Features related to Open AD Kit type:containers Docker containers, containerization of components, or container orchestration.

Comments

@youtalk
Copy link
Member

youtalk commented Aug 13, 2024

Despite the name "common," the autoware.universe/common directory contains many packages that are only used by specific modules.

Move these packages to specific directories to clarify dependencies and relationships. This is a preparatory step for multi-containerization.

Packages in autoware.universe/common:

@youtalk youtalk self-assigned this Aug 13, 2024
@youtalk youtalk added type:containers Docker containers, containerization of components, or container orchestration. component:openadkit Issues or Features related to Open AD Kit labels Aug 13, 2024
@youtalk youtalk removed their assignment Aug 13, 2024
@esteve
Copy link
Contributor

esteve commented Aug 14, 2024

@youtalk would it be useful to list the packages in common here so that we can check if they are truly "common" or can be moved?

@youtalk
Copy link
Member Author

youtalk commented Aug 14, 2024

@esteve It's good idea! Please do it.

@esteve
Copy link
Contributor

esteve commented Aug 14, 2024

@youtalk I've updated the issue description with a list of packages from common

@esteve
Copy link
Contributor

esteve commented Aug 14, 2024

I think the rviz plugin packages can most likely be moved elsewhere, this would make the OpenAD Kit Docker base images smaller.

@youtalk
Copy link
Member Author

youtalk commented Aug 14, 2024

Yeah, that's why #5076 was created.

@youtalk youtalk assigned youtalk and pojenwang and unassigned youtalk Aug 30, 2024
@youtalk youtalk removed their assignment Sep 3, 2024
@esteve esteve self-assigned this Oct 28, 2024
@esteve
Copy link
Contributor

esteve commented Nov 6, 2024

@youtalk should the packages that have a tier4 prefix also have an autoware prefix? Or should they be renamed to only have autoware as their prefix?

@youtalk
Copy link
Member Author

youtalk commented Nov 7, 2024

@esteve Thank you for your feedback.

@youtalk some of the packages in common are rviz plugins, I think it'd be best to move the plugins elsewhere so we can make a smaller base image for OpenAD Kit, I'm focusing on refactoring the packages (adding the autoware prefix) that are not rviz plugins

Exactly. I think it would be a good idea to move all the RViz plugin packages either directly under autoware.universe or under the tools directory.
@mitsudome-r @xmfcx What do you think?

@youtalk should the packages that have a tier4 prefix also have an autoware prefix? Or should they be renamed to only have autoware as their prefix?

For now, let’s keep the package names with the tier4 suffix unchanged.

@xmfcx
Copy link
Contributor

xmfcx commented Nov 7, 2024

I agree with moving them to reduce the base image size 👍

Some of the rviz plugins are crucial for running the Tutorials. (Basically any rviz plugin included in the main rviz config)

To alleviate this, we can first update the docs and then move.

Actions:

  1. Update https://autowarefoundation.github.io/autoware-documentation/main/installation/autoware/source-installation/#how-to-set-up-a-workspace and https://autowarefoundation.github.io/autoware-documentation/main/installation/autoware/source-installation/#how-to-update-a-workspace to include vcs import src < tools.repos
  2. Move the packages to tools

@esteve
Copy link
Contributor

esteve commented Nov 18, 2024

All the packages that didn't have a prefix (either tier4 or autoware) have been renamed or are in review. I haven't submitted PRs to rename rviz plugins because we're moving them out of common.

@xmfcx is there a tools repository I can move the rviz plugins to? Thanks.

@xmfcx
Copy link
Contributor

xmfcx commented Nov 18, 2024

@esteve you may move them here: https://github.com/autowarefoundation/autoware_tools/tree/main/common

But since some rviz plugins might be important for the tutorials, maybe we shouldn't move all of them. Or the tutorials won't work with the official autoware docker images.

https://github.com/autowarefoundation/autoware_launch/blob/main/autoware_launch/rviz/autoware.rviz

Could you go through here and only move the rviz plugins not referenced by this file?

cc. @youtalk

@esteve
Copy link
Contributor

esteve commented Nov 18, 2024

Here's the list of plugins that the https://github.com/autowarefoundation/autoware_launch/blob/main/autoware_launch/rviz/autoware.rviz file uses:

  • AutowareDateTimePanel
  • autoware_mission_details_overlay_rviz_plugin/MissionDetailsDisplay
  • autoware_overlay_rviz_plugin/SignalDisplay
  • autoware_perception_rviz_plugin/DetectedObjects
  • autoware_perception_rviz_plugin/PredictedObjects
  • autoware_perception_rviz_plugin/TrackedObjects
  • rviz_common/Displays
  • rviz_common/Group
  • rviz_common/Selection
  • rviz_common/Tool
  • rviz_common/Views
  • rviz_default_plugins/Camera
  • rviz_default_plugins/FocusCamera
  • rviz_default_plugins/Grid
  • rviz_default_plugins/Image
  • rviz_default_plugins/Interact
  • rviz_default_plugins/Map
  • rviz_default_plugins/Marker
  • rviz_default_plugins/MarkerArray
  • rviz_default_plugins/Measure
  • rviz_default_plugins/MoveCamera
  • rviz_default_plugins/PointCloud2
  • rviz_default_plugins/Polygon
  • rviz_default_plugins/Pose
  • rviz_default_plugins/PoseArray
  • rviz_default_plugins/PoseWithCovariance
  • rviz_default_plugins/RobotModel
  • rviz_default_plugins/Select
  • rviz_default_plugins/SetGoal
  • rviz_default_plugins/SetInitialPose
  • rviz_default_plugins/TF
  • rviz_default_plugins/ThirdPersonFollower
  • rviz_default_plugins/TopDownOrtho
  • rviz_plugins/BusInitialPoseTool
  • rviz_plugins/CarInitialPoseTool
  • rviz_plugins/DeleteAllObjectsTool
  • rviz_plugins/MissionCheckpointTool
  • rviz_plugins/MrmSummaryOverlayDisplay
  • rviz_plugins/Path
  • rviz_plugins/PedestrianInitialPoseTool
  • rviz_plugins/PolarGridDisplay
  • rviz_plugins/PoseWithUuidStamped
  • rviz_plugins/Trajectory
  • rviz_plugins::AutowareStatePanel
  • rviz_plugins::PoseHistory
  • tier4_adapi_rviz_plugins::RouteTool

Of these, only the following are ours:

  • AutowareDateTimePanel (tier4_datetime_rviz_plugin)
  • autoware_mission_details_overlay_rviz_plugin/MissionDetailsDisplay (autoware_mission_details_overlay_rviz_plugin)
  • autoware_overlay_rviz_plugin/SignalDisplay (autoware_overlay_rviz_plugin)
  • autoware_perception_rviz_plugin/DetectedObjects (autoware_perception_rviz_plugin)
  • autoware_perception_rviz_plugin/PredictedObjects (autoware_perception_rviz_plugin)
  • autoware_perception_rviz_plugin/TrackedObjects (autoware_perception_rviz_plugin)
  • tier4_adapi_rviz_plugins::RouteTool (tier4_adapi_rviz_plugin)

The rest can be safely moved to another repository.

@esteve
Copy link
Contributor

esteve commented Nov 18, 2024

@xmfcx thanks, I only checked the packages that implement those plugins, but not the packages that depend on them yet. In any case, I'm sorry but I don't understand why we can't move all the rviz plugins to another repository. Couldn't we create a separate Docker image with them? And leave the rest of the common packages here in a base Docker image?

@xmfcx
Copy link
Contributor

xmfcx commented Nov 18, 2024

@youtalk -san might have a better plan for it.

But my expectation from the autoware runtime docker image (universe-cuda from https://raw.githubusercontent.com/autowarefoundation/autoware/0dd08838d0ebc154bf698ee1b8d157a456eb044f/docker/Dockerfile.svg ) to have the basic rviz plugins.

If we move all the rviz plugins to tools.repos, we also need to update the autoware installation instruction to tell people to vcs import tools.repos too or the tutorials wont work for them.

As for the docker images, how and at what stage they are required, I'll leave that decision to @youtalk -san and @oguzkaganozt .

In my opinion, looking at the structure of the docker images tree that these basic rviz plugins should be a part of universe-common-devel and be propagated downward the tree. Because they are useful for everyday debugging of the autoware. And necessary for the runtime.

cc. @mitsudome-r

@youtalk
Copy link
Member Author

youtalk commented Nov 19, 2024

Our ultimate goal is to minimize the size of the runtime containers while enhancing maintainability and availability.

Therefore, I think it’s fine for the development containers to include RViz and its plugins, in line with @xmfcx's opinion. On the other hand, for the runtime containers, the visualization tools through a separate container, as @oguzkaganozt is currently working on, is preferable.

@mitsudome-r
Copy link
Member

I think we have the following options:

  1. create visualization folder under autoware.universe and move all the rviz_plugin packages into the visualization folder.
  2. consider creating a new repository to maintain rviz_plugins (we can also consider releasing them through ROS buildfarm so that we don't have to specify in autoware.repos file anymore)
  3. keep it in common folder, and the docker file refer to them by regex (like *_rviz_plugin)

I prefer option 1 for now. Option 2 is ideal, but I think there are still many dependencies to other Universe packages and isn't realistic to be done in short term.

@esteve
Copy link
Contributor

esteve commented Nov 19, 2024

I like option 1 too, in my opinion common should be as small as possible and aim for keep packages in folders that are more descriptive.

@xmfcx
Copy link
Contributor

xmfcx commented Nov 19, 2024

And for docker, the visualization packages can be excluded by --base-paths option from https://colcon.readthedocs.io/en/released/reference/discovery-arguments.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component:openadkit Issues or Features related to Open AD Kit type:containers Docker containers, containerization of components, or container orchestration.
Projects
None yet
Development

No branches or pull requests

5 participants