For example if I want to use different SLAM packages(orb-slam3, orb-slam2, OV2SLAM, etc). How do I combine them to use with the turtlebot if they written to be used with ROS 1 and I am running ROS 2 humble. Or they are made to be used with an older version of ubuntu.
Do I have to install different versions of ROS on my system?
What happens if they are not made to be used in ROS at all. Do I just have to write my own wrapper?
If you have ROS 2 Humble installed, and you want to use packages that are written in ROS 1, you would need to look at three options:
Install ROS 1 noetic (it needs to be installed from source because noetic binaries have stoped after Ubuntu 20: noetic/Installation/Source - ROS Wiki) and install the ROS1 bridge (you probably need to do it from source as well).
Downgrade to Ubuntu 20 + ROS 2 Galactic and you will be able to install the above from binaries.
Migrate the ROS 1 package you want to use to ROS 2. This is the most work.
How do I go about doing this? Will it be difficult?
Because my end goal is to compare serveral SLAM algorithms which are written for ros 1 and ros 2 or not even for ros at all. So I’m trying to find a method which will allow me to use all of them on ros 2 humble
Here is a complete migration guide: Migration guide from ROS 1 — ROS 2 Documentation: Humble documentation
It’s definitely an intensive process, so you’ll probably get to comparing algorithms earlier if you do 1) or 2)
Thanks for the link!
I have just found out about dockers.
Would you recommend to use dockers or still method 1) and 2)
Yes! I forgot about that option. There’s even dockers prepared with the
ros1_bridge. Here are the official Docker images: