' Frame [map] does not exist' with robot_localization

asked 2023-08-08 09:39:05 -0600

azerty gravatar image

I'm using Ros2 humble in order to make autonomous a differential drive mobile base.

I use the robot_localization package for the localization. But i don't have the map frame in rviz2.

There is my launch file :

ekf_path = os.path.join(
    get_package_share_directory('ros2_control_demo_example_2'),
    'config',
    'ekf.yaml')

ekf_odom_path = os.path.join(
    get_package_share_directory('ros2_control_demo_example_2'),
    'config',
    'ekf_odom.yaml')

robot_localization_node = launch_ros.actions.Node(
    package='robot_localization',
    executable='ekf_node',
    name='ekf',
    output='screen',
    parameters=[{'clear_param': True},
                {'file': ekf_path},
                {'command': 'load'}]
)

robot_localization_odom_node = launch_ros.actions.Node(
    package='robot_localization',
    executable='ekf_node',
    name='ekf_odom',
    output='screen',
    remappings=[
        ('odometry/filtered', 'odometry/filtered_wheel'),
    ],
    parameters=[{'clear_param': True},
                {'file': ekf_odom_path},
                {'command': 'load'}]
)


map_server = Node(
    package='nav2_map_server',
    executable='map_server',
    name='map_server',
    output='screen',
    respawn= True,
    respawn_delay=2.0,
    parameters=[{'yaml_filename': 'cei1.yaml',
                "topic_name": "map",
                "frame_id": "map"}]
)

lifecycle_nodes = ['map_server']

lifecycle_manager = Node(
            package='nav2_lifecycle_manager',
            executable='lifecycle_manager',
            name='lifecycle_manager_localization',
            output='screen',
            arguments=['--ros-args', '--log-level', 'info'],
            parameters=[{'autostart': True},
                        {'node_names': lifecycle_nodes}])

and there is my .yaml files :

  • odom -> base_link :

    other parameters are ignored

    frequency: 100 two_d_mode: true publish_tf: true

map_frame: map odom_frame: odom base_link_frame: diffbot_base_link world_frame: odom

odom0: odometry/filtered_wheel odom0_config: [false, false, false, false, false, false, true, true, false, false, false, true, false, false, false] odom0_queue_size: 100

  • map -> base_link :

    other parameters are ignored

    frequency: 100 two_d_mode: true publish_tf: true

map_frame: map odom_frame: odom base_link_frame: diffbot_base_link world_frame: odom

odom0: odometry/filtered_wheel odom0_config: [false, false, false, false, false, false, true, true, false, false, false, true, false, false, false] odom0_queue_size: 100

i don't know what to do to get this map frame. Thx a lot for every kind of help !

edit retag flag offensive close merge delete