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

相关推荐
驭渊的小故事18 小时前
简单模板笔记
数据结构·笔记·算法
开开心心就好18 小时前
发票合并打印工具,多页布局设置实时预览
linux·运维·服务器·windows·pdf·harmonyos·1024程序员节
无证驾驶梁嗖嗖18 小时前
用Plex打造随身私人影院告别影音杂乱,必须加上cpolar突破地域限制!
ubuntu
予枫的编程笔记19 小时前
【Linux进阶篇】从基础到实战:grep高亮、sed流编辑、awk分析,全场景覆盖
linux·sed·grep·awk·shell编程·文本处理三剑客·管道命令
Sheep Shaun19 小时前
揭开Linux的隐藏约定:你的第一个文件描述符为什么是3?
linux·服务器·ubuntu·文件系统·缓冲区
Tfly__19 小时前
在PX4 gazebo仿真中加入Mid360(最新)
linux·人工智能·自动驾驶·ros·无人机·px4·mid360
陈桴浮海19 小时前
【Linux&Ansible】学习笔记合集二
linux·学习·ansible
生活很暖很治愈19 小时前
Linux——环境变量PATH
linux·ubuntu
?re?ta?rd?ed?19 小时前
linux中的调度策略
linux·运维·服务器
深圳市九鼎创展科技19 小时前
瑞芯微 RK3399 开发板 X3399 评测:高性能 ARM 平台的多面手
linux·arm开发·人工智能·单片机·嵌入式硬件·边缘计算