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

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

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

锁机制发布于 2026/2/19更新于 2026/7/2451 浏览
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. 注意事项
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • TS-RAG:基于检索增强的时间序列基础模型零样本预测
  • 2026 年 Web 前端开发的 8 个主要趋势
  • AI 时代大模型学习指南:技术原理与 Prompt 技巧总结
  • VSCode 精准禁用 Copilot 代码补全:按语言与场景配置
  • 微调模型成本太高,用RAG技术,低成本实现AI升级
  • JavaScript 中 window.location 对象详解与实战
  • 基于 Python 实现抖音私信自动回复功能
  • Python vs C++ 极简性能对比
  • Qwen2 开源大模型本地部署与 WebUI 对话机器人搭建
  • Ubuntu 22.04 下 libwebkit2gtk-4.1-0 安装避坑指南
  • Rocky Linux 安装教程
  • OpenClaw 环境搭建指南——Windows/macOS/Linux 三平台部署
  • Java 对象比较详解:基本类型与自定义类实现
  • Spring AI 快速上手与实战指南
  • Go 高并发微服务调优:Goroutine、Channel、Context 核心实践
  • Qt 前后端通信(QWebChannel Js / C++ 互操作):原理、示例、步骤解说
  • C++ 内存模型与内存区域详解
  • OpenClaw 智能体框架实战:从零搭建第一个 AI 员工
  • 用 Python 接入 TradingView Screener 做多维选股
  • ChatGPT 降低毕业论文 AIGC 重复率方法指南

相关免费在线工具

  • 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