【嵌入式 · 机器人】在 Linux 下安装 ROS2(机器人操作系统)

news2025/7/18 3:52:00

安装要求

安装 ROS2 需要保证 Linux 系统的发行版是 Ubuntu,并且不同版本的 Ubuntu 只能安装对应版本的 ROS2。

系统不是 Ubuntu 怎么办?
  1. 系统是 Mac OS 或 Windows:安装一个 Ubuntu 的虚拟机,在虚拟机里安装 ROS2。(虽然 ROS2 提供了 MAC OS 和 Windows 的版本,但稳定性相对于 Ubuntu 版本可能会差一些)
  2. 系统是其他发行版本的 Linux:

    ① 方法一:备份数据,然后刷成 Ubuntu 系统(嵌入式开发板或系统数据较少可以使用这种方法)

    ② 方法二:安装 Docker,拉取 ROS2 镜像。可以将 Docker 理解为 Linux 下一种特殊的虚拟机,它只能虚拟出 Linux 系统,但是不像普通的虚拟机那样会占用额外的系统资源。(可以在网上搜索 “Docker ROS2” 查找对应的教程,本篇博客主要讲解在 Ubuntu 下安装 ROS2,不会涉及到相关内容)

ROS2 版本对应表

ROS2 版本版本代号发布时间维护截止时间Ubuntu 版本
Ardent Apaloneardent2017.122018.12Ubuntu 16.04(Xenial Xerus)
Bouncy Bolsonbouncy2018.72019.7Ubuntu 16.04(Xenial Xerus)、Ubuntu 18.04 (Bionic Beaver)
Crystal Clemmyscrystal2018.122019.12Ubuntu 18.04 (Bionic Beaver)
Dashing Diadematadashing2019.52021.5Ubuntu 18.04 (Bionic Beaver)
Eloquent Elusoreloquent2019.112020.11Ubuntu 18.04 (Bionic Beaver)
Foxy Fitzroyfoxy2020.62023.5Ubuntu 20.04 (Focal Fossa)
Galactic Geochelonegalactic2021.52022.11Ubuntu 20.04 (Focal Fossa)
Humble Hawksbillhumble2022.52027.5Ubuntu 22.04 (Jammy Jellyfish)

在官网还有一个 rolling 版本,该版本属于开发版,所有的功能、软件包等都是最新的,所以不是非常稳定,在学习、应用时不建议选择这个版本。

来源:Distributions — ROS 2 Documentation: Rolling documentation

开始安装

选择版本

查看当前系统的发行版本:

cat /etc/issue

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m5jzul5T-1668519205545)(_imgs/image-20221114215610440.png)]

我的系统是 Ubuntu 20.04,根据上一节的版本对应表,应该选择 foxy 版本。

# 设置 ROS2 版本为 foxy
export ROS_DISTRO=foxy

(如果你的系统是 Ubuntu 22.04,就要选择 humble 版本)

设置语言环境

安装 ROS2 前必须确保语言环境支持 UTF-8。

# 检查 UTF-8 环境
locale  

# 设置 UTF-8
sudo apt update && sudo apt install locales
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

# 验证是否已经设置为 UTF-8
locale  

添加软件源

# 安装必备的工具
sudo apt update && sudo apt install curl gnupg2 lsb-release

# 添加 ROS2 软件源的 GPG Key
curl http://repo.ros2.org/repos.key | sudo apt-key add - 

# 添加 ROS2 软件源
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

# 更新软件包信息信息
sudo apt update

安装 ROS2

ROS2 有完整版和基础版两个版本:

  • 完整版:包括了 GUI 程序、Demo ,个人电脑或性能较强、需要 GUI 功能的开发板建议选择这个版本(如树莓派 4B、Jetson Nano、香橙派 4等)
  • 基础版:只包含最基础的通信功能。性能较弱或不需要 GUI 的开发板建议选择这个版本(如树莓派 Zero、香橙派 Zero 2 等)
# 安装完整版
sudo apt install ros-$ROS_DISTRO-desktop 

# 安装基础版
sudo apt install ros-$ROS_DISTRO-ros-base

安装 ROS2 开发工具(包括 ROS2 的编译器、构建工具等):

sudo apt install ros-dev-tools

初始化环境:

source /opt/ros/$ROS_DISTRO/setup.bash

每次执行,太麻烦了,将初始化脚本加入启动文件:

# 设置 ROS2 版本为 foxy(注意要根据自己的 Ubuntu 版本更改)
echo "export ROS_DISTRO=foxy" >> ~/.bashrc

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

测试 ROS2 安装情况

基础版需要安装 Demo 程序,完整版则不需要安装:

# 安装 Demo 程序
sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp

输入:

# 运行 Talker 程序
ros2 run demo_nodes_cpp talker

请添加图片描述

再打开另一个一个终端,输入:

# 运行 Listener 程序
ros2 run demo_nodes_cpp listener

请添加图片描述

ROS2 安装成功!

说明

如果安装的是基础版,是不会带有 小乌龟 程序的,需要运行下面的命令安装:

sudo apt install ros-$ROS_DISTRO-turtlesim

参考资料

[1] ROS2 和Ubuntu 版本对应关系_IT兔的博客-CSDN博客

[2] Distributions — ROS 2 Documentation: Rolling documentation

[3] Ubuntu (Debian) — ROS 2 Documentation: Foxy documentation


后记

所有的工具都是为了帮助我们更方便地解决问题。我们学习如何使用工具,并不是为了学习这个工具而去学习,而是为了解决问题我们遇到的问题。

ROS 作为机器人的框架,本质也是一个工具,它在最初只是为了解决机器人各模块间通信的问题,但随着时间发展,ROS 逐渐发展出了一个生态,大量的机器人开源项目(涵盖感知、规划、控制、定位、SLAM和建图、可视化等)都以 ROS 做为基础。

我们没有必要把大量时间、精力都放在 ROS2 上,因为 ROS2 本质上只是为了解决机器人各模块通信的问题,这里不是说模块间的通信不重要,而是说一个机器人如果只解决了通信问题,而不去考虑机械、控制、电子、算法,一样是运行不起来的。所以,我们一定要合理安排学习的重心,弄懂一些基础的概念后,ROS2 学起来就会非常简单。

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

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

相关文章

【深入浅出Spring6】第三期——作用域和工厂模式

一、Bean 的作用域 作用域以下用 scope 代替,在不同的应用情景下可以使用的参数值下是不同的我们以普通 Java 工程为例:可选的参数值有两个 singleton、prototype $ singleton 默认情况下,scope 的属性值就为 singleton,当然我们也可以显式…

一种清洁机器人设计及仿真

目 录 第1章 绪论 1 第2章 清洁机器人路径规划方法的分类及现状 5 2.1 基于事例的学习规划方法 5 2.2 基于环境模型的规划方法 6 2.3 基于行为的结构 7 第3章 清洁机器人的设计任务及方案分析 10 3.1 清洁机器人竞赛介绍 10 3.2 设计任务分解 11 3.3 清洁机器人任务分析及基于行…

Unity和UE4两大游戏引擎,你该如何选择?

目录 游戏引擎 2 ——> 难易区别 编程语言 3 ——> 游戏产品 UE4制作的游戏产品 Unity制作的游戏产品 产品类型 5 ——> 资源商店 6 ——> 人才需求 平均薪资 总结 游戏引擎 Unity和UE4都是游戏引擎,所谓游戏引擎就是集成了复杂功能的游戏…

短视频/直播+教育成为教育新常态

互联网时代,网络视听应用已经成为吸引新网民的主要力量,2020年,在新增的3625万网民中,有23.9%是为了使用网络视听应用而来。网络视听应用中,最受欢迎的当属短视频,已然成为新的国民级应用行业。 如今&…

Excel之数据透视NotePad之列编辑

在日常工作中,经常有数据处理的需求,要统计个数,这里就可以使用到工具的一些功能,如 Excel、Notepad,记录下来,分享功能。 一、Excel 软件 Excel 功能过于强大,下面只是简单分享下日常使用到的…

【附源码】计算机毕业设计JAVA大数据文章发布系统

【附源码】计算机毕业设计JAVA大数据文章发布系统 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: JAVA …

C++ Reference: Standard C++ Library reference: Containers: deque: deque: begin

C官网参考链接&#xff1a;https://cplusplus.com/reference/deque/deque/begin/ 公有成员函数 <deque> std::deque::begin C98 iterator begin(); const_iterator begin() const; C11 iterator begin() noexcept; const_iterator begin() const noexcept;返回指向开始…

基于五等均分法和Bob Stone法衡量RFM顾客价值

最近学习了衡量RFM模型的两种顾客价值的方法&#xff0c;即五等均分法和Bob Stone法。仅以此博客记录我的学习过程&#xff0c;后序学习到了其他方法再来补充。关于RFM实战案例可参考我的其他文章大数据分析案例-基于RFM模型对电商客户价值分析 大数据分析案例-用RFM模型对客户…

p53 与铁死亡有关?Nature 解锁新机制

众所周知&#xff0c;p53 是一种肿瘤抑制基因&#xff0c;被广泛称为“基因组的守护者”。自 1979 年被发现至今&#xff0c;p53 基因一直是分子生物学和肿瘤学的研究热门。据 Elie Dolgin 在 Nature 上发表的 “The most popular genes in the human genome” 统计&#xff0c…

wpf Viewport3D 学习

呈现 Viewport3D 元素的 2-D 布局范围内包含的 3-D 内容。就是3D画布&#xff0c; 继承 Object DispatcherObject DependencyObject Visual UIElement FrameworkElement Viewport3D 从FrameworkElement继承&#xff0c;FrameworkElement继承自UIElement&#xff1b; 该 V…

(五)Spring之Bean的作用域

文章目录环境单例的&#xff08;singleton&#xff09;多例的&#xff08;prototype&#xff09;其它scope自定义scope上一篇&#xff1a;&#xff08;四&#xff09;Spring对IoC的实现 环境 spring6里程碑版本的仓库 依赖&#xff1a;spring context依赖、junit依赖、log4j2…

【单片机基础】单片机中断和定时

中断什么是中断&#xff1f;中断IE寄存器中断查询次序例程定时器/计数器实现定时的方法&#xff1f;定时计数的概念什么是单片机定时器/计数器&#xff1f;定时器/计数器内部结构定时器的相关寄存器51单片机定时器初值计算方法详解例程中断 什么是中断&#xff1f; 中断是为使…

VINS学习(二)IMU预积分原理与实现

VINS学习&#xff08;二&#xff09;IMU预积分原理与实现一、连续时间下的IMU积分二、连续时间下的IMU预积分三、离散时间下的IMU预积分1. 欧拉法2. 中值法四、连续时间下的IMU状态误差传递五、离散时间下的IMU状态误差传递六、预积分量关于零偏的雅克比七、VINS代码实践1.预积…

【文末福利】半导体封装率先国产化,400+封装厂商最新名单汇总

根据我国国民经济“九五”计划至“十四五”规划&#xff0c;可窥见多方政策都在积极支持我国集成电路的发展&#xff0c;近几年更是强调突破集成电路关键技术&#xff0c;集中力量发展集成电路。其中封测技术作为集成电路制造的后道工艺&#xff0c;在整个集成电路产业链中扮演…

熬夜整理的vue面试题

Vue-router 路由模式有几种 vue-router 有 3 种路由模式&#xff1a;hash、history、abstract&#xff0c;对应的源码如下所示 switch (mode) {case history:this.history new HTML5History(this, options.base)breakcase hash:this.history new HashHistory(this, options…

网络安全设备之防火墙技术详解

一、防火墙概述 1、网络防火墙简介 无论是大中型企业网络,还是小型家庭办公网络,对网络安全方面的要求一直保持上升趋势。微软公司的官方网站尚且难逃黑客的魔爪,普通的中小网络更是难以抵抗了。解决网络安全问题最常用的防护手段就是安装网络防火墙,对于大中型规模的企业…

css实现流星划过动画

背景 &#x1f44f;渐变伪元素实现流星&#xff0c;translateY实现划过动画&#xff0c;速速来Get吧~ &#x1f947;文末分享源代码。记得点赞关注收藏&#xff01; 1.实现效果 2.实现原理 translateY()&#xff1a; translateY() 在页面垂直移动元素。 translateY(ty) 对应 …

上海亚商投顾:沪指重返3100点

上海亚商投顾前言&#xff1a;无惧大盘大跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 市场情绪三大指数今日低开高走&#xff0c;沪指重返3100点上方&#xff0c;深成指、创业板指午后均涨超2%。半导体板块掀涨停…

Java并发编程学习13-任务取消(下)

任务取消&#xff08;下&#xff09; 《任务取消》由于篇幅较多&#xff0c;拆分了两篇来介绍各种实现取消和中断的机制&#xff0c;以及如何编写任务和服务&#xff0c;使它们能对取消请求做出响应。 1. 任务限时运行 我们知道许多任务可能永远也无法处理完成&#xff08;…

[go学习笔记.第十四章.协程和管道] 3.协程配合管道案例以及管道的注意事项和使用细节

案例一 请完成goroutine和channel协同工作的案例&#xff0c;具体要求&#xff1a; (1).开启一个writeData协程&#xff0c;向管道intChan中写入50个整数. (2).开启一个readData协程&#xff0c;从管道intChan中读取writeData写入的数据 (3).注意&#xff1a; writeData和readD…