【多喝热水系列】从零开始的ROS2之旅——Day3

【多喝热水系列】从零开始的ROS2之旅------Day3

大家好,欢迎来到「多喝热水系列」ROS2入门之旅的第三天!今天核心任务是搞定 Linux 基础里的环境变量,而且是和 ROS2 紧密绑定的环境变量操作。为啥环境变量这么重要呢?因为 ROS2 的功能包查找、可执行文件运行、版本识别全靠它撑着,搞懂这部分,后续玩功能包、写节点才不会卡壳。话不多说,跟着下面的步骤一步步实操起来!

一、先明确目标:今天要搞定的6件事

咱们今天的学习主线很清晰,就是围绕 ROS2 相关的环境变量做实操,具体要完成这6个任务:

  1. 查看当前终端配置的 ROS 版本

  2. 查看环境变量的 AMENT_PREFIX_PATH 的值

  3. 查看 turtlesim 程序包的位置

  4. 查看 turtlesim 目录下的所有内容

  5. 直接运行 turtlesim_node 可执行文件

  6. 设置环境变量测试

提示:所有操作都在 Linux 终端中完成,建议先打开终端,确保之前已经安装好 ROS2(如果还没安装,可回顾 Day1 的安装步骤)。

二、实操环节:逐个突破环境变量相关操作

1. 查看当前终端配置的 ROS 版本

首先,我们得知道当前终端用的是哪个 ROS2 版本(比如 Humble、Iron、Jazzy 等),这就需要通过 ROS2 内置的环境变量 ROS_DISTRO 来查看。

操作命令:

命令解释:echo 是打印输出命令,$变量名 表示引用环境变量的值,所以这个命令的作用是打印出 ROS_DISTRO 这个环境变量存储的内容(也就是 ROS2 版本号)。

预期结果:如果之前正确配置了 ROS2 环境,会输出对应的版本名称,比如我这里输出 humble。

2. 查看环境变量 AMENT_PREFIX_PATH 的值

在 ROS2 中,AMENT_PREFIX_PATH 是非常核心的环境变量,它存储了所有 ROS2 功能包的安装路径(包括系统安装的和自定义编译的),ROS2 就是通过这个变量找到各个功能包的。

操作命令(第二个命令是正确找到 AMENT_PREFIX_PATH 的值):

命令解释:和上面查看 ROS 版本的命令逻辑一样,都是通过 echo 打印环境变量的值。

3. 查看 turtlesim 程序包的位置

turtlesim 是 ROS2 自带的海龟仿真功能包,我们可以通过AMENT_PREFIX_PATH 对应的路径去查找它,也可以用 ROS2 提供的 colcon list 命令直接定位(colcon 是 ROS2 的构建工具)。

方法一:用 colcon list 命令(笔者没有试过,有兴趣可以试试)

colcon list | grep turtlesim

命令解释:colcon list 会列出当前环境中所有已发现的 ROS2 功能包及对应的路径;grep turtlesim 是过滤命令,只保留包含"turtlesim"的内容。

方法二:通过 AMENT_PREFIX_PATH 查找

预期结果:两种方法都会输出 turtlesim 功能包的绝对路径,比如 /opt/ros/humble/share/turtlesim(系统安装路径)。

4. 查看 turtlesim 目录下的所有内容


5. 直接运行 turtlesim_node 可执行文件

之前我们可能用过 ros2 run turtlesim turtlesim_node 启动海龟仿真,但这次我们直接通过可执行文件的绝对路径来运行,更能理解环境变量的作用(后续会讲为啥 ros2 run 能直接找到可执行文件)。

预期结果:终端会输出一些日志信息,同时弹出一个白色的海龟仿真窗口,窗口中间有一只小海龟,说明运行成功!

6. 设置环境变量测试

在当前终端时作用,但是新终端时,并还是原先环境变量。

三、Day3 总结

今天我们通过6个实操任务,搞懂了 ROS2 相关的 Linux 环境变量核心操作:从查看 ROS 版本、核心环境变量 AMENT_PREFIX_PATH,到定位功能包、查看目录结构,再到直接运行可执行文件和手动设置环境变量。

相关推荐
chlk1231 天前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统
舒一笑1 天前
Ubuntu系统安装CodeX出现问题
linux·后端
改一下配置文件1 天前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
深紫色的三北六号2 天前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
SudosuBash2 天前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)
哈基咪怎么可能是AI2 天前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github
十日十行3 天前
Linux和window共享文件夹
linux
木心月转码ing3 天前
WSL+Cpp开发环境配置
linux
崔小汤呀4 天前
最全的docker安装笔记,包含CentOS和Ubuntu
linux·后端
何中应4 天前
vi编辑器使用
linux·后端·操作系统