Package Summary
| Version | 1.10.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yamato Ando
- Masahiro Sakamoto
- NGUYEN Viet Anh
- Taiki Yamada
Authors
- Ryohsuke Mitsudome
- Koji Minoda
autoware_map_loader package
This package provides the features of loading various maps.
pointcloud_map_loader
Feature
pointcloud_map_loader provides pointcloud maps to the other Autoware nodes in various configurations.
Currently, it supports the following two types:
- Publish raw pointcloud map
- Publish downsampled pointcloud map
- Send partial pointcloud map loading via ROS 2 service
- Send differential pointcloud map loading via ROS 2 service
NOTE: We strongly recommend to use divided maps when using large pointcloud map to enable the latter two features (partial and differential load). Please go through the prerequisites section for more details, and follow the instruction for dividing the map and preparing the metadata.
Prerequisites
Prerequisites on pointcloud map file(s)
You may provide either a single .pcd file or multiple .pcd files. If you are using multiple PCD data, it MUST obey the following rules:
-
The pointcloud map should be projected on the same coordinate defined in
map_projection_loader, in order to be consistent with the lanelet2 map and other packages that converts between local and geodetic coordinates. For more information, please refer to the readme ofmap_projection_loader. - It must be divided by straight lines parallel to the x-axis and y-axis. The system does not support division by diagonal lines or curved lines.
- The division size along each axis should be equal.
- The division size should be about 20m x 20m. Particularly, care should be taken as using too large division size (for example, more than 100m) may have adverse effects on dynamic map loading features in ndt_scan_matcher and autoware_compare_map_segmentation.
- All the split maps should not overlap with each other.
- Metadata file should also be provided. The metadata structure description is provided below.
Metadata structure
The metadata should look like this:
x_resolution: 20.0
y_resolution: 20.0
A.pcd: [1200, 2500] # -> 1200 < x < 1220, 2500 < y < 2520
B.pcd: [1220, 2500] # -> 1220 < x < 1240, 2500 < y < 2520
C.pcd: [1200, 2520] # -> 1200 < x < 1220, 2520 < y < 2540
D.pcd: [1240, 2520] # -> 1240 < x < 1260, 2520 < y < 2540
where,
-
x_resolutionandy_resolution -
A.pcd,B.pcd, etc, are the names of PCD files. - List such as
[1200, 2500]are the values indicate that for this PCD file, x coordinates are between 1200 and 1220 (x_resolution+x_coordinate) and y coordinates are between 2500 and 2520 (y_resolution+y_coordinate).
You may use pointcloud_divider for dividing pointcloud map as well as generating the compatible metadata.yaml.
Directory structure of these files
If you only have one pointcloud map, Autoware will assume the following directory structure by default.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
If you have multiple rosbags, an example directory structure would be as follows. Note that you need to have a metadata when you have multiple pointcloud map files.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
│ ├── A.pcd
│ ├── B.pcd
│ ├── C.pcd
│ └── ...
├── map_projector_info.yaml
└── pointcloud_map_metadata.yaml
Specific features
Publish raw pointcloud map (ROS 2 topic)
The node publishes the raw pointcloud map loaded from the .pcd file(s).
Publish downsampled pointcloud map (ROS 2 topic)
The node publishes the downsampled pointcloud map loaded from the .pcd file(s). You can specify the downsample resolution by changing the leaf_size parameter.
Publish metadata of pointcloud map (ROS 2 topic)
The node publishes the pointcloud metadata attached with an ID. Metadata is loaded from the .yaml file. Please see the description of PointCloudMapMetaData.msg for details.
Send partial pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
Given a query from a client node, the node sends a set of pointcloud maps that overlaps with the queried area.
Please see the description of GetPartialPointCloudMap.srv for details.
Send differential pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
File truncated at 100 lines see the full file
Changelog for package autoware_map_loader
1.1.0 (2025-05-01)
- feat(component_interface_specs): use template type in get_qos function (#364) Co-authored-by: Yutaka Kondo <<yutaka.kondo@youtalk.jp>>
- feat(map_loader): add the explanation of handling use_waypoints (#342)
- Contributors: Takagi, Isamu, Takayuki Murooka
1.10.0 (2026-09-28)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(map): add node designs for the map nodes (#1413)
* feat(map): add node designs for the map nodes Describe the interfaces, parameters and processes of the pointcloud and lanelet2 map loaders, the map hash generator, the lanelet2 map visualizer and the map projection loader as system design node files.
- fix(map): correct description formatting in Lanelet2MapLoader.node.yaml
* refactor(map): rename node designs to match the node class names PointCloudMapLoader and Lanelet2MapVisualization follow the entity naming convention derived from the C++ class names, as in #1335.
* fix(map): declare the MapHashGenerator external API interfaces as remap targets The map hash publisher and the lanelet XML server carry the fixed API names as remap_target, so a system design connects them like any other port and the launcher remaps the node-side names.
* fix(map): update description for map_projector_info to clarify its purpose ---------
-
fix(map): declare the dependencies these packages use (#1370) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers.
-
fix(autoware_map_loader): use CMake targets and portable logging (#1270)
* Use CMake targets and portable integer logging in autoware_map_loader This upstreams RoboStack downstream patch [patch/ros-rolling-autoware-map-loader.osx.patch]{.title-ref}. Best-guess rationale: linking to yaml-cpp and fmt through imported targets is more robust across package managers, and portable PRIu64 logging avoids uint64_t format mismatches on platforms where unsigned long and unsigned long long differ.
- style(pre-commit): autofix
* Support old fmt target Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>> ---------Co-authored-by: Daisuke Nishimatsu <<nishimarudai@gmail.com>> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>> Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>>
-
fix(autoware_map_loader): always publish the pointcloud map metadata (#1316) [output/pointcloud_map_metadata]{.title-ref} was only advertised when [enable_selected_load]{.title-ref} was true, even though the metadata dict it is built from is always available and the differential map loader that serves the map is created unconditionally. A deployment that delivers the PCD map through the differential/partial services sets [enable_whole_load: false]{.title-ref}, which retires [/map/pointcloud_map]{.title-ref}. Such a deployment was then left with no topic proving the map module had loaded its map: the map component's topic monitor watches a topic nobody publishes, reports [NotReceived]{.title-ref} (checked before any rate/timeout threshold, so the zeroed thresholds do not matter), and the map module stays in ERROR for the whole run. Publish the latched metadata as soon as the PCD metadata is parsed, so it is the delivery-independent evidence that the map is loaded and servable. This makes [enable_selected_load]{.title-ref} govern only the selected-load service, as its name says. The new launch test pins the regression: with [enable_whole_load]{.title-ref} and [enable_selected_load]{.title-ref} both false, the metadata must still arrive on a transient-local subscription, and [output/pointcloud_map]{.title-ref} must stay unadvertised.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/lanelet2_map_loader.launch.xml
-
- lanelet2_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/lanelet2_map_loader.param.yaml]
- lanelet2_map_path
- lanelet2_map_metadata_path [default: '']
- lanelet2_map_topic [default: vector_map]
- lanelet2_map_marker_topic [default: vector_map_marker]
- launch/pointcloud_map_loader.launch.xml
-
- pointcloud_map_path
- pointcloud_map_metadata_path
- pointcloud_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/pointcloud_map_loader.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_map_loader at Robotics Stack Exchange
Package Summary
| Version | 1.10.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yamato Ando
- Masahiro Sakamoto
- NGUYEN Viet Anh
- Taiki Yamada
Authors
- Ryohsuke Mitsudome
- Koji Minoda
autoware_map_loader package
This package provides the features of loading various maps.
pointcloud_map_loader
Feature
pointcloud_map_loader provides pointcloud maps to the other Autoware nodes in various configurations.
Currently, it supports the following two types:
- Publish raw pointcloud map
- Publish downsampled pointcloud map
- Send partial pointcloud map loading via ROS 2 service
- Send differential pointcloud map loading via ROS 2 service
NOTE: We strongly recommend to use divided maps when using large pointcloud map to enable the latter two features (partial and differential load). Please go through the prerequisites section for more details, and follow the instruction for dividing the map and preparing the metadata.
Prerequisites
Prerequisites on pointcloud map file(s)
You may provide either a single .pcd file or multiple .pcd files. If you are using multiple PCD data, it MUST obey the following rules:
-
The pointcloud map should be projected on the same coordinate defined in
map_projection_loader, in order to be consistent with the lanelet2 map and other packages that converts between local and geodetic coordinates. For more information, please refer to the readme ofmap_projection_loader. - It must be divided by straight lines parallel to the x-axis and y-axis. The system does not support division by diagonal lines or curved lines.
- The division size along each axis should be equal.
- The division size should be about 20m x 20m. Particularly, care should be taken as using too large division size (for example, more than 100m) may have adverse effects on dynamic map loading features in ndt_scan_matcher and autoware_compare_map_segmentation.
- All the split maps should not overlap with each other.
- Metadata file should also be provided. The metadata structure description is provided below.
Metadata structure
The metadata should look like this:
x_resolution: 20.0
y_resolution: 20.0
A.pcd: [1200, 2500] # -> 1200 < x < 1220, 2500 < y < 2520
B.pcd: [1220, 2500] # -> 1220 < x < 1240, 2500 < y < 2520
C.pcd: [1200, 2520] # -> 1200 < x < 1220, 2520 < y < 2540
D.pcd: [1240, 2520] # -> 1240 < x < 1260, 2520 < y < 2540
where,
-
x_resolutionandy_resolution -
A.pcd,B.pcd, etc, are the names of PCD files. - List such as
[1200, 2500]are the values indicate that for this PCD file, x coordinates are between 1200 and 1220 (x_resolution+x_coordinate) and y coordinates are between 2500 and 2520 (y_resolution+y_coordinate).
You may use pointcloud_divider for dividing pointcloud map as well as generating the compatible metadata.yaml.
Directory structure of these files
If you only have one pointcloud map, Autoware will assume the following directory structure by default.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
If you have multiple rosbags, an example directory structure would be as follows. Note that you need to have a metadata when you have multiple pointcloud map files.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
│ ├── A.pcd
│ ├── B.pcd
│ ├── C.pcd
│ └── ...
├── map_projector_info.yaml
└── pointcloud_map_metadata.yaml
Specific features
Publish raw pointcloud map (ROS 2 topic)
The node publishes the raw pointcloud map loaded from the .pcd file(s).
Publish downsampled pointcloud map (ROS 2 topic)
The node publishes the downsampled pointcloud map loaded from the .pcd file(s). You can specify the downsample resolution by changing the leaf_size parameter.
Publish metadata of pointcloud map (ROS 2 topic)
The node publishes the pointcloud metadata attached with an ID. Metadata is loaded from the .yaml file. Please see the description of PointCloudMapMetaData.msg for details.
Send partial pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
Given a query from a client node, the node sends a set of pointcloud maps that overlaps with the queried area.
Please see the description of GetPartialPointCloudMap.srv for details.
Send differential pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
File truncated at 100 lines see the full file
Changelog for package autoware_map_loader
1.1.0 (2025-05-01)
- feat(component_interface_specs): use template type in get_qos function (#364) Co-authored-by: Yutaka Kondo <<yutaka.kondo@youtalk.jp>>
- feat(map_loader): add the explanation of handling use_waypoints (#342)
- Contributors: Takagi, Isamu, Takayuki Murooka
1.10.0 (2026-09-28)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(map): add node designs for the map nodes (#1413)
* feat(map): add node designs for the map nodes Describe the interfaces, parameters and processes of the pointcloud and lanelet2 map loaders, the map hash generator, the lanelet2 map visualizer and the map projection loader as system design node files.
- fix(map): correct description formatting in Lanelet2MapLoader.node.yaml
* refactor(map): rename node designs to match the node class names PointCloudMapLoader and Lanelet2MapVisualization follow the entity naming convention derived from the C++ class names, as in #1335.
* fix(map): declare the MapHashGenerator external API interfaces as remap targets The map hash publisher and the lanelet XML server carry the fixed API names as remap_target, so a system design connects them like any other port and the launcher remaps the node-side names.
* fix(map): update description for map_projector_info to clarify its purpose ---------
-
fix(map): declare the dependencies these packages use (#1370) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers.
-
fix(autoware_map_loader): use CMake targets and portable logging (#1270)
* Use CMake targets and portable integer logging in autoware_map_loader This upstreams RoboStack downstream patch [patch/ros-rolling-autoware-map-loader.osx.patch]{.title-ref}. Best-guess rationale: linking to yaml-cpp and fmt through imported targets is more robust across package managers, and portable PRIu64 logging avoids uint64_t format mismatches on platforms where unsigned long and unsigned long long differ.
- style(pre-commit): autofix
* Support old fmt target Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>> ---------Co-authored-by: Daisuke Nishimatsu <<nishimarudai@gmail.com>> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>> Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>>
-
fix(autoware_map_loader): always publish the pointcloud map metadata (#1316) [output/pointcloud_map_metadata]{.title-ref} was only advertised when [enable_selected_load]{.title-ref} was true, even though the metadata dict it is built from is always available and the differential map loader that serves the map is created unconditionally. A deployment that delivers the PCD map through the differential/partial services sets [enable_whole_load: false]{.title-ref}, which retires [/map/pointcloud_map]{.title-ref}. Such a deployment was then left with no topic proving the map module had loaded its map: the map component's topic monitor watches a topic nobody publishes, reports [NotReceived]{.title-ref} (checked before any rate/timeout threshold, so the zeroed thresholds do not matter), and the map module stays in ERROR for the whole run. Publish the latched metadata as soon as the PCD metadata is parsed, so it is the delivery-independent evidence that the map is loaded and servable. This makes [enable_selected_load]{.title-ref} govern only the selected-load service, as its name says. The new launch test pins the regression: with [enable_whole_load]{.title-ref} and [enable_selected_load]{.title-ref} both false, the metadata must still arrive on a transient-local subscription, and [output/pointcloud_map]{.title-ref} must stay unadvertised.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/lanelet2_map_loader.launch.xml
-
- lanelet2_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/lanelet2_map_loader.param.yaml]
- lanelet2_map_path
- lanelet2_map_metadata_path [default: '']
- lanelet2_map_topic [default: vector_map]
- lanelet2_map_marker_topic [default: vector_map_marker]
- launch/pointcloud_map_loader.launch.xml
-
- pointcloud_map_path
- pointcloud_map_metadata_path
- pointcloud_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/pointcloud_map_loader.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_map_loader at Robotics Stack Exchange
Package Summary
| Version | 1.10.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yamato Ando
- Masahiro Sakamoto
- NGUYEN Viet Anh
- Taiki Yamada
Authors
- Ryohsuke Mitsudome
- Koji Minoda
autoware_map_loader package
This package provides the features of loading various maps.
pointcloud_map_loader
Feature
pointcloud_map_loader provides pointcloud maps to the other Autoware nodes in various configurations.
Currently, it supports the following two types:
- Publish raw pointcloud map
- Publish downsampled pointcloud map
- Send partial pointcloud map loading via ROS 2 service
- Send differential pointcloud map loading via ROS 2 service
NOTE: We strongly recommend to use divided maps when using large pointcloud map to enable the latter two features (partial and differential load). Please go through the prerequisites section for more details, and follow the instruction for dividing the map and preparing the metadata.
Prerequisites
Prerequisites on pointcloud map file(s)
You may provide either a single .pcd file or multiple .pcd files. If you are using multiple PCD data, it MUST obey the following rules:
-
The pointcloud map should be projected on the same coordinate defined in
map_projection_loader, in order to be consistent with the lanelet2 map and other packages that converts between local and geodetic coordinates. For more information, please refer to the readme ofmap_projection_loader. - It must be divided by straight lines parallel to the x-axis and y-axis. The system does not support division by diagonal lines or curved lines.
- The division size along each axis should be equal.
- The division size should be about 20m x 20m. Particularly, care should be taken as using too large division size (for example, more than 100m) may have adverse effects on dynamic map loading features in ndt_scan_matcher and autoware_compare_map_segmentation.
- All the split maps should not overlap with each other.
- Metadata file should also be provided. The metadata structure description is provided below.
Metadata structure
The metadata should look like this:
x_resolution: 20.0
y_resolution: 20.0
A.pcd: [1200, 2500] # -> 1200 < x < 1220, 2500 < y < 2520
B.pcd: [1220, 2500] # -> 1220 < x < 1240, 2500 < y < 2520
C.pcd: [1200, 2520] # -> 1200 < x < 1220, 2520 < y < 2540
D.pcd: [1240, 2520] # -> 1240 < x < 1260, 2520 < y < 2540
where,
-
x_resolutionandy_resolution -
A.pcd,B.pcd, etc, are the names of PCD files. - List such as
[1200, 2500]are the values indicate that for this PCD file, x coordinates are between 1200 and 1220 (x_resolution+x_coordinate) and y coordinates are between 2500 and 2520 (y_resolution+y_coordinate).
You may use pointcloud_divider for dividing pointcloud map as well as generating the compatible metadata.yaml.
Directory structure of these files
If you only have one pointcloud map, Autoware will assume the following directory structure by default.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
If you have multiple rosbags, an example directory structure would be as follows. Note that you need to have a metadata when you have multiple pointcloud map files.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
│ ├── A.pcd
│ ├── B.pcd
│ ├── C.pcd
│ └── ...
├── map_projector_info.yaml
└── pointcloud_map_metadata.yaml
Specific features
Publish raw pointcloud map (ROS 2 topic)
The node publishes the raw pointcloud map loaded from the .pcd file(s).
Publish downsampled pointcloud map (ROS 2 topic)
The node publishes the downsampled pointcloud map loaded from the .pcd file(s). You can specify the downsample resolution by changing the leaf_size parameter.
Publish metadata of pointcloud map (ROS 2 topic)
The node publishes the pointcloud metadata attached with an ID. Metadata is loaded from the .yaml file. Please see the description of PointCloudMapMetaData.msg for details.
Send partial pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
Given a query from a client node, the node sends a set of pointcloud maps that overlaps with the queried area.
Please see the description of GetPartialPointCloudMap.srv for details.
Send differential pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
File truncated at 100 lines see the full file
Changelog for package autoware_map_loader
1.1.0 (2025-05-01)
- feat(component_interface_specs): use template type in get_qos function (#364) Co-authored-by: Yutaka Kondo <<yutaka.kondo@youtalk.jp>>
- feat(map_loader): add the explanation of handling use_waypoints (#342)
- Contributors: Takagi, Isamu, Takayuki Murooka
1.10.0 (2026-09-28)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(map): add node designs for the map nodes (#1413)
* feat(map): add node designs for the map nodes Describe the interfaces, parameters and processes of the pointcloud and lanelet2 map loaders, the map hash generator, the lanelet2 map visualizer and the map projection loader as system design node files.
- fix(map): correct description formatting in Lanelet2MapLoader.node.yaml
* refactor(map): rename node designs to match the node class names PointCloudMapLoader and Lanelet2MapVisualization follow the entity naming convention derived from the C++ class names, as in #1335.
* fix(map): declare the MapHashGenerator external API interfaces as remap targets The map hash publisher and the lanelet XML server carry the fixed API names as remap_target, so a system design connects them like any other port and the launcher remaps the node-side names.
* fix(map): update description for map_projector_info to clarify its purpose ---------
-
fix(map): declare the dependencies these packages use (#1370) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers.
-
fix(autoware_map_loader): use CMake targets and portable logging (#1270)
* Use CMake targets and portable integer logging in autoware_map_loader This upstreams RoboStack downstream patch [patch/ros-rolling-autoware-map-loader.osx.patch]{.title-ref}. Best-guess rationale: linking to yaml-cpp and fmt through imported targets is more robust across package managers, and portable PRIu64 logging avoids uint64_t format mismatches on platforms where unsigned long and unsigned long long differ.
- style(pre-commit): autofix
* Support old fmt target Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>> ---------Co-authored-by: Daisuke Nishimatsu <<nishimarudai@gmail.com>> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>> Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>>
-
fix(autoware_map_loader): always publish the pointcloud map metadata (#1316) [output/pointcloud_map_metadata]{.title-ref} was only advertised when [enable_selected_load]{.title-ref} was true, even though the metadata dict it is built from is always available and the differential map loader that serves the map is created unconditionally. A deployment that delivers the PCD map through the differential/partial services sets [enable_whole_load: false]{.title-ref}, which retires [/map/pointcloud_map]{.title-ref}. Such a deployment was then left with no topic proving the map module had loaded its map: the map component's topic monitor watches a topic nobody publishes, reports [NotReceived]{.title-ref} (checked before any rate/timeout threshold, so the zeroed thresholds do not matter), and the map module stays in ERROR for the whole run. Publish the latched metadata as soon as the PCD metadata is parsed, so it is the delivery-independent evidence that the map is loaded and servable. This makes [enable_selected_load]{.title-ref} govern only the selected-load service, as its name says. The new launch test pins the regression: with [enable_whole_load]{.title-ref} and [enable_selected_load]{.title-ref} both false, the metadata must still arrive on a transient-local subscription, and [output/pointcloud_map]{.title-ref} must stay unadvertised.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/lanelet2_map_loader.launch.xml
-
- lanelet2_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/lanelet2_map_loader.param.yaml]
- lanelet2_map_path
- lanelet2_map_metadata_path [default: '']
- lanelet2_map_topic [default: vector_map]
- lanelet2_map_marker_topic [default: vector_map_marker]
- launch/pointcloud_map_loader.launch.xml
-
- pointcloud_map_path
- pointcloud_map_metadata_path
- pointcloud_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/pointcloud_map_loader.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_map_loader at Robotics Stack Exchange
Package Summary
| Version | 1.10.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yamato Ando
- Masahiro Sakamoto
- NGUYEN Viet Anh
- Taiki Yamada
Authors
- Ryohsuke Mitsudome
- Koji Minoda
autoware_map_loader package
This package provides the features of loading various maps.
pointcloud_map_loader
Feature
pointcloud_map_loader provides pointcloud maps to the other Autoware nodes in various configurations.
Currently, it supports the following two types:
- Publish raw pointcloud map
- Publish downsampled pointcloud map
- Send partial pointcloud map loading via ROS 2 service
- Send differential pointcloud map loading via ROS 2 service
NOTE: We strongly recommend to use divided maps when using large pointcloud map to enable the latter two features (partial and differential load). Please go through the prerequisites section for more details, and follow the instruction for dividing the map and preparing the metadata.
Prerequisites
Prerequisites on pointcloud map file(s)
You may provide either a single .pcd file or multiple .pcd files. If you are using multiple PCD data, it MUST obey the following rules:
-
The pointcloud map should be projected on the same coordinate defined in
map_projection_loader, in order to be consistent with the lanelet2 map and other packages that converts between local and geodetic coordinates. For more information, please refer to the readme ofmap_projection_loader. - It must be divided by straight lines parallel to the x-axis and y-axis. The system does not support division by diagonal lines or curved lines.
- The division size along each axis should be equal.
- The division size should be about 20m x 20m. Particularly, care should be taken as using too large division size (for example, more than 100m) may have adverse effects on dynamic map loading features in ndt_scan_matcher and autoware_compare_map_segmentation.
- All the split maps should not overlap with each other.
- Metadata file should also be provided. The metadata structure description is provided below.
Metadata structure
The metadata should look like this:
x_resolution: 20.0
y_resolution: 20.0
A.pcd: [1200, 2500] # -> 1200 < x < 1220, 2500 < y < 2520
B.pcd: [1220, 2500] # -> 1220 < x < 1240, 2500 < y < 2520
C.pcd: [1200, 2520] # -> 1200 < x < 1220, 2520 < y < 2540
D.pcd: [1240, 2520] # -> 1240 < x < 1260, 2520 < y < 2540
where,
-
x_resolutionandy_resolution -
A.pcd,B.pcd, etc, are the names of PCD files. - List such as
[1200, 2500]are the values indicate that for this PCD file, x coordinates are between 1200 and 1220 (x_resolution+x_coordinate) and y coordinates are between 2500 and 2520 (y_resolution+y_coordinate).
You may use pointcloud_divider for dividing pointcloud map as well as generating the compatible metadata.yaml.
Directory structure of these files
If you only have one pointcloud map, Autoware will assume the following directory structure by default.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
If you have multiple rosbags, an example directory structure would be as follows. Note that you need to have a metadata when you have multiple pointcloud map files.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
│ ├── A.pcd
│ ├── B.pcd
│ ├── C.pcd
│ └── ...
├── map_projector_info.yaml
└── pointcloud_map_metadata.yaml
Specific features
Publish raw pointcloud map (ROS 2 topic)
The node publishes the raw pointcloud map loaded from the .pcd file(s).
Publish downsampled pointcloud map (ROS 2 topic)
The node publishes the downsampled pointcloud map loaded from the .pcd file(s). You can specify the downsample resolution by changing the leaf_size parameter.
Publish metadata of pointcloud map (ROS 2 topic)
The node publishes the pointcloud metadata attached with an ID. Metadata is loaded from the .yaml file. Please see the description of PointCloudMapMetaData.msg for details.
Send partial pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
Given a query from a client node, the node sends a set of pointcloud maps that overlaps with the queried area.
Please see the description of GetPartialPointCloudMap.srv for details.
Send differential pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
File truncated at 100 lines see the full file
Changelog for package autoware_map_loader
1.1.0 (2025-05-01)
- feat(component_interface_specs): use template type in get_qos function (#364) Co-authored-by: Yutaka Kondo <<yutaka.kondo@youtalk.jp>>
- feat(map_loader): add the explanation of handling use_waypoints (#342)
- Contributors: Takagi, Isamu, Takayuki Murooka
1.10.0 (2026-09-28)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(map): add node designs for the map nodes (#1413)
* feat(map): add node designs for the map nodes Describe the interfaces, parameters and processes of the pointcloud and lanelet2 map loaders, the map hash generator, the lanelet2 map visualizer and the map projection loader as system design node files.
- fix(map): correct description formatting in Lanelet2MapLoader.node.yaml
* refactor(map): rename node designs to match the node class names PointCloudMapLoader and Lanelet2MapVisualization follow the entity naming convention derived from the C++ class names, as in #1335.
* fix(map): declare the MapHashGenerator external API interfaces as remap targets The map hash publisher and the lanelet XML server carry the fixed API names as remap_target, so a system design connects them like any other port and the launcher remaps the node-side names.
* fix(map): update description for map_projector_info to clarify its purpose ---------
-
fix(map): declare the dependencies these packages use (#1370) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers.
-
fix(autoware_map_loader): use CMake targets and portable logging (#1270)
* Use CMake targets and portable integer logging in autoware_map_loader This upstreams RoboStack downstream patch [patch/ros-rolling-autoware-map-loader.osx.patch]{.title-ref}. Best-guess rationale: linking to yaml-cpp and fmt through imported targets is more robust across package managers, and portable PRIu64 logging avoids uint64_t format mismatches on platforms where unsigned long and unsigned long long differ.
- style(pre-commit): autofix
* Support old fmt target Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>> ---------Co-authored-by: Daisuke Nishimatsu <<nishimarudai@gmail.com>> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>> Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>>
-
fix(autoware_map_loader): always publish the pointcloud map metadata (#1316) [output/pointcloud_map_metadata]{.title-ref} was only advertised when [enable_selected_load]{.title-ref} was true, even though the metadata dict it is built from is always available and the differential map loader that serves the map is created unconditionally. A deployment that delivers the PCD map through the differential/partial services sets [enable_whole_load: false]{.title-ref}, which retires [/map/pointcloud_map]{.title-ref}. Such a deployment was then left with no topic proving the map module had loaded its map: the map component's topic monitor watches a topic nobody publishes, reports [NotReceived]{.title-ref} (checked before any rate/timeout threshold, so the zeroed thresholds do not matter), and the map module stays in ERROR for the whole run. Publish the latched metadata as soon as the PCD metadata is parsed, so it is the delivery-independent evidence that the map is loaded and servable. This makes [enable_selected_load]{.title-ref} govern only the selected-load service, as its name says. The new launch test pins the regression: with [enable_whole_load]{.title-ref} and [enable_selected_load]{.title-ref} both false, the metadata must still arrive on a transient-local subscription, and [output/pointcloud_map]{.title-ref} must stay unadvertised.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/lanelet2_map_loader.launch.xml
-
- lanelet2_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/lanelet2_map_loader.param.yaml]
- lanelet2_map_path
- lanelet2_map_metadata_path [default: '']
- lanelet2_map_topic [default: vector_map]
- lanelet2_map_marker_topic [default: vector_map_marker]
- launch/pointcloud_map_loader.launch.xml
-
- pointcloud_map_path
- pointcloud_map_metadata_path
- pointcloud_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/pointcloud_map_loader.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_map_loader at Robotics Stack Exchange
Package Summary
| Version | 1.10.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yamato Ando
- Masahiro Sakamoto
- NGUYEN Viet Anh
- Taiki Yamada
Authors
- Ryohsuke Mitsudome
- Koji Minoda
autoware_map_loader package
This package provides the features of loading various maps.
pointcloud_map_loader
Feature
pointcloud_map_loader provides pointcloud maps to the other Autoware nodes in various configurations.
Currently, it supports the following two types:
- Publish raw pointcloud map
- Publish downsampled pointcloud map
- Send partial pointcloud map loading via ROS 2 service
- Send differential pointcloud map loading via ROS 2 service
NOTE: We strongly recommend to use divided maps when using large pointcloud map to enable the latter two features (partial and differential load). Please go through the prerequisites section for more details, and follow the instruction for dividing the map and preparing the metadata.
Prerequisites
Prerequisites on pointcloud map file(s)
You may provide either a single .pcd file or multiple .pcd files. If you are using multiple PCD data, it MUST obey the following rules:
-
The pointcloud map should be projected on the same coordinate defined in
map_projection_loader, in order to be consistent with the lanelet2 map and other packages that converts between local and geodetic coordinates. For more information, please refer to the readme ofmap_projection_loader. - It must be divided by straight lines parallel to the x-axis and y-axis. The system does not support division by diagonal lines or curved lines.
- The division size along each axis should be equal.
- The division size should be about 20m x 20m. Particularly, care should be taken as using too large division size (for example, more than 100m) may have adverse effects on dynamic map loading features in ndt_scan_matcher and autoware_compare_map_segmentation.
- All the split maps should not overlap with each other.
- Metadata file should also be provided. The metadata structure description is provided below.
Metadata structure
The metadata should look like this:
x_resolution: 20.0
y_resolution: 20.0
A.pcd: [1200, 2500] # -> 1200 < x < 1220, 2500 < y < 2520
B.pcd: [1220, 2500] # -> 1220 < x < 1240, 2500 < y < 2520
C.pcd: [1200, 2520] # -> 1200 < x < 1220, 2520 < y < 2540
D.pcd: [1240, 2520] # -> 1240 < x < 1260, 2520 < y < 2540
where,
-
x_resolutionandy_resolution -
A.pcd,B.pcd, etc, are the names of PCD files. - List such as
[1200, 2500]are the values indicate that for this PCD file, x coordinates are between 1200 and 1220 (x_resolution+x_coordinate) and y coordinates are between 2500 and 2520 (y_resolution+y_coordinate).
You may use pointcloud_divider for dividing pointcloud map as well as generating the compatible metadata.yaml.
Directory structure of these files
If you only have one pointcloud map, Autoware will assume the following directory structure by default.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
If you have multiple rosbags, an example directory structure would be as follows. Note that you need to have a metadata when you have multiple pointcloud map files.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
│ ├── A.pcd
│ ├── B.pcd
│ ├── C.pcd
│ └── ...
├── map_projector_info.yaml
└── pointcloud_map_metadata.yaml
Specific features
Publish raw pointcloud map (ROS 2 topic)
The node publishes the raw pointcloud map loaded from the .pcd file(s).
Publish downsampled pointcloud map (ROS 2 topic)
The node publishes the downsampled pointcloud map loaded from the .pcd file(s). You can specify the downsample resolution by changing the leaf_size parameter.
Publish metadata of pointcloud map (ROS 2 topic)
The node publishes the pointcloud metadata attached with an ID. Metadata is loaded from the .yaml file. Please see the description of PointCloudMapMetaData.msg for details.
Send partial pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
Given a query from a client node, the node sends a set of pointcloud maps that overlaps with the queried area.
Please see the description of GetPartialPointCloudMap.srv for details.
Send differential pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
File truncated at 100 lines see the full file
Changelog for package autoware_map_loader
1.1.0 (2025-05-01)
- feat(component_interface_specs): use template type in get_qos function (#364) Co-authored-by: Yutaka Kondo <<yutaka.kondo@youtalk.jp>>
- feat(map_loader): add the explanation of handling use_waypoints (#342)
- Contributors: Takagi, Isamu, Takayuki Murooka
1.10.0 (2026-09-28)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(map): add node designs for the map nodes (#1413)
* feat(map): add node designs for the map nodes Describe the interfaces, parameters and processes of the pointcloud and lanelet2 map loaders, the map hash generator, the lanelet2 map visualizer and the map projection loader as system design node files.
- fix(map): correct description formatting in Lanelet2MapLoader.node.yaml
* refactor(map): rename node designs to match the node class names PointCloudMapLoader and Lanelet2MapVisualization follow the entity naming convention derived from the C++ class names, as in #1335.
* fix(map): declare the MapHashGenerator external API interfaces as remap targets The map hash publisher and the lanelet XML server carry the fixed API names as remap_target, so a system design connects them like any other port and the launcher remaps the node-side names.
* fix(map): update description for map_projector_info to clarify its purpose ---------
-
fix(map): declare the dependencies these packages use (#1370) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers.
-
fix(autoware_map_loader): use CMake targets and portable logging (#1270)
* Use CMake targets and portable integer logging in autoware_map_loader This upstreams RoboStack downstream patch [patch/ros-rolling-autoware-map-loader.osx.patch]{.title-ref}. Best-guess rationale: linking to yaml-cpp and fmt through imported targets is more robust across package managers, and portable PRIu64 logging avoids uint64_t format mismatches on platforms where unsigned long and unsigned long long differ.
- style(pre-commit): autofix
* Support old fmt target Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>> ---------Co-authored-by: Daisuke Nishimatsu <<nishimarudai@gmail.com>> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>> Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>>
-
fix(autoware_map_loader): always publish the pointcloud map metadata (#1316) [output/pointcloud_map_metadata]{.title-ref} was only advertised when [enable_selected_load]{.title-ref} was true, even though the metadata dict it is built from is always available and the differential map loader that serves the map is created unconditionally. A deployment that delivers the PCD map through the differential/partial services sets [enable_whole_load: false]{.title-ref}, which retires [/map/pointcloud_map]{.title-ref}. Such a deployment was then left with no topic proving the map module had loaded its map: the map component's topic monitor watches a topic nobody publishes, reports [NotReceived]{.title-ref} (checked before any rate/timeout threshold, so the zeroed thresholds do not matter), and the map module stays in ERROR for the whole run. Publish the latched metadata as soon as the PCD metadata is parsed, so it is the delivery-independent evidence that the map is loaded and servable. This makes [enable_selected_load]{.title-ref} govern only the selected-load service, as its name says. The new launch test pins the regression: with [enable_whole_load]{.title-ref} and [enable_selected_load]{.title-ref} both false, the metadata must still arrive on a transient-local subscription, and [output/pointcloud_map]{.title-ref} must stay unadvertised.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/lanelet2_map_loader.launch.xml
-
- lanelet2_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/lanelet2_map_loader.param.yaml]
- lanelet2_map_path
- lanelet2_map_metadata_path [default: '']
- lanelet2_map_topic [default: vector_map]
- lanelet2_map_marker_topic [default: vector_map_marker]
- launch/pointcloud_map_loader.launch.xml
-
- pointcloud_map_path
- pointcloud_map_metadata_path
- pointcloud_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/pointcloud_map_loader.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_map_loader at Robotics Stack Exchange
Package Summary
| Version | 1.10.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yamato Ando
- Masahiro Sakamoto
- NGUYEN Viet Anh
- Taiki Yamada
Authors
- Ryohsuke Mitsudome
- Koji Minoda
autoware_map_loader package
This package provides the features of loading various maps.
pointcloud_map_loader
Feature
pointcloud_map_loader provides pointcloud maps to the other Autoware nodes in various configurations.
Currently, it supports the following two types:
- Publish raw pointcloud map
- Publish downsampled pointcloud map
- Send partial pointcloud map loading via ROS 2 service
- Send differential pointcloud map loading via ROS 2 service
NOTE: We strongly recommend to use divided maps when using large pointcloud map to enable the latter two features (partial and differential load). Please go through the prerequisites section for more details, and follow the instruction for dividing the map and preparing the metadata.
Prerequisites
Prerequisites on pointcloud map file(s)
You may provide either a single .pcd file or multiple .pcd files. If you are using multiple PCD data, it MUST obey the following rules:
-
The pointcloud map should be projected on the same coordinate defined in
map_projection_loader, in order to be consistent with the lanelet2 map and other packages that converts between local and geodetic coordinates. For more information, please refer to the readme ofmap_projection_loader. - It must be divided by straight lines parallel to the x-axis and y-axis. The system does not support division by diagonal lines or curved lines.
- The division size along each axis should be equal.
- The division size should be about 20m x 20m. Particularly, care should be taken as using too large division size (for example, more than 100m) may have adverse effects on dynamic map loading features in ndt_scan_matcher and autoware_compare_map_segmentation.
- All the split maps should not overlap with each other.
- Metadata file should also be provided. The metadata structure description is provided below.
Metadata structure
The metadata should look like this:
x_resolution: 20.0
y_resolution: 20.0
A.pcd: [1200, 2500] # -> 1200 < x < 1220, 2500 < y < 2520
B.pcd: [1220, 2500] # -> 1220 < x < 1240, 2500 < y < 2520
C.pcd: [1200, 2520] # -> 1200 < x < 1220, 2520 < y < 2540
D.pcd: [1240, 2520] # -> 1240 < x < 1260, 2520 < y < 2540
where,
-
x_resolutionandy_resolution -
A.pcd,B.pcd, etc, are the names of PCD files. - List such as
[1200, 2500]are the values indicate that for this PCD file, x coordinates are between 1200 and 1220 (x_resolution+x_coordinate) and y coordinates are between 2500 and 2520 (y_resolution+y_coordinate).
You may use pointcloud_divider for dividing pointcloud map as well as generating the compatible metadata.yaml.
Directory structure of these files
If you only have one pointcloud map, Autoware will assume the following directory structure by default.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
If you have multiple rosbags, an example directory structure would be as follows. Note that you need to have a metadata when you have multiple pointcloud map files.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
│ ├── A.pcd
│ ├── B.pcd
│ ├── C.pcd
│ └── ...
├── map_projector_info.yaml
└── pointcloud_map_metadata.yaml
Specific features
Publish raw pointcloud map (ROS 2 topic)
The node publishes the raw pointcloud map loaded from the .pcd file(s).
Publish downsampled pointcloud map (ROS 2 topic)
The node publishes the downsampled pointcloud map loaded from the .pcd file(s). You can specify the downsample resolution by changing the leaf_size parameter.
Publish metadata of pointcloud map (ROS 2 topic)
The node publishes the pointcloud metadata attached with an ID. Metadata is loaded from the .yaml file. Please see the description of PointCloudMapMetaData.msg for details.
Send partial pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
Given a query from a client node, the node sends a set of pointcloud maps that overlaps with the queried area.
Please see the description of GetPartialPointCloudMap.srv for details.
Send differential pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
File truncated at 100 lines see the full file
Changelog for package autoware_map_loader
1.1.0 (2025-05-01)
- feat(component_interface_specs): use template type in get_qos function (#364) Co-authored-by: Yutaka Kondo <<yutaka.kondo@youtalk.jp>>
- feat(map_loader): add the explanation of handling use_waypoints (#342)
- Contributors: Takagi, Isamu, Takayuki Murooka
1.10.0 (2026-09-28)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(map): add node designs for the map nodes (#1413)
* feat(map): add node designs for the map nodes Describe the interfaces, parameters and processes of the pointcloud and lanelet2 map loaders, the map hash generator, the lanelet2 map visualizer and the map projection loader as system design node files.
- fix(map): correct description formatting in Lanelet2MapLoader.node.yaml
* refactor(map): rename node designs to match the node class names PointCloudMapLoader and Lanelet2MapVisualization follow the entity naming convention derived from the C++ class names, as in #1335.
* fix(map): declare the MapHashGenerator external API interfaces as remap targets The map hash publisher and the lanelet XML server carry the fixed API names as remap_target, so a system design connects them like any other port and the launcher remaps the node-side names.
* fix(map): update description for map_projector_info to clarify its purpose ---------
-
fix(map): declare the dependencies these packages use (#1370) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers.
-
fix(autoware_map_loader): use CMake targets and portable logging (#1270)
* Use CMake targets and portable integer logging in autoware_map_loader This upstreams RoboStack downstream patch [patch/ros-rolling-autoware-map-loader.osx.patch]{.title-ref}. Best-guess rationale: linking to yaml-cpp and fmt through imported targets is more robust across package managers, and portable PRIu64 logging avoids uint64_t format mismatches on platforms where unsigned long and unsigned long long differ.
- style(pre-commit): autofix
* Support old fmt target Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>> ---------Co-authored-by: Daisuke Nishimatsu <<nishimarudai@gmail.com>> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>> Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>>
-
fix(autoware_map_loader): always publish the pointcloud map metadata (#1316) [output/pointcloud_map_metadata]{.title-ref} was only advertised when [enable_selected_load]{.title-ref} was true, even though the metadata dict it is built from is always available and the differential map loader that serves the map is created unconditionally. A deployment that delivers the PCD map through the differential/partial services sets [enable_whole_load: false]{.title-ref}, which retires [/map/pointcloud_map]{.title-ref}. Such a deployment was then left with no topic proving the map module had loaded its map: the map component's topic monitor watches a topic nobody publishes, reports [NotReceived]{.title-ref} (checked before any rate/timeout threshold, so the zeroed thresholds do not matter), and the map module stays in ERROR for the whole run. Publish the latched metadata as soon as the PCD metadata is parsed, so it is the delivery-independent evidence that the map is loaded and servable. This makes [enable_selected_load]{.title-ref} govern only the selected-load service, as its name says. The new launch test pins the regression: with [enable_whole_load]{.title-ref} and [enable_selected_load]{.title-ref} both false, the metadata must still arrive on a transient-local subscription, and [output/pointcloud_map]{.title-ref} must stay unadvertised.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/lanelet2_map_loader.launch.xml
-
- lanelet2_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/lanelet2_map_loader.param.yaml]
- lanelet2_map_path
- lanelet2_map_metadata_path [default: '']
- lanelet2_map_topic [default: vector_map]
- lanelet2_map_marker_topic [default: vector_map_marker]
- launch/pointcloud_map_loader.launch.xml
-
- pointcloud_map_path
- pointcloud_map_metadata_path
- pointcloud_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/pointcloud_map_loader.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_map_loader at Robotics Stack Exchange
Package Summary
| Version | 1.10.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yamato Ando
- Masahiro Sakamoto
- NGUYEN Viet Anh
- Taiki Yamada
Authors
- Ryohsuke Mitsudome
- Koji Minoda
autoware_map_loader package
This package provides the features of loading various maps.
pointcloud_map_loader
Feature
pointcloud_map_loader provides pointcloud maps to the other Autoware nodes in various configurations.
Currently, it supports the following two types:
- Publish raw pointcloud map
- Publish downsampled pointcloud map
- Send partial pointcloud map loading via ROS 2 service
- Send differential pointcloud map loading via ROS 2 service
NOTE: We strongly recommend to use divided maps when using large pointcloud map to enable the latter two features (partial and differential load). Please go through the prerequisites section for more details, and follow the instruction for dividing the map and preparing the metadata.
Prerequisites
Prerequisites on pointcloud map file(s)
You may provide either a single .pcd file or multiple .pcd files. If you are using multiple PCD data, it MUST obey the following rules:
-
The pointcloud map should be projected on the same coordinate defined in
map_projection_loader, in order to be consistent with the lanelet2 map and other packages that converts between local and geodetic coordinates. For more information, please refer to the readme ofmap_projection_loader. - It must be divided by straight lines parallel to the x-axis and y-axis. The system does not support division by diagonal lines or curved lines.
- The division size along each axis should be equal.
- The division size should be about 20m x 20m. Particularly, care should be taken as using too large division size (for example, more than 100m) may have adverse effects on dynamic map loading features in ndt_scan_matcher and autoware_compare_map_segmentation.
- All the split maps should not overlap with each other.
- Metadata file should also be provided. The metadata structure description is provided below.
Metadata structure
The metadata should look like this:
x_resolution: 20.0
y_resolution: 20.0
A.pcd: [1200, 2500] # -> 1200 < x < 1220, 2500 < y < 2520
B.pcd: [1220, 2500] # -> 1220 < x < 1240, 2500 < y < 2520
C.pcd: [1200, 2520] # -> 1200 < x < 1220, 2520 < y < 2540
D.pcd: [1240, 2520] # -> 1240 < x < 1260, 2520 < y < 2540
where,
-
x_resolutionandy_resolution -
A.pcd,B.pcd, etc, are the names of PCD files. - List such as
[1200, 2500]are the values indicate that for this PCD file, x coordinates are between 1200 and 1220 (x_resolution+x_coordinate) and y coordinates are between 2500 and 2520 (y_resolution+y_coordinate).
You may use pointcloud_divider for dividing pointcloud map as well as generating the compatible metadata.yaml.
Directory structure of these files
If you only have one pointcloud map, Autoware will assume the following directory structure by default.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
If you have multiple rosbags, an example directory structure would be as follows. Note that you need to have a metadata when you have multiple pointcloud map files.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
│ ├── A.pcd
│ ├── B.pcd
│ ├── C.pcd
│ └── ...
├── map_projector_info.yaml
└── pointcloud_map_metadata.yaml
Specific features
Publish raw pointcloud map (ROS 2 topic)
The node publishes the raw pointcloud map loaded from the .pcd file(s).
Publish downsampled pointcloud map (ROS 2 topic)
The node publishes the downsampled pointcloud map loaded from the .pcd file(s). You can specify the downsample resolution by changing the leaf_size parameter.
Publish metadata of pointcloud map (ROS 2 topic)
The node publishes the pointcloud metadata attached with an ID. Metadata is loaded from the .yaml file. Please see the description of PointCloudMapMetaData.msg for details.
Send partial pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
Given a query from a client node, the node sends a set of pointcloud maps that overlaps with the queried area.
Please see the description of GetPartialPointCloudMap.srv for details.
Send differential pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
File truncated at 100 lines see the full file
Changelog for package autoware_map_loader
1.1.0 (2025-05-01)
- feat(component_interface_specs): use template type in get_qos function (#364) Co-authored-by: Yutaka Kondo <<yutaka.kondo@youtalk.jp>>
- feat(map_loader): add the explanation of handling use_waypoints (#342)
- Contributors: Takagi, Isamu, Takayuki Murooka
1.10.0 (2026-09-28)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(map): add node designs for the map nodes (#1413)
* feat(map): add node designs for the map nodes Describe the interfaces, parameters and processes of the pointcloud and lanelet2 map loaders, the map hash generator, the lanelet2 map visualizer and the map projection loader as system design node files.
- fix(map): correct description formatting in Lanelet2MapLoader.node.yaml
* refactor(map): rename node designs to match the node class names PointCloudMapLoader and Lanelet2MapVisualization follow the entity naming convention derived from the C++ class names, as in #1335.
* fix(map): declare the MapHashGenerator external API interfaces as remap targets The map hash publisher and the lanelet XML server carry the fixed API names as remap_target, so a system design connects them like any other port and the launcher remaps the node-side names.
* fix(map): update description for map_projector_info to clarify its purpose ---------
-
fix(map): declare the dependencies these packages use (#1370) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers.
-
fix(autoware_map_loader): use CMake targets and portable logging (#1270)
* Use CMake targets and portable integer logging in autoware_map_loader This upstreams RoboStack downstream patch [patch/ros-rolling-autoware-map-loader.osx.patch]{.title-ref}. Best-guess rationale: linking to yaml-cpp and fmt through imported targets is more robust across package managers, and portable PRIu64 logging avoids uint64_t format mismatches on platforms where unsigned long and unsigned long long differ.
- style(pre-commit): autofix
* Support old fmt target Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>> ---------Co-authored-by: Daisuke Nishimatsu <<nishimarudai@gmail.com>> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>> Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>>
-
fix(autoware_map_loader): always publish the pointcloud map metadata (#1316) [output/pointcloud_map_metadata]{.title-ref} was only advertised when [enable_selected_load]{.title-ref} was true, even though the metadata dict it is built from is always available and the differential map loader that serves the map is created unconditionally. A deployment that delivers the PCD map through the differential/partial services sets [enable_whole_load: false]{.title-ref}, which retires [/map/pointcloud_map]{.title-ref}. Such a deployment was then left with no topic proving the map module had loaded its map: the map component's topic monitor watches a topic nobody publishes, reports [NotReceived]{.title-ref} (checked before any rate/timeout threshold, so the zeroed thresholds do not matter), and the map module stays in ERROR for the whole run. Publish the latched metadata as soon as the PCD metadata is parsed, so it is the delivery-independent evidence that the map is loaded and servable. This makes [enable_selected_load]{.title-ref} govern only the selected-load service, as its name says. The new launch test pins the regression: with [enable_whole_load]{.title-ref} and [enable_selected_load]{.title-ref} both false, the metadata must still arrive on a transient-local subscription, and [output/pointcloud_map]{.title-ref} must stay unadvertised.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/lanelet2_map_loader.launch.xml
-
- lanelet2_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/lanelet2_map_loader.param.yaml]
- lanelet2_map_path
- lanelet2_map_metadata_path [default: '']
- lanelet2_map_topic [default: vector_map]
- lanelet2_map_marker_topic [default: vector_map_marker]
- launch/pointcloud_map_loader.launch.xml
-
- pointcloud_map_path
- pointcloud_map_metadata_path
- pointcloud_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/pointcloud_map_loader.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_map_loader at Robotics Stack Exchange
Package Summary
| Version | 1.10.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yamato Ando
- Masahiro Sakamoto
- NGUYEN Viet Anh
- Taiki Yamada
Authors
- Ryohsuke Mitsudome
- Koji Minoda
autoware_map_loader package
This package provides the features of loading various maps.
pointcloud_map_loader
Feature
pointcloud_map_loader provides pointcloud maps to the other Autoware nodes in various configurations.
Currently, it supports the following two types:
- Publish raw pointcloud map
- Publish downsampled pointcloud map
- Send partial pointcloud map loading via ROS 2 service
- Send differential pointcloud map loading via ROS 2 service
NOTE: We strongly recommend to use divided maps when using large pointcloud map to enable the latter two features (partial and differential load). Please go through the prerequisites section for more details, and follow the instruction for dividing the map and preparing the metadata.
Prerequisites
Prerequisites on pointcloud map file(s)
You may provide either a single .pcd file or multiple .pcd files. If you are using multiple PCD data, it MUST obey the following rules:
-
The pointcloud map should be projected on the same coordinate defined in
map_projection_loader, in order to be consistent with the lanelet2 map and other packages that converts between local and geodetic coordinates. For more information, please refer to the readme ofmap_projection_loader. - It must be divided by straight lines parallel to the x-axis and y-axis. The system does not support division by diagonal lines or curved lines.
- The division size along each axis should be equal.
- The division size should be about 20m x 20m. Particularly, care should be taken as using too large division size (for example, more than 100m) may have adverse effects on dynamic map loading features in ndt_scan_matcher and autoware_compare_map_segmentation.
- All the split maps should not overlap with each other.
- Metadata file should also be provided. The metadata structure description is provided below.
Metadata structure
The metadata should look like this:
x_resolution: 20.0
y_resolution: 20.0
A.pcd: [1200, 2500] # -> 1200 < x < 1220, 2500 < y < 2520
B.pcd: [1220, 2500] # -> 1220 < x < 1240, 2500 < y < 2520
C.pcd: [1200, 2520] # -> 1200 < x < 1220, 2520 < y < 2540
D.pcd: [1240, 2520] # -> 1240 < x < 1260, 2520 < y < 2540
where,
-
x_resolutionandy_resolution -
A.pcd,B.pcd, etc, are the names of PCD files. - List such as
[1200, 2500]are the values indicate that for this PCD file, x coordinates are between 1200 and 1220 (x_resolution+x_coordinate) and y coordinates are between 2500 and 2520 (y_resolution+y_coordinate).
You may use pointcloud_divider for dividing pointcloud map as well as generating the compatible metadata.yaml.
Directory structure of these files
If you only have one pointcloud map, Autoware will assume the following directory structure by default.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
If you have multiple rosbags, an example directory structure would be as follows. Note that you need to have a metadata when you have multiple pointcloud map files.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
│ ├── A.pcd
│ ├── B.pcd
│ ├── C.pcd
│ └── ...
├── map_projector_info.yaml
└── pointcloud_map_metadata.yaml
Specific features
Publish raw pointcloud map (ROS 2 topic)
The node publishes the raw pointcloud map loaded from the .pcd file(s).
Publish downsampled pointcloud map (ROS 2 topic)
The node publishes the downsampled pointcloud map loaded from the .pcd file(s). You can specify the downsample resolution by changing the leaf_size parameter.
Publish metadata of pointcloud map (ROS 2 topic)
The node publishes the pointcloud metadata attached with an ID. Metadata is loaded from the .yaml file. Please see the description of PointCloudMapMetaData.msg for details.
Send partial pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
Given a query from a client node, the node sends a set of pointcloud maps that overlaps with the queried area.
Please see the description of GetPartialPointCloudMap.srv for details.
Send differential pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
File truncated at 100 lines see the full file
Changelog for package autoware_map_loader
1.1.0 (2025-05-01)
- feat(component_interface_specs): use template type in get_qos function (#364) Co-authored-by: Yutaka Kondo <<yutaka.kondo@youtalk.jp>>
- feat(map_loader): add the explanation of handling use_waypoints (#342)
- Contributors: Takagi, Isamu, Takayuki Murooka
1.10.0 (2026-09-28)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(map): add node designs for the map nodes (#1413)
* feat(map): add node designs for the map nodes Describe the interfaces, parameters and processes of the pointcloud and lanelet2 map loaders, the map hash generator, the lanelet2 map visualizer and the map projection loader as system design node files.
- fix(map): correct description formatting in Lanelet2MapLoader.node.yaml
* refactor(map): rename node designs to match the node class names PointCloudMapLoader and Lanelet2MapVisualization follow the entity naming convention derived from the C++ class names, as in #1335.
* fix(map): declare the MapHashGenerator external API interfaces as remap targets The map hash publisher and the lanelet XML server carry the fixed API names as remap_target, so a system design connects them like any other port and the launcher remaps the node-side names.
* fix(map): update description for map_projector_info to clarify its purpose ---------
-
fix(map): declare the dependencies these packages use (#1370) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers.
-
fix(autoware_map_loader): use CMake targets and portable logging (#1270)
* Use CMake targets and portable integer logging in autoware_map_loader This upstreams RoboStack downstream patch [patch/ros-rolling-autoware-map-loader.osx.patch]{.title-ref}. Best-guess rationale: linking to yaml-cpp and fmt through imported targets is more robust across package managers, and portable PRIu64 logging avoids uint64_t format mismatches on platforms where unsigned long and unsigned long long differ.
- style(pre-commit): autofix
* Support old fmt target Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>> ---------Co-authored-by: Daisuke Nishimatsu <<nishimarudai@gmail.com>> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>> Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>>
-
fix(autoware_map_loader): always publish the pointcloud map metadata (#1316) [output/pointcloud_map_metadata]{.title-ref} was only advertised when [enable_selected_load]{.title-ref} was true, even though the metadata dict it is built from is always available and the differential map loader that serves the map is created unconditionally. A deployment that delivers the PCD map through the differential/partial services sets [enable_whole_load: false]{.title-ref}, which retires [/map/pointcloud_map]{.title-ref}. Such a deployment was then left with no topic proving the map module had loaded its map: the map component's topic monitor watches a topic nobody publishes, reports [NotReceived]{.title-ref} (checked before any rate/timeout threshold, so the zeroed thresholds do not matter), and the map module stays in ERROR for the whole run. Publish the latched metadata as soon as the PCD metadata is parsed, so it is the delivery-independent evidence that the map is loaded and servable. This makes [enable_selected_load]{.title-ref} govern only the selected-load service, as its name says. The new launch test pins the regression: with [enable_whole_load]{.title-ref} and [enable_selected_load]{.title-ref} both false, the metadata must still arrive on a transient-local subscription, and [output/pointcloud_map]{.title-ref} must stay unadvertised.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/lanelet2_map_loader.launch.xml
-
- lanelet2_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/lanelet2_map_loader.param.yaml]
- lanelet2_map_path
- lanelet2_map_metadata_path [default: '']
- lanelet2_map_topic [default: vector_map]
- lanelet2_map_marker_topic [default: vector_map_marker]
- launch/pointcloud_map_loader.launch.xml
-
- pointcloud_map_path
- pointcloud_map_metadata_path
- pointcloud_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/pointcloud_map_loader.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_map_loader at Robotics Stack Exchange
Package Summary
| Version | 1.10.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yamato Ando
- Masahiro Sakamoto
- NGUYEN Viet Anh
- Taiki Yamada
Authors
- Ryohsuke Mitsudome
- Koji Minoda
autoware_map_loader package
This package provides the features of loading various maps.
pointcloud_map_loader
Feature
pointcloud_map_loader provides pointcloud maps to the other Autoware nodes in various configurations.
Currently, it supports the following two types:
- Publish raw pointcloud map
- Publish downsampled pointcloud map
- Send partial pointcloud map loading via ROS 2 service
- Send differential pointcloud map loading via ROS 2 service
NOTE: We strongly recommend to use divided maps when using large pointcloud map to enable the latter two features (partial and differential load). Please go through the prerequisites section for more details, and follow the instruction for dividing the map and preparing the metadata.
Prerequisites
Prerequisites on pointcloud map file(s)
You may provide either a single .pcd file or multiple .pcd files. If you are using multiple PCD data, it MUST obey the following rules:
-
The pointcloud map should be projected on the same coordinate defined in
map_projection_loader, in order to be consistent with the lanelet2 map and other packages that converts between local and geodetic coordinates. For more information, please refer to the readme ofmap_projection_loader. - It must be divided by straight lines parallel to the x-axis and y-axis. The system does not support division by diagonal lines or curved lines.
- The division size along each axis should be equal.
- The division size should be about 20m x 20m. Particularly, care should be taken as using too large division size (for example, more than 100m) may have adverse effects on dynamic map loading features in ndt_scan_matcher and autoware_compare_map_segmentation.
- All the split maps should not overlap with each other.
- Metadata file should also be provided. The metadata structure description is provided below.
Metadata structure
The metadata should look like this:
x_resolution: 20.0
y_resolution: 20.0
A.pcd: [1200, 2500] # -> 1200 < x < 1220, 2500 < y < 2520
B.pcd: [1220, 2500] # -> 1220 < x < 1240, 2500 < y < 2520
C.pcd: [1200, 2520] # -> 1200 < x < 1220, 2520 < y < 2540
D.pcd: [1240, 2520] # -> 1240 < x < 1260, 2520 < y < 2540
where,
-
x_resolutionandy_resolution -
A.pcd,B.pcd, etc, are the names of PCD files. - List such as
[1200, 2500]are the values indicate that for this PCD file, x coordinates are between 1200 and 1220 (x_resolution+x_coordinate) and y coordinates are between 2500 and 2520 (y_resolution+y_coordinate).
You may use pointcloud_divider for dividing pointcloud map as well as generating the compatible metadata.yaml.
Directory structure of these files
If you only have one pointcloud map, Autoware will assume the following directory structure by default.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
If you have multiple rosbags, an example directory structure would be as follows. Note that you need to have a metadata when you have multiple pointcloud map files.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
│ ├── A.pcd
│ ├── B.pcd
│ ├── C.pcd
│ └── ...
├── map_projector_info.yaml
└── pointcloud_map_metadata.yaml
Specific features
Publish raw pointcloud map (ROS 2 topic)
The node publishes the raw pointcloud map loaded from the .pcd file(s).
Publish downsampled pointcloud map (ROS 2 topic)
The node publishes the downsampled pointcloud map loaded from the .pcd file(s). You can specify the downsample resolution by changing the leaf_size parameter.
Publish metadata of pointcloud map (ROS 2 topic)
The node publishes the pointcloud metadata attached with an ID. Metadata is loaded from the .yaml file. Please see the description of PointCloudMapMetaData.msg for details.
Send partial pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
Given a query from a client node, the node sends a set of pointcloud maps that overlaps with the queried area.
Please see the description of GetPartialPointCloudMap.srv for details.
Send differential pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
File truncated at 100 lines see the full file
Changelog for package autoware_map_loader
1.1.0 (2025-05-01)
- feat(component_interface_specs): use template type in get_qos function (#364) Co-authored-by: Yutaka Kondo <<yutaka.kondo@youtalk.jp>>
- feat(map_loader): add the explanation of handling use_waypoints (#342)
- Contributors: Takagi, Isamu, Takayuki Murooka
1.10.0 (2026-09-28)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(map): add node designs for the map nodes (#1413)
* feat(map): add node designs for the map nodes Describe the interfaces, parameters and processes of the pointcloud and lanelet2 map loaders, the map hash generator, the lanelet2 map visualizer and the map projection loader as system design node files.
- fix(map): correct description formatting in Lanelet2MapLoader.node.yaml
* refactor(map): rename node designs to match the node class names PointCloudMapLoader and Lanelet2MapVisualization follow the entity naming convention derived from the C++ class names, as in #1335.
* fix(map): declare the MapHashGenerator external API interfaces as remap targets The map hash publisher and the lanelet XML server carry the fixed API names as remap_target, so a system design connects them like any other port and the launcher remaps the node-side names.
* fix(map): update description for map_projector_info to clarify its purpose ---------
-
fix(map): declare the dependencies these packages use (#1370) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers.
-
fix(autoware_map_loader): use CMake targets and portable logging (#1270)
* Use CMake targets and portable integer logging in autoware_map_loader This upstreams RoboStack downstream patch [patch/ros-rolling-autoware-map-loader.osx.patch]{.title-ref}. Best-guess rationale: linking to yaml-cpp and fmt through imported targets is more robust across package managers, and portable PRIu64 logging avoids uint64_t format mismatches on platforms where unsigned long and unsigned long long differ.
- style(pre-commit): autofix
* Support old fmt target Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>> ---------Co-authored-by: Daisuke Nishimatsu <<nishimarudai@gmail.com>> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>> Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>>
-
fix(autoware_map_loader): always publish the pointcloud map metadata (#1316) [output/pointcloud_map_metadata]{.title-ref} was only advertised when [enable_selected_load]{.title-ref} was true, even though the metadata dict it is built from is always available and the differential map loader that serves the map is created unconditionally. A deployment that delivers the PCD map through the differential/partial services sets [enable_whole_load: false]{.title-ref}, which retires [/map/pointcloud_map]{.title-ref}. Such a deployment was then left with no topic proving the map module had loaded its map: the map component's topic monitor watches a topic nobody publishes, reports [NotReceived]{.title-ref} (checked before any rate/timeout threshold, so the zeroed thresholds do not matter), and the map module stays in ERROR for the whole run. Publish the latched metadata as soon as the PCD metadata is parsed, so it is the delivery-independent evidence that the map is loaded and servable. This makes [enable_selected_load]{.title-ref} govern only the selected-load service, as its name says. The new launch test pins the regression: with [enable_whole_load]{.title-ref} and [enable_selected_load]{.title-ref} both false, the metadata must still arrive on a transient-local subscription, and [output/pointcloud_map]{.title-ref} must stay unadvertised.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/lanelet2_map_loader.launch.xml
-
- lanelet2_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/lanelet2_map_loader.param.yaml]
- lanelet2_map_path
- lanelet2_map_metadata_path [default: '']
- lanelet2_map_topic [default: vector_map]
- lanelet2_map_marker_topic [default: vector_map_marker]
- launch/pointcloud_map_loader.launch.xml
-
- pointcloud_map_path
- pointcloud_map_metadata_path
- pointcloud_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/pointcloud_map_loader.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_map_loader at Robotics Stack Exchange
Package Summary
| Version | 1.10.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yamato Ando
- Masahiro Sakamoto
- NGUYEN Viet Anh
- Taiki Yamada
Authors
- Ryohsuke Mitsudome
- Koji Minoda
autoware_map_loader package
This package provides the features of loading various maps.
pointcloud_map_loader
Feature
pointcloud_map_loader provides pointcloud maps to the other Autoware nodes in various configurations.
Currently, it supports the following two types:
- Publish raw pointcloud map
- Publish downsampled pointcloud map
- Send partial pointcloud map loading via ROS 2 service
- Send differential pointcloud map loading via ROS 2 service
NOTE: We strongly recommend to use divided maps when using large pointcloud map to enable the latter two features (partial and differential load). Please go through the prerequisites section for more details, and follow the instruction for dividing the map and preparing the metadata.
Prerequisites
Prerequisites on pointcloud map file(s)
You may provide either a single .pcd file or multiple .pcd files. If you are using multiple PCD data, it MUST obey the following rules:
-
The pointcloud map should be projected on the same coordinate defined in
map_projection_loader, in order to be consistent with the lanelet2 map and other packages that converts between local and geodetic coordinates. For more information, please refer to the readme ofmap_projection_loader. - It must be divided by straight lines parallel to the x-axis and y-axis. The system does not support division by diagonal lines or curved lines.
- The division size along each axis should be equal.
- The division size should be about 20m x 20m. Particularly, care should be taken as using too large division size (for example, more than 100m) may have adverse effects on dynamic map loading features in ndt_scan_matcher and autoware_compare_map_segmentation.
- All the split maps should not overlap with each other.
- Metadata file should also be provided. The metadata structure description is provided below.
Metadata structure
The metadata should look like this:
x_resolution: 20.0
y_resolution: 20.0
A.pcd: [1200, 2500] # -> 1200 < x < 1220, 2500 < y < 2520
B.pcd: [1220, 2500] # -> 1220 < x < 1240, 2500 < y < 2520
C.pcd: [1200, 2520] # -> 1200 < x < 1220, 2520 < y < 2540
D.pcd: [1240, 2520] # -> 1240 < x < 1260, 2520 < y < 2540
where,
-
x_resolutionandy_resolution -
A.pcd,B.pcd, etc, are the names of PCD files. - List such as
[1200, 2500]are the values indicate that for this PCD file, x coordinates are between 1200 and 1220 (x_resolution+x_coordinate) and y coordinates are between 2500 and 2520 (y_resolution+y_coordinate).
You may use pointcloud_divider for dividing pointcloud map as well as generating the compatible metadata.yaml.
Directory structure of these files
If you only have one pointcloud map, Autoware will assume the following directory structure by default.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
If you have multiple rosbags, an example directory structure would be as follows. Note that you need to have a metadata when you have multiple pointcloud map files.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
│ ├── A.pcd
│ ├── B.pcd
│ ├── C.pcd
│ └── ...
├── map_projector_info.yaml
└── pointcloud_map_metadata.yaml
Specific features
Publish raw pointcloud map (ROS 2 topic)
The node publishes the raw pointcloud map loaded from the .pcd file(s).
Publish downsampled pointcloud map (ROS 2 topic)
The node publishes the downsampled pointcloud map loaded from the .pcd file(s). You can specify the downsample resolution by changing the leaf_size parameter.
Publish metadata of pointcloud map (ROS 2 topic)
The node publishes the pointcloud metadata attached with an ID. Metadata is loaded from the .yaml file. Please see the description of PointCloudMapMetaData.msg for details.
Send partial pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
Given a query from a client node, the node sends a set of pointcloud maps that overlaps with the queried area.
Please see the description of GetPartialPointCloudMap.srv for details.
Send differential pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
File truncated at 100 lines see the full file
Changelog for package autoware_map_loader
1.1.0 (2025-05-01)
- feat(component_interface_specs): use template type in get_qos function (#364) Co-authored-by: Yutaka Kondo <<yutaka.kondo@youtalk.jp>>
- feat(map_loader): add the explanation of handling use_waypoints (#342)
- Contributors: Takagi, Isamu, Takayuki Murooka
1.10.0 (2026-09-28)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(map): add node designs for the map nodes (#1413)
* feat(map): add node designs for the map nodes Describe the interfaces, parameters and processes of the pointcloud and lanelet2 map loaders, the map hash generator, the lanelet2 map visualizer and the map projection loader as system design node files.
- fix(map): correct description formatting in Lanelet2MapLoader.node.yaml
* refactor(map): rename node designs to match the node class names PointCloudMapLoader and Lanelet2MapVisualization follow the entity naming convention derived from the C++ class names, as in #1335.
* fix(map): declare the MapHashGenerator external API interfaces as remap targets The map hash publisher and the lanelet XML server carry the fixed API names as remap_target, so a system design connects them like any other port and the launcher remaps the node-side names.
* fix(map): update description for map_projector_info to clarify its purpose ---------
-
fix(map): declare the dependencies these packages use (#1370) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers.
-
fix(autoware_map_loader): use CMake targets and portable logging (#1270)
* Use CMake targets and portable integer logging in autoware_map_loader This upstreams RoboStack downstream patch [patch/ros-rolling-autoware-map-loader.osx.patch]{.title-ref}. Best-guess rationale: linking to yaml-cpp and fmt through imported targets is more robust across package managers, and portable PRIu64 logging avoids uint64_t format mismatches on platforms where unsigned long and unsigned long long differ.
- style(pre-commit): autofix
* Support old fmt target Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>> ---------Co-authored-by: Daisuke Nishimatsu <<nishimarudai@gmail.com>> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>> Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>>
-
fix(autoware_map_loader): always publish the pointcloud map metadata (#1316) [output/pointcloud_map_metadata]{.title-ref} was only advertised when [enable_selected_load]{.title-ref} was true, even though the metadata dict it is built from is always available and the differential map loader that serves the map is created unconditionally. A deployment that delivers the PCD map through the differential/partial services sets [enable_whole_load: false]{.title-ref}, which retires [/map/pointcloud_map]{.title-ref}. Such a deployment was then left with no topic proving the map module had loaded its map: the map component's topic monitor watches a topic nobody publishes, reports [NotReceived]{.title-ref} (checked before any rate/timeout threshold, so the zeroed thresholds do not matter), and the map module stays in ERROR for the whole run. Publish the latched metadata as soon as the PCD metadata is parsed, so it is the delivery-independent evidence that the map is loaded and servable. This makes [enable_selected_load]{.title-ref} govern only the selected-load service, as its name says. The new launch test pins the regression: with [enable_whole_load]{.title-ref} and [enable_selected_load]{.title-ref} both false, the metadata must still arrive on a transient-local subscription, and [output/pointcloud_map]{.title-ref} must stay unadvertised.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/lanelet2_map_loader.launch.xml
-
- lanelet2_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/lanelet2_map_loader.param.yaml]
- lanelet2_map_path
- lanelet2_map_metadata_path [default: '']
- lanelet2_map_topic [default: vector_map]
- lanelet2_map_marker_topic [default: vector_map_marker]
- launch/pointcloud_map_loader.launch.xml
-
- pointcloud_map_path
- pointcloud_map_metadata_path
- pointcloud_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/pointcloud_map_loader.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_map_loader at Robotics Stack Exchange
Package Summary
| Version | 1.10.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yamato Ando
- Masahiro Sakamoto
- NGUYEN Viet Anh
- Taiki Yamada
Authors
- Ryohsuke Mitsudome
- Koji Minoda
autoware_map_loader package
This package provides the features of loading various maps.
pointcloud_map_loader
Feature
pointcloud_map_loader provides pointcloud maps to the other Autoware nodes in various configurations.
Currently, it supports the following two types:
- Publish raw pointcloud map
- Publish downsampled pointcloud map
- Send partial pointcloud map loading via ROS 2 service
- Send differential pointcloud map loading via ROS 2 service
NOTE: We strongly recommend to use divided maps when using large pointcloud map to enable the latter two features (partial and differential load). Please go through the prerequisites section for more details, and follow the instruction for dividing the map and preparing the metadata.
Prerequisites
Prerequisites on pointcloud map file(s)
You may provide either a single .pcd file or multiple .pcd files. If you are using multiple PCD data, it MUST obey the following rules:
-
The pointcloud map should be projected on the same coordinate defined in
map_projection_loader, in order to be consistent with the lanelet2 map and other packages that converts between local and geodetic coordinates. For more information, please refer to the readme ofmap_projection_loader. - It must be divided by straight lines parallel to the x-axis and y-axis. The system does not support division by diagonal lines or curved lines.
- The division size along each axis should be equal.
- The division size should be about 20m x 20m. Particularly, care should be taken as using too large division size (for example, more than 100m) may have adverse effects on dynamic map loading features in ndt_scan_matcher and autoware_compare_map_segmentation.
- All the split maps should not overlap with each other.
- Metadata file should also be provided. The metadata structure description is provided below.
Metadata structure
The metadata should look like this:
x_resolution: 20.0
y_resolution: 20.0
A.pcd: [1200, 2500] # -> 1200 < x < 1220, 2500 < y < 2520
B.pcd: [1220, 2500] # -> 1220 < x < 1240, 2500 < y < 2520
C.pcd: [1200, 2520] # -> 1200 < x < 1220, 2520 < y < 2540
D.pcd: [1240, 2520] # -> 1240 < x < 1260, 2520 < y < 2540
where,
-
x_resolutionandy_resolution -
A.pcd,B.pcd, etc, are the names of PCD files. - List such as
[1200, 2500]are the values indicate that for this PCD file, x coordinates are between 1200 and 1220 (x_resolution+x_coordinate) and y coordinates are between 2500 and 2520 (y_resolution+y_coordinate).
You may use pointcloud_divider for dividing pointcloud map as well as generating the compatible metadata.yaml.
Directory structure of these files
If you only have one pointcloud map, Autoware will assume the following directory structure by default.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
If you have multiple rosbags, an example directory structure would be as follows. Note that you need to have a metadata when you have multiple pointcloud map files.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
│ ├── A.pcd
│ ├── B.pcd
│ ├── C.pcd
│ └── ...
├── map_projector_info.yaml
└── pointcloud_map_metadata.yaml
Specific features
Publish raw pointcloud map (ROS 2 topic)
The node publishes the raw pointcloud map loaded from the .pcd file(s).
Publish downsampled pointcloud map (ROS 2 topic)
The node publishes the downsampled pointcloud map loaded from the .pcd file(s). You can specify the downsample resolution by changing the leaf_size parameter.
Publish metadata of pointcloud map (ROS 2 topic)
The node publishes the pointcloud metadata attached with an ID. Metadata is loaded from the .yaml file. Please see the description of PointCloudMapMetaData.msg for details.
Send partial pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
Given a query from a client node, the node sends a set of pointcloud maps that overlaps with the queried area.
Please see the description of GetPartialPointCloudMap.srv for details.
Send differential pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
File truncated at 100 lines see the full file
Changelog for package autoware_map_loader
1.1.0 (2025-05-01)
- feat(component_interface_specs): use template type in get_qos function (#364) Co-authored-by: Yutaka Kondo <<yutaka.kondo@youtalk.jp>>
- feat(map_loader): add the explanation of handling use_waypoints (#342)
- Contributors: Takagi, Isamu, Takayuki Murooka
1.10.0 (2026-09-28)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(map): add node designs for the map nodes (#1413)
* feat(map): add node designs for the map nodes Describe the interfaces, parameters and processes of the pointcloud and lanelet2 map loaders, the map hash generator, the lanelet2 map visualizer and the map projection loader as system design node files.
- fix(map): correct description formatting in Lanelet2MapLoader.node.yaml
* refactor(map): rename node designs to match the node class names PointCloudMapLoader and Lanelet2MapVisualization follow the entity naming convention derived from the C++ class names, as in #1335.
* fix(map): declare the MapHashGenerator external API interfaces as remap targets The map hash publisher and the lanelet XML server carry the fixed API names as remap_target, so a system design connects them like any other port and the launcher remaps the node-side names.
* fix(map): update description for map_projector_info to clarify its purpose ---------
-
fix(map): declare the dependencies these packages use (#1370) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers.
-
fix(autoware_map_loader): use CMake targets and portable logging (#1270)
* Use CMake targets and portable integer logging in autoware_map_loader This upstreams RoboStack downstream patch [patch/ros-rolling-autoware-map-loader.osx.patch]{.title-ref}. Best-guess rationale: linking to yaml-cpp and fmt through imported targets is more robust across package managers, and portable PRIu64 logging avoids uint64_t format mismatches on platforms where unsigned long and unsigned long long differ.
- style(pre-commit): autofix
* Support old fmt target Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>> ---------Co-authored-by: Daisuke Nishimatsu <<nishimarudai@gmail.com>> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>> Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>>
-
fix(autoware_map_loader): always publish the pointcloud map metadata (#1316) [output/pointcloud_map_metadata]{.title-ref} was only advertised when [enable_selected_load]{.title-ref} was true, even though the metadata dict it is built from is always available and the differential map loader that serves the map is created unconditionally. A deployment that delivers the PCD map through the differential/partial services sets [enable_whole_load: false]{.title-ref}, which retires [/map/pointcloud_map]{.title-ref}. Such a deployment was then left with no topic proving the map module had loaded its map: the map component's topic monitor watches a topic nobody publishes, reports [NotReceived]{.title-ref} (checked before any rate/timeout threshold, so the zeroed thresholds do not matter), and the map module stays in ERROR for the whole run. Publish the latched metadata as soon as the PCD metadata is parsed, so it is the delivery-independent evidence that the map is loaded and servable. This makes [enable_selected_load]{.title-ref} govern only the selected-load service, as its name says. The new launch test pins the regression: with [enable_whole_load]{.title-ref} and [enable_selected_load]{.title-ref} both false, the metadata must still arrive on a transient-local subscription, and [output/pointcloud_map]{.title-ref} must stay unadvertised.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/lanelet2_map_loader.launch.xml
-
- lanelet2_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/lanelet2_map_loader.param.yaml]
- lanelet2_map_path
- lanelet2_map_metadata_path [default: '']
- lanelet2_map_topic [default: vector_map]
- lanelet2_map_marker_topic [default: vector_map_marker]
- launch/pointcloud_map_loader.launch.xml
-
- pointcloud_map_path
- pointcloud_map_metadata_path
- pointcloud_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/pointcloud_map_loader.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_map_loader at Robotics Stack Exchange
Package Summary
| Version | 1.10.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yamato Ando
- Masahiro Sakamoto
- NGUYEN Viet Anh
- Taiki Yamada
Authors
- Ryohsuke Mitsudome
- Koji Minoda
autoware_map_loader package
This package provides the features of loading various maps.
pointcloud_map_loader
Feature
pointcloud_map_loader provides pointcloud maps to the other Autoware nodes in various configurations.
Currently, it supports the following two types:
- Publish raw pointcloud map
- Publish downsampled pointcloud map
- Send partial pointcloud map loading via ROS 2 service
- Send differential pointcloud map loading via ROS 2 service
NOTE: We strongly recommend to use divided maps when using large pointcloud map to enable the latter two features (partial and differential load). Please go through the prerequisites section for more details, and follow the instruction for dividing the map and preparing the metadata.
Prerequisites
Prerequisites on pointcloud map file(s)
You may provide either a single .pcd file or multiple .pcd files. If you are using multiple PCD data, it MUST obey the following rules:
-
The pointcloud map should be projected on the same coordinate defined in
map_projection_loader, in order to be consistent with the lanelet2 map and other packages that converts between local and geodetic coordinates. For more information, please refer to the readme ofmap_projection_loader. - It must be divided by straight lines parallel to the x-axis and y-axis. The system does not support division by diagonal lines or curved lines.
- The division size along each axis should be equal.
- The division size should be about 20m x 20m. Particularly, care should be taken as using too large division size (for example, more than 100m) may have adverse effects on dynamic map loading features in ndt_scan_matcher and autoware_compare_map_segmentation.
- All the split maps should not overlap with each other.
- Metadata file should also be provided. The metadata structure description is provided below.
Metadata structure
The metadata should look like this:
x_resolution: 20.0
y_resolution: 20.0
A.pcd: [1200, 2500] # -> 1200 < x < 1220, 2500 < y < 2520
B.pcd: [1220, 2500] # -> 1220 < x < 1240, 2500 < y < 2520
C.pcd: [1200, 2520] # -> 1200 < x < 1220, 2520 < y < 2540
D.pcd: [1240, 2520] # -> 1240 < x < 1260, 2520 < y < 2540
where,
-
x_resolutionandy_resolution -
A.pcd,B.pcd, etc, are the names of PCD files. - List such as
[1200, 2500]are the values indicate that for this PCD file, x coordinates are between 1200 and 1220 (x_resolution+x_coordinate) and y coordinates are between 2500 and 2520 (y_resolution+y_coordinate).
You may use pointcloud_divider for dividing pointcloud map as well as generating the compatible metadata.yaml.
Directory structure of these files
If you only have one pointcloud map, Autoware will assume the following directory structure by default.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
If you have multiple rosbags, an example directory structure would be as follows. Note that you need to have a metadata when you have multiple pointcloud map files.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
│ ├── A.pcd
│ ├── B.pcd
│ ├── C.pcd
│ └── ...
├── map_projector_info.yaml
└── pointcloud_map_metadata.yaml
Specific features
Publish raw pointcloud map (ROS 2 topic)
The node publishes the raw pointcloud map loaded from the .pcd file(s).
Publish downsampled pointcloud map (ROS 2 topic)
The node publishes the downsampled pointcloud map loaded from the .pcd file(s). You can specify the downsample resolution by changing the leaf_size parameter.
Publish metadata of pointcloud map (ROS 2 topic)
The node publishes the pointcloud metadata attached with an ID. Metadata is loaded from the .yaml file. Please see the description of PointCloudMapMetaData.msg for details.
Send partial pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
Given a query from a client node, the node sends a set of pointcloud maps that overlaps with the queried area.
Please see the description of GetPartialPointCloudMap.srv for details.
Send differential pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
File truncated at 100 lines see the full file
Changelog for package autoware_map_loader
1.1.0 (2025-05-01)
- feat(component_interface_specs): use template type in get_qos function (#364) Co-authored-by: Yutaka Kondo <<yutaka.kondo@youtalk.jp>>
- feat(map_loader): add the explanation of handling use_waypoints (#342)
- Contributors: Takagi, Isamu, Takayuki Murooka
1.10.0 (2026-09-28)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(map): add node designs for the map nodes (#1413)
* feat(map): add node designs for the map nodes Describe the interfaces, parameters and processes of the pointcloud and lanelet2 map loaders, the map hash generator, the lanelet2 map visualizer and the map projection loader as system design node files.
- fix(map): correct description formatting in Lanelet2MapLoader.node.yaml
* refactor(map): rename node designs to match the node class names PointCloudMapLoader and Lanelet2MapVisualization follow the entity naming convention derived from the C++ class names, as in #1335.
* fix(map): declare the MapHashGenerator external API interfaces as remap targets The map hash publisher and the lanelet XML server carry the fixed API names as remap_target, so a system design connects them like any other port and the launcher remaps the node-side names.
* fix(map): update description for map_projector_info to clarify its purpose ---------
-
fix(map): declare the dependencies these packages use (#1370) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers.
-
fix(autoware_map_loader): use CMake targets and portable logging (#1270)
* Use CMake targets and portable integer logging in autoware_map_loader This upstreams RoboStack downstream patch [patch/ros-rolling-autoware-map-loader.osx.patch]{.title-ref}. Best-guess rationale: linking to yaml-cpp and fmt through imported targets is more robust across package managers, and portable PRIu64 logging avoids uint64_t format mismatches on platforms where unsigned long and unsigned long long differ.
- style(pre-commit): autofix
* Support old fmt target Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>> ---------Co-authored-by: Daisuke Nishimatsu <<nishimarudai@gmail.com>> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>> Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>>
-
fix(autoware_map_loader): always publish the pointcloud map metadata (#1316) [output/pointcloud_map_metadata]{.title-ref} was only advertised when [enable_selected_load]{.title-ref} was true, even though the metadata dict it is built from is always available and the differential map loader that serves the map is created unconditionally. A deployment that delivers the PCD map through the differential/partial services sets [enable_whole_load: false]{.title-ref}, which retires [/map/pointcloud_map]{.title-ref}. Such a deployment was then left with no topic proving the map module had loaded its map: the map component's topic monitor watches a topic nobody publishes, reports [NotReceived]{.title-ref} (checked before any rate/timeout threshold, so the zeroed thresholds do not matter), and the map module stays in ERROR for the whole run. Publish the latched metadata as soon as the PCD metadata is parsed, so it is the delivery-independent evidence that the map is loaded and servable. This makes [enable_selected_load]{.title-ref} govern only the selected-load service, as its name says. The new launch test pins the regression: with [enable_whole_load]{.title-ref} and [enable_selected_load]{.title-ref} both false, the metadata must still arrive on a transient-local subscription, and [output/pointcloud_map]{.title-ref} must stay unadvertised.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/lanelet2_map_loader.launch.xml
-
- lanelet2_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/lanelet2_map_loader.param.yaml]
- lanelet2_map_path
- lanelet2_map_metadata_path [default: '']
- lanelet2_map_topic [default: vector_map]
- lanelet2_map_marker_topic [default: vector_map_marker]
- launch/pointcloud_map_loader.launch.xml
-
- pointcloud_map_path
- pointcloud_map_metadata_path
- pointcloud_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/pointcloud_map_loader.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_map_loader at Robotics Stack Exchange
Package Summary
| Version | 1.10.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yamato Ando
- Masahiro Sakamoto
- NGUYEN Viet Anh
- Taiki Yamada
Authors
- Ryohsuke Mitsudome
- Koji Minoda
autoware_map_loader package
This package provides the features of loading various maps.
pointcloud_map_loader
Feature
pointcloud_map_loader provides pointcloud maps to the other Autoware nodes in various configurations.
Currently, it supports the following two types:
- Publish raw pointcloud map
- Publish downsampled pointcloud map
- Send partial pointcloud map loading via ROS 2 service
- Send differential pointcloud map loading via ROS 2 service
NOTE: We strongly recommend to use divided maps when using large pointcloud map to enable the latter two features (partial and differential load). Please go through the prerequisites section for more details, and follow the instruction for dividing the map and preparing the metadata.
Prerequisites
Prerequisites on pointcloud map file(s)
You may provide either a single .pcd file or multiple .pcd files. If you are using multiple PCD data, it MUST obey the following rules:
-
The pointcloud map should be projected on the same coordinate defined in
map_projection_loader, in order to be consistent with the lanelet2 map and other packages that converts between local and geodetic coordinates. For more information, please refer to the readme ofmap_projection_loader. - It must be divided by straight lines parallel to the x-axis and y-axis. The system does not support division by diagonal lines or curved lines.
- The division size along each axis should be equal.
- The division size should be about 20m x 20m. Particularly, care should be taken as using too large division size (for example, more than 100m) may have adverse effects on dynamic map loading features in ndt_scan_matcher and autoware_compare_map_segmentation.
- All the split maps should not overlap with each other.
- Metadata file should also be provided. The metadata structure description is provided below.
Metadata structure
The metadata should look like this:
x_resolution: 20.0
y_resolution: 20.0
A.pcd: [1200, 2500] # -> 1200 < x < 1220, 2500 < y < 2520
B.pcd: [1220, 2500] # -> 1220 < x < 1240, 2500 < y < 2520
C.pcd: [1200, 2520] # -> 1200 < x < 1220, 2520 < y < 2540
D.pcd: [1240, 2520] # -> 1240 < x < 1260, 2520 < y < 2540
where,
-
x_resolutionandy_resolution -
A.pcd,B.pcd, etc, are the names of PCD files. - List such as
[1200, 2500]are the values indicate that for this PCD file, x coordinates are between 1200 and 1220 (x_resolution+x_coordinate) and y coordinates are between 2500 and 2520 (y_resolution+y_coordinate).
You may use pointcloud_divider for dividing pointcloud map as well as generating the compatible metadata.yaml.
Directory structure of these files
If you only have one pointcloud map, Autoware will assume the following directory structure by default.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
If you have multiple rosbags, an example directory structure would be as follows. Note that you need to have a metadata when you have multiple pointcloud map files.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
│ ├── A.pcd
│ ├── B.pcd
│ ├── C.pcd
│ └── ...
├── map_projector_info.yaml
└── pointcloud_map_metadata.yaml
Specific features
Publish raw pointcloud map (ROS 2 topic)
The node publishes the raw pointcloud map loaded from the .pcd file(s).
Publish downsampled pointcloud map (ROS 2 topic)
The node publishes the downsampled pointcloud map loaded from the .pcd file(s). You can specify the downsample resolution by changing the leaf_size parameter.
Publish metadata of pointcloud map (ROS 2 topic)
The node publishes the pointcloud metadata attached with an ID. Metadata is loaded from the .yaml file. Please see the description of PointCloudMapMetaData.msg for details.
Send partial pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
Given a query from a client node, the node sends a set of pointcloud maps that overlaps with the queried area.
Please see the description of GetPartialPointCloudMap.srv for details.
Send differential pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
File truncated at 100 lines see the full file
Changelog for package autoware_map_loader
1.1.0 (2025-05-01)
- feat(component_interface_specs): use template type in get_qos function (#364) Co-authored-by: Yutaka Kondo <<yutaka.kondo@youtalk.jp>>
- feat(map_loader): add the explanation of handling use_waypoints (#342)
- Contributors: Takagi, Isamu, Takayuki Murooka
1.10.0 (2026-09-28)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(map): add node designs for the map nodes (#1413)
* feat(map): add node designs for the map nodes Describe the interfaces, parameters and processes of the pointcloud and lanelet2 map loaders, the map hash generator, the lanelet2 map visualizer and the map projection loader as system design node files.
- fix(map): correct description formatting in Lanelet2MapLoader.node.yaml
* refactor(map): rename node designs to match the node class names PointCloudMapLoader and Lanelet2MapVisualization follow the entity naming convention derived from the C++ class names, as in #1335.
* fix(map): declare the MapHashGenerator external API interfaces as remap targets The map hash publisher and the lanelet XML server carry the fixed API names as remap_target, so a system design connects them like any other port and the launcher remaps the node-side names.
* fix(map): update description for map_projector_info to clarify its purpose ---------
-
fix(map): declare the dependencies these packages use (#1370) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers.
-
fix(autoware_map_loader): use CMake targets and portable logging (#1270)
* Use CMake targets and portable integer logging in autoware_map_loader This upstreams RoboStack downstream patch [patch/ros-rolling-autoware-map-loader.osx.patch]{.title-ref}. Best-guess rationale: linking to yaml-cpp and fmt through imported targets is more robust across package managers, and portable PRIu64 logging avoids uint64_t format mismatches on platforms where unsigned long and unsigned long long differ.
- style(pre-commit): autofix
* Support old fmt target Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>> ---------Co-authored-by: Daisuke Nishimatsu <<nishimarudai@gmail.com>> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>> Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>>
-
fix(autoware_map_loader): always publish the pointcloud map metadata (#1316) [output/pointcloud_map_metadata]{.title-ref} was only advertised when [enable_selected_load]{.title-ref} was true, even though the metadata dict it is built from is always available and the differential map loader that serves the map is created unconditionally. A deployment that delivers the PCD map through the differential/partial services sets [enable_whole_load: false]{.title-ref}, which retires [/map/pointcloud_map]{.title-ref}. Such a deployment was then left with no topic proving the map module had loaded its map: the map component's topic monitor watches a topic nobody publishes, reports [NotReceived]{.title-ref} (checked before any rate/timeout threshold, so the zeroed thresholds do not matter), and the map module stays in ERROR for the whole run. Publish the latched metadata as soon as the PCD metadata is parsed, so it is the delivery-independent evidence that the map is loaded and servable. This makes [enable_selected_load]{.title-ref} govern only the selected-load service, as its name says. The new launch test pins the regression: with [enable_whole_load]{.title-ref} and [enable_selected_load]{.title-ref} both false, the metadata must still arrive on a transient-local subscription, and [output/pointcloud_map]{.title-ref} must stay unadvertised.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/lanelet2_map_loader.launch.xml
-
- lanelet2_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/lanelet2_map_loader.param.yaml]
- lanelet2_map_path
- lanelet2_map_metadata_path [default: '']
- lanelet2_map_topic [default: vector_map]
- lanelet2_map_marker_topic [default: vector_map_marker]
- launch/pointcloud_map_loader.launch.xml
-
- pointcloud_map_path
- pointcloud_map_metadata_path
- pointcloud_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/pointcloud_map_loader.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_map_loader at Robotics Stack Exchange
Package Summary
| Version | 1.10.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yamato Ando
- Masahiro Sakamoto
- NGUYEN Viet Anh
- Taiki Yamada
Authors
- Ryohsuke Mitsudome
- Koji Minoda
autoware_map_loader package
This package provides the features of loading various maps.
pointcloud_map_loader
Feature
pointcloud_map_loader provides pointcloud maps to the other Autoware nodes in various configurations.
Currently, it supports the following two types:
- Publish raw pointcloud map
- Publish downsampled pointcloud map
- Send partial pointcloud map loading via ROS 2 service
- Send differential pointcloud map loading via ROS 2 service
NOTE: We strongly recommend to use divided maps when using large pointcloud map to enable the latter two features (partial and differential load). Please go through the prerequisites section for more details, and follow the instruction for dividing the map and preparing the metadata.
Prerequisites
Prerequisites on pointcloud map file(s)
You may provide either a single .pcd file or multiple .pcd files. If you are using multiple PCD data, it MUST obey the following rules:
-
The pointcloud map should be projected on the same coordinate defined in
map_projection_loader, in order to be consistent with the lanelet2 map and other packages that converts between local and geodetic coordinates. For more information, please refer to the readme ofmap_projection_loader. - It must be divided by straight lines parallel to the x-axis and y-axis. The system does not support division by diagonal lines or curved lines.
- The division size along each axis should be equal.
- The division size should be about 20m x 20m. Particularly, care should be taken as using too large division size (for example, more than 100m) may have adverse effects on dynamic map loading features in ndt_scan_matcher and autoware_compare_map_segmentation.
- All the split maps should not overlap with each other.
- Metadata file should also be provided. The metadata structure description is provided below.
Metadata structure
The metadata should look like this:
x_resolution: 20.0
y_resolution: 20.0
A.pcd: [1200, 2500] # -> 1200 < x < 1220, 2500 < y < 2520
B.pcd: [1220, 2500] # -> 1220 < x < 1240, 2500 < y < 2520
C.pcd: [1200, 2520] # -> 1200 < x < 1220, 2520 < y < 2540
D.pcd: [1240, 2520] # -> 1240 < x < 1260, 2520 < y < 2540
where,
-
x_resolutionandy_resolution -
A.pcd,B.pcd, etc, are the names of PCD files. - List such as
[1200, 2500]are the values indicate that for this PCD file, x coordinates are between 1200 and 1220 (x_resolution+x_coordinate) and y coordinates are between 2500 and 2520 (y_resolution+y_coordinate).
You may use pointcloud_divider for dividing pointcloud map as well as generating the compatible metadata.yaml.
Directory structure of these files
If you only have one pointcloud map, Autoware will assume the following directory structure by default.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
If you have multiple rosbags, an example directory structure would be as follows. Note that you need to have a metadata when you have multiple pointcloud map files.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
│ ├── A.pcd
│ ├── B.pcd
│ ├── C.pcd
│ └── ...
├── map_projector_info.yaml
└── pointcloud_map_metadata.yaml
Specific features
Publish raw pointcloud map (ROS 2 topic)
The node publishes the raw pointcloud map loaded from the .pcd file(s).
Publish downsampled pointcloud map (ROS 2 topic)
The node publishes the downsampled pointcloud map loaded from the .pcd file(s). You can specify the downsample resolution by changing the leaf_size parameter.
Publish metadata of pointcloud map (ROS 2 topic)
The node publishes the pointcloud metadata attached with an ID. Metadata is loaded from the .yaml file. Please see the description of PointCloudMapMetaData.msg for details.
Send partial pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
Given a query from a client node, the node sends a set of pointcloud maps that overlaps with the queried area.
Please see the description of GetPartialPointCloudMap.srv for details.
Send differential pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
File truncated at 100 lines see the full file
Changelog for package autoware_map_loader
1.1.0 (2025-05-01)
- feat(component_interface_specs): use template type in get_qos function (#364) Co-authored-by: Yutaka Kondo <<yutaka.kondo@youtalk.jp>>
- feat(map_loader): add the explanation of handling use_waypoints (#342)
- Contributors: Takagi, Isamu, Takayuki Murooka
1.10.0 (2026-09-28)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(map): add node designs for the map nodes (#1413)
* feat(map): add node designs for the map nodes Describe the interfaces, parameters and processes of the pointcloud and lanelet2 map loaders, the map hash generator, the lanelet2 map visualizer and the map projection loader as system design node files.
- fix(map): correct description formatting in Lanelet2MapLoader.node.yaml
* refactor(map): rename node designs to match the node class names PointCloudMapLoader and Lanelet2MapVisualization follow the entity naming convention derived from the C++ class names, as in #1335.
* fix(map): declare the MapHashGenerator external API interfaces as remap targets The map hash publisher and the lanelet XML server carry the fixed API names as remap_target, so a system design connects them like any other port and the launcher remaps the node-side names.
* fix(map): update description for map_projector_info to clarify its purpose ---------
-
fix(map): declare the dependencies these packages use (#1370) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers.
-
fix(autoware_map_loader): use CMake targets and portable logging (#1270)
* Use CMake targets and portable integer logging in autoware_map_loader This upstreams RoboStack downstream patch [patch/ros-rolling-autoware-map-loader.osx.patch]{.title-ref}. Best-guess rationale: linking to yaml-cpp and fmt through imported targets is more robust across package managers, and portable PRIu64 logging avoids uint64_t format mismatches on platforms where unsigned long and unsigned long long differ.
- style(pre-commit): autofix
* Support old fmt target Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>> ---------Co-authored-by: Daisuke Nishimatsu <<nishimarudai@gmail.com>> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>> Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>>
-
fix(autoware_map_loader): always publish the pointcloud map metadata (#1316) [output/pointcloud_map_metadata]{.title-ref} was only advertised when [enable_selected_load]{.title-ref} was true, even though the metadata dict it is built from is always available and the differential map loader that serves the map is created unconditionally. A deployment that delivers the PCD map through the differential/partial services sets [enable_whole_load: false]{.title-ref}, which retires [/map/pointcloud_map]{.title-ref}. Such a deployment was then left with no topic proving the map module had loaded its map: the map component's topic monitor watches a topic nobody publishes, reports [NotReceived]{.title-ref} (checked before any rate/timeout threshold, so the zeroed thresholds do not matter), and the map module stays in ERROR for the whole run. Publish the latched metadata as soon as the PCD metadata is parsed, so it is the delivery-independent evidence that the map is loaded and servable. This makes [enable_selected_load]{.title-ref} govern only the selected-load service, as its name says. The new launch test pins the regression: with [enable_whole_load]{.title-ref} and [enable_selected_load]{.title-ref} both false, the metadata must still arrive on a transient-local subscription, and [output/pointcloud_map]{.title-ref} must stay unadvertised.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/lanelet2_map_loader.launch.xml
-
- lanelet2_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/lanelet2_map_loader.param.yaml]
- lanelet2_map_path
- lanelet2_map_metadata_path [default: '']
- lanelet2_map_topic [default: vector_map]
- lanelet2_map_marker_topic [default: vector_map_marker]
- launch/pointcloud_map_loader.launch.xml
-
- pointcloud_map_path
- pointcloud_map_metadata_path
- pointcloud_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/pointcloud_map_loader.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_map_loader at Robotics Stack Exchange
Package Summary
| Version | 1.10.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yamato Ando
- Masahiro Sakamoto
- NGUYEN Viet Anh
- Taiki Yamada
Authors
- Ryohsuke Mitsudome
- Koji Minoda
autoware_map_loader package
This package provides the features of loading various maps.
pointcloud_map_loader
Feature
pointcloud_map_loader provides pointcloud maps to the other Autoware nodes in various configurations.
Currently, it supports the following two types:
- Publish raw pointcloud map
- Publish downsampled pointcloud map
- Send partial pointcloud map loading via ROS 2 service
- Send differential pointcloud map loading via ROS 2 service
NOTE: We strongly recommend to use divided maps when using large pointcloud map to enable the latter two features (partial and differential load). Please go through the prerequisites section for more details, and follow the instruction for dividing the map and preparing the metadata.
Prerequisites
Prerequisites on pointcloud map file(s)
You may provide either a single .pcd file or multiple .pcd files. If you are using multiple PCD data, it MUST obey the following rules:
-
The pointcloud map should be projected on the same coordinate defined in
map_projection_loader, in order to be consistent with the lanelet2 map and other packages that converts between local and geodetic coordinates. For more information, please refer to the readme ofmap_projection_loader. - It must be divided by straight lines parallel to the x-axis and y-axis. The system does not support division by diagonal lines or curved lines.
- The division size along each axis should be equal.
- The division size should be about 20m x 20m. Particularly, care should be taken as using too large division size (for example, more than 100m) may have adverse effects on dynamic map loading features in ndt_scan_matcher and autoware_compare_map_segmentation.
- All the split maps should not overlap with each other.
- Metadata file should also be provided. The metadata structure description is provided below.
Metadata structure
The metadata should look like this:
x_resolution: 20.0
y_resolution: 20.0
A.pcd: [1200, 2500] # -> 1200 < x < 1220, 2500 < y < 2520
B.pcd: [1220, 2500] # -> 1220 < x < 1240, 2500 < y < 2520
C.pcd: [1200, 2520] # -> 1200 < x < 1220, 2520 < y < 2540
D.pcd: [1240, 2520] # -> 1240 < x < 1260, 2520 < y < 2540
where,
-
x_resolutionandy_resolution -
A.pcd,B.pcd, etc, are the names of PCD files. - List such as
[1200, 2500]are the values indicate that for this PCD file, x coordinates are between 1200 and 1220 (x_resolution+x_coordinate) and y coordinates are between 2500 and 2520 (y_resolution+y_coordinate).
You may use pointcloud_divider for dividing pointcloud map as well as generating the compatible metadata.yaml.
Directory structure of these files
If you only have one pointcloud map, Autoware will assume the following directory structure by default.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
If you have multiple rosbags, an example directory structure would be as follows. Note that you need to have a metadata when you have multiple pointcloud map files.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
│ ├── A.pcd
│ ├── B.pcd
│ ├── C.pcd
│ └── ...
├── map_projector_info.yaml
└── pointcloud_map_metadata.yaml
Specific features
Publish raw pointcloud map (ROS 2 topic)
The node publishes the raw pointcloud map loaded from the .pcd file(s).
Publish downsampled pointcloud map (ROS 2 topic)
The node publishes the downsampled pointcloud map loaded from the .pcd file(s). You can specify the downsample resolution by changing the leaf_size parameter.
Publish metadata of pointcloud map (ROS 2 topic)
The node publishes the pointcloud metadata attached with an ID. Metadata is loaded from the .yaml file. Please see the description of PointCloudMapMetaData.msg for details.
Send partial pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
Given a query from a client node, the node sends a set of pointcloud maps that overlaps with the queried area.
Please see the description of GetPartialPointCloudMap.srv for details.
Send differential pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
File truncated at 100 lines see the full file
Changelog for package autoware_map_loader
1.1.0 (2025-05-01)
- feat(component_interface_specs): use template type in get_qos function (#364) Co-authored-by: Yutaka Kondo <<yutaka.kondo@youtalk.jp>>
- feat(map_loader): add the explanation of handling use_waypoints (#342)
- Contributors: Takagi, Isamu, Takayuki Murooka
1.10.0 (2026-09-28)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(map): add node designs for the map nodes (#1413)
* feat(map): add node designs for the map nodes Describe the interfaces, parameters and processes of the pointcloud and lanelet2 map loaders, the map hash generator, the lanelet2 map visualizer and the map projection loader as system design node files.
- fix(map): correct description formatting in Lanelet2MapLoader.node.yaml
* refactor(map): rename node designs to match the node class names PointCloudMapLoader and Lanelet2MapVisualization follow the entity naming convention derived from the C++ class names, as in #1335.
* fix(map): declare the MapHashGenerator external API interfaces as remap targets The map hash publisher and the lanelet XML server carry the fixed API names as remap_target, so a system design connects them like any other port and the launcher remaps the node-side names.
* fix(map): update description for map_projector_info to clarify its purpose ---------
-
fix(map): declare the dependencies these packages use (#1370) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers.
-
fix(autoware_map_loader): use CMake targets and portable logging (#1270)
* Use CMake targets and portable integer logging in autoware_map_loader This upstreams RoboStack downstream patch [patch/ros-rolling-autoware-map-loader.osx.patch]{.title-ref}. Best-guess rationale: linking to yaml-cpp and fmt through imported targets is more robust across package managers, and portable PRIu64 logging avoids uint64_t format mismatches on platforms where unsigned long and unsigned long long differ.
- style(pre-commit): autofix
* Support old fmt target Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>> ---------Co-authored-by: Daisuke Nishimatsu <<nishimarudai@gmail.com>> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>> Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>>
-
fix(autoware_map_loader): always publish the pointcloud map metadata (#1316) [output/pointcloud_map_metadata]{.title-ref} was only advertised when [enable_selected_load]{.title-ref} was true, even though the metadata dict it is built from is always available and the differential map loader that serves the map is created unconditionally. A deployment that delivers the PCD map through the differential/partial services sets [enable_whole_load: false]{.title-ref}, which retires [/map/pointcloud_map]{.title-ref}. Such a deployment was then left with no topic proving the map module had loaded its map: the map component's topic monitor watches a topic nobody publishes, reports [NotReceived]{.title-ref} (checked before any rate/timeout threshold, so the zeroed thresholds do not matter), and the map module stays in ERROR for the whole run. Publish the latched metadata as soon as the PCD metadata is parsed, so it is the delivery-independent evidence that the map is loaded and servable. This makes [enable_selected_load]{.title-ref} govern only the selected-load service, as its name says. The new launch test pins the regression: with [enable_whole_load]{.title-ref} and [enable_selected_load]{.title-ref} both false, the metadata must still arrive on a transient-local subscription, and [output/pointcloud_map]{.title-ref} must stay unadvertised.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/lanelet2_map_loader.launch.xml
-
- lanelet2_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/lanelet2_map_loader.param.yaml]
- lanelet2_map_path
- lanelet2_map_metadata_path [default: '']
- lanelet2_map_topic [default: vector_map]
- lanelet2_map_marker_topic [default: vector_map_marker]
- launch/pointcloud_map_loader.launch.xml
-
- pointcloud_map_path
- pointcloud_map_metadata_path
- pointcloud_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/pointcloud_map_loader.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_map_loader at Robotics Stack Exchange
Package Summary
| Version | 1.10.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yamato Ando
- Masahiro Sakamoto
- NGUYEN Viet Anh
- Taiki Yamada
Authors
- Ryohsuke Mitsudome
- Koji Minoda
autoware_map_loader package
This package provides the features of loading various maps.
pointcloud_map_loader
Feature
pointcloud_map_loader provides pointcloud maps to the other Autoware nodes in various configurations.
Currently, it supports the following two types:
- Publish raw pointcloud map
- Publish downsampled pointcloud map
- Send partial pointcloud map loading via ROS 2 service
- Send differential pointcloud map loading via ROS 2 service
NOTE: We strongly recommend to use divided maps when using large pointcloud map to enable the latter two features (partial and differential load). Please go through the prerequisites section for more details, and follow the instruction for dividing the map and preparing the metadata.
Prerequisites
Prerequisites on pointcloud map file(s)
You may provide either a single .pcd file or multiple .pcd files. If you are using multiple PCD data, it MUST obey the following rules:
-
The pointcloud map should be projected on the same coordinate defined in
map_projection_loader, in order to be consistent with the lanelet2 map and other packages that converts between local and geodetic coordinates. For more information, please refer to the readme ofmap_projection_loader. - It must be divided by straight lines parallel to the x-axis and y-axis. The system does not support division by diagonal lines or curved lines.
- The division size along each axis should be equal.
- The division size should be about 20m x 20m. Particularly, care should be taken as using too large division size (for example, more than 100m) may have adverse effects on dynamic map loading features in ndt_scan_matcher and autoware_compare_map_segmentation.
- All the split maps should not overlap with each other.
- Metadata file should also be provided. The metadata structure description is provided below.
Metadata structure
The metadata should look like this:
x_resolution: 20.0
y_resolution: 20.0
A.pcd: [1200, 2500] # -> 1200 < x < 1220, 2500 < y < 2520
B.pcd: [1220, 2500] # -> 1220 < x < 1240, 2500 < y < 2520
C.pcd: [1200, 2520] # -> 1200 < x < 1220, 2520 < y < 2540
D.pcd: [1240, 2520] # -> 1240 < x < 1260, 2520 < y < 2540
where,
-
x_resolutionandy_resolution -
A.pcd,B.pcd, etc, are the names of PCD files. - List such as
[1200, 2500]are the values indicate that for this PCD file, x coordinates are between 1200 and 1220 (x_resolution+x_coordinate) and y coordinates are between 2500 and 2520 (y_resolution+y_coordinate).
You may use pointcloud_divider for dividing pointcloud map as well as generating the compatible metadata.yaml.
Directory structure of these files
If you only have one pointcloud map, Autoware will assume the following directory structure by default.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
If you have multiple rosbags, an example directory structure would be as follows. Note that you need to have a metadata when you have multiple pointcloud map files.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
│ ├── A.pcd
│ ├── B.pcd
│ ├── C.pcd
│ └── ...
├── map_projector_info.yaml
└── pointcloud_map_metadata.yaml
Specific features
Publish raw pointcloud map (ROS 2 topic)
The node publishes the raw pointcloud map loaded from the .pcd file(s).
Publish downsampled pointcloud map (ROS 2 topic)
The node publishes the downsampled pointcloud map loaded from the .pcd file(s). You can specify the downsample resolution by changing the leaf_size parameter.
Publish metadata of pointcloud map (ROS 2 topic)
The node publishes the pointcloud metadata attached with an ID. Metadata is loaded from the .yaml file. Please see the description of PointCloudMapMetaData.msg for details.
Send partial pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
Given a query from a client node, the node sends a set of pointcloud maps that overlaps with the queried area.
Please see the description of GetPartialPointCloudMap.srv for details.
Send differential pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
File truncated at 100 lines see the full file
Changelog for package autoware_map_loader
1.1.0 (2025-05-01)
- feat(component_interface_specs): use template type in get_qos function (#364) Co-authored-by: Yutaka Kondo <<yutaka.kondo@youtalk.jp>>
- feat(map_loader): add the explanation of handling use_waypoints (#342)
- Contributors: Takagi, Isamu, Takayuki Murooka
1.10.0 (2026-09-28)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(map): add node designs for the map nodes (#1413)
* feat(map): add node designs for the map nodes Describe the interfaces, parameters and processes of the pointcloud and lanelet2 map loaders, the map hash generator, the lanelet2 map visualizer and the map projection loader as system design node files.
- fix(map): correct description formatting in Lanelet2MapLoader.node.yaml
* refactor(map): rename node designs to match the node class names PointCloudMapLoader and Lanelet2MapVisualization follow the entity naming convention derived from the C++ class names, as in #1335.
* fix(map): declare the MapHashGenerator external API interfaces as remap targets The map hash publisher and the lanelet XML server carry the fixed API names as remap_target, so a system design connects them like any other port and the launcher remaps the node-side names.
* fix(map): update description for map_projector_info to clarify its purpose ---------
-
fix(map): declare the dependencies these packages use (#1370) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers.
-
fix(autoware_map_loader): use CMake targets and portable logging (#1270)
* Use CMake targets and portable integer logging in autoware_map_loader This upstreams RoboStack downstream patch [patch/ros-rolling-autoware-map-loader.osx.patch]{.title-ref}. Best-guess rationale: linking to yaml-cpp and fmt through imported targets is more robust across package managers, and portable PRIu64 logging avoids uint64_t format mismatches on platforms where unsigned long and unsigned long long differ.
- style(pre-commit): autofix
* Support old fmt target Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>> ---------Co-authored-by: Daisuke Nishimatsu <<nishimarudai@gmail.com>> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>> Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>>
-
fix(autoware_map_loader): always publish the pointcloud map metadata (#1316) [output/pointcloud_map_metadata]{.title-ref} was only advertised when [enable_selected_load]{.title-ref} was true, even though the metadata dict it is built from is always available and the differential map loader that serves the map is created unconditionally. A deployment that delivers the PCD map through the differential/partial services sets [enable_whole_load: false]{.title-ref}, which retires [/map/pointcloud_map]{.title-ref}. Such a deployment was then left with no topic proving the map module had loaded its map: the map component's topic monitor watches a topic nobody publishes, reports [NotReceived]{.title-ref} (checked before any rate/timeout threshold, so the zeroed thresholds do not matter), and the map module stays in ERROR for the whole run. Publish the latched metadata as soon as the PCD metadata is parsed, so it is the delivery-independent evidence that the map is loaded and servable. This makes [enable_selected_load]{.title-ref} govern only the selected-load service, as its name says. The new launch test pins the regression: with [enable_whole_load]{.title-ref} and [enable_selected_load]{.title-ref} both false, the metadata must still arrive on a transient-local subscription, and [output/pointcloud_map]{.title-ref} must stay unadvertised.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/lanelet2_map_loader.launch.xml
-
- lanelet2_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/lanelet2_map_loader.param.yaml]
- lanelet2_map_path
- lanelet2_map_metadata_path [default: '']
- lanelet2_map_topic [default: vector_map]
- lanelet2_map_marker_topic [default: vector_map_marker]
- launch/pointcloud_map_loader.launch.xml
-
- pointcloud_map_path
- pointcloud_map_metadata_path
- pointcloud_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/pointcloud_map_loader.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_map_loader at Robotics Stack Exchange
Package Summary
| Version | 1.10.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yamato Ando
- Masahiro Sakamoto
- NGUYEN Viet Anh
- Taiki Yamada
Authors
- Ryohsuke Mitsudome
- Koji Minoda
autoware_map_loader package
This package provides the features of loading various maps.
pointcloud_map_loader
Feature
pointcloud_map_loader provides pointcloud maps to the other Autoware nodes in various configurations.
Currently, it supports the following two types:
- Publish raw pointcloud map
- Publish downsampled pointcloud map
- Send partial pointcloud map loading via ROS 2 service
- Send differential pointcloud map loading via ROS 2 service
NOTE: We strongly recommend to use divided maps when using large pointcloud map to enable the latter two features (partial and differential load). Please go through the prerequisites section for more details, and follow the instruction for dividing the map and preparing the metadata.
Prerequisites
Prerequisites on pointcloud map file(s)
You may provide either a single .pcd file or multiple .pcd files. If you are using multiple PCD data, it MUST obey the following rules:
-
The pointcloud map should be projected on the same coordinate defined in
map_projection_loader, in order to be consistent with the lanelet2 map and other packages that converts between local and geodetic coordinates. For more information, please refer to the readme ofmap_projection_loader. - It must be divided by straight lines parallel to the x-axis and y-axis. The system does not support division by diagonal lines or curved lines.
- The division size along each axis should be equal.
- The division size should be about 20m x 20m. Particularly, care should be taken as using too large division size (for example, more than 100m) may have adverse effects on dynamic map loading features in ndt_scan_matcher and autoware_compare_map_segmentation.
- All the split maps should not overlap with each other.
- Metadata file should also be provided. The metadata structure description is provided below.
Metadata structure
The metadata should look like this:
x_resolution: 20.0
y_resolution: 20.0
A.pcd: [1200, 2500] # -> 1200 < x < 1220, 2500 < y < 2520
B.pcd: [1220, 2500] # -> 1220 < x < 1240, 2500 < y < 2520
C.pcd: [1200, 2520] # -> 1200 < x < 1220, 2520 < y < 2540
D.pcd: [1240, 2520] # -> 1240 < x < 1260, 2520 < y < 2540
where,
-
x_resolutionandy_resolution -
A.pcd,B.pcd, etc, are the names of PCD files. - List such as
[1200, 2500]are the values indicate that for this PCD file, x coordinates are between 1200 and 1220 (x_resolution+x_coordinate) and y coordinates are between 2500 and 2520 (y_resolution+y_coordinate).
You may use pointcloud_divider for dividing pointcloud map as well as generating the compatible metadata.yaml.
Directory structure of these files
If you only have one pointcloud map, Autoware will assume the following directory structure by default.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
If you have multiple rosbags, an example directory structure would be as follows. Note that you need to have a metadata when you have multiple pointcloud map files.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
│ ├── A.pcd
│ ├── B.pcd
│ ├── C.pcd
│ └── ...
├── map_projector_info.yaml
└── pointcloud_map_metadata.yaml
Specific features
Publish raw pointcloud map (ROS 2 topic)
The node publishes the raw pointcloud map loaded from the .pcd file(s).
Publish downsampled pointcloud map (ROS 2 topic)
The node publishes the downsampled pointcloud map loaded from the .pcd file(s). You can specify the downsample resolution by changing the leaf_size parameter.
Publish metadata of pointcloud map (ROS 2 topic)
The node publishes the pointcloud metadata attached with an ID. Metadata is loaded from the .yaml file. Please see the description of PointCloudMapMetaData.msg for details.
Send partial pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
Given a query from a client node, the node sends a set of pointcloud maps that overlaps with the queried area.
Please see the description of GetPartialPointCloudMap.srv for details.
Send differential pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
File truncated at 100 lines see the full file
Changelog for package autoware_map_loader
1.1.0 (2025-05-01)
- feat(component_interface_specs): use template type in get_qos function (#364) Co-authored-by: Yutaka Kondo <<yutaka.kondo@youtalk.jp>>
- feat(map_loader): add the explanation of handling use_waypoints (#342)
- Contributors: Takagi, Isamu, Takayuki Murooka
1.10.0 (2026-09-28)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(map): add node designs for the map nodes (#1413)
* feat(map): add node designs for the map nodes Describe the interfaces, parameters and processes of the pointcloud and lanelet2 map loaders, the map hash generator, the lanelet2 map visualizer and the map projection loader as system design node files.
- fix(map): correct description formatting in Lanelet2MapLoader.node.yaml
* refactor(map): rename node designs to match the node class names PointCloudMapLoader and Lanelet2MapVisualization follow the entity naming convention derived from the C++ class names, as in #1335.
* fix(map): declare the MapHashGenerator external API interfaces as remap targets The map hash publisher and the lanelet XML server carry the fixed API names as remap_target, so a system design connects them like any other port and the launcher remaps the node-side names.
* fix(map): update description for map_projector_info to clarify its purpose ---------
-
fix(map): declare the dependencies these packages use (#1370) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers.
-
fix(autoware_map_loader): use CMake targets and portable logging (#1270)
* Use CMake targets and portable integer logging in autoware_map_loader This upstreams RoboStack downstream patch [patch/ros-rolling-autoware-map-loader.osx.patch]{.title-ref}. Best-guess rationale: linking to yaml-cpp and fmt through imported targets is more robust across package managers, and portable PRIu64 logging avoids uint64_t format mismatches on platforms where unsigned long and unsigned long long differ.
- style(pre-commit): autofix
* Support old fmt target Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>> ---------Co-authored-by: Daisuke Nishimatsu <<nishimarudai@gmail.com>> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>> Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>>
-
fix(autoware_map_loader): always publish the pointcloud map metadata (#1316) [output/pointcloud_map_metadata]{.title-ref} was only advertised when [enable_selected_load]{.title-ref} was true, even though the metadata dict it is built from is always available and the differential map loader that serves the map is created unconditionally. A deployment that delivers the PCD map through the differential/partial services sets [enable_whole_load: false]{.title-ref}, which retires [/map/pointcloud_map]{.title-ref}. Such a deployment was then left with no topic proving the map module had loaded its map: the map component's topic monitor watches a topic nobody publishes, reports [NotReceived]{.title-ref} (checked before any rate/timeout threshold, so the zeroed thresholds do not matter), and the map module stays in ERROR for the whole run. Publish the latched metadata as soon as the PCD metadata is parsed, so it is the delivery-independent evidence that the map is loaded and servable. This makes [enable_selected_load]{.title-ref} govern only the selected-load service, as its name says. The new launch test pins the regression: with [enable_whole_load]{.title-ref} and [enable_selected_load]{.title-ref} both false, the metadata must still arrive on a transient-local subscription, and [output/pointcloud_map]{.title-ref} must stay unadvertised.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/lanelet2_map_loader.launch.xml
-
- lanelet2_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/lanelet2_map_loader.param.yaml]
- lanelet2_map_path
- lanelet2_map_metadata_path [default: '']
- lanelet2_map_topic [default: vector_map]
- lanelet2_map_marker_topic [default: vector_map_marker]
- launch/pointcloud_map_loader.launch.xml
-
- pointcloud_map_path
- pointcloud_map_metadata_path
- pointcloud_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/pointcloud_map_loader.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_map_loader at Robotics Stack Exchange
Package Summary
| Version | 1.10.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yamato Ando
- Masahiro Sakamoto
- NGUYEN Viet Anh
- Taiki Yamada
Authors
- Ryohsuke Mitsudome
- Koji Minoda
autoware_map_loader package
This package provides the features of loading various maps.
pointcloud_map_loader
Feature
pointcloud_map_loader provides pointcloud maps to the other Autoware nodes in various configurations.
Currently, it supports the following two types:
- Publish raw pointcloud map
- Publish downsampled pointcloud map
- Send partial pointcloud map loading via ROS 2 service
- Send differential pointcloud map loading via ROS 2 service
NOTE: We strongly recommend to use divided maps when using large pointcloud map to enable the latter two features (partial and differential load). Please go through the prerequisites section for more details, and follow the instruction for dividing the map and preparing the metadata.
Prerequisites
Prerequisites on pointcloud map file(s)
You may provide either a single .pcd file or multiple .pcd files. If you are using multiple PCD data, it MUST obey the following rules:
-
The pointcloud map should be projected on the same coordinate defined in
map_projection_loader, in order to be consistent with the lanelet2 map and other packages that converts between local and geodetic coordinates. For more information, please refer to the readme ofmap_projection_loader. - It must be divided by straight lines parallel to the x-axis and y-axis. The system does not support division by diagonal lines or curved lines.
- The division size along each axis should be equal.
- The division size should be about 20m x 20m. Particularly, care should be taken as using too large division size (for example, more than 100m) may have adverse effects on dynamic map loading features in ndt_scan_matcher and autoware_compare_map_segmentation.
- All the split maps should not overlap with each other.
- Metadata file should also be provided. The metadata structure description is provided below.
Metadata structure
The metadata should look like this:
x_resolution: 20.0
y_resolution: 20.0
A.pcd: [1200, 2500] # -> 1200 < x < 1220, 2500 < y < 2520
B.pcd: [1220, 2500] # -> 1220 < x < 1240, 2500 < y < 2520
C.pcd: [1200, 2520] # -> 1200 < x < 1220, 2520 < y < 2540
D.pcd: [1240, 2520] # -> 1240 < x < 1260, 2520 < y < 2540
where,
-
x_resolutionandy_resolution -
A.pcd,B.pcd, etc, are the names of PCD files. - List such as
[1200, 2500]are the values indicate that for this PCD file, x coordinates are between 1200 and 1220 (x_resolution+x_coordinate) and y coordinates are between 2500 and 2520 (y_resolution+y_coordinate).
You may use pointcloud_divider for dividing pointcloud map as well as generating the compatible metadata.yaml.
Directory structure of these files
If you only have one pointcloud map, Autoware will assume the following directory structure by default.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
If you have multiple rosbags, an example directory structure would be as follows. Note that you need to have a metadata when you have multiple pointcloud map files.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
│ ├── A.pcd
│ ├── B.pcd
│ ├── C.pcd
│ └── ...
├── map_projector_info.yaml
└── pointcloud_map_metadata.yaml
Specific features
Publish raw pointcloud map (ROS 2 topic)
The node publishes the raw pointcloud map loaded from the .pcd file(s).
Publish downsampled pointcloud map (ROS 2 topic)
The node publishes the downsampled pointcloud map loaded from the .pcd file(s). You can specify the downsample resolution by changing the leaf_size parameter.
Publish metadata of pointcloud map (ROS 2 topic)
The node publishes the pointcloud metadata attached with an ID. Metadata is loaded from the .yaml file. Please see the description of PointCloudMapMetaData.msg for details.
Send partial pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
Given a query from a client node, the node sends a set of pointcloud maps that overlaps with the queried area.
Please see the description of GetPartialPointCloudMap.srv for details.
Send differential pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
File truncated at 100 lines see the full file
Changelog for package autoware_map_loader
1.1.0 (2025-05-01)
- feat(component_interface_specs): use template type in get_qos function (#364) Co-authored-by: Yutaka Kondo <<yutaka.kondo@youtalk.jp>>
- feat(map_loader): add the explanation of handling use_waypoints (#342)
- Contributors: Takagi, Isamu, Takayuki Murooka
1.10.0 (2026-09-28)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(map): add node designs for the map nodes (#1413)
* feat(map): add node designs for the map nodes Describe the interfaces, parameters and processes of the pointcloud and lanelet2 map loaders, the map hash generator, the lanelet2 map visualizer and the map projection loader as system design node files.
- fix(map): correct description formatting in Lanelet2MapLoader.node.yaml
* refactor(map): rename node designs to match the node class names PointCloudMapLoader and Lanelet2MapVisualization follow the entity naming convention derived from the C++ class names, as in #1335.
* fix(map): declare the MapHashGenerator external API interfaces as remap targets The map hash publisher and the lanelet XML server carry the fixed API names as remap_target, so a system design connects them like any other port and the launcher remaps the node-side names.
* fix(map): update description for map_projector_info to clarify its purpose ---------
-
fix(map): declare the dependencies these packages use (#1370) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers.
-
fix(autoware_map_loader): use CMake targets and portable logging (#1270)
* Use CMake targets and portable integer logging in autoware_map_loader This upstreams RoboStack downstream patch [patch/ros-rolling-autoware-map-loader.osx.patch]{.title-ref}. Best-guess rationale: linking to yaml-cpp and fmt through imported targets is more robust across package managers, and portable PRIu64 logging avoids uint64_t format mismatches on platforms where unsigned long and unsigned long long differ.
- style(pre-commit): autofix
* Support old fmt target Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>> ---------Co-authored-by: Daisuke Nishimatsu <<nishimarudai@gmail.com>> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>> Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>>
-
fix(autoware_map_loader): always publish the pointcloud map metadata (#1316) [output/pointcloud_map_metadata]{.title-ref} was only advertised when [enable_selected_load]{.title-ref} was true, even though the metadata dict it is built from is always available and the differential map loader that serves the map is created unconditionally. A deployment that delivers the PCD map through the differential/partial services sets [enable_whole_load: false]{.title-ref}, which retires [/map/pointcloud_map]{.title-ref}. Such a deployment was then left with no topic proving the map module had loaded its map: the map component's topic monitor watches a topic nobody publishes, reports [NotReceived]{.title-ref} (checked before any rate/timeout threshold, so the zeroed thresholds do not matter), and the map module stays in ERROR for the whole run. Publish the latched metadata as soon as the PCD metadata is parsed, so it is the delivery-independent evidence that the map is loaded and servable. This makes [enable_selected_load]{.title-ref} govern only the selected-load service, as its name says. The new launch test pins the regression: with [enable_whole_load]{.title-ref} and [enable_selected_load]{.title-ref} both false, the metadata must still arrive on a transient-local subscription, and [output/pointcloud_map]{.title-ref} must stay unadvertised.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/lanelet2_map_loader.launch.xml
-
- lanelet2_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/lanelet2_map_loader.param.yaml]
- lanelet2_map_path
- lanelet2_map_metadata_path [default: '']
- lanelet2_map_topic [default: vector_map]
- lanelet2_map_marker_topic [default: vector_map_marker]
- launch/pointcloud_map_loader.launch.xml
-
- pointcloud_map_path
- pointcloud_map_metadata_path
- pointcloud_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/pointcloud_map_loader.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_map_loader at Robotics Stack Exchange
Package Summary
| Version | 1.10.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yamato Ando
- Masahiro Sakamoto
- NGUYEN Viet Anh
- Taiki Yamada
Authors
- Ryohsuke Mitsudome
- Koji Minoda
autoware_map_loader package
This package provides the features of loading various maps.
pointcloud_map_loader
Feature
pointcloud_map_loader provides pointcloud maps to the other Autoware nodes in various configurations.
Currently, it supports the following two types:
- Publish raw pointcloud map
- Publish downsampled pointcloud map
- Send partial pointcloud map loading via ROS 2 service
- Send differential pointcloud map loading via ROS 2 service
NOTE: We strongly recommend to use divided maps when using large pointcloud map to enable the latter two features (partial and differential load). Please go through the prerequisites section for more details, and follow the instruction for dividing the map and preparing the metadata.
Prerequisites
Prerequisites on pointcloud map file(s)
You may provide either a single .pcd file or multiple .pcd files. If you are using multiple PCD data, it MUST obey the following rules:
-
The pointcloud map should be projected on the same coordinate defined in
map_projection_loader, in order to be consistent with the lanelet2 map and other packages that converts between local and geodetic coordinates. For more information, please refer to the readme ofmap_projection_loader. - It must be divided by straight lines parallel to the x-axis and y-axis. The system does not support division by diagonal lines or curved lines.
- The division size along each axis should be equal.
- The division size should be about 20m x 20m. Particularly, care should be taken as using too large division size (for example, more than 100m) may have adverse effects on dynamic map loading features in ndt_scan_matcher and autoware_compare_map_segmentation.
- All the split maps should not overlap with each other.
- Metadata file should also be provided. The metadata structure description is provided below.
Metadata structure
The metadata should look like this:
x_resolution: 20.0
y_resolution: 20.0
A.pcd: [1200, 2500] # -> 1200 < x < 1220, 2500 < y < 2520
B.pcd: [1220, 2500] # -> 1220 < x < 1240, 2500 < y < 2520
C.pcd: [1200, 2520] # -> 1200 < x < 1220, 2520 < y < 2540
D.pcd: [1240, 2520] # -> 1240 < x < 1260, 2520 < y < 2540
where,
-
x_resolutionandy_resolution -
A.pcd,B.pcd, etc, are the names of PCD files. - List such as
[1200, 2500]are the values indicate that for this PCD file, x coordinates are between 1200 and 1220 (x_resolution+x_coordinate) and y coordinates are between 2500 and 2520 (y_resolution+y_coordinate).
You may use pointcloud_divider for dividing pointcloud map as well as generating the compatible metadata.yaml.
Directory structure of these files
If you only have one pointcloud map, Autoware will assume the following directory structure by default.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
If you have multiple rosbags, an example directory structure would be as follows. Note that you need to have a metadata when you have multiple pointcloud map files.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
│ ├── A.pcd
│ ├── B.pcd
│ ├── C.pcd
│ └── ...
├── map_projector_info.yaml
└── pointcloud_map_metadata.yaml
Specific features
Publish raw pointcloud map (ROS 2 topic)
The node publishes the raw pointcloud map loaded from the .pcd file(s).
Publish downsampled pointcloud map (ROS 2 topic)
The node publishes the downsampled pointcloud map loaded from the .pcd file(s). You can specify the downsample resolution by changing the leaf_size parameter.
Publish metadata of pointcloud map (ROS 2 topic)
The node publishes the pointcloud metadata attached with an ID. Metadata is loaded from the .yaml file. Please see the description of PointCloudMapMetaData.msg for details.
Send partial pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
Given a query from a client node, the node sends a set of pointcloud maps that overlaps with the queried area.
Please see the description of GetPartialPointCloudMap.srv for details.
Send differential pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
File truncated at 100 lines see the full file
Changelog for package autoware_map_loader
1.1.0 (2025-05-01)
- feat(component_interface_specs): use template type in get_qos function (#364) Co-authored-by: Yutaka Kondo <<yutaka.kondo@youtalk.jp>>
- feat(map_loader): add the explanation of handling use_waypoints (#342)
- Contributors: Takagi, Isamu, Takayuki Murooka
1.10.0 (2026-09-28)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(map): add node designs for the map nodes (#1413)
* feat(map): add node designs for the map nodes Describe the interfaces, parameters and processes of the pointcloud and lanelet2 map loaders, the map hash generator, the lanelet2 map visualizer and the map projection loader as system design node files.
- fix(map): correct description formatting in Lanelet2MapLoader.node.yaml
* refactor(map): rename node designs to match the node class names PointCloudMapLoader and Lanelet2MapVisualization follow the entity naming convention derived from the C++ class names, as in #1335.
* fix(map): declare the MapHashGenerator external API interfaces as remap targets The map hash publisher and the lanelet XML server carry the fixed API names as remap_target, so a system design connects them like any other port and the launcher remaps the node-side names.
* fix(map): update description for map_projector_info to clarify its purpose ---------
-
fix(map): declare the dependencies these packages use (#1370) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers.
-
fix(autoware_map_loader): use CMake targets and portable logging (#1270)
* Use CMake targets and portable integer logging in autoware_map_loader This upstreams RoboStack downstream patch [patch/ros-rolling-autoware-map-loader.osx.patch]{.title-ref}. Best-guess rationale: linking to yaml-cpp and fmt through imported targets is more robust across package managers, and portable PRIu64 logging avoids uint64_t format mismatches on platforms where unsigned long and unsigned long long differ.
- style(pre-commit): autofix
* Support old fmt target Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>> ---------Co-authored-by: Daisuke Nishimatsu <<nishimarudai@gmail.com>> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>> Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>>
-
fix(autoware_map_loader): always publish the pointcloud map metadata (#1316) [output/pointcloud_map_metadata]{.title-ref} was only advertised when [enable_selected_load]{.title-ref} was true, even though the metadata dict it is built from is always available and the differential map loader that serves the map is created unconditionally. A deployment that delivers the PCD map through the differential/partial services sets [enable_whole_load: false]{.title-ref}, which retires [/map/pointcloud_map]{.title-ref}. Such a deployment was then left with no topic proving the map module had loaded its map: the map component's topic monitor watches a topic nobody publishes, reports [NotReceived]{.title-ref} (checked before any rate/timeout threshold, so the zeroed thresholds do not matter), and the map module stays in ERROR for the whole run. Publish the latched metadata as soon as the PCD metadata is parsed, so it is the delivery-independent evidence that the map is loaded and servable. This makes [enable_selected_load]{.title-ref} govern only the selected-load service, as its name says. The new launch test pins the regression: with [enable_whole_load]{.title-ref} and [enable_selected_load]{.title-ref} both false, the metadata must still arrive on a transient-local subscription, and [output/pointcloud_map]{.title-ref} must stay unadvertised.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/lanelet2_map_loader.launch.xml
-
- lanelet2_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/lanelet2_map_loader.param.yaml]
- lanelet2_map_path
- lanelet2_map_metadata_path [default: '']
- lanelet2_map_topic [default: vector_map]
- lanelet2_map_marker_topic [default: vector_map_marker]
- launch/pointcloud_map_loader.launch.xml
-
- pointcloud_map_path
- pointcloud_map_metadata_path
- pointcloud_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/pointcloud_map_loader.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_map_loader at Robotics Stack Exchange
Package Summary
| Version | 1.10.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/autowarefoundation/autoware_core.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-07 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Yamato Ando
- Masahiro Sakamoto
- NGUYEN Viet Anh
- Taiki Yamada
Authors
- Ryohsuke Mitsudome
- Koji Minoda
autoware_map_loader package
This package provides the features of loading various maps.
pointcloud_map_loader
Feature
pointcloud_map_loader provides pointcloud maps to the other Autoware nodes in various configurations.
Currently, it supports the following two types:
- Publish raw pointcloud map
- Publish downsampled pointcloud map
- Send partial pointcloud map loading via ROS 2 service
- Send differential pointcloud map loading via ROS 2 service
NOTE: We strongly recommend to use divided maps when using large pointcloud map to enable the latter two features (partial and differential load). Please go through the prerequisites section for more details, and follow the instruction for dividing the map and preparing the metadata.
Prerequisites
Prerequisites on pointcloud map file(s)
You may provide either a single .pcd file or multiple .pcd files. If you are using multiple PCD data, it MUST obey the following rules:
-
The pointcloud map should be projected on the same coordinate defined in
map_projection_loader, in order to be consistent with the lanelet2 map and other packages that converts between local and geodetic coordinates. For more information, please refer to the readme ofmap_projection_loader. - It must be divided by straight lines parallel to the x-axis and y-axis. The system does not support division by diagonal lines or curved lines.
- The division size along each axis should be equal.
- The division size should be about 20m x 20m. Particularly, care should be taken as using too large division size (for example, more than 100m) may have adverse effects on dynamic map loading features in ndt_scan_matcher and autoware_compare_map_segmentation.
- All the split maps should not overlap with each other.
- Metadata file should also be provided. The metadata structure description is provided below.
Metadata structure
The metadata should look like this:
x_resolution: 20.0
y_resolution: 20.0
A.pcd: [1200, 2500] # -> 1200 < x < 1220, 2500 < y < 2520
B.pcd: [1220, 2500] # -> 1220 < x < 1240, 2500 < y < 2520
C.pcd: [1200, 2520] # -> 1200 < x < 1220, 2520 < y < 2540
D.pcd: [1240, 2520] # -> 1240 < x < 1260, 2520 < y < 2540
where,
-
x_resolutionandy_resolution -
A.pcd,B.pcd, etc, are the names of PCD files. - List such as
[1200, 2500]are the values indicate that for this PCD file, x coordinates are between 1200 and 1220 (x_resolution+x_coordinate) and y coordinates are between 2500 and 2520 (y_resolution+y_coordinate).
You may use pointcloud_divider for dividing pointcloud map as well as generating the compatible metadata.yaml.
Directory structure of these files
If you only have one pointcloud map, Autoware will assume the following directory structure by default.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
If you have multiple rosbags, an example directory structure would be as follows. Note that you need to have a metadata when you have multiple pointcloud map files.
sample-map-rosbag
├── lanelet2_map.osm
├── pointcloud_map.pcd
│ ├── A.pcd
│ ├── B.pcd
│ ├── C.pcd
│ └── ...
├── map_projector_info.yaml
└── pointcloud_map_metadata.yaml
Specific features
Publish raw pointcloud map (ROS 2 topic)
The node publishes the raw pointcloud map loaded from the .pcd file(s).
Publish downsampled pointcloud map (ROS 2 topic)
The node publishes the downsampled pointcloud map loaded from the .pcd file(s). You can specify the downsample resolution by changing the leaf_size parameter.
Publish metadata of pointcloud map (ROS 2 topic)
The node publishes the pointcloud metadata attached with an ID. Metadata is loaded from the .yaml file. Please see the description of PointCloudMapMetaData.msg for details.
Send partial pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
Given a query from a client node, the node sends a set of pointcloud maps that overlaps with the queried area.
Please see the description of GetPartialPointCloudMap.srv for details.
Send differential pointcloud map (ROS 2 service)
Here, we assume that the pointcloud maps are divided into grids.
File truncated at 100 lines see the full file
Changelog for package autoware_map_loader
1.1.0 (2025-05-01)
- feat(component_interface_specs): use template type in get_qos function (#364) Co-authored-by: Yutaka Kondo <<yutaka.kondo@youtalk.jp>>
- feat(map_loader): add the explanation of handling use_waypoints (#342)
- Contributors: Takagi, Isamu, Takayuki Murooka
1.10.0 (2026-09-28)
-
Merge remote-tracking branch 'origin/main' into tmp/bot/bump_version_base
-
feat(map): add node designs for the map nodes (#1413)
* feat(map): add node designs for the map nodes Describe the interfaces, parameters and processes of the pointcloud and lanelet2 map loaders, the map hash generator, the lanelet2 map visualizer and the map projection loader as system design node files.
- fix(map): correct description formatting in Lanelet2MapLoader.node.yaml
* refactor(map): rename node designs to match the node class names PointCloudMapLoader and Lanelet2MapVisualization follow the entity naming convention derived from the C++ class names, as in #1335.
* fix(map): declare the MapHashGenerator external API interfaces as remap targets The map hash publisher and the lanelet XML server carry the fixed API names as remap_target, so a system design connects them like any other port and the launcher remaps the node-side names.
* fix(map): update description for map_projector_info to clarify its purpose ---------
-
fix(map): declare the dependencies these packages use (#1370) Each of these packages uses a package it never declares. Either it includes a header of that package, or it names a symbol of it while the header arrives through another dependency. Both build today only because some declared dependency re-exports the owner, so a change in an unrelated repository can break them without anything here changing. The tag follows where the dependency is used: a use in an installed header or in code compiled into the library takes <depend>, one reached only from test/ takes <test_depend>. System libraries are named by the rosdep key this workspace already prefers.
-
fix(autoware_map_loader): use CMake targets and portable logging (#1270)
* Use CMake targets and portable integer logging in autoware_map_loader This upstreams RoboStack downstream patch [patch/ros-rolling-autoware-map-loader.osx.patch]{.title-ref}. Best-guess rationale: linking to yaml-cpp and fmt through imported targets is more robust across package managers, and portable PRIu64 logging avoids uint64_t format mismatches on platforms where unsigned long and unsigned long long differ.
- style(pre-commit): autofix
* Support old fmt target Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>> ---------Co-authored-by: Daisuke Nishimatsu <<nishimarudai@gmail.com>> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Junya Sasaki <<j2sasaki1990@gmail.com>> Co-authored-by: Daisuke Nishimatsu <<42202095+wep21@users.noreply.github.com>>
-
fix(autoware_map_loader): always publish the pointcloud map metadata (#1316) [output/pointcloud_map_metadata]{.title-ref} was only advertised when [enable_selected_load]{.title-ref} was true, even though the metadata dict it is built from is always available and the differential map loader that serves the map is created unconditionally. A deployment that delivers the PCD map through the differential/partial services sets [enable_whole_load: false]{.title-ref}, which retires [/map/pointcloud_map]{.title-ref}. Such a deployment was then left with no topic proving the map module had loaded its map: the map component's topic monitor watches a topic nobody publishes, reports [NotReceived]{.title-ref} (checked before any rate/timeout threshold, so the zeroed thresholds do not matter), and the map module stays in ERROR for the whole run. Publish the latched metadata as soon as the PCD metadata is parsed, so it is the delivery-independent evidence that the map is loaded and servable. This makes [enable_selected_load]{.title-ref} govern only the selected-load service, as its name says. The new launch test pins the regression: with [enable_whole_load]{.title-ref} and [enable_selected_load]{.title-ref} both false, the metadata must still arrive on a transient-local subscription, and [output/pointcloud_map]{.title-ref} must stay unadvertised.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/lanelet2_map_loader.launch.xml
-
- lanelet2_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/lanelet2_map_loader.param.yaml]
- lanelet2_map_path
- lanelet2_map_metadata_path [default: '']
- lanelet2_map_topic [default: vector_map]
- lanelet2_map_marker_topic [default: vector_map_marker]
- launch/pointcloud_map_loader.launch.xml
-
- pointcloud_map_path
- pointcloud_map_metadata_path
- pointcloud_map_loader_param_path [default: $(find-pkg-share autoware_map_loader)/config/pointcloud_map_loader.param.yaml]