如何让ROS2编译完后自动source环境变量

你有没有过这种苦恼,每次运行 colcon build 之后,总是忘记 source install/setup.bash,导致运行节点的时候提示 package not found,从而又要重新输入一遍 source 命令。

解决办法很简单,将以下内容复制粘贴到 ~/.bashrc 文件中:

复制代码
# ROS2 workspace build + auto source
cb() {
    if [ ! -d "src" ]; then
        echo "Error: Not in a ROS2 workspace root (src/ directory not found)"
        return 1
    fi
    
    if colcon build "$@"; then
        echo "✅ colcon build succeed"
        if source install/setup.bash; then
            echo "✅ successfully loaded install/setup.bash"
        else
            echo "⚠️ failed to load install/setup.bash"
        fi
    else
        echo "❌ colcon build failed"
        return 1
    fi
}

如此一来,我们只需要在ROS2工作空间中用 cb 命令代替 colcon build,就可以自动在编译后source环境变量了:

复制代码
cb                          # 编译整个工作空间并自动source

ros2 run ...                # 然后直接运行ROS2程序即可,无需再source

且由于我们在配置语句中使用了 colcon build "$@",所以cb命令附带的参数也会传递给 colcon build

复制代码
cb --packages-select my_pkg # 编译指定包并自动source
cb --symlink-install        # 带参数编译并自动source

下面是实际对比,左边是colcon build(编译完后不能马上运行程序),右边是cb(编译完后马上可以运行程序,无需source):

其实还可以再在 `~/.bashrc` 中加入一段:

复制代码
# quickly source install/setup.bash
sos() {
    # check if src directory exists
    if [ ! -d "src" ]; then
        echo "Error: No src/ directory found. Are you in a ROS2 workspace?"
        return 1
    fi
    
    # source
    if source install/setup.bash; then
        echo "✅ successfully loaded install/setup.bash"
    else
        echo "⚠️ failed to load install/setup.bash"
    fi
}

这样的话,在不需要重新编译项目的时候,也可以使用`sos`命令快捷source环境变量。

相关推荐
zhangrelay6 天前
ROS 2 Lyrical 第9章 计算机视觉与摄像头应用
linux·笔记·学习·ubuntu·机器人·ros2
blueSatchel9 天前
香橙派4PRO安装ROS2-jazzy
ros2·香橙派
别动我齐刘海10 天前
机器学习基础3——C++、OpenCV、点云、Open3D
c++·人工智能·opencv·目标检测·机器学习·机器人·ros2
zhangrelay11 天前
ROS 2 Lyrical 第4章 URDF机器人建模与Gazebo Garden仿真
linux·笔记·学习·ubuntu·机器人·ros2
别动我齐刘海12 天前
机器学习基础2——C++、OpenCV、点云、Open3D
c++·人工智能·opencv·机器学习·计算机视觉·机器人·ros2
zhangrelay12 天前
ROS 2 Lyrical 第2章 ROS 2系统架构与核心概念
linux·笔记·学习·ubuntu·ros2
z203483152016 天前
Livox Mid-360S点云图录制
嵌入式硬件·雷达·ros2
别催小唐敲代码20 天前
ROS2从入门到实战:去中心化机器人操作系统详解
wpf·ros2
酸梅果茶22 天前
ROS2 foxy环境下源码安装Navigation2
ros2·navigation·agx
某林21225 天前
ros从底层硬件到 Web 端部署
python·机器人·硬件架构·ros2