跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / Bash

Ubuntu22.04下ROS2 humble与ROS1 noetic共存安装指南

介绍在 Ubuntu22.04 系统上同时安装 ROS2 Humble 和 ROS1 Noetic 的详细过程,包括源码编译、依赖处理、兼容性修复及环境变量配置方法,使两个版本可以共存并自由切换。

锁机制发布于 2026/2/19更新于 2026/9/1177 浏览
Ubuntu22.04下ROS2 humble与ROS1 noetic共存安装指南

本文将详细介绍在已安装 ROS2 humble 的 Ubuntu22.04 系统下,安装 ROS1 Noetic 并实现二者共存的具体步骤。

1. 更新系统

sudo apt update && sudo apt upgrade -y

2. 安装依赖

sudo apt install -y git build-essential cmake python3-pip python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool libboost-all-dev

3. 创建 ROS1 工作空间

mkdir -p ~/ros_catkin_ws
cd ~/ros_catkin_ws

4. 下载 ROS1 源码

rosinstall_generator desktop --rosdistro noetic --deps --tar > noetic-desktop.rosinstall
wstool init src noetic-desktop.rosinstall
wstool update -t src

第二行代码安装卡顿后,另开端口运行第三行代码会补充安装。

5. 解决依赖问题

部分依赖在 Ubuntu22.04 环境下存在冲突,需要手动调整。进入下面指定目录,打开 package.xml 文件,删除 <run_depend>hddtemp</run_depend> 这一行,以解决冲突问题:

cd ~/ros_catkin_ws/src/diagnostics/diagnostic_common_diagnostics

6. 解决兼容问题

由于 ROS1 部分组件与 Ubuntu22.04 存在兼容性问题,需替换相关组件。先删除原有冲突组件,再从特定分支下载兼容版本:

cd ~/ros_catkin_ws/src
rm -r rosconsole urdf
git clone https://github.com/dreuter/rosconsole.git -b noetic-jammy
git clone https://github.com/dreuter/urdf.git -b set-cxx-version

7. 安装依赖

sudo pip install rosdepc
sudo rosdepc init
rosdepc update
cd ~/ros_catkin_ws
rosdepc install --from-paths src --ignore-src --rosdistro noetic -y

8. 设置 ROS1 环境变量

因为系统中已安装 ROS2,为避免环境变量冲突,在编译 ROS1 前需指定当前使用的 ROS 版本为 Noetic,在终端输入:

export ROS_DISTRO=noetic

9. 编译 ROS1

cd ~/ros_catkin_ws
./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release

10. 配置环境变量

为方便在 ROS1 和 ROS2 之间切换,需配置环境变量。打开用户主目录下的 .bashrc 文件,在末尾添加以下代码:

echo "ros noetic(1) or ros2 humble(2)?"
read edition

# 清除所有 ROS 相关环境变量
function clean_ros_env() {
    # 清除标准 ROS 变量
    unset ROS_DISTRO ROS_VERSION ROS_PACKAGE_PATH ROS_ETC_DIR
    unset ROS_MASTER_URI ROS_HOSTNAME ROS_IP
    
    # 清除 ROS2 特有变量
    unset ROS_DOMAIN_ID RMW_IMPLEMENTATION AMENT_PREFIX_PATH
    unset COLCON_PREFIX_PATH ROS_LOCALHOST_ONLY
    
    # 清除 CMAKE 相关变量
    unset CMAKE_PREFIX_PATH
    
    # 重置 PYTHONPATH
    export PYTHONPATH=$(echo $PYTHONPATH | tr ':' '\n' | grep -v '/opt/ros' | grep -v '/home/bg/ros_catkin_ws' | paste -sd: -)
    
    # 重置 PATH
    export PATH=$(echo $PATH | tr ':' '\n' | grep -v '/opt/ros' | grep -v '/home/bg/ros_catkin_ws' | grep -v '/opt/ros/humble' | paste -sd: -)
    
    # 重置 LD_LIBRARY_PATH
    export LD_LIBRARY_PATH=$(echo $LD_LIBRARY_PATH | tr ':' '\n' | grep -v '/opt/ros' | grep -v '/home/bg/ros_catkin_ws' | paste -sd: -)
}

# 清理环境
clean_ros_env

# 根据选择加载环境
if [ "$edition" -eq "1" ]; then
    echo "Loading ROS Noetic environment"
    source ~/ros_catkin_ws/install_isolated/setup.bash
    export ROS_MASTER_URI=http://localhost:11311
    export ROS_HOSTNAME=localhost
else
    echo "Loading ROS2 Humble environment"
    source /opt/ros/humble/setup.bash
    export ROS_DOMAIN_ID=42
    export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
fi

11. 测试环境

分别使用命令启动 ros1 和 ros2 的 rviz,运行正常。

测试截图

注意事项

千万不要下载 python3.8,否则会出现各种 bug。

目录

  1. 1. 更新系统
  2. 2. 安装依赖
  3. 3. 创建 ROS1 工作空间
  4. 4. 下载 ROS1 源码
  5. 5. 解决依赖问题
  6. 6. 解决兼容问题
  7. 7. 安装依赖
  8. 8. 设置 ROS1 环境变量
  9. 9. 编译 ROS1
  10. 10. 配置环境变量
  11. 清除所有 ROS 相关环境变量
  12. 清理环境
  13. 根据选择加载环境
  14. 11. 测试环境
  15. 注意事项

更多推荐文章

查看全部
  • Python 七大主流就业方向及核心技能解析
  • Spring Cloud 微服务架构与开发实战
  • Trae AI IDE 实战指南:从零开发 ChatBot 应用
  • 2026年RAG技术演进:DeepSeek与Neo4j构建企业智能体系
  • 面试题 02.04 分割链表题解与详细分析
  • 解决 Python pip 报错 Preparing metadata (pyproject.toml) failed
  • 微信 Mac 版防撤回与多开工具:WeChatTweak-macOS
  • Java IO流:从字节流到字符流
  • OpenClaw 漏洞预警:为 AI 代理构建可追溯的安全防线
  • JavaScript 获取本周周一零点时间方法
  • Electron 实战:按需构建与打包体积优化
  • PX4 与 ROS 无人机 Offboard 控制:模式解析与实战实现
  • 预训练语言模型核心原理与 BERT 实战
  • AIGC 背后的深度学习魔法:从原理到实践
  • Coze 基于行业文章生成思维导图工作流详解
  • 腾讯混元大模型升级与原生工具链发布,助力企业零门槛落地
  • RexUniNLU 集成 Rasa 对话系统:零样本 NLU 实战
  • KrLongAI 旗博士本地部署 AI 数字人口播视频自动化工程
  • 绕过Stable Diffusion安全过滤:PGD视觉提示词注入攻击实践
  • AI 时代产品经理的进化方向与核心能力

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online