是使用local_setup.bash 还是 setup.bash

编译完ros2程序后,我们会发现install目录下有两个脚本local_setup.bashsetup.bash。执行程序前,通常需要source一下install目录下的脚本,以便环境变量准备就绪。这样ros2 runros2 launch就能找到对应的执行文件和依赖。

下面的内容是从setup.bash中截取出来的一段。可以发现它会先source 一下/opt/ros/galactic目录再source 一下/home/ubuntu/turtlebot3_ws/install目录,最后再source一下当前目录。这样就会把外部的多个工作空间囊括进来。如果多个工作空间中有相同名字的功能包可能就会互相冲突。

# source chained prefixes
# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script
COLCON_CURRENT_PREFIX="/opt/ros/galactic"
_colcon_prefix_chain_bash_source_script "$COLCON_CURRENT_PREFIX/local_setup.bash"
# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script
COLCON_CURRENT_PREFIX="/home/ubuntu/turtlebot3_ws/install"
_colcon_prefix_chain_bash_source_script "$COLCON_CURRENT_PREFIX/local_setup.bash"

# source this prefix
# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script
COLCON_CURRENT_PREFIX="$(builtin cd "`dirname "${BASH_SOURCE[0]}"`" > /dev/null && pwd)"
_colcon_prefix_chain_bash_source_script "$COLCON_CURRENT_PREFIX/local_setup.bash"

unset COLCON_CURRENT_PREFIX
unset _colcon_prefix_chain_bash_source_script

local_setup.bash只会source脚本所在目录。这样只会查找当前install目录下的执行文件和依赖。

所以如果系统里有多个ROS工作空间,谨慎一点的方法是:

1、先source一下/opt/ros/galactic/local_setup.bash

2、在source一下某个用户的工作空间。

如果系统里就一个自己建的用户工作空间。那就直接source用户工作空间中install目录下的setup.bash。一切都搞定了。

它会帮你先source一下/opt/ros/galactic/local_setup.bash,这样就有系统的安装的ros执行程序和依赖了。然后再帮你source本用户空间的install/local_setup.bash

参考:

https://colcon.readthedocs.io/en/released/developer/environment.html#workspace-level

https://answers.ros.org/question/292566/what-is-the-difference-between-local_setupbash-and-setupbash/


觉得有用就点赞吧!

我是首飞,一个帮大家填坑的机器人开发攻城狮。

另外在公众号《首飞》内回复“机器人”获取精心推荐的C/C++,Python,Docker,Qt,ROS1/2等机器人行业常用技术资料。

petermi@ubuntu:~/catkin_ws/src/ORB_SLAM2/Examples/ROS$ tree . └── ORB_SLAM2 ├── Asus.yaml ├── build │ ├── atomic_configure │ │ ├── env.sh │ │ ├── local_setup.bash │ │ ├── local_setup.sh │ │ ├── local_setup.zsh │ │ ├── setup.bash │ │ ├── setup.sh │ │ ├── _setup_util.py │ │ └── setup.zsh │ ├── catkin │ │ └── catkin_generated │ │ └── version │ │ └── package.cmake │ ├── catkin_generated │ │ ├── env_cached.sh │ │ ├── generate_cached_setup.py │ │ ├── installspace │ │ │ ├── env.sh │ │ │ ├── local_setup.bash │ │ │ ├── local_setup.sh │ │ │ ├── local_setup.zsh │ │ │ ├── setup.bash │ │ │ ├── setup.sh │ │ │ ├── _setup_util.py │ │ │ └── setup.zsh │ │ ├── ordered_paths.cmake │ │ ├── setup_cached.sh │ │ └── stamps │ │ └── ORB_SLAM2 │ │ ├── interrogate_setup_dot_py.py.stamp │ │ ├── package.xml.stamp │ │ └── _setup_util.py.stamp │ ├── CATKIN_IGNORE │ ├── CMakeCache.txt │ ├── CMakeFiles │ │ ├── 3.16.3 │ │ │ ├── CMakeCCompiler.cmake │ │ │ ├── CMakeCXXCompiler.cmake │ │ │ ├── CMakeDetermineCompilerABI_C.bin │ │ │ ├── CMakeDetermineCompilerABI_CXX.bin │ │ │ ├── CMakeSystem.cmake │ │ │ ├── CompilerIdC │ │ │ │ ├── a.out │ │ │ │ ├── CMakeCCompilerId.c │ │ │ │ └── tmp │ │ │ └── CompilerIdCXX │ │ │ ├── a.out │ │ │ ├── CMakeCXXCompilerId.cpp │ │ │ └── tmp │ │ ├── cmake.check_cache │ │ ├── CMakeError.log │ │ ├── CMakeOutput.log │ │ └── CMakeTmp │ ├── devel │ │ ├── cmake.lock │ │ ├── env.sh │ │ ├── local_setup.bash │ │ ├── local_setup.sh │ │
03-15
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

首飞爱玩机器人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值