Skip to content

Using divided pointcloud map#

Divided pointcloud map is necessary when handling large pointcloud map, in which case Autoware may not be capable of sending the whole map via ROS 2 topic or loading the whole map into memory. By using the pre-divided map, Autoware will dynamically load the pointcloud map according to the vehicle's position.

Tutorial#

In this tutorial, you divide the pointcloud map of the rosbag replay simulation into a grid of small PCD files. Then you start the logging simulator with the divided map.

Download the sample map#

Use the demo_artifacts Ansible role to download the sample map, as in rosbag replay simulation:

cd ~/autoware
ansible-galaxy collection install -f -r "ansible-galaxy-requirements.yaml"
ansible-playbook autoware.dev_env.install_dev_env --tags demo_artifacts --ask-become-pass

The map is then in ~/autoware_data/maps/sample-map-rosbag/. It contains lanelet2_map.osm, pointcloud_map.pcd, and map_projector_info.yaml.

Build the pointcloud divider#

The autoware_pointcloud_divider package is in the autoware_tools repository. Import repositories/tools.repos into your workspace and build the package:

cd ~/autoware
vcs import src < repositories/tools.repos
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release --packages-up-to autoware_pointcloud_divider

Divide the map#

Run the divider. It reads pointcloud_map.pcd of the sample map and writes the new map to output_pcd_dir. The paths must be absolute. A negative leaf_size keeps all points (no downsampling). Each output file covers a grid cell of 20 m by 20 m by default.

source ~/autoware/install/setup.bash
ros2 launch autoware_pointcloud_divider pointcloud_divider.launch.xml \
  input_pcd_or_dir:=$HOME/autoware_data/maps/sample-map-rosbag/pointcloud_map.pcd \
  output_pcd_dir:=$HOME/autoware_data/maps/sample-map-rosbag-divided \
  prefix:=pointcloud_map \
  leaf_size:=-1.0

Warning

The divider deletes the folder output_pcd_dir before it starts, if the folder exists. Do not give it a folder that holds files you want to keep.

The divider creates a folder named pointcloud_map.pcd that holds the PCD files, and a pointcloud_map_metadata.yaml file next to it. Copy the other map files into the new map folder:

cp ~/autoware_data/maps/sample-map-rosbag/{lanelet2_map.osm,map_projector_info.yaml} ~/autoware_data/maps/sample-map-rosbag-divided/

The new map folder has this structure:

sample-map-rosbag-divided
├── lanelet2_map.osm
├── map_projector_info.yaml
├── pointcloud_map.pcd
│   ├── pointcloud_map_<ix>_<iy>.pcd
│   └── ...
└── pointcloud_map_metadata.yaml

The numbers <ix> and <iy> are the indices of the grid cell. The metadata file gives the size of the grid cells and the position of each PCD file.

Launch Autoware with the divided map#

The pointcloud_map_file argument names the pointcloud map in map_path. It can be one PCD file or a folder of PCD files, and its default value is pointcloud_map.pcd. If your folder of PCD files has another name, set this argument to that name.

Launch the logging simulator with the divided map:

source ~/autoware/install/setup.bash
ros2 launch autoware_launch logging_simulator.launch.xml \
  map_path:=$HOME/autoware_data/maps/sample-map-rosbag-divided pointcloud_map_file:=pointcloud_map.pcd \
  vehicle_model:=sample_vehicle sensor_model:=sample_sensor_kit

For playing rosbag to simulate Autoware, please refer to the instruction in rosbag replay simulation.