【多喝热水系列】从零开始的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,到定位功能包、查看目录结构,再到直接运行可执行文件和手动设置环境变量。

相关推荐
imc.1134 分钟前
linux基础IO
linux·运维·服务器
BelongPanda2 小时前
Linux Nginx 纯手动 Let‘s Encrypt 泛域名证书配置教程
linux·nginx
酷可达拉斯3 小时前
Linux操作系统-shell编程(0)
linux·运维·服务器·python·云计算
玖玥拾3 小时前
Unity 3D 笔记(十一)UI 框架进阶:栈弹窗交互、BasePanel 基类虚方法、DoTween 界面动画
笔记·3d·unity
FellAveal3 小时前
【Go语言入门学习笔记】Part13.结构体与接口
笔记·学习·golang
2301_777998343 小时前
Linux中断机制:操作系统如何高效运行
linux·运维·服务器
yunwei373 小时前
eBPF 教程:检查 exec 后真正安装的可执行镜像
linux·开源
学计算机的计算基3 小时前
回溯算法下篇:四道经典题讲透约束剪枝、原地标记、预计算与状态压缩
java·笔记·算法
雷工笔记3 小时前
Ubuntu迁移记录
笔记·ubuntu
一只小菜鸡..3 小时前
Stanford CS144 学习笔记 (九):大师访谈与互联网的未来
笔记·学习