Package Summary

Tags No category tags.
Version 1.1.18
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description ROS 2 Navigation Framework and System
Checkout URI https://github.com/ros-planning/navigation2.git
VCS Type git
VCS Version humble
Last Updated 2025-08-12
Dev Status DEVELOPED
Released RELEASED
Tags robotics navigation ros2
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Refactored map server for ROS2 Navigation

Additional Links

No additional links.

Maintainers

  • Brian Wilcox

Authors

No additional authors.

Map Server

The Map Server provides maps to the rest of the Nav2 system using both topic and service interfaces. Map server will expose maps on the node bringup, but can also change maps using a load_map service during run-time, as well as save maps using a save_map server.

See its Configuration Guide Page for additional parameter descriptions.

Architecture

In contrast to the ROS1 navigation map server, the nav2 map server will support a variety of map types, and thus some aspects of the original code have been refactored to support this new extensible framework.

Currently map server divides into tree parts:

  • map_server
  • map_saver
  • map_io library

map_server is responsible for loading the map from a file through command-line interface or by using service requests.

map_saver saves the map into a file. Like map_server, it has an ability to save the map from command-line or by calling a service.

map_io - is a map input-output library. The library is designed to be an object-independent in order to allow easily save/load map from external code just by calling necessary function. This library is also used by map_loader and map_saver to work. Currently it contains OccupancyGrid saving/loading functions moved from the rest part of map server code. It is designed to be replaceable for a new IO library (e.g. for library with new map encoding method or any other library supporting costmaps, multifloor maps, etc…).

CLI-usage

Map Server

The Map Server is a composable ROS2 node. By default, there is a map_server executable that instances one of these nodes, but it is possible to compose multiple map server nodes into a single process, if desired.

The command line for the map server executable is slightly different that it was with ROS1. With ROS1, one invoked the map server and passing the map YAML filename, like this:

$ map_server map.yaml

Where the YAML file specified contained the various map metadata, such as:

image: testmap.png
resolution: 0.1
origin: [2.0, 3.0, 1.0]
negate: 0
occupied_thresh: 0.65
free_thresh: 0.196

The Nav2 software retains the map YAML file format from Nav1, but uses the ROS2 parameter mechanism to get the name of the YAML file to use. This effectively introduces a level of indirection to get the map yaml filename. For example, for a node named ‘map_server’, the parameter file would look like this:

# map_server_params.yaml
map_server:
    ros__parameters:
        yaml_filename: "map.yaml"

One can invoke the map service executable directly, passing the params file on the command line, like this:

$ map_server __params:=map_server_params.yaml

There is also possibility of having multiple map server nodes in a single process, where the parameters file would separate the parameters by node name, like this:

# combined_params.yaml
map_server1:
    ros__parameters:
        yaml_filename: "some_map.yaml"

map_server2:
    ros__parameters:
        yaml_filename: "another_map.yaml"

Then, one would invoke this process with the params file that contains the parameters for both nodes:

$ process_with_multiple_map_servers __params:=combined_params.yaml

The parameter for the initial map (yaml_filename) has to be set, but an empty string can be used if no initial map should be loaded. In this case, no map is loaded during on_configure or published during on_activate. The load_map-service should the be used to load and publish a map.

File truncated at 100 lines see the full file

CHANGELOG

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nav2_map_server at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 1.3.7
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description ROS 2 Navigation Framework and System
Checkout URI https://github.com/ros-planning/navigation2.git
VCS Type git
VCS Version jazzy
Last Updated 2025-08-14
Dev Status DEVELOPED
Released RELEASED
Tags robotics navigation ros2
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Refactored map server for ROS2 Navigation

Additional Links

No additional links.

Maintainers

  • Brian Wilcox

Authors

No additional authors.

Map Server

The Map Server provides maps to the rest of the Nav2 system using both topic and service interfaces. Map server will expose maps on the node bringup, but can also change maps using a load_map service during run-time, as well as save maps using a save_map server.

See its Configuration Guide Page for additional parameter descriptions.

Architecture

In contrast to the ROS1 navigation map server, the nav2 map server will support a variety of map types, and thus some aspects of the original code have been refactored to support this new extensible framework.

Currently map server divides into tree parts:

  • map_server
  • map_saver
  • map_io library

map_server is responsible for loading the map from a file through command-line interface or by using service requests.

map_saver saves the map into a file. Like map_server, it has an ability to save the map from command-line or by calling a service.

map_io - is a map input-output library. The library is designed to be an object-independent in order to allow easily save/load map from external code just by calling necessary function. This library is also used by map_loader and map_saver to work. Currently it contains OccupancyGrid saving/loading functions moved from the rest part of map server code. It is designed to be replaceable for a new IO library (e.g. for library with new map encoding method or any other library supporting costmaps, multifloor maps, etc…).

CLI-usage

Map Server

The Map Server is a composable ROS2 node. By default, there is a map_server executable that instances one of these nodes, but it is possible to compose multiple map server nodes into a single process, if desired.

The command line for the map server executable is slightly different that it was with ROS1. With ROS1, one invoked the map server and passing the map YAML filename, like this:

$ map_server map.yaml

Where the YAML file specified contained the various map metadata, such as:

image: testmap.png
resolution: 0.1
origin: [2.0, 3.0, 1.0]
negate: 0
occupied_thresh: 0.65
free_thresh: 0.196

The Nav2 software retains the map YAML file format from Nav1, but uses the ROS2 parameter mechanism to get the name of the YAML file to use. This effectively introduces a level of indirection to get the map yaml filename. For example, for a node named ‘map_server’, the parameter file would look like this:

# map_server_params.yaml
map_server:
    ros__parameters:
        yaml_filename: "map.yaml"

One can invoke the map service executable directly, passing the params file on the command line, like this:

$ map_server __params:=map_server_params.yaml

There is also possibility of having multiple map server nodes in a single process, where the parameters file would separate the parameters by node name, like this:

# combined_params.yaml
map_server1:
    ros__parameters:
        yaml_filename: "some_map.yaml"

map_server2:
    ros__parameters:
        yaml_filename: "another_map.yaml"

Then, one would invoke this process with the params file that contains the parameters for both nodes:

$ process_with_multiple_map_servers __params:=combined_params.yaml

The parameter for the initial map (yaml_filename) has to be set, but an empty string can be used if no initial map should be loaded. In this case, no map is loaded during on_configure or published during on_activate. The load_map-service should the be used to load and publish a map.

File truncated at 100 lines see the full file

CHANGELOG

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nav2_map_server at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 1.4.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description ROS 2 Navigation Framework and System
Checkout URI https://github.com/ros-planning/navigation2.git
VCS Type git
VCS Version kilted
Last Updated 2025-08-11
Dev Status DEVELOPED
Released RELEASED
Tags robotics navigation ros2
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Refactored map server for ROS2 Navigation

Additional Links

No additional links.

Maintainers

  • Brian Wilcox

Authors

No additional authors.

Map Server

The Map Server provides maps to the rest of the Nav2 system using both topic and service interfaces. Map server will expose maps on the node bringup, but can also change maps using a load_map service during run-time, as well as save maps using a save_map server.

See its Configuration Guide Page for additional parameter descriptions.

Architecture

In contrast to the ROS1 navigation map server, the nav2 map server will support a variety of map types, and thus some aspects of the original code have been refactored to support this new extensible framework.

Currently map server divides into tree parts:

  • map_server
  • map_saver
  • map_io library

map_server is responsible for loading the map from a file through command-line interface or by using service requests.

map_saver saves the map into a file. Like map_server, it has an ability to save the map from command-line or by calling a service.

map_io - is a map input-output library. The library is designed to be an object-independent in order to allow easily save/load map from external code just by calling necessary function. This library is also used by map_loader and map_saver to work. Currently it contains OccupancyGrid saving/loading functions moved from the rest part of map server code. It is designed to be replaceable for a new IO library (e.g. for library with new map encoding method or any other library supporting costmaps, multifloor maps, etc…).

CLI-usage

Map Server

The Map Server is a composable ROS2 node. By default, there is a map_server executable that instances one of these nodes, but it is possible to compose multiple map server nodes into a single process, if desired.

The command line for the map server executable is slightly different that it was with ROS1. With ROS1, one invoked the map server and passing the map YAML filename, like this:

$ map_server map.yaml

Where the YAML file specified contained the various map metadata, such as:

image: testmap.png
resolution: 0.1
origin: [2.0, 3.0, 1.0]
negate: 0
occupied_thresh: 0.65
free_thresh: 0.196

The Nav2 software retains the map YAML file format from Nav1, but uses the ROS2 parameter mechanism to get the name of the YAML file to use. This effectively introduces a level of indirection to get the map yaml filename. For example, for a node named ‘map_server’, the parameter file would look like this:

# map_server_params.yaml
map_server:
    ros__parameters:
        yaml_filename: "map.yaml"

One can invoke the map service executable directly, passing the params file on the command line, like this:

$ map_server __params:=map_server_params.yaml

There is also possibility of having multiple map server nodes in a single process, where the parameters file would separate the parameters by node name, like this:

# combined_params.yaml
map_server1:
    ros__parameters:
        yaml_filename: "some_map.yaml"

map_server2:
    ros__parameters:
        yaml_filename: "another_map.yaml"

Then, one would invoke this process with the params file that contains the parameters for both nodes:

$ process_with_multiple_map_servers __params:=combined_params.yaml

The parameter for the initial map (yaml_filename) has to be set, but an empty string can be used if no initial map should be loaded. In this case, no map is loaded during on_configure or published during on_activate. The load_map-service should the be used to load and publish a map.

File truncated at 100 lines see the full file

CHANGELOG

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nav2_map_server at Robotics Stack Exchange

No version for distro rolling showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 1.1.18
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description ROS 2 Navigation Framework and System
Checkout URI https://github.com/ros-planning/navigation2.git
VCS Type git
VCS Version humble
Last Updated 2025-08-12
Dev Status DEVELOPED
Released RELEASED
Tags robotics navigation ros2
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Refactored map server for ROS2 Navigation

Additional Links

No additional links.

Maintainers

  • Brian Wilcox

Authors

No additional authors.

Map Server

The Map Server provides maps to the rest of the Nav2 system using both topic and service interfaces. Map server will expose maps on the node bringup, but can also change maps using a load_map service during run-time, as well as save maps using a save_map server.

See its Configuration Guide Page for additional parameter descriptions.

Architecture

In contrast to the ROS1 navigation map server, the nav2 map server will support a variety of map types, and thus some aspects of the original code have been refactored to support this new extensible framework.

Currently map server divides into tree parts:

  • map_server
  • map_saver
  • map_io library

map_server is responsible for loading the map from a file through command-line interface or by using service requests.

map_saver saves the map into a file. Like map_server, it has an ability to save the map from command-line or by calling a service.

map_io - is a map input-output library. The library is designed to be an object-independent in order to allow easily save/load map from external code just by calling necessary function. This library is also used by map_loader and map_saver to work. Currently it contains OccupancyGrid saving/loading functions moved from the rest part of map server code. It is designed to be replaceable for a new IO library (e.g. for library with new map encoding method or any other library supporting costmaps, multifloor maps, etc…).

CLI-usage

Map Server

The Map Server is a composable ROS2 node. By default, there is a map_server executable that instances one of these nodes, but it is possible to compose multiple map server nodes into a single process, if desired.

The command line for the map server executable is slightly different that it was with ROS1. With ROS1, one invoked the map server and passing the map YAML filename, like this:

$ map_server map.yaml

Where the YAML file specified contained the various map metadata, such as:

image: testmap.png
resolution: 0.1
origin: [2.0, 3.0, 1.0]
negate: 0
occupied_thresh: 0.65
free_thresh: 0.196

The Nav2 software retains the map YAML file format from Nav1, but uses the ROS2 parameter mechanism to get the name of the YAML file to use. This effectively introduces a level of indirection to get the map yaml filename. For example, for a node named ‘map_server’, the parameter file would look like this:

# map_server_params.yaml
map_server:
    ros__parameters:
        yaml_filename: "map.yaml"

One can invoke the map service executable directly, passing the params file on the command line, like this:

$ map_server __params:=map_server_params.yaml

There is also possibility of having multiple map server nodes in a single process, where the parameters file would separate the parameters by node name, like this:

# combined_params.yaml
map_server1:
    ros__parameters:
        yaml_filename: "some_map.yaml"

map_server2:
    ros__parameters:
        yaml_filename: "another_map.yaml"

Then, one would invoke this process with the params file that contains the parameters for both nodes:

$ process_with_multiple_map_servers __params:=combined_params.yaml

The parameter for the initial map (yaml_filename) has to be set, but an empty string can be used if no initial map should be loaded. In this case, no map is loaded during on_configure or published during on_activate. The load_map-service should the be used to load and publish a map.

File truncated at 100 lines see the full file

CHANGELOG

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nav2_map_server at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 1.0.12
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/tup-robomaster/tup2023-sentry-nav.git
VCS Type git
VCS Version lio_WIP
Last Updated 2023-09-22
Dev Status UNKNOWN
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Refactored map server for ROS2 Navigation

Additional Links

No additional links.

Maintainers

  • Brian Wilcox

Authors

No additional authors.

Map Server

The Map Server provides maps to the rest of the Nav2 system using both topic and service interfaces.

Changes from ROS1 Navigation Map Server

While the nav2 map server provides the same general function as the nav1 map server, the new code has some changes to accomodate ROS2 as well as some architectural improvements.

In addition, there is now two new “load_map” and “save_map” services which can be used to dynamically load and save a map.

Architecture

In contrast to the ROS1 navigation map server, the nav2 map server will support a variety of map types, and thus some aspects of the original code have been refactored to support this new extensible framework.

Currently map server divides into tree parts:

  • map_server
  • map_saver
  • map_io library

map_server is responsible for loading the map from a file through command-line interface or by using serice requests.

map_saver saves the map into a file. Like map_server, it has an ability to save the map from command-line or by calling a service.

map_io - is a map input-output library. The library is designed to be an object-independent in order to allow easily save/load map from external code just by calling necessary function. This library is also used by map_loader and map_saver to work. Currently it contains OccupancyGrid saving/loading functions moved from the rest part of map server code. It is designed to be replaceble for a new IO library (e.g. for library with new map encoding method or any other library supporting costmaps, multifloor maps, etc…).

CLI-usage

Map Server

The Map Server is a composable ROS2 node. By default, there is a map_server executable that instances one of these nodes, but it is possible to compose multiple map server nodes into a single process, if desired.

The command line for the map server executable is slightly different that it was with ROS1. With ROS1, one invoked the map server and passing the map YAML filename, like this:

$ map_server map.yaml

Where the YAML file specified contained the various map metadata, such as:

image: testmap.png
resolution: 0.1
origin: [2.0, 3.0, 1.0]
negate: 0
occupied_thresh: 0.65
free_thresh: 0.196

The Nav2 software retains the map YAML file format from Nav1, but uses the ROS2 parameter mechanism to get the name of the YAML file to use. This effectively introduces a level of indirection to get the map yaml filename. For example, for a node named ‘map_server’, the parameter file would look like this:

# map_server_params.yaml
map_server:
    ros__parameters:
        yaml_filename: "map.yaml"

One can invoke the map service executable directly, passing the params file on the command line, like this:

$ map_server __params:=map_server_params.yaml

There is also possibility of having multiple map server nodes in a single process, where the parameters file would separate the parameters by node name, like this:

# combined_params.yaml
map_server1:
    ros__parameters:
        yaml_filename: "some_map.yaml"

map_server2:
    ros__parameters:
        yaml_filename: "another_map.yaml"

Then, one would invoke this process with the params file that contains the parameters for both nodes:

``` $ process_with_multiple_map_servers __params:=combined_params.yaml

File truncated at 100 lines see the full file

CHANGELOG

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nav2_map_server at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 1.0.12
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description ROS 2 Navigation Framework and System
Checkout URI https://github.com/ros-planning/navigation2.git
VCS Type git
VCS Version galactic
Last Updated 2022-09-15
Dev Status DEVELOPED
Released RELEASED
Tags robotics navigation ros2
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Refactored map server for ROS2 Navigation

Additional Links

No additional links.

Maintainers

  • Brian Wilcox

Authors

No additional authors.

Map Server

The Map Server provides maps to the rest of the Nav2 system using both topic and service interfaces.

Changes from ROS1 Navigation Map Server

While the nav2 map server provides the same general function as the nav1 map server, the new code has some changes to accomodate ROS2 as well as some architectural improvements.

In addition, there is now two new “load_map” and “save_map” services which can be used to dynamically load and save a map.

Architecture

In contrast to the ROS1 navigation map server, the nav2 map server will support a variety of map types, and thus some aspects of the original code have been refactored to support this new extensible framework.

Currently map server divides into tree parts:

  • map_server
  • map_saver
  • map_io library

map_server is responsible for loading the map from a file through command-line interface or by using serice requests.

map_saver saves the map into a file. Like map_server, it has an ability to save the map from command-line or by calling a service.

map_io - is a map input-output library. The library is designed to be an object-independent in order to allow easily save/load map from external code just by calling necessary function. This library is also used by map_loader and map_saver to work. Currently it contains OccupancyGrid saving/loading functions moved from the rest part of map server code. It is designed to be replaceble for a new IO library (e.g. for library with new map encoding method or any other library supporting costmaps, multifloor maps, etc…).

CLI-usage

Map Server

The Map Server is a composable ROS2 node. By default, there is a map_server executable that instances one of these nodes, but it is possible to compose multiple map server nodes into a single process, if desired.

The command line for the map server executable is slightly different that it was with ROS1. With ROS1, one invoked the map server and passing the map YAML filename, like this:

$ map_server map.yaml

Where the YAML file specified contained the various map metadata, such as:

image: testmap.png
resolution: 0.1
origin: [2.0, 3.0, 1.0]
negate: 0
occupied_thresh: 0.65
free_thresh: 0.196

The Nav2 software retains the map YAML file format from Nav1, but uses the ROS2 parameter mechanism to get the name of the YAML file to use. This effectively introduces a level of indirection to get the map yaml filename. For example, for a node named ‘map_server’, the parameter file would look like this:

# map_server_params.yaml
map_server:
    ros__parameters:
        yaml_filename: "map.yaml"

One can invoke the map service executable directly, passing the params file on the command line, like this:

$ map_server __params:=map_server_params.yaml

There is also possibility of having multiple map server nodes in a single process, where the parameters file would separate the parameters by node name, like this:

# combined_params.yaml
map_server1:
    ros__parameters:
        yaml_filename: "some_map.yaml"

map_server2:
    ros__parameters:
        yaml_filename: "another_map.yaml"

Then, one would invoke this process with the params file that contains the parameters for both nodes:

``` $ process_with_multiple_map_servers __params:=combined_params.yaml

File truncated at 100 lines see the full file

CHANGELOG

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nav2_map_server at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 1.2.10
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description ROS 2 Navigation Framework and System
Checkout URI https://github.com/ros-planning/navigation2.git
VCS Type git
VCS Version iron
Last Updated 2024-10-02
Dev Status DEVELOPED
Released RELEASED
Tags robotics navigation ros2
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Refactored map server for ROS2 Navigation

Additional Links

No additional links.

Maintainers

  • Brian Wilcox

Authors

No additional authors.

Map Server

The Map Server provides maps to the rest of the Nav2 system using both topic and service interfaces. Map server will expose maps on the node bringup, but can also change maps using a load_map service during run-time, as well as save maps using a save_map server.

See its Configuration Guide Page for additional parameter descriptions.

Architecture

In contrast to the ROS1 navigation map server, the nav2 map server will support a variety of map types, and thus some aspects of the original code have been refactored to support this new extensible framework.

Currently map server divides into tree parts:

  • map_server
  • map_saver
  • map_io library

map_server is responsible for loading the map from a file through command-line interface or by using service requests.

map_saver saves the map into a file. Like map_server, it has an ability to save the map from command-line or by calling a service.

map_io - is a map input-output library. The library is designed to be an object-independent in order to allow easily save/load map from external code just by calling necessary function. This library is also used by map_loader and map_saver to work. Currently it contains OccupancyGrid saving/loading functions moved from the rest part of map server code. It is designed to be replaceable for a new IO library (e.g. for library with new map encoding method or any other library supporting costmaps, multifloor maps, etc…).

CLI-usage

Map Server

The Map Server is a composable ROS2 node. By default, there is a map_server executable that instances one of these nodes, but it is possible to compose multiple map server nodes into a single process, if desired.

The command line for the map server executable is slightly different that it was with ROS1. With ROS1, one invoked the map server and passing the map YAML filename, like this:

$ map_server map.yaml

Where the YAML file specified contained the various map metadata, such as:

image: testmap.png
resolution: 0.1
origin: [2.0, 3.0, 1.0]
negate: 0
occupied_thresh: 0.65
free_thresh: 0.196

The Nav2 software retains the map YAML file format from Nav1, but uses the ROS2 parameter mechanism to get the name of the YAML file to use. This effectively introduces a level of indirection to get the map yaml filename. For example, for a node named ‘map_server’, the parameter file would look like this:

# map_server_params.yaml
map_server:
    ros__parameters:
        yaml_filename: "map.yaml"

One can invoke the map service executable directly, passing the params file on the command line, like this:

$ map_server __params:=map_server_params.yaml

There is also possibility of having multiple map server nodes in a single process, where the parameters file would separate the parameters by node name, like this:

# combined_params.yaml
map_server1:
    ros__parameters:
        yaml_filename: "some_map.yaml"

map_server2:
    ros__parameters:
        yaml_filename: "another_map.yaml"

Then, one would invoke this process with the params file that contains the parameters for both nodes:

$ process_with_multiple_map_servers __params:=combined_params.yaml

The parameter for the initial map (yaml_filename) has to be set, but an empty string can be used if no initial map should be loaded. In this case, no map is loaded during on_configure or published during on_activate. The load_map-service should the be used to load and publish a map.

File truncated at 100 lines see the full file

CHANGELOG

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nav2_map_server at Robotics Stack Exchange

No version for distro melodic showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 1.1.18
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description ROS 2 Navigation Framework and System
Checkout URI https://github.com/ros-planning/navigation2.git
VCS Type git
VCS Version humble
Last Updated 2025-08-12
Dev Status DEVELOPED
Released RELEASED
Tags robotics navigation ros2
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Refactored map server for ROS2 Navigation

Additional Links

No additional links.

Maintainers

  • Brian Wilcox

Authors

No additional authors.

Map Server

The Map Server provides maps to the rest of the Nav2 system using both topic and service interfaces. Map server will expose maps on the node bringup, but can also change maps using a load_map service during run-time, as well as save maps using a save_map server.

See its Configuration Guide Page for additional parameter descriptions.

Architecture

In contrast to the ROS1 navigation map server, the nav2 map server will support a variety of map types, and thus some aspects of the original code have been refactored to support this new extensible framework.

Currently map server divides into tree parts:

  • map_server
  • map_saver
  • map_io library

map_server is responsible for loading the map from a file through command-line interface or by using service requests.

map_saver saves the map into a file. Like map_server, it has an ability to save the map from command-line or by calling a service.

map_io - is a map input-output library. The library is designed to be an object-independent in order to allow easily save/load map from external code just by calling necessary function. This library is also used by map_loader and map_saver to work. Currently it contains OccupancyGrid saving/loading functions moved from the rest part of map server code. It is designed to be replaceable for a new IO library (e.g. for library with new map encoding method or any other library supporting costmaps, multifloor maps, etc…).

CLI-usage

Map Server

The Map Server is a composable ROS2 node. By default, there is a map_server executable that instances one of these nodes, but it is possible to compose multiple map server nodes into a single process, if desired.

The command line for the map server executable is slightly different that it was with ROS1. With ROS1, one invoked the map server and passing the map YAML filename, like this:

$ map_server map.yaml

Where the YAML file specified contained the various map metadata, such as:

image: testmap.png
resolution: 0.1
origin: [2.0, 3.0, 1.0]
negate: 0
occupied_thresh: 0.65
free_thresh: 0.196

The Nav2 software retains the map YAML file format from Nav1, but uses the ROS2 parameter mechanism to get the name of the YAML file to use. This effectively introduces a level of indirection to get the map yaml filename. For example, for a node named ‘map_server’, the parameter file would look like this:

# map_server_params.yaml
map_server:
    ros__parameters:
        yaml_filename: "map.yaml"

One can invoke the map service executable directly, passing the params file on the command line, like this:

$ map_server __params:=map_server_params.yaml

There is also possibility of having multiple map server nodes in a single process, where the parameters file would separate the parameters by node name, like this:

# combined_params.yaml
map_server1:
    ros__parameters:
        yaml_filename: "some_map.yaml"

map_server2:
    ros__parameters:
        yaml_filename: "another_map.yaml"

Then, one would invoke this process with the params file that contains the parameters for both nodes:

$ process_with_multiple_map_servers __params:=combined_params.yaml

The parameter for the initial map (yaml_filename) has to be set, but an empty string can be used if no initial map should be loaded. In this case, no map is loaded during on_configure or published during on_activate. The load_map-service should the be used to load and publish a map.

File truncated at 100 lines see the full file

CHANGELOG

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nav2_map_server at Robotics Stack Exchange

No version for distro noetic showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 1.1.18
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description ROS 2 Navigation Framework and System
Checkout URI https://github.com/ros-planning/navigation2.git
VCS Type git
VCS Version humble
Last Updated 2025-08-12
Dev Status DEVELOPED
Released RELEASED
Tags robotics navigation ros2
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Refactored map server for ROS2 Navigation

Additional Links

No additional links.

Maintainers

  • Brian Wilcox

Authors

No additional authors.

Map Server

The Map Server provides maps to the rest of the Nav2 system using both topic and service interfaces. Map server will expose maps on the node bringup, but can also change maps using a load_map service during run-time, as well as save maps using a save_map server.

See its Configuration Guide Page for additional parameter descriptions.

Architecture

In contrast to the ROS1 navigation map server, the nav2 map server will support a variety of map types, and thus some aspects of the original code have been refactored to support this new extensible framework.

Currently map server divides into tree parts:

  • map_server
  • map_saver
  • map_io library

map_server is responsible for loading the map from a file through command-line interface or by using service requests.

map_saver saves the map into a file. Like map_server, it has an ability to save the map from command-line or by calling a service.

map_io - is a map input-output library. The library is designed to be an object-independent in order to allow easily save/load map from external code just by calling necessary function. This library is also used by map_loader and map_saver to work. Currently it contains OccupancyGrid saving/loading functions moved from the rest part of map server code. It is designed to be replaceable for a new IO library (e.g. for library with new map encoding method or any other library supporting costmaps, multifloor maps, etc…).

CLI-usage

Map Server

The Map Server is a composable ROS2 node. By default, there is a map_server executable that instances one of these nodes, but it is possible to compose multiple map server nodes into a single process, if desired.

The command line for the map server executable is slightly different that it was with ROS1. With ROS1, one invoked the map server and passing the map YAML filename, like this:

$ map_server map.yaml

Where the YAML file specified contained the various map metadata, such as:

image: testmap.png
resolution: 0.1
origin: [2.0, 3.0, 1.0]
negate: 0
occupied_thresh: 0.65
free_thresh: 0.196

The Nav2 software retains the map YAML file format from Nav1, but uses the ROS2 parameter mechanism to get the name of the YAML file to use. This effectively introduces a level of indirection to get the map yaml filename. For example, for a node named ‘map_server’, the parameter file would look like this:

# map_server_params.yaml
map_server:
    ros__parameters:
        yaml_filename: "map.yaml"

One can invoke the map service executable directly, passing the params file on the command line, like this:

$ map_server __params:=map_server_params.yaml

There is also possibility of having multiple map server nodes in a single process, where the parameters file would separate the parameters by node name, like this:

# combined_params.yaml
map_server1:
    ros__parameters:
        yaml_filename: "some_map.yaml"

map_server2:
    ros__parameters:
        yaml_filename: "another_map.yaml"

Then, one would invoke this process with the params file that contains the parameters for both nodes:

$ process_with_multiple_map_servers __params:=combined_params.yaml

The parameter for the initial map (yaml_filename) has to be set, but an empty string can be used if no initial map should be loaded. In this case, no map is loaded during on_configure or published during on_activate. The load_map-service should the be used to load and publish a map.

File truncated at 100 lines see the full file

CHANGELOG

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged nav2_map_server at Robotics Stack Exchange