ubuntu20.04安装ros2,并与ros1共存

Posted 大家好我是C妙蛙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ubuntu20.04安装ros2,并与ros1共存相关的知识,希望对你有一定的参考价值。

前言

该安装教程基于ubuntu20.04,并已安装ros-noetic,在此基础上安装ros2。

安装过程的第一部分源自下面这篇教程:

ubuntu20.04安装ROS2 详细教程_shenliu128的博客-CSDN博客_ubuntu20.04安装ros2

为了方便衔接,我将前半部分复制过来

一、安装前检查准备

1、ROS 系统安装版本选择
ROS 目前主要支持Linux和MacOS系统,新发布的 ROS2 也支持 Windows和RTOS 系统。
对ROS兼容性最好的当属Ubuntu系统。从ROS发布以来,每版的Ubuntu系统版本都有与之对应ROS版本的,每一版ROS都有其对应版本的Ubuntu版本,切记不可随便装。
 ubuntu20.04对应foxy版本,因此这里我们选择foxy版本。

2、检查系统设置

(1)设置编码UTF-8

终端输入:

locale

若出现上图中的输出信息,则说明编码是utf-8,无需再做设置,如果未出现,则按照ros.org官网提示操作。

(2)添加源

检查是否已已启用ubuntu Universe存储库

$ apt-cache policy | grep universe
## 输出应如下:
 500 http://security.ubuntu.com/ubuntu focal-security/universe i386 Packages
     release v=20.04,o=Ubuntu,a=focal-security,n=focal,l=Ubuntu,c=universe,b=i386
 500 http://security.ubuntu.com/ubuntu focal-security/universe amd64 Packages
     release v=20.04,o=Ubuntu,a=focal-security,n=focal,l=Ubuntu,c=universe,b=amd64

如果没有看到上面的输出信息,执行下面这两条命令

$ sudo apt install software-properties-common
$ sudo add-apt-repository universe

(3)设置密钥

$ sudo apt update && sudo apt install curl gnupg2 lsb-release
$ sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key  -o /usr/share/keyrings/ros-archive-keyring.gpg
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

如果没有设置密钥,在执行ros2安装命令的时候会出现无法定位到软件包的问题。

如果遇到报错“ailed to connect to raw.githubusercontent.com port 443 after 13 ms: 拒绝连接”

解决方法:在/etc/hosts文件中添加如下IP

$sudo gedit /etc/hosts
#这两行是原来就有的
127.0.0.1	localhost
127.0.1.1	iron-virtual-machine
###这一行是需要新增加的
185.199.108.133  raw.githubusercontent.com

二、正式开始安装ros2

$ sudo apt update
$ sudo apt upgrade
## 推荐桌面版,比较推荐。
$ sudo apt install ros-foxy-desktop
## 安装时间可能较长,安心等待。

-------------------------------------------------------------------------------------------------------------------------------

如果系统中原来没有ros1,可按照原教程继续安装,一般不会出现问题,如果需要ros1与ros2共存,需要使用如下方法设置环境变量。

------------------------------------------------------------------------------------------------------------------------------

三、设置环境变量

这是~/.bashrc中原先的ros环境变量,

source /opt/ros/noetic/setup.bash
source ~/catkin_ws/devel/setup.bash

注释掉这两行,并添加下列代码:

echo "ROS noetic (1) or ROS2 foxy (2)?"
read edition
if [ "$edition" -eq "1" ];then
  source /opt/ros/noetic/setup.bash  #这是ros1根目录环境变量
  source ~/catkin_ws/devel/setup.bash#这是ros1工作空间环境变量
  echo using ros noetic
else
  source /opt/ros/foxy/setup.bash    #这是ros2系统环境变量

  echo using ros2 foxy
fi

后续创建了ros2的工作空间后,假设工作空间为colcon_ws,这在下面位置添加环境变量

echo "ROS noetic (1) or ROS2 foxy (2)?"
read edition
if [ "$edition" -eq "1" ];then
  source /opt/ros/noetic/setup.bash  #这是ros1根目录环境变量
  source ~/catkin_ws/devel/setup.bash#这是ros1工作空间环境变量
  echo using ros noetic
else
  source /opt/ros/foxy/setup.bash    #这是ros2系统环境变量
  source ~/colcon_ws/install/local_setup.sh #添加在这里***************
  echo using ros2 foxy
fi

现在你已经拥有了一个ros1与ros2并存的系统了,在使用过程中可以根据需要切换ros版本,记得每次打开一个新的终端都需要通过按键“1”或“2”来选择ros版本。

 

ubuntu18.04安装ROS Melodic

ubuntu18.04安装ROS Melodic

⒈ 添加ROS软件源

国外的ROS软件源:

1 sudo sh -c \'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list\'
 

国内的ROS软件源,速度快:

1 sudo sh -c \'. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list\'

 

清华的软件源:

1 sudo sh -c \'. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list\'

 

选择其中的一个软件源即可,本教程选择的第二个。输入命令后,会提示输入用户密码,输入密码即可。

 

2. 设置密钥

1 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654

 

会有以下输出信息:

1 Executing: /tmp/apt-key-gpghome.mlvFNotKlF/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
2 gpg: 密钥 F42ED6FBAB17C654:“Open Robotics <info@osrfoundation.org>”未改变
3 gpg: 合计被处理的数量:1
4 gpg:              未改变:1
5 
6 密钥是 F42ED6FBAB17C654

 

3.更新

1 sudo apt-get update

 

确保 apt-get 是最新版本的。如果需要更新apt,就用sudo apt update。两条命令相似,但是sudo apt update 命令不仅更新存储库索引,还告知存储库中是否可用软件以及有多少新版本可用。

apt-get和apt的命令对比:

APT-GETAPT功能
apt-get apt 安装软件包
apt-get remove apt remove 删除软件包
apt-get remove apt remove 更换所有包
apt-get purge aptpurge 移除软件包及配置文件
apt-get upgrade apt upgrade 更新所有软件包(自动处理依赖项)
apt-get autoremove apt autoremove 自动删除不需要的包
apt-get dist-upgrade apt full-upgrade 在升级软件包时自动处理依赖关系
apt-cache search apt search 搜索应用程序
apt-cache show apt show 显示装细节
新的APT命令功能
apt list 列出包含条件的包(已安装,可升级等)
apt edit-sources 编辑源列表

参考博客:https://www.eet-china.com/mp/a36246.html

 

3*安装最新版cmake

首先,检查cmake的版本:

1 cmake --version
 

然后,如果已经安装了cmake并且版本较低,需要卸载:

1 sudo apt-get autoremove cmake
 

接下来,安装最新版本cmake:

1 sudo apt install cmake
 

最后,通过cmake版本号检查一下:

1 cmake --version
 

4. ROS-Melodic 桌面完整版安装

1 sudo apt-get install ros-melodic-desktop-full
 

这条命令需要执行很久,可能需要3小时吧,我当时前前后后好像有3小时左右。

此时,我们需要学习如何挂起进程和解除挂起:

1 ctrl + z    #挂起进程
2 3 fg %1       #解除挂起
 

还需要把ubuntu设置为屏幕常量:

ubuntu18.04的中文版设置方式是:设置--电源--空白屏幕 ,隐私--自动锁屏。

 

桌面完整版安装成功后,顺便安装一下 rqt 工具:

1 sudo apt-get install ros-melodic-rqt*
 

5. rosdep初始化

先安装 rosdep 命令,确保有 rosdep :

1 sudo apt install python-rosdep   
 

然后进行初始化:

1 sudo rosdep init
 

5* rosdep 更新

1 rosdep update
 

亲测多次后,发现 终端有梯子后,以上这句命令直接一次性通过!!

 

以下这种方法,多次运行 rosdep update 我也成功过:

当出现time out 错误的时候,可以考虑用手机热点连接运行以上这句命令,会出现以下错误:

ERROR: unable to process source [https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml]:
<urlopen error [Errno 111] Connection refused> (https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml)
ERROR: unable to process source [https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml]:
<urlopen error [Errno 111] Connection refused> (https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml)
ERROR: unable to process source [https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml]:
<urlopen error [Errno 111] Connection refused> (https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml)
ERROR: unable to process source [https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml]:
<urlopen error [Errno 111] Connection refused> (https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml)
ERROR: unable to process source [https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml]:
Failed to download target platform data for gbpdistro:
<urlopen error [Errno 111] Connection refused>
Query rosdistro index https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml
ERROR: error loading sources list:
<urlopen error <urlopen error [Errno 111] Connection refused> (https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml)>

方法:可以修改resolv.conf文件的服务器信息,再更新 apt-get 和 rosdep 即可:

1 sudo gedit /etc/resolv.conf
 

将原有的nameserver这一行注释,并添加 google 域名服务器:

1 nameserver 8.8.8.8 #google域名服务器
2 nameserver 8.8.4.4 #google域名服务器
 

保存文件并退出,执行更新命令,不报错就成功了:

1 sudo apt-get update
2 rosdep update
 

参考博客:https://blog.csdn.net/mrh1714348719/article/details/103803110

 

6. 添加 ROS-Melodic 环境变量(跳过,后面再运行)

1 echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
2 source ~/.bashrc

 

7.安装rosinstall

为了管理我们自己的ROS-Melodic工作空间,需要安装rosinstall:

1 sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential

安装成功后,再安装一下ROS插件(包括3D包围框):

1 sudo apt install ros-melodic-jsk-rviz-plugins
 

8. 小海龟实例

第一次启动ROS之前,必须进行ROS-Melodic 环境变量的配置,执行如下命令:

1 echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
2 source ~/.bashrc
 

在第一个终端里面运行:

1 roscore
 

在第二个终端(打开第二个终端的方法是点击终端左上角 文件--新建标签页)里面运行,会出现一只静止的小海龟:

1 rosrun turtlesim turtlesim_node
 

在第三个终端里面运行让海龟可以移动:

1 rosrun turtlesim turtle_teleop_key
 

rosrun是运行单个节点,turtlesim是文件夹,里面含有turtle_teleop_key。

键盘上面的“上下左右”小海龟移动情况
前进
后退
原地向左转
原地向右转

运行成功截图如下:

 

 

卸载ROS-Melodic

1 sudo apt-get remove ros-melodic-*
 

没必要就不用卸载了,安装也挺费时间的。

 

 

参考博客:https://blog.csdn.net/qq_44830040/article/details/106049992

https://www.guyuehome.com/10082

https://blog.csdn.net/qq_41450811/article/details/99079041

以上是关于ubuntu20.04安装ros2,并与ros1共存的主要内容,如果未能解决你的问题,请参考以下文章

系统篇: ubuntu 18.04 ROS1 和 ROS2 环境搭建

系统篇: ubuntu 18.04 ROS1 和 ROS2 环境搭建

Virtual Box+Ubuntu20.04+ROS2 Foxy配置

Virtual Box+Ubuntu20.04+ROS2 Foxy配置

Virtual Box+Ubuntu20.04+ROS2 Foxy配置

Virtual Box+Ubuntu20.04+ROS2 Foxy配置