source devel/setup.bash
和 source /opt/ros/humble/setup.sh
这两个命令在 ROS(Robot Operating System)环境中确实有区别,主要体现在以下几个方面:
1. 作用范围
-
source /opt/ros/humble/setup.sh
:-
作用:设置 ROS Humble 版本的全局环境变量。这些环境变量指向 ROS 官方安装的路径,使得用户可以使用 ROS 官方提供的命令、工具和库。
-
适用场景:当你需要使用 ROS 官方提供的功能,如
ros2
命令行工具、官方的库文件等时,需要执行这个命令。
-
-
source devel/setup.bash
:-
作用:设置本地工作空间(workspace)的环境变量。当你在本地工作空间中编译(build)了自定义的 ROS 包(packages)后,这个命令会将这些自定义包的路径添加到环境变量中,使得这些包能够被 ROS 系统识别和使用。
-
适用场景:当你开发了自己的 ROS 包,并且在本地工作空间中进行了编译,需要使用这些自定义包时,执行这个命令可以将自定义包的路径添加到环境变量中。
-
2. 环境变量的覆盖关系
-
优先级:如果同时执行了
source /opt/ros/humble/setup.sh
和source devel/setup.bash
,devel/setup.bash
中设置的环境变量会覆盖/opt/ros/humble/setup.sh
中设置的同名环境变量。 -
原因:
devel/setup.bash
通常会在设置环境变量时,将本地工作空间的路径放在前面。例如,对于PATH
环境变量,devel/setup.bash
会将本地工作空间的可执行文件路径插入到PATH
的前面,这样在执行命令时,优先查找本地工作空间中的可执行文件。
3. 使用场景
-
仅使用 ROS 官方功能:
-
如果你只需要使用 ROS 官方提供的功能,如运行官方的示例程序、使用官方的工具等,只需要执行
source /opt/ros/humble/setup.sh
。
-
-
开发自定义 ROS 包:
-
当你在本地工作空间中开发了自己的 ROS 包,并且进行了编译,需要使用这些自定义包时,应该先执行
source /opt/ros/humble/setup.sh
,然后再执行source devel/setup.bash
。这样可以确保既能使用 ROS 官方的功能,又能使用本地工作空间中的自定义包。
-
示例
假设你有一个本地工作空间 my_ws
,并且在其中编译了自定义的 ROS 包,你可以按照以下步骤设置环境变量:
bash复制
# 首先设置 ROS 官方环境变量
source /opt/ros/humble/setup.sh
# 然后设置本地工作空间的环境变量
source ~/my_ws/devel/setup.bash
通过这种方式,你可以同时使用 ROS 官方的功能和本地工作空间中的自定义包。