Ubuntu20.04安装ROS2教程

Ubuntu20.04安装ROS2教程

  • ROS 2 安装指南
    • 支持的ROS 2 版本
    • 设置语言环境(Set locale)
    • 设置源(Setup Sources)
    • 设置密钥
    • 安装 ROS 2 包(Install ROS 2 packages)
    • 环境设置(Environment setup)
      • 源设置脚本(Sourcing the setup script)
      • 测试示例(Try some examples)
    • 安装后的下一步(Next steps after installing)
    • 卸载 ROS 2(Uninstall)

在这里插入图片描述

ROS 2 安装指南

支持的ROS 2 版本

Ubuntu20.04所对应的ROS2版本有:foxy、galactic,这里准备安装galactic.

设置语言环境(Set locale)

确保你的系统支持 UTF-8 编码的语言环境。如果你在一个最小化的环境中(例如 Docker 容器),语言环境可能是像 POSIX 这样的最小化设置。我们测试时使用的是以下设置。不过,如果你使用的是其他支持 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-8locale  # 验证设置

locale输出:默认环境为en_US.UTF-8默认为en_US.UTF-8,不需要重复设置.

设置源(Setup Sources)

你需要将 ROS 2 的 apt 仓库添加到你的系统中。

通常可以采用两种方式进行设置:软件更新或者手动修改source.list

此处采用软件更新方法:
首先确保 Ubuntu Universe 仓库是启用的。

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

设置最佳服务器,这里设置为aliyun服务器
在这里插入图片描述
更新完成后,执行:

sudo apt-get update

设置密钥

现在使用 apt 添加 ROS 2 的 GPG 密钥。

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

安装 ROS 2 包(Install ROS 2 packages)

在设置仓库之后,更新你的 apt 仓库缓存。

sudo apt update

ROS 2 包是在频繁更新的 Ubuntu 系统上构建的。在安装新包之前,始终建议确保你的系统是最新的。

sudo apt upgrade

桌面安装(推荐):ROS、RViz、演示、教程。

sudo apt install ros-galactic-desktop

ROS-基础安装(精简版,可以上面的版本二选一):通信库、消息包、命令行工具。不包含 GUI 工具。

sudo apt install ros-galactic-ros-base

开发工具:编译器和其他构建 ROS 包的工具。

sudo apt install ros-dev-tools

环境设置(Environment setup)

源设置脚本(Sourcing the setup script)

通过源设置以下文件来设置你的环境。

# 如果你使用的不是 bash,用你的 shell 替换 ".bash"
# 可能的值有:setup.bash, setup.sh, setup.zsh
source /opt/ros/galactic/setup.bash

上述配置,每次开启终端都需运行,或者给当前用户配置永久的环境:

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

测试示例(Try some examples)

如果你上面安装了 ros-galactic-desktop,你可以尝试一些示例。

在一个终端中,源设置文件然后运行一个 C++ talker:

source /opt/ros/galactic/setup.bash # 如果永久配置不需运行
ros2 run demo_nodes_cpp talker

在另一个终端中源设置文件然后运行一个 Python listener:

source /opt/ros/galactic/setup.bash # 如果永久配置不需运行
ros2 run demo_nodes_py listener

你应该看到 talker 表示它正在发布消息,listener 表示它听到了这些消息。这验证了 C++ 和 Python API 都正常工作。太棒了!
在这里插入图片描述

安装后的下一步(Next steps after installing)

继续通过教程和演示来配置你的环境,创建你自己的工作空间和包,并学习 ROS 2 的核心概念。
ROS 2 说明文档:Galactic.

卸载 ROS 2(Uninstall)

如果你需要卸载 ROS 2 或在已经从二进制文件安装后切换到基于源码的安装,请运行以下命令:

sudo apt remove ~nros-galactic-* && sudo apt autoremove

你可能还想移除仓库:

sudo rm /etc/apt/sources.list.d/ros2.list
sudo apt update
sudo apt autoremove

以上步骤将帮助你从系统中移除 ROS 2 及其相关的依赖包,并清理不再需要的包。如果你之前添加了 ROS 2 的仓库,还需要删除仓库配置文件并更新系统包列表,以确保系统保持最新状态。

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

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

相关文章

自闭症学校:儿童成长的崭新希望

在社会的一隅,存在着这样一群特殊的孩子,他们仿佛沉浸于独属于自己的世界,难以与外界进行正常的交流互动,他们便是自闭症儿童。对于这些孩子及其家庭而言,自闭症学校无疑成为了助力他们成长的全新希望。 自闭症学校为孩…

详细且系统的Spring Boot应用开发

为了帮助大家更好地理解如何使用Spring Boot来构建一个基础的Web应用程序,我将通过一个简单的例子来进行说明。这个例子将是一个基本的RESTful API服务,用于管理图书信息。 项目准备 1. 开发环境设置(这个我之前有发文,这里就不详…

java--反射(reflection)

一、反射机制 Java Reflection (1)反射机制允许程序在执行期借助 Reflection API 取得任何类的内部信息(比如成员变量、构造器、成员方法等等),并能操作对象的属性及方法。反射在设计模式和框架底层都会用到。&#x…

[Linux Codec驱动]音频路由概念

1. 音频路由的基本概念 源(Source):音频信号的发出方,通常是一个音频输入设备,如麦克风、音频播放设备等。接收端(Sink):音频信号的接收方,通常是音频输出设备&#xff…

时间序列预测(九)——门控循环单元网络(GRU)

目录 一、GRU结构 二、GRU核心思想 1、更新门(Update Gate):决定了当前时刻隐藏状态中旧状态和新候选状态的混合比例。 2、重置门(Reset Gate):用于控制前一时刻隐藏状态对当前候选隐藏状态的影响程度。…

爬虫爬取数据时,如何解决由于验证码通常是动态生成的,直接通过URL下载可能会遇到验证码内容不一致的问题?( ̄︶ ̄)↗

在使用Selenium下载图片验证码时,由于验证码通常是动态生成的,直接通过URL下载可能会遇到验证码内容不一致的问题。因此,更可靠的方法是使用Selenium的截图功能,然后裁剪出验证码部分。 再通过第三方服务(如AntiCaptch…

Java项目-基于springboot框架的智慧外贸系统项目实战(附源码+文档)

作者:计算机学长阿伟 开发技术:SpringBoot、SSM、Vue、MySQL、ElementUI等,“文末源码”。 开发运行环境 开发语言:Java数据库:MySQL技术:SpringBoot、Vue、Mybaits Plus、ELementUI工具:IDEA/…

SSL VPN调试思路及配置指南

一、概述 本指南旨在详细阐述外部人员通过SSL VPN访问内部资源的调试过程与配置步骤。SSL VPN被单臂部署在核心交换机上,并通过外网防火墙将SSL VPN的443端口映射至外部网络,以实现安全的远程访问。 二、配置步骤 系统管理 网络设置: 配置接…

Kafka、Kafka Streams、Drools、Redis 和分布式数据库的风控系统程序

由于实时风控系统难度较大,集成框架设计各个单位均有特点,快速建立一个通用性较强,学习、实施和使用成本较低的框架尤其重要。 提供一个简化的 Java 程序示例,演示如何将 Kafka 消息中间件、Kafka Streams 计算引擎、Drools 规则…

小新学习K8s第一天之K8s基础概念

目录 一、Kubernetes(K8s)概述 1.1、什么是K8s 1.2、K8s的作用 1.3、K8s的功能 二、K8s的特性 2.1、弹性伸缩 2.2、自我修复 2.3、服务发现和负载均衡 2.4、自动发布(默认滚动发布模式)和回滚 2.5、集中化配置管理和密钥…

高效改进!防止DataX从HDFS导入关系型数据库丢数据

高效改进!防止DataX从HDFS导入关系型数据库丢数据 针对DataX在从HDFS导入数据到关系型数据库过程中的数据丢失问题,优化了分片处理代码。改动包括将之前单一分片处理逻辑重构为循环处理所有分片,确保了每个分片数据都得到全面读取和传输&…

Python 实现 excel 数据过滤

一、场景分析 假设有如下一份 excel 数据 shop.xlsx, 写一段 python 程序,实现对于车牌的分组数据过滤。 并以车牌为文件名,把店名输出到 车牌.txt 文件中。 比如 闽A.txt 文件内容为: 小林书店福州店1 小林书店福州店2 二、依赖安装 程序依…

单片机通过AT指令控制ESP8266+TCP 实现收发数据

在嵌入式系统设计中,经常需要通过无线模块进行数据通信。ESP8266是一款流行的Wi-Fi模块,它支持AT指令集,可以方便地与各种微控制器进行通信。本文将详细介绍如何使用STM32单片机通过AT指令控制ESP8266模块实现TCP协议的收发数据。 ESP8266模…

【AI创新】优化ChatGPT提示词Prompt设计:释放AI的无限潜能

【AI创新】优化ChatGPT提示词Prompt设计:释放AI的无限潜能 文章目录 🌟 引言🌟 第一性原理在Prompt设计中的应用系统与用户信息的深度融合实际应用案例分析结论 🌟 系统信息与用户信息的协同作用系统信息(SYSTEM Infor…

TBWeb正式稳定版V3.4.0+AI+MJ绘画+免授权无后门+详细安装教程

TBWeb正式稳定版V3.4.0AIMJ绘画免授权无后门详细安装教程; 运行环境 Nginx1.22 PHP5.7 MySQL7.4 Redis7.0 Node.js(16.19.1) PM2管理器5.6 TBWeb系统是基于 NineAI 二开的可商业化 TB Web 应用(免授权,无后门&a…

【隐私计算】隐语HEU同态加密算法解读

HEU: 一个高性能的同态加密算法库,提供了多种 PHE 算法, 包括ZPaillier、FPaillier、IPCL、Damgard Jurik、DGK、OU、EC ElGamal 以及基于FPGA和GPU硬件加速版本的Paillier版本。 本文我们会基于GPU运行HEU Docker容器,编译打包GPaillier并测…

探索卷积层参数量与计算量

1 问题 了解VGG网络并利用PyTorch实现VGG探索1x1卷积的作用探索卷积层参数量、计算量的计算方法 2 方法 了解VGG网络并利用PyTorch实现VGG1、VGG是Oxford的Visual Geometry Group的组提出的,VGG的缩写也来自于这个组的名字。VGG网络探索了提升网络的深度对最终的图像…

重构复杂简单变量之状态与策略模式

状态与策略模式 主要用于消除复杂的类型代码,并将其替换为更清晰、可维护的状态或策略对象。这个方法通常用于以下情况: 类型代码问题:当我们在类中使用整数或字符串来表示对象的状态或行为时,这可能会导致代码变得难以理解和维护…

算法的学习笔记—两个链表的第一个公共结点(牛客JZ52)

😀前言 在链表问题中,寻找两个链表的第一个公共结点是一个经典问题。这个问题的本质是在两个单链表中找到它们的相交点,或者说它们开始共享相同节点的地方。本文将详细讲解这个问题的解题思路,并提供一种高效的解决方法。 &#x…

LeetCode Hot 100:二叉树

LeetCode Hot 100:二叉树 94. 二叉树的中序遍历 思路 1:递归 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}…