Skip to content

Tf related topics do not get properly namespaced in Composable Nodes #3001

@xaru8145

Description

@xaru8145

Generated by Generative AI

No response

Operating System:

[Docker] Linux d49ab8ac36f9 6.14.0-36-generic #36~24.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Oct 15 15:45:17 UTC 2 x86_64 x86_64 x86_64 GNU/Linux

ROS version or commit hash:

jazzy

RMW implementation (if applicable):

rmw_fastrtps_cpp

RMW Configuration (if applicable):

No response

Client library (if applicable):

No response

'ros2 doctor --report' output

ros2 doctor --report
   NETWORK CONFIGURATION
inet         : 127.0.0.1
inet4        : ['127.0.0.1']
inet6        : ['::1']
netmask      : 255.0.0.0
device       : lo
flags        : 73<LOOPBACK,UP,RUNNING>
mtu          : 65536
inet         : 172.18.0.2
inet4        : ['172.18.0.2']
ether        : 72:c6:fa:59:9f:42
netmask      : 255.255.0.0
device       : eth0
flags        : 4163<UP,RUNNING,MULTICAST,BROADCAST>
mtu          : 1500
broadcast    : 172.18.255.255

   PLATFORM INFORMATION
system           : Linux
platform info    : Linux-6.14.0-36-generic-x86_64-with-glibc2.39
release          : 6.14.0-36-generic
processor        : x86_64

   RMW MIDDLEWARE
middleware name    : rmw_fastrtps_cpp

   ROS 2 INFORMATION
distribution name      : jazzy
distribution type      : ros2
distribution status    : active
release platforms      : {'debian': ['bookworm'], 'rhel': ['9'], 'ubuntu': ['noble']}

Steps to reproduce issue

  1. Launch file with a given namespace and a configuration file:
  my_container = ComposableNodeContainer(
        name='my_container',
        namespace=namespace,
        package='rclcpp_components',
        executable='component_container',
        output='screen',
        composable_node_descriptions=[
            ComposableNode(
                package='my_package',
                plugin='my_plugin',
                name='node_name',
                namespace=namespace,
                parameters=[
                    config,
                    {'use_sim_time': use_sim_time},
                ],
                remappings=[
                    ('/tf', 'tf'),
                    ('/tf_static', 'tf_static'),
                    ('/my_topic', 'my_topic_remapped'),
                ],
            ),
        ],
    )
  1. Launch the file and inspect the list of topics using ros2 topic list.

Expected behavior

We should see the tf topics properly namespaced by inspecting the output of ros2 topic list.

/namespace/tf
/namespace/tf_static
/namespace/my_topic_remapped

Actual behavior

The node specific topics are properly namespaced but tf related ones are not.

/tf
/tf_static
/namespace/my_topic_remapped

Additional information

The way I got it to work work is by adding the tf remapping in the container node rather than in the composable node itself.

    my_container = ComposableNodeContainer(
        name='my_container',
        namespace=namespace,
        package='rclcpp_components',
        executable='component_container',
        output='screen',
        remappings=[
            ('/tf', 'tf'),
            ('/tf_static', 'tf_static'),
        ],
        composable_node_descriptions=[
            ComposableNode(
                package='my_package',
                plugin='my_plugin',
                name='node_name',
                namespace=namespace,
                parameters=[
                    config,
                    {'use_sim_time': use_sim_time},
                ],
                remappings=[
                    ('my_topic', 'my_topic_remapped'),
                ],
            ),
        ],
    )

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions