如何将ROS1和ROS2安装到同一个ubuntu系统中

目录

写在前面

1. 本文测试环境:

2. 先说结论

2. 再说操作

2.1 不赘述的ROS1和ROS2的安装方法

2.1 ROS1和ROS2快速切换系统环境变量的方法

最后的话


写在前面

依旧是小马过河的故事。

网上有很多善意的提醒,建议不要在Ubuntu中同时安装ROS1和ROS2,为了避免遇到一些奇奇怪怪的问题,也为了顺利推进在手的实验,我们都尽量避免这种去做。

但是,有时候,你还必须这么做。

比如说,由于ROS1和ROS2的bag格式完全不兼容,需要使用rosbridge进行转换。既然ROS都提供了这个工具,是不是说明ROS1和ROS2在同一Ubuntu系统中共存是没有问题的呢?

带着这个疑问,和一些不得不的理由,经过一番查阅和实验后,有了本文。

1. 本文测试环境:

ubuntu:20.04,虚拟机

ROS1:noetic

ROS2:foxy

2. 先说结论

ROS1 与 ROS2 共存,需要考虑三个问题:

1) 不同Ubuntu版本,有不同版本的ROS1和ROS2推荐,尽量不要任性地乱装;

2)ROS1和ROS2安装过程中,是否会出现文件“删改”的问题?目前使用下来,并没有。找一找两者的安装路径,会发现有各自独立的地盘。如下图RO1(noetic)和ROS2(foxy)独立存放。

如何将ROS1和ROS2安装到同一个ubuntu系统中_第1张图片

 

3)ROS1和ROS2的切换,需要刷新系统环境变量。但是,若第2点问题不存在,就不影响系统的整体性,我们就可以通过主动刷新环境变量的方法来解决这个问题。

2. 再说操作

2.1 不赘述的ROS1和ROS2的安装方法

关于ROS1和ROS2的安装方法,网上有很多,基本都可用。

特别分享的一点是,先装ROS1,还是ROS2,这不是一个问题。

放轻松!都可以的!

2.1 ROS1和ROS2快速切换系统环境变量的方法

一、先打开.bashrc文件

sudo gedit .bashrc

二、在.bashrc文件末尾添加以下代码(注意将以前的source ros环镜的代码去掉)

#source /opt/ros/noetic/setup.bash
echo "ros noetic(1) or ros2 foxy(2)?"
read edition
if [ "$edition" -eq "1" ]; then
  source /opt/ros/noetic/setup.bash
  echo "ros noetic(1) has been chosen!"
else
  source /opt/ros/foxy/setup.bash
  echo "ros2 foxy(2) has been chosen!"
fi

三、打开Terminal试试效果。(输入1或2,按回车解开)

 

最后的话

如果你已经装ROS1或ROS2,想把缺的补上,没问题,不用担心安装顺序问题。

如果已经装好ROS1和ROS2,用本文的方法,每次打开Terminal输入1或2就对应ROS或ROS2。

当然,你也可以同时打开两个Terminal,分别运行ROS1和ROS2。

希望对你有帮助。


 

你可能感兴趣的:(ROS2,ubuntu,linux,运维,自动驾驶,汽车)