【ROS2指南-1】配置ROS2环境

资料来源Configuring your ROS 2 environment — ROS 2 Documentation: Dashing documentationhttp://docs.ros.org/en/dashing/Tutorials/Configuring-ROS2-Environment.html

目标:本教程将向您展示如何准备 ROS 2 环境。

教程级别:初学者

时间: 5分钟

内容

  • 背景

  • 先决条件

  • 任务

    • 1 源安装文件

    • 2 将 sourcing 添加到您的 shell 启动脚本

    • 3 添加colcon_cd到您的 shell 启动脚本

    • 4 检查环境变量

  • 概括

  • 下一步

  • 相关内容

背景

ROS 2 依赖于使用 shell 环境组合工作区的概念。“工作区”是一个 ROS 术语,指的是您在系统上使用 ROS 2 进行开发的位置。核心 ROS 2 工作区称为底层。随后的本地工作空间称为上层。使用 ROS 2 进行开发时,您通常会同时激活多个工作区。

结合工作区可以更轻松地针对不同版本的 ROS 2 或不同的包集进行开发。它还允许在同一台计算机上安装多个 ROS 2 发行版(例如 Dashing 和 Eloquent)并在它们之间切换。

这是通过每次打开一个新的 shell 时设置环境信息,或者将 source 命令添加到 shell 启动脚本来实现的。如果不获取安装文件,您将无法访问 ROS 2 命令,也无法找到或使用 ROS 2 包。换句话说,您将无法使用 ROS 2。

先决条件

在开始这些教程之前,请按照 ROS 2安装页面上的说明安装 ROS 2 。

本教程中使用的命令假定您遵循了适用于您的操作系统的二进制包安装指南(适用于 Linux 的 Debian 包)。如果您是从源代码构建的,您仍然可以继续操作,但安装文件的路径可能会有所不同。如果您从源代码安装,您也将无法使用该命令(在初级教程中经常使用)。

sudo apt install ros-<distro>-<package>

如果您使用的是 Linux 或 macOS,但还不熟悉 shell,本教程将有所帮助。

任务

1 源安装文件

您需要在打开的每个新 shell 上运行此命令才能访问 ROS 2 命令,如下所示:

source /opt/ros/dashing/setup.bash

PS:确切的命令取决于您安装 ROS 2 的位置。如果您遇到问题,请确保文件路径指向您的安装。

2 将 source俄添加到您的 shell 启动脚本

如果您不想每次打开一个新的 shell 时都必须设置环境变量文件(跳过任务 1),那么您可以将命令添加到您的 shell 启动脚本中:

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

3 添加colcon_cd到您的 shell 启动脚本

该命令colcon_cd允许您快速将 shell 的当前工作目录更改为包的目录。作为一个例子会很快带你到目录。

colcon_cd some_ros_package

~/ros2_install/src/some_ros_package

echo "source /usr/share/colcon_cd/function/colcon_cd.sh" >> ~/.bashrc
echo "export _colcon_cd_root=~/ros2_install" >> ~/.bashrc

根据您的安装方式colcon_cd和工作区的位置,上述说明可能会有所不同,请参阅文档以获取更多详细信息。要在 Linux 和 macOS 中撤消此操作,请找到系统的 shell 启动脚本并删除附加的 source 和 export 命令。

4 检查环境变量

查找 ROS 2 安装文件将设置运行 ROS 2 所需的几个环境变量。如果您在查找或使用 ROS 2 包时遇到问题,请确保您的环境已使用以下命令正确设置:

printenv | grep -i ROS

检查是否设置了ROS_DISTROROS_VERSION之类的变量。

ROS_VERSION=2
ROS_PYTHON_VERSION=3
ROS_DISTRO=dashing

如果环境变量设置不正确,请返回您遵循的安装指南的 ROS 2 包安装部分。如果您需要更具体的帮助(因为环境设置文件可能来自不同的地方),您可以从社区获得答案。

3.1 ROS_DOMAIN_ID变量

有关 ROS 域 ID 的详细信息,请参阅域 ID文章。

一旦您为您的 ROS 2 代理组确定了一个唯一的整数,您就可以使用以下命令设置环境变量:

export ROS_DOMAIN_ID=<your_domain_id>

要在 shell 会话之间维护此设置,您可以将命令添加到 shell 启动脚本中:

echo "export ROS_DOMAIN_ID=<your_domain_id>" >> ~/.bashrc

概括

使用前需要正确配置ROS 2开发环境。这可以通过两种方式完成:在您打开的每个新 shell 中获取安装文件,或者将 source 命令添加到您的启动脚本中。

如果您在定位或使用 ROS 2 包时遇到任何问题,您应该做的第一件事是检查您的环境变量并确保它们被设置为您想要的版本和发行版。

下一步

现在您已经安装了一个可用的 ROS 2,并且知道如何获取其安装文件,您可以开始使用turtlesim 工具学习 ROS 2 的来龙去脉。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis(十一)、MyBatis查询语句专题

准备工作&#xff1a; 模块名&#xff1a;mybatis-007-select 打包方式&#xff1a;jar 引入依赖&#xff1a;mysql驱动依赖、mybatis依赖、logback依赖、junit依赖。 引入配置文件&#xff1a;jdbc.properties、mybatis-config.xml、logback.xml 创建pojo类&#xff1a;Car 创…

【华为机试真题详解JAVA实现】—从单向链表中删除指定值的节点

目录 一、题目描述 二、解题代码 一、题目描述 输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针。 链表的值不能重复。 构造过程,例如输入一行数据为: 6 2 1 2 3 2 5 1 4 5 7 2 2 则第一个参数6表示输入总共6个节点,…

AI又进化了,声音克隆革命性突破

大家好&#xff0c;我是 Jack。 因 ChatGPT、Stable Diffusion 让 AI 在文本、图像生成领域火出了圈。 但 AI 在生成方面的能力&#xff0c;可不仅如此&#xff0c;音频领域也出现了很多优秀的项目。 我用我本人的音频数据&#xff0c;训练了一个 AI 模型&#xff0c;生成了…

数据结构系列17——lambda表达式

目录 1. 基本概念 2. 基本语法 3. 函数式接口 4. Lambda表达式的基本使用 4.1 语法精简 5. 变量捕获 6. Lambda在集合当中的使用 1. 基本概念 Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。 lambda表达式就和方法一样,它提供了一…

循环依赖详解及解决方案

介绍 上图就是循环依赖的三种情况,虽然方式不同,但是循环依赖的本质是一样的,就A的完整创建要依赖与B,B的完整创建要依赖于A,相互依赖导致没办法完整创建造成失败. 循环依赖代码演示 public class Demo {public static void main(String[] args) {new Demo1();} }class Demo1…

打造出ChatGPT的,是怎样一群人?

震惊世界的ChatGPT&#xff0c;要多少人才能开发出来&#xff1f;几百&#xff0c;还是几千&#xff1f; 答案是&#xff1a;87个人。 老实说&#xff0c;刚看到这个数字真是惊到我了&#xff0c;印象里&#xff0c;之前看媒体报道各大巨头人工智能人才储备时&#xff0c;动辄…

长草

4 5 .g… … …g… … 2 gggg. gggg. ggggg .ggg. #include <iostream> using namespace std;int r,l;char arr[1005][1005];int t;char dp[1005][1005]; int dx[4]{0,0,1,-1},dy[4]{1,-1,0,0}; void dfs(int x,int y) {for(int i0;i<4;i){int axdx[i];int bydy[i];if…

Qt Quick - 分隔器综述

Qt Quick - 分隔器综述一、概述二、MenuSeparator 控件1. 用法&#xff1a;三、ToolSeparator 控件1. 用法一、概述 Qt Quick Controls 提供了多种分隔符&#xff0c;其实就是分割一下MenuBar和ToolBar里面的内容。 控件功能MenuSeparator将菜单中的一组项目与相邻项目分开To…

dolphinscheduler资源中心

资源中心 资源中心介绍 资源中心提供文件管理&#xff0c;UDF管理&#xff0c;任务组管理。 文件管理可以访问要执行的hive的sql文件 UDF管理可以放置fllink执行的自定义udf函数jar包&#xff0c;hive自定义的UDF函数jar包 以上的*.sql,*.jar文件可以理解为资源&#xff0c…

【服务器数据恢复】 重装系统导致xfs文件系统分区丢失的数据恢复案例

服务器数据恢复环境&#xff1a; EMC某型号存储&#xff0c;20块磁盘组建raid5磁盘阵列&#xff0c;划分2个lun。 服务器故障&#xff1a; 管理员执行重装系统操作后发现分区发生改变&#xff0c;原先的sdc3分区丢失&#xff0c;该分区采用xfs文件系统&#xff0c;存储了公司重…

红队内网靶场

文章目录开篇介绍靶场介绍靶场下载以及配置Tomcat Get Shell突破DMZ防火墙拿下域内成员机器将内网机器上线到CS使用Adfind侦察子域信息控制子域DCRadmin登录子域进行权限维持(白银票据/ACL)子域bloodhound获取父域信息分析子域Krbtgt密钥创建跨域金票Dcsync父域PTH父域DC准备打…

什么是 三维渲染内核?

一、引言 随着计算机图形学的发展&#xff0c;三维图形已经成为 电子游戏、动画电影 和 可视化、数字孪生等领域的关键技术。为了将三维模型转换成二维图像&#xff0c;我们需要依赖一个称为三维渲染内核的工具。本文将详细介绍三维渲染内核的原理、实现方法和应用&#xff0c…

每日做题总结——day01

目录 选择题 for循环 指针数组 位段 getchar 大小端存储 进制与格式控制符 位运算 数组指针 二维数组的存储 计算二进制中1的个数 斐波那契数列求递归次数 编程题 删除公共字符 排序子序列 倒置字符串 选择题 for循环 解析&#xff1a;该题主要看for…

面试题React

1.React Fiber是什么&#xff1f; 在 React V16 将调度算法进行了重构&#xff0c; 将之前的 stack reconciler 重构成新版的 fiber reconciler&#xff0c;变成了具有链表和指针的 单链表树遍历算法。通过指针映射&#xff0c;每个单元都记录着遍历当下的上一步与下一步&…

【从零开始学Skynet】工具篇(二):虚拟机文件的复制粘贴

大家在Linux系统下开发的时候肯定会遇到虚拟机与主机间无法复制粘贴的问题&#xff0c;现在我们就来解决这样的问题&#xff0c;方便我们的开发。 1、打开设置 我们可以系统界面的菜单栏点击“控制”&#xff0c;然后打开“设置”&#xff1b; 也可以在VirtualBox界面打开“设…

项目管理中,这些思维误区一定要避开

项目需要在限定的时间要求完成的事情&#xff0c;可控的关键把握是&#xff1a;人、时、事。 但是&#xff0c;项目实施时间一般较长&#xff0c;总有很多项目实施结果不尽人意。那么&#xff0c;IT项目管理过程中&#xff0c;容易出现哪些思维误区呢&#xff1f; 1、忘记项…

TCP三次握手四次挥手及time_wait状态解析

TCP的建立——三次握手 1.服务器必须准备好接受外来的连接。通常通过调用socket&#xff0c;bind&#xff0c;listen这三个函数来完成&#xff0c;我们称之为被动打开(passive open)。 2. 客户端通过调用connect函数发起主动的打开(active open)。这导致客户TCP发送一个SYN(同步…

Nginx基础教程

Nginx 目标 Nginx简介【了解】 Nginx安装配置【掌握】 一、Nginx简介 Nginx称为:负载均衡器或 静态资源服务器:html,css,js,img ​ Nginx(发音为“engine X”)是俄罗斯人编写的十分轻量级的HTTP服务器,是一个高性能的HTTP和反向代理服务器&#xff0c;同时也是一个IMAP/P…

初探MyBatis实现简单查询

文章目录一、创建数据库与表1、创建数据库2、创建用户表3、添加表记录二、基于配置文件方式使用MyBatis1、创建Maven项目2、添加相关依赖3、创建用户实体类4、创建用户映射器配置文件5、创建MyBatis配置文件6、创建日志属性文件7、测试用户操作1)创建用户操作测试类2)测试按编号…

除了Jira、禅道还有哪些更好的敏捷开发过程管理平台?

无论是从国内的敏捷调研开发调研报告还是从国外的敏捷状态调查&#xff0c;工具支持一直是决定敏捷成功的关键因素之一&#xff0c;它们可以帮助团队提高软件开发的效率、质量、协作和满意度。选择合适的敏捷开发管理工具&#xff0c;并正确地使用它们&#xff0c;是每个敏捷团…
最新文章