How can I better handle two different ros versions?
I am trying to connect to a robot running on an older ros version than the one I am using on my computer. So far, I have established an inelegant and unstable (in my eyes) solution and wanted to ask if somebody can suggest a better solution.
The robot runs ros-kinetic and my local computer runs ros-noetic. The two cannot communicate because message versions differ. I, therefore, used a docker image based on ubuntu 16.04 and installed ros-kinetic inside it. To communicate with the robot both based on roscpp and to use rviz, I had to run the docker container with --net host
and --privileged
and gui options outlined in this tutorial. Unfortunately, I only manage to run one ros-node per container. (If I launch another container via docker exec --container_name
I cannot establish a connection with the ros network anymore.) I thus create an entirely new container and install all required dependencies to launch a second ros-node.
I have a feeling the set-up I described above is overly complicated. What is a good practice for communicating with a robot running on a different ros-distro than a locally installed distro? Do I maybe use containers (which seem to be an obvious solution to handle different ros versions) wrongly? I am grateful for any hints and suggestions!
Asked by fabian on 2021-01-04 09:46:16 UTC
Comments
Could you explain why you are trying to work with two different ros versions? Can the robot be updated to noetic? Can you not downgrade to kinetic?
Asked by Akhil Kurup on 2021-01-04 15:01:01 UTC
Thank you so much for your comment, @Akhil! That is a good question - The robot vendor says only ros kinetic is supported and I did not want to risk creating problems by upgrading ros. In addition, I did not want to downgrade the OS on my local machine by two LTS versions. Do you usually try to install the same ros version across devices? Do you maybe install several OSs on different partitions on your computer to interact with robots based on different ros versions?
Asked by fabian on 2021-01-05 01:41:49 UTC
I have 2 different versions that I work with. I have kinetic on some robots and melodic on my system. Most packages I work with have been built from source. I usually do my development in melodic and deploy in kinetic and I haven't had any issue so far in terms of compatibility. But I don't have to control one from the other, so I don't have a direct answer to your problem. Can you have a dual boot maybe with the lower lts version on your system?
Asked by Akhil Kurup on 2021-01-05 11:46:12 UTC