1
$\begingroup$

This question is relevant to the joint use of ROS 2 humble and ROS noetic, but with the explicit intent of using custom messages/services/actions for communication between them, under Ubuntu 22.04.

From what I have understood so far, what is required for support of custom interfaces is that the bridge be able to source both ROS's catkin_ws/devel/setup.bashand ROS 2's ros2_ws/install/local_setup.bash, which is possible for the above configuraton (excluding actions) if humble is substituted for foxy and everything is docker-ised via the foxy-ros1-bridge docker image. (The image's underlying Ubuntu distribution is 20.04, in which noetic and foxy debian packages are instantly available.)

However, I have not been able to find anything pertaining to my original intent which concerns the humble distro. There are native solutions or docker images of humble + noetic + bridge [0][1][2][3] but these do not result in a setup where a /opt/ros/noetic directory exists, which I understand is a prerequisite for sourcing the user's overlay. Since they do not conform to the "triple sourcing" needed (the bridge resides in its own workspace), and there is no guide that shows this explicitly, I do not know if these solutions are indeed able to produce a configuration where support for custom interfaces is possible.

Does the community have a solution for this that I have overlooked or misunderstood? I am also asking this because, otherwise, if one has no choice but to use some old ROS packages in a system of new ROS 2 packages, then all ROS 2 packages which require custom communication with them will forever have to be foxy packages.

$\endgroup$

1 Answer 1

1
$\begingroup$

I am the author of your reference [2]. I will try to help clarify a few things. First, the equivalent of sourcing the /opt/ros/noetic underlay is implicitly done in Ubuntu 22.04 when the ros-core-dev (or its derived packages, such as ros-robot-dev and ros-desktop-dev), are installed. So, there is no need to source any ROS1 underlay to start with.

As for custom messages, you can take a look at the Dockerfile provided in [2], where I added a few message types and services that don't seem to have ROS1 pre-built binaries available (i.e., AddTwoInts and GripMap). The approach of adding them can be applied to any custom messages or services.

Hope it helps.

$\endgroup$
1
  • $\begingroup$ Indeed your solution works. I think that when I posted this question you had not yet added support for custom interfaces. I am grateful for your effort. It took me some time but I figured out what should be the correct placement of ROS and ROS 2 packages that are not obtainable through apt-get. For reference to other users (and my future self) I have created a repo with a template structure for communication between ROS versions here. Cheers $\endgroup$
    – li9i
    Commented Feb 1 at 13:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.