Ask Your Question

Revision history [back]

Service spoofing - overriding - renaming

The short story:

I have a node N providing a service N_srv and a node M that calls that service. I would like to to create a node K that overrides N_srv, that is it creates its own service N_srv that hides the original one. This would like like filtering a service (the same would apply to a topic). However:

  • N is defined in an unmodifiable launch file N_launch which is called by another unmodifiable launch file Top_launch.
  • No remapping args are provided in the N_launch or Top_launch xml.
  • Doing roslaunch Top_launch N_srv:=N_srv_original doesn't seem to work.
  • In Top_launch there are other nodes that use by default N_srv

Any idea about how to do this without modifing Top_launch or N_launch?

The (not so) longer story

I am creating an octomap filter that takes the original octomap and changes bits of it according to several filters. This is necessary as many collision detection packages seem to ignore the allowed_collision parts of planning scene. The octomap is provided by collider node which is launched by pr2_3dnav, and planning_scene uses it. I would like to have my octomap filter sit in between the original octomap and environment_server with the minimum footprint, that is I don't want to change the whole pr2_3dnav.launch file (or any other launch file that uses the arm navigation stack) but only remap the services. Is there a straightforward way of doing this?