Ubuntu20.04同时安装ROS1和ROS2共存

这篇具有很好参考价值的文章主要介绍了Ubuntu20.04同时安装ROS1和ROS2共存。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Ubuntu20.04同时安装ROS1和ROS2共存


每版的Ubuntu系统版本都有与之对应ROS版本的,每一版ROS都有其对应版本的Ubuntu版本,不可随便装,ubuntu20.04对应ROS1 noetic和ROS2 foxy ROS2 Galactic版本。当然最方便的是使用鱼香ROS一键安装:

wget http://fishros.com/install -O fishros && . fishros

但我们接下来使用手动安装。

一、换源

老规矩,先换源

1.1 通过软件更新

打开软件更新

ros1和ros2共存,ubuntu,linux,自动驾驶

选择Download from->Other,找到China,选择源。关闭界面等待自动更新源

1.2 通过修改源文件(建议)

(1)备份源文件:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.old

(2)打开文件:

sudo gedit /etc/apt/sources.list

(3)换源:推荐清华或者阿里云的源(根据自己的网去尝试,选择最快的一个):清华源地址,选择Ubuntu版本(查看ubuntu版本命令:cat /etc/issue)并复制源内容,覆盖sources.list文件原来的内容:

ros1和ros2共存,ubuntu,linux,自动驾驶

(4)换过源之后要更新:

sudo apt-get update

二、安装ROS1(noetic)

参考 详细介绍如何在ubuntu20.04中安装ROS系统,超快完成安装(最新版教程) 讲解的非常详细,安装过程中很多错误都给出了解决方法,这里写出大致流程
(1)添加ROS软件源

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'

(2)添加密钥

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

(3)更新软件源

sudo apt update

以上有问题换用:

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

(4)安装ROS noetic

sudo apt install ros-noetic-desktop-full

(5)初始化rosdep

sudo rosdep init
  • 如果找不到命令:
sudo apt install python-rosdep2
# 或者
sudo apt install python3-rosdep2
  • ERROR: cannot download default sources list from:https : //raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.listWebsite may be down.

国外的网站无法链接,有以下三种办法(推荐第三种,我新发现的方法):

  1. 有条件就科学上网
  2. 修改hosts
sudo gedit /etc/hosts

打开的hosts文件中添加如下的内容,然后保存退出

199.232.28.133 raw.githubusercontent.com

如果依然出现ERROR: cannot download default sources list from,访问 https://www.ipaddress.com/ 查询 raw.githubusercontent.com 的ip地址

ros1和ros2共存,ubuntu,linux,自动驾驶

将199.232.28.133 raw.githubusercontent.com换为:

185.199.108.133 raw.githubusercontent.com

  • ERROR: default sources list file already exists: /etc/ros /rosdep/sources.list.d/20-default.listPlease delete if you wish to re-initialize
sudo rm /etc/ros/rosdep/sources.list.d/20-default.list

然后

rosdep update
  1. 采用镜像文件,参考:https://mirrors.tuna.tsinghua.edu.cn/help/rosdistro/

手动模拟 rosdep init

sudo mkdir -p /etc/ros/rosdep/sources.list.d/
sudo curl -o /etc/ros/rosdep/sources.list.d/20-default.list https://mirrors.tuna.tsinghua.edu.cn/github-raw/ros/rosdistro/master/rosdep/sources.list.d/20-default.list

为 rosdep update 换源

export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml
# 后面的参数是为了不跳过ROS版本
rosdep update --include-eol-distros

每次 rosdep update 之前,均需要增加该环境变量为了持久化该设定,可以将其写入 .bashrc 中:

echo 'export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml' >> ~/.bashrc

(6)安装rosinstall

sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool

(7)配置环境

sudo gedit ~/.bashrc
# 末尾添加
source /opt/ros/noetic/setup.bash
# 保存退出
source ~/.bashrc

(8)验证

roscore
  • Command ‘roscore’ not found, but can be installed with:sudo apt install python3-roslaunch,按照提示安装:
sudo apt install python3-roslaunch
  • Resorce not found: roslaunch说明之前的安装没有安装全,继续安装
sudo apt install ros-noetic-desktop-full

(9)小乌龟测试ROS:

roecore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key

三、安装ROS2(foxy)

参考ubuntu20.04安装ros2,并与ros1共存
(1)设置编码UTF-8

终端输入:locale检查是否支持 UTF-8

ros1和ros2共存,ubuntu,linux,自动驾驶

如果不支持:

sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8

(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

注意使用1.2换源已经默认启用,但是界面上并没有勾选,不用管,若没有启用不会有输出,则:

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
  • 如果报错ailed to connect to raw.githubusercontent.com port 443 after 13 ms: 拒绝连接,参考上一节的方法在/etc/hosts文件中添加raw.githubusercontent.com 的IP;
  • 如果没有反应就多等一会

(4)安装

sudo apt update
# 推荐桌面版,注意安装时间较长,耐心等待
sudo apt install ros-foxy-desktop

(5)配置环境

echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc
source .bashrc

(6)官方demo测试

ros2 run demo_nodes_cpp talker
ros2 run demo_nodes_cpp listener

ros1和ros2共存,ubuntu,linux,自动驾驶
(7)小乌龟,不再需要master

ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key

ros1和ros2共存,ubuntu,linux,自动驾驶

四、安装ROS2(Galactic)

为了调试Autoware.universe,必须要安装Galactic,如果需要首先卸载foxy

sudo apt remove ros-foxy-* && sudo apt autoremove

(1)测试语言环境,上一章已经处理;
(2)检查是否启用ubuntu Universe存储库,上一章已经处理;
(3)添加 ROS 2 apt 存储库

sudo apt update && sudo apt install curl
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 $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

(4)安装

sudo apt update
sudo apt install ros-galactic-desktop
sudo apt install ros-galactic-ros-base
sudo apt install ros-dev-tools

(5)配置环境

echo "source /opt/ros/galactic/setup.bash" >> ~/.bashrc
source .bashrc

(6)小乌龟验证

ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key

五、ROS1和ROS2混合配置环境

参考Ubuntu20.04 ROS1和ROS2同时安装及使用
如果只安装一个版本的ROS,这一节不需要再进行,否则需要ROS1和ROS2混合配置

sudo gedit ~/.bashrc

打开.bashrc文件,删除前面两节的配置内容:

source /opt/ros/noetic/setup.bash
source /opt/ros/foxy/setup.bash
source /opt/ros/galactic/setup.bash

后在末尾加上如下代码,完成环境变量设置,在使用过程中可以根据需要切换ros版本,记得每次打开一个新的终端都需要通过按键“1”或“2”来选择ros版本(galactic同理)

ros1和ros2共存,ubuntu,linux,自动驾驶

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

ros1和ros2共存,ubuntu,linux,自动驾驶

六、ROS常用命令以及区别

6.1 常用命令

(1)编译

# ROS1
catkin_create_pkg <package_name> [depend1] [depend2] [depend3]...
# catkin_create_pkg test_pkg std_msgs rospy roscpp
catkin_make
catkin_make -DCATKIN_WHITELIST_PACKAGES=""
# ROS2
colcon build
# 只编译指定包
colcon build --packages-select  PACKAGE_NAME
# 忽略指定包
colcon build --packages-ignore PACKAGE_NAME
# 遇到编译错误继续编译其他模块
colcon build --continue-on-error

(2)工作空间配置bashrc

source ~/catkin_ws/devel/setup.bash
source ~/colcon_ws/install/setup.bash

(3)terminal 命令

rosrun --> ros2 run
rosnode --> ros2 node
roslaunch --> ros2 launch
rosparam --> ros2 param
rospkg --> ros2 pkg
rosservice --> ros2 service 
rossrv --> ros2 srv
rostopic --> ros2 topic
rosaction --> ros2 action

6.2 其他命令(我的笔记)

(1)通过 topic_tools/throttle 改变话题的发布频率、发布带宽

# 参数解释:intopic: 订阅的输入话题、msgs_per_sec: 每秒允许通过的最大messages数、outtopic: 发布的输出话题 (default: intopic_throttle) 
throttle messages <intopic> <msgs_per_sec> [outtopic]
# 举例,将原来200Hz的IMU数据降低至100
rosrun topic_tools throttle messages /imu_raw 100 /imu_raw_low_freq

roslaunch写法:

<node pkg="topic_tools" type="throttle" name="camera_throttle" args="messages /imu_raw 100 /imu_raw_low_freq" output="screen" respawn="true"/>    

(2)bag的录制和播放

# 1 录制指定话题数据并保存,-O需要大写
rosbag record -O <bagname> <topic_name1> <topic_name2> <topic_name3> ...
# 2 查看数据包中包含的话题名称,话题数量,话题消息类型等信息
rosbag info <bagname>
# 3 bag播放
rosbag play <bagname>  # 回放指定bag
rosbag play * # 回放当前目录下所有bag
rosbag play -s n <bagname> # 从指定时间(n = 指定时间s)开始回放bag
rosbag play -s n -u m <bagname> # 从指定时间(n = 开始时间s)开始播放指定时间(m = 指定播放时间s)的bag
rosbag play -r n <bagname> # 按指定倍率(n = 倍率)回放bag
rosbag play <topic_name1>:=<topic_name2> # 某个话题重命名播放
# 4 回放不成功,提示 reindex ,则:
rosbag reindex  <bagname>

(3)rostopic echo --noarr查看激光雷达数据详细信息(如frame_id)
用rostopic echo /激光雷达话题名查看激光雷达返回的数据,除了数字什么也显示不出来。想要查看激光雷达数据的frame_id等信息,加上–noarr参数即可,排除话题数据中的数组信息。

rostopic echo --noarr /velodyne_points

(4)通过rqt_bag命令将bag进行可视化文章来源地址https://www.toymoban.com/news/detail-709596.html

rqt_bag <bagname>

到了这里,关于Ubuntu20.04同时安装ROS1和ROS2共存的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Ubuntu20.04安装Nvidia显卡驱动、CUDA11.3、CUDNN、TensorRT、Anaconda、ROS/ROS2

    打开终端,输入指令:  选择 【5】 更换系统源,后面还有一个要输入的选项,选择 【0】 退出,就会自动换源。 这一步最痛心了家人们,网上的教程太多了,我总是想着离线安装,每次安装都无法开机,要不就卡在锁屏界面,要不就黑屏,要不就卡在snaped界面,重装系统装

    2024年01月17日
    浏览(77)
  • ubuntu22.04一键安装ROS1和ROS2(超简单,亲测可靠)

    这几天在安装ros,然后发现可以一键安装,话不多说,直接终端输入如下指令 回车之后系统会自动安装ros 详见鱼香ROS

    2024年02月11日
    浏览(64)
  • ros2 foxy创建一个包和节点-ubuntu20.04

    我们创建了两个目录,ros2_ws和在他下面的子目录,运行编译的目录在ros2_ws目录下,src目录下是我们生成的ros的包,我们自己编写的代码也都早src目录下,colcon build编译之后会在ros2_ws目录下生成一下文件,运行程序也是在ros2_ws这个目录下。 使用 ros2 pkg create 来创建包和节点,

    2024年02月02日
    浏览(53)
  • Ubuntu22.04源码安装ROS-noetic(ROS1非ROS2),编译运行VINS-MONO

    由于22.04默认安装ROS2,但很多仓库都是基于ROS1的,不想重装系统,参考这两个博客安装了ROS-noetic: 博客1. https://blog.csdn.net/Drknown/article/details/128701624 博客2. https://zhuanlan.zhihu.com/p/418227536 我的库版本(实测可行): eigen:3.3.7 ceres:1.14.0(用2.系列版本的编译时需要把C++版本设

    2024年02月02日
    浏览(57)
  • Ubuntu20.04 OpenCV详细安装教程(附多版本切换共存教程)

    opencv安装有两种方式: 1.使用包管理器安装预编译版本(安装十分简单,但是 版本只有4.2.0 ,且没有扩展模块且不支持Qt窗口) 2.从源码安装(比较复杂,但是推荐) 这样就安装完成了 这种安装方法,默认把opencv相关文件放置在系统目录 官网下载地址 https://opencv.org/release

    2024年03月13日
    浏览(93)
  • Ubuntu20.04安装ROS----鱼香ROS一键安装

    输入以下命令行: 选择1 选择1 ROS1 选择1   下载noetic版本 ROS2 选择3 下载galactic版本

    2024年02月05日
    浏览(67)
  • ubuntu20.04安装ROS【详细】

    Ubuntu20.04安装ROS与Ubuntu18.04大差不差,安装过程基本没出现问题,按以下教程操作即可。 该命令打开源文件可能会比较慢 将文件里的替换为 然后执行 再执行 1.新建文件夹,并进入文件夹 2、下载项目 若找不到命令,安装git即可 3、另打开一个终端,备份原文件 4、安装rosdep 5、替

    2024年02月12日
    浏览(62)
  • ubuntu20.04安装ros问题解惑

    一、配置密钥问题 问题描述: 在安装ROS noetic时,当运行以下命令时, 可能会遇到以下错误 问题分析: 主要原因就是http://raw.githubusercontent.com是墙外地址,无法访问 解决方法: 从另一个网址获取密钥 然后继续按照官方步骤操作即可。 二、rosdep连接超时的问题 报错 问题描述 执

    2024年02月15日
    浏览(70)
  • 【ROS】在 Ubuntu 20.04 安装 ROS 的详细教程

    由于自己装过两次 ROS,但是重头再来一遍还是遇到了很多困难。尤其是当遇到以前遇到过的问题,我依然会手足无措,翻边互联网的边边角角,试很多遍错才能解决问题。于是便萌发了写下这个 ROS安装指南 的想法。 这里整理了我安装 ROS 的流程以及遇到的所有问题,也提供

    2024年02月03日
    浏览(88)
  • ubuntu20.04一键安装VScode搭建ROS编程环境

    VSCode 全称 Visual Studio Code,是微软出的一款轻量级代码编辑器,免费、开源而且功能强大。它支持几乎所有主流的程序语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比 Diff、GIT 等特性,支持插件扩展,并针对网页开发和云端应用开发做了优化。

    2023年04月24日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包