Ubuntu20.04同时安装ROS1和ROS2

news2024/11/29 13:44:18

Ubuntu20.04同时安装ROS1和ROS2

Excerpt

每版的Ubuntu系统版本都有与之对应ROS版本的,每一版ROS都有其对应版本的Ubuntu版本,不可随便装,ubuntu20.04对应ROS1 noetic和ROS2 foxy版本。_ros1和ros2共存


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

文章目录

  • Ubuntu20.04同时安装ROS1和ROS2共存
  • 一、换源
    • 1.1 通过软件更新
    • 1.2 通过修改源文件(建议)
  • 二、安装ROS1(noetic)
  • 三、安装ROS2(foxy)
  • 四、安装ROS2(Galactic)
  • 五、ROS1和ROS2混合配置环境
  • 六、ROS常用命令以及区别
    • 6.1 常用命令
    • 6.2 其他命令(我的笔记)

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

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

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

一、换源

老规矩,先换源

1.1 通过软件更新

打开软件更新

在这里插入图片描述

选择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文件原来的内容:

在这里插入图片描述

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

sudo apt-get update

二、安装ROS1(noetic)

(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.
sudo gedit /etc/hosts

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

199.232.28.133 raw.githubusercontent.com

如果出现ERROR: cannot download default sources list from:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
Website may be down.

访问 https://www.ipaddress.com/ 查询 raw.githubusercontent.com 的ip地址

在这里插入图片描述

  • sudo gedit /etc/hosts
    #####################
    127.0.0.1localhost
    127.0.1.1iron-virtual-machine
    ###增加下面的解析
    185.199.108.133  raw.githubusercontent.com
    
sudo apt update
sudo apt upgrade

然后

rosdep update

(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)

(1)设置编码UTF-8

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

在这里插入图片描述

如果不支持:

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

在这里插入图片描述
(7)小乌龟,不再需要master

ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key

在这里插入图片描述

四、安装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同理)

在这里插入图片描述

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

在这里插入图片描述

六、ROS常用命令以及区别

6.1 常用命令

(1)编译

# ROS1
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进行可视化

rqt_bag <bagname>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/975431.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MES管理系统对电子企业来说有什么优点

引言&#xff1a;在电子制造企业中&#xff0c;MES管理系统已经成为提高生产效率、降低成本、提高订单履行速度和准确性的重要工具。电子企业MES管理系统是一套集成的信息系统&#xff0c;用于监控和控制电子企业的生产过程。本文将探讨MES管理系统对于电子企业来说有哪些优点。…

多线程场景下谨慎使用@Transactional注解,你不信我也没办法

最近遇到一个很诡异的bug&#xff0c;觉得很有趣也很值得分享&#xff0c;于是想写篇文章记录下来&#xff0c;希望有缘人看到以后少踩坑~ 先简单说下场景&#xff1a;有个任务平台&#xff0c;功能很多但我们只关注 提交任务和取消任务 两个功能&#xff0c;并且取消任务后会有…

全民拼购模式:美妆行业的新机遇和挑战

美妆是一个充满创意和变化的行业&#xff0c;每个人都想拥有自己独特的美丽风格。但是&#xff0c;美妆产品的价格和品质却不尽相同&#xff0c;很多消费者在购买时会遇到困惑和不满。有没有一种方法&#xff0c;可以让消费者以更低的价格买到更好的美妆产品&#xff0c;同时还…

八个针对高级职位的高级 JavaScript 面试题

JavaScript 是一种功能强大的语言&#xff0c;是网络的主要构建块之一。这种强大的语言也有一些怪癖。例如&#xff0c;您是否知道 0 -0 的计算结果为 true&#xff0c;或者 Number("") 的结果为 0&#xff1f; 问题是&#xff0c;有时这些怪癖会让你摸不着头脑&…

了解 glTF 2.0 格式

推荐&#xff1a;使用 NSDT场景编辑器快速搭建3D应用场景 介绍 glTF 代表 GL 传输格式。 glTF 是一种用于存储和加载 3D 场景的标准化文件格式&#xff0c;其基本目的是由 3D 创建工具轻松生成并被任何图形应用程序使用&#xff0c;无论使用何种 API&#xff0c;处理最少。 …

软考(1)-面向对象的概念

目录 一. 软考基本信息 1. 软考时间&#xff1a; 2. 软考科目&#xff1a; 3.专业知识介绍 -- 综合知识考点分布 4. 专业介绍 -- 软件设计考点分布 二. 面向对象概念 1. 封装 考点一&#xff1a;对象 考点二&#xff1a;封装private 2. 继承 考点三&#xff1a;类 考…

python初阶

基本类型 int float str bool list--列表 [1,2,3] tuple--元组 (1,2,3) set---集合 {1,2,3} dict---字典 {1&#xff1a;”python","acwing":2,3:4.0}int支持高精度&#xff0c;没有大小限制 赋值 a3 b3.0 c‘s’ d“asdf” 单引号和双引号是没有区别…

macos 不支持svn安装

macos 10.13可能不支持svn命令,所以要安装 xcode-select --install 弹窗在线安装失败的话只能手动下载安装 打开:Sign In - Apple 搜索Command Line Tools (macOS 10.13) 下载9.4.1版本直接安装后即可

每天一个工业通信协议(4)2023.8.30 (I2C接口)

文章目录 参考文献1.I2C介绍2.I2C接口2.1 位传输,识别2.2 传输数据3.I2C的电气连接参考文献 广州周立功单片机发展有限公司 《I2C总线规范》 1.I2C介绍 为了使这些相似之处对系统设计者和器件厂商都得益 而且使硬件效益最大电路最简单 Philips 开发了一个简单的双向两线总线…

L1-012 计算指数 C++

#include<iostream> #include<math.h> using namespace std; int main() {int n;int ret;cin >> n;if (n < 10) {ret pow(2, n);cout << "2^" << n << " " << ret<<endl;}return 0; } 所用知识点 …

入选VLDB 2023! OceanBase 4.0单机分布式一体化研究成果获国际顶会认可

近日&#xff0c;国际顶级数据库学术会议 VLDB 2023 在加拿大温哥华开幕。OceanBase 研究成果论文 “OceanBase Paetica: A Hybrid Shared-nothing/Shared-everything Database for Supporting Single Machine and Distributed Cluster” 被 VLDB 2023 收录&#xff01;相继 20…

pytorch搭建squeezenet网络的整套工程,及其转tensorrt进行cuda加速

本来&#xff0c;前辈们用caffe搭建了一个squeezenet的工程&#xff0c;用起来也还行&#xff0c;但考虑到caffe的停更后续转trt应用在工程上时可能会有版本的问题所以搭建了一个pytorch版本的。 以下的环境搭建不再细说&#xff0c;主要就是pyorch&#xff0c;其余的需要什么p…

Stable Diffusion stable-diffusion-webui开发笔记

https://lexica.art/ lexica.art 该网站拥有数百万Stable Diffusion案例的文字描述和图片&#xff0c;可以为大家提供足够的创作灵感。可以提供promt灵感 https://civitai.com/ Civitai是一个聚集AI绘图爱好者的社区&#xff0c;在此网站上有许多定制化的模型&#xff0c;特…

【PyGame/PyQy5】get-start 快速入门

1.windows、linux&#xff0c;mac 安装python3 2.PC系统安装pygame, 指令&#xff1a;pip install pygame 3. 保存如下文件&#xff1a; test_game.py 4.PC上运行 python test_game.py import pygame# 初始化Pygame pygame.init()# 创建游戏窗口 window pygame.display.s…

SAP FI 之定义利润中心(Profit Center)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 SAP中的利润中心是SAP Controlling内部控制的一个组织单元。它帮助组织管理成本和收…

基于snat+dnat发布内网K8S及Jenkins+gitlab+Harbor模拟CI/CD的综合项目

目录 项目名称 项目架构图 项目环境 项目概述 项目准备 项目步骤 一、修改每台主机的ip地址&#xff0c;同时设置永久关闭防火墙和selinux&#xff0c;修改好主机名&#xff0c;在firewalld服务器上开启路由功能并配置snat策略。 1. 在firewalld服务器上配置ip地址、设…

blender基本操作

文章目录 引言一、选择二、移动1. xyz轴移动2. xyz平面移动3. 精确移动4. 快捷键移动G 三、旋转四、缩放五、变换1. 变换坐标系2. 变换轴心&#xff1a; 六、吸附七、模式切换八、物体的合并和分离1. 合并2.分离 九、设置父子级关系十、叠加层和快速收藏夹1. 叠加层2. 快速收藏…

【python基础知识】2.if条件判断与条件嵌套

文章目录 前言条件判断单向判断&#xff1a;if双向判断&#xff1a;if…else…多向判断&#xff1a;if…elif…else… if嵌套if嵌套的执行顺序 如何写嵌套代码 前言 在上一关&#xff0c;我带领你攻克了如何与Python沟通的语言大关——通过三种数据类型&#xff08;字符串、整…

【ALM工具软件】上海道宁与Perforce为您带来用于整个生命周期的应用程序生命周期管理软件

Helix ALM是 用于整个生命周期的 应用程序生命周期管理的ALM软件 具有专用于 需求管理&#xff08;Helix RM&#xff09;、测试用例管理&#xff08;Helix TCM&#xff09; 问题管理&#xff08;Helix IM&#xff09;的功能模块 Helix ALM提供了 无与伦比的可追溯性 您将…

【MySQL学习笔记】(十)使用索引的操作

简单使用索引 创建索引创建主键索引创建唯一键索引普通索引的创建 查询索引删除索引索引创建原则 数据库中的索引与书籍中的索引类似&#xff0c;在一本书中&#xff0c;利用索引可以快速地查找所需信息&#xff0c; 而无须阅读整本书。在数据库中&#xff0c;索引使数据库程序…