Skip to content

Sub-node name is ignored in service name resolving #2734

Description

@PfeifferMicha

When I create sub-nodes using Node::create_sub_node() and then resolve a private name on this sub-node, the sub-namespace is ignored.

    auto nh_left = this->create_sub_node( "left" );
    std::string resolved_service_name = nh_left->get_node_base_interface()->resolve_topic_or_service_name( 
                                                                                                                                                   "~/set_camera_info", true, false );

Resolves to: /test_cam_info_manager/set_camera_info
But I would expect it to resolve to: /test_cam_info_manager/**left**/set_camera_info

Background:
In order to create two CameraInfoManager's for a stereo setup, I need some way to push the CameraInfoManagers into a sub-namespace. I thought this is exactly what sub-nodes are for, but it's not working. Original issue: ros-perception/image_common#341

Note: In rolling release, I believe this can be circumvented because CameraInfoManager has a new namespace parameter, but this is not the case in jazzy.

Required Info:

  • Operating System:
    • Ubuntu 24.04
  • Installation type:
    • binaries
  • Version or commit hash:
    • jazzy
  • Client library (if applicable):
    • rclcpp

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinghelp wantedExtra attention is needed

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions