文章目錄
- win11 + ubuntu22 雙系統
- 準備工作
- 步驟 1:使用 Rufus 制作 Ubuntu 啟動盤
- 步驟 2:設置 BIOS/UEFI 啟動項
- 步驟 3:安裝 Ubuntu 22.04
- 步驟 4:后續配置
- 常見問題
- ROS2 Humble 安裝
- 一、準備工作
- 二、安裝 ROS 2
- 三、設置環境變量
- 四、驗證安裝
- ROS2 humble & ROS1 noetic
- ROS 1 & 2 安裝
- ROS 2 ? ROS 1 橋接配置
- 參考鏈接
寫于2025.06,當前ubuntu 20.04的各方面支持更加全面一點,如對ROS1和2都有良好的兼容性。如從ros bridge便能夠表現出系統對包的支持。但是新的系統對新的硬件的支持更好,以及有更長的支持,在后期對新包的支持也會更好一點。
Ubuntu Version | Supported ROS 1 Versions | Supported ROS 2 Versions | ros1_bridge Support |
---|---|---|---|
20.04 (Focal) | Noetic Ninjemys | Foxy Fitzroy (EOL), Galactic Geochelone (EOL), Humble Hawksbill | ? Full support |
22.04 (Jammy) | ?? Partial (unsupported officially) | Humble Hawksbill, Iron Irwini | ?? Requires building from source |
24.04 (Noble) | ? Not available | Jazzy Jalisco, Kilted Kaiju | ? Not supported |
本文將介紹ubuntu 2204的安裝及ROS2 Humble版本的安裝。
win11 + ubuntu22 雙系統
以下是在 Windows 11 基礎上安裝 Ubuntu 22.04 LTS 的雙系統詳細指南,使用 Rufus 工具制作啟動盤:
準備工作
-
備份重要數據
- 雙系統安裝可能涉及磁盤分區操作,建議提前備份 Windows 中的重要文件。
-
準備工具
- 一個至少 8GB 的空U盤(制作啟動盤會清空所有數據)。
- 下載 Ubuntu 22.04 LTS ISO-https://ubuntu.com/download/desktop。
- 國內鏡像:
鏡像名稱 | 鏡像地址 | 備注 |
---|---|---|
網易鏡像 | http://mirrors.163.com/ubuntu-releases/ | 覆蓋主流版本 |
中科大鏡像 | http://mirrors.ustc.edu.cn/ubuntu-releases/ | 更新及時,支持IPv6 |
阿里云鏡像 | http://mirrors.aliyun.com/ubuntu-releases/ | 企業級CDN加速 |
清華大學鏡像 | https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/ | 教育網優化 |
北京理工大學鏡像 | http://mirror.bit.edu.cn/ubuntu-releases/ | 北方用戶推薦 |
浙江大學鏡像 | http://mirrors.zju.edu.cn/ubuntu-releases/ | 華東地區節點 |
南京大學鏡像 | https://mirror.nju.edu.cn/ubuntu-releases/ | 新增科學中心節點 |
上海交通大學鏡像 | http://ftp.sjtu.edu.cn/ubuntu-releases/ | 上海骨干網接入 |
- 下載 Rufus 工具-https://rufus.ie/)(建議最新版本)。
-
分配磁盤空間(可選) 如果磁盤足夠,新版本ubuntu會在安裝時,自行規劃,也可自行配置,但一定要保證有足夠的空間。
- 在 Windows 中打開 磁盤管理(Win+X → 磁盤管理)。
- 右鍵點擊一個分區(如
C:
),選擇 壓縮卷,分配至少 50GB 未分配空間(后續安裝 Ubuntu 用)。
-
取消磁盤加密(關閉BitLocker)
-
常規關閉方法:
- 打開控制面板 → 進入"BitLocker驅動器加密"
- 找到需要解密的驅動器,點擊"關閉BitLocker"
- 等待解密完成(時間取決于數據量)
-
快速關閉方法(Win10/11):
- 按Win+I打開設置 → 隱私和安全性 → 設備加密
- 直接點擊"關閉"按鈕
-
命令行方法(管理員權限):
- 以管理員身份運行CMD/PowerShell
- 輸入:
manage-bde -off C:
(C:為需要解密的盤符) - 查看進度:
manage-bde -status
步驟 1:使用 Rufus 制作 Ubuntu 啟動盤
- 插入U盤,以管理員身份運行 Rufus。
- 設備選擇:你的U盤(確認無誤,數據會被清空)。
- 鏡像選擇:點擊 選擇,找到下載的 Ubuntu 22.04 ISO 文件。
- 分區類型:
- UEFI 電腦:選擇
GPT
+FAT32
。 - 傳統 Legacy BIOS 電腦:選擇
MBR
+FAT32
(現代電腦通常為 UEFI)。
- UEFI 電腦:選擇
- 其他選項保持默認,點擊 開始 → 確認警告 → 等待完成(約5-10分鐘)。
步驟 2:設置 BIOS/UEFI 啟動項
- 重啟電腦,在啟動時狂按 F2/F12/Del(具體鍵因品牌而異)進入 BIOS。
- 關鍵設置:
- 關閉 Secure Boot(Ubuntu 支持但可能需額外驅動)。
- 確保 UEFI 模式 開啟(如使用 GPT 分區)。
- 保存設置并退出(通常按 F10)。
步驟 3:安裝 Ubuntu 22.04
-
啟動安裝程序
- 從U盤啟動后,選擇 Try or Install Ubuntu → 進入試用桌面后雙擊 Install Ubuntu。
-
語言和鍵盤布局
- 選擇語言 → 繼續 → 鍵盤布局默認(英語或中文)。
-
網絡連接(可選)
- 可連接Wi-Fi,便于安裝更新和第三方驅動。
-
安裝類型
- 重要!選擇“安裝類型”:
- 雙系統共存:勾選
Install Ubuntu alongside Windows Boot Manager
(自動分配空間)。 - 手動分區(推薦高級用戶):
- 選擇之前分配的 未分配空間 → 點擊
+
創建分區:/
(根分區):至少 30GB,類型ext4
。swap
(交換空間):內存大小的 1-2倍(可選)。/home
(用戶文件):剩余空間,類型ext4
(可選)。
- 啟動引導器位置:選擇 EFI 分區(通常為
/dev/sda
或/dev/nvme0n1
的efi
分區)。
- 選擇之前分配的 未分配空間 → 點擊
- 雙系統共存:勾選
- 重要!選擇“安裝類型”:
-
時區和用戶設置
- 選擇時區(如 Shanghai)→ 輸入用戶名和密碼。
-
開始安裝
- 點擊 安裝 → 等待完成(約15-30分鐘)。
-
重啟
- 提示拔出U盤后重啟,此時會進入 GRUB 引導菜單,可選擇啟動 Ubuntu 或 Windows。
步驟 4:后續配置
-
更新系統
- 打開終端(Ctrl+Alt+T),運行:
sudo apt update && sudo apt upgrade -y
- 打開終端(Ctrl+Alt+T),運行:
-
修復引導問題(如 Windows 不顯示)
- 在 Ubuntu 終端執行:
sudo update-grub
- 在 Ubuntu 終端執行:
-
驅動管理
- 打開 軟件和更新 → 附加驅動,安裝推薦顯卡/Wi-Fi驅動。
常見問題
- 無法識別 Windows 分區:確保 Windows 為 正常關機(非快速啟動)。
- UEFI/GPT 錯誤:確認 Rufus 設置與 BIOS 模式匹配(UEFI → GPT)。
- 磁盤空間不足:在 Windows 中壓縮更多空間后,用 Ubuntu 安裝器的
Something else
選項調整分區。 - try and install Ubuntu 后黑屏可能是由于硬件如顯卡比較新,導致驅動不兼容問題。可以選擇第三行,使用兼容模式啟動,然后安裝。
ROS2 Humble 安裝
確保系統區域支持UTF-8編碼:
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.
確保系統安裝了ubuntu的官方源
sudo apt install software-properties-common
sudo add-apt-repository universe
一、準備工作
- 系統更新
在開始安裝之前,確保你的 Ubuntu 22.04 系統是最新的。打開終端并運行以下命令:
sudo apt update
sudo apt upgrade -y
- 設置密鑰和源
為了安裝 ROS 2 Humble,首先,導入 ROS 2 的 GPG 密鑰:
#官方key,公鑰可能會變,可以查最新官網去拉
#官方地址:ttps://github.com/ros-infrastructure/ros-apt-source
#以下是個人拷貝
sudo curl -sSL https://gitee.com/nie_xun/ros-apt-source/tree/1.1.0/ros-apt-source/keys/ros-archive-keyring.gpg
-o /usr/share/keyrings/ros-archive-keyring.gpg
然后,添加 ROS 2 Humble 存儲庫到你的 sources.list.d 目錄:以下二者選其一。
#官方
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null#清華:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
二、安裝 ROS 2
1. 安裝依賴項
在安裝 ROS 2 之前,你需要安裝一些依賴項:
sudo apt update
sudo apt install -y curl python3-rosdep python3-rosinstall python3-rosinstall-generator python3-vcstool build-essential cmake git
2. 初始化 rosdep
rosdep 是一個工具,它可以幫助你安裝 ROS 包所依賴的系統庫。初始化 rosdep:
sudo rosdep init
rosdep update
如果rosdep不成功,則需要對應修改:參考小魚的安裝,或直接使用他的腳本直接更改。
sudo gedit /usr/lib/python3/dist-packages/rosdep2/sources_list.py
# 在大概64行 修改 DEFAULT_SOURCES_LIST_URL = 'https://gitee.com/tyx6/mytools/raw/main/ros/20-default.list'sudo gedit /usr/lib/python3/dist-packages/rosdistro/__init__.py
# 大概在68行的地址sudo gedit /usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py
# 大概在34行的地址sudo gedit /usr/lib/python3/dist-packages/rosdep2/rep3.py
# 大概在36行的地址
使用如下腳本內容更改:
#!/usr/bin/python3 python3
# -*- coding:utf-8 -*-
# @FileName :Mrosdep.py
# @Author :TFly
import os
import subprocess
from colorama import Fore,Styleurl = "https://gitee.com/tyx6/rosdistro/raw/master"
url_list = "https://gitee.com/tyx6/mytools/raw/main/ros/20-default.list"
ros_distros = ['kinetic', 'melodic', 'noetic', 'foxy', 'galactic', 'humble', 'iron', 'rolling']def find_ros_setup_script():#ros_distros = ['melodic', 'noetic']for distro in ros_distros:setup_script = f"/opt/ros/{distro}/setup.bash"if os.path.exists(setup_script):return setup_scriptreturn Nonedef get_ros_version():try:ros_setup_script = find_ros_setup_script()if not ros_setup_script:print("ROS setup script not found.")return Nonecommand = f"source {ros_setup_script} && echo $ROS_DISTRO"ros_version = subprocess.check_output(['bash', '-c', command], universal_newlines=True).strip()return ros_versionexcept subprocess.CalledProcessError as e:print(f"An error occurred while getting ROS version: {e}")return Nonedef rep(data):flag_list = data.find("https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list")if flag_list != -1:data = data.replace("https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list",url_list)flag = data.find("https://raw.githubusercontent.com/ros/rosdistro/master")flag1 = data.find("FUERTE_GBPDISTRO_URL = \'https://raw.githubusercontent.com/ros/rosdistro")flag2 = data.find("master/releases/fuerte.yaml")if flag != -1:data = data.replace("https://raw.githubusercontent.com/ros/rosdistro/master", url)if flag1 != -1:data = data.replace("https://raw.githubusercontent.com/ros/rosdistro",url)if flag2 != -1:data = data.replace("master/releases/fuerte.yaml","releases/fuerte.yaml")return datadef re_files(fileName):try:con = ""with open(fileName,'r') as fp:con = fp.readlines()for i in range(0,len(con)):con[i] = rep(con[i])with open(fileName,'w+') as fp:for str1 in con:fp.write(str1)except FileNotFoundError:print(fileName+'not found')else:print(fileName+' is ok')if __name__ == '__main__':print(Fore.GREEN + '歡迎使用腳本,本腳本適用于ROS1、ROS2.\n'+'Test: ROS1 Melodic、ROS2 Noetic、ROS2 Humble' + Style.RESET_ALL)version = get_ros_version()if version not in ros_distros :print(Fore.RED + "不支持此版本、或版本獲取失敗!"+ Style.RESET_ALL)else:print(Fore.GREEN + "The ROS version is: " + version + Style.RESET_ALL)fileName = []if version == 'melodic' :fileName = ['/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py','/usr/lib/python2.7/dist-packages/rosdistro/__init__.py','/usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py','/usr/lib/python2.7/dist-packages/rosdep2/rep3.py']else:fileName = ['/usr/lib/python3/dist-packages/rosdep2/sources_list.py','/usr/lib/python3/dist-packages/rosdistro/__init__.py','/usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py','/usr/lib/python3/dist-packages/rosdep2/rep3.py']for name in fileName:re_files(name)print("修改成功!請執行下面命令:\n"+"sudo rosdep init\n"+"rosdep update")
3. 安裝 ROS 2 核心包
現在,你可以安裝 ROS 2 Humble 的核心包了:
sudo apt install -y ros-humble-desktop
這將安裝 ROS 2 的核心功能,包括 RCL、RMW 實現、各種工具和示例節點。
三、設置環境變量
為了使 ROS 2 的命令和包在你的終端中可用,你需要將 ROS 2 的安裝目錄添加到你的 PATH 和 LD_LIBRARY_PATH 環境變量中。這通常通過在你的 shell 配置文件中添加以下行來完成(例如,~/.bashrc 或 ~/.zshrc):
source /opt/ros/humble/setup.bash
添加后,運行以下命令使更改生效:
source ~/.bashrc # 或者 ~/.zshrc,取決于你使用的 shell
四、驗證安裝
為了驗證 ROS 2 是否正確安裝,你可以運行以下命令來檢查 ROS 2 版本并啟動一個簡單的示例節點:
ros2 --version
ros2 node list # 在另一個終端中運行一個 ROS 2 節點后再檢查這個命令的輸出
如果你還沒有運行任何 ROS 2 節點,ros2 node list 命令可能不會返回任何內容。為了測試,你可以啟動一個簡單的 “talker” 和 “listener” 節點,它們是 ROS 2 教程中的示例節點。首先,確保你已經安裝了 ros2-examples 包:
sudo apt install -y ros-humble-examples-rclcpp-minimal
然后,在兩個不同的終端中分別運行以下命令:
# 在第一個終端中運行 talker 節點
ros2 run examples_rclcpp_minimal_talker talker
# 在第二個終端中運行 listener 節點
ros2 run examples_rclcpp_minimal_listener listener
自此,ROS2 Humble 安裝完成。
ROS2 humble & ROS1 noetic
以下是針對 Ubuntu 22.04 Jammy Jellyfish 系統實現 ROS 2 Humble 與 ROS 1 通信部署:
ROS 1 & 2 安裝
與前文humble安裝重復。
-
ROS 2 Humble 安裝
- 配置 UTF-8 區域設置:
sudo apt update && sudo apt install locales && sudo locale-gen en_US en_US.UTF-8
- 添加 ROS 2 倉庫與 GPG 密鑰(推薦國內鏡像加速):
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu jammy main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null sudo apt update sudo apt install ros-humble-desktop # 或 ros-humble-ros-base
- 配置 UTF-8 區域設置:
-
ROS 1 Noetic 安裝
- 通過第三方源安裝(非官方維護但兼容 Ubuntu 22.04):
驗證:echo "deb [trusted=yes arch=amd64] http://deb.repo.autolabor.com.cn jammy main" | sudo tee /etc/apt/sources.list.d/autolabor.list sudo apt update && sudo apt install ros-noetic-autolabor
source /opt/ros/noetic/setup.bash && roscore
- 通過第三方源安裝(非官方維護但兼容 Ubuntu 22.04):
-
終端ROS環境配置
可以使用如下配置,打開終端,輸入1則配置ROS1環境,輸入2則配置ROS2環境。其他數字,則先source ROS1 后source ROS2。
vim/gedit 添加到~/.bashrc
最后。echo "ros noetic(1) or ros2 humble(2) or ros12(Other number)?" read edition if [ "$edition" -eq "1" ]; thensource /opt/ros/noetic/setup.bash else if [ "$edition" -eq "2" ]; thensource /opt/ros/humble/setup.bash elsesource /opt/ros/noetic/setup.bashsource /opt/ros/humble/setup.bash fi
ROS 2 ? ROS 1 橋接配置
-
編譯 ros1_bridge
- 創建工作空間并克隆擴展倉庫(支持更多消息類型):
mkdir -p ros_bridge_ws/src && cd ros_bridge_ws/src git clone https://github.com/smith-doug/ros1_bridge.git # 社區維護版本
- 關鍵編譯步驟:
注意:必須先單獨編譯其他包,再加載雙環境編譯橋接包cd .. && colcon build --symlink-install --packages-skip ros1_bridge source /opt/ros/noetic/setup.sh # 加載 ROS1 環境 source /opt/ros/humble/setup.sh # 加載 ROS2 環境 #colcon build --symlink-install --packages-select ros1_bridge --cmake-force-configure colcon build --event-handlers console_direct+ --cmake-args -DCMAKE_BUILD_TYPE=Releas
- 創建工作空間并克隆擴展倉庫(支持更多消息類型):
-
運行橋接
- 啟動核心服務:
# 終端1: 啟動 ROS1 roscore source /opt/ros/noetic/setup.sh && roscore # 終端2: 啟動 ROS2 守護進程 source /opt/ros/humble/setup.sh && ros2 daemon start # 終端3: 運行橋接 source ros_bridge_ws/install/setup.sh ros2 run ros1_bridge dynamic_bridge
- 驗證通信:
- ROS1終端1 發布話題:
rosrun rospy_tutorials talker
- ROS2終端2 接收:
ros2 run demo_nodes_cpp listener
- 啟動核心服務:
參考鏈接
- fishros-ROS1&ROS2共存-https://fishros.org.cn/forum/topic/3943/ubuntu22-04%E4%B8%8B%E5%A6%82%E4%BD%95ros2-humble%E5%92%8C-ros1-%E5%85%B1%E5%AD%98/2
- 官方ROS Bridge-https://carla.readthedocs.io/projects/ros-bridge/en/latest/ros_installation_ros2/
- ros2 humble install-https://blog.csdn.net/weixin_55944949/article/details/140373710
- https://docs.ros.org/en/humble/How-To-Guides/Using-ros1_bridge-Jammy-upstream.html
- fishros-端口映射https://fishros.org.cn/forum/topic/2811/ros2-humble-docker-%E7%9A%84%E7%AB%AF%E5%8F%A3%E6%98%A0%E5%B0%84%E9%97%AE%E9%A2%98
- ros-官方-https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debs.html
- 小魚安裝-https://blog.csdn.net/weixin_55944949/article/details/140373710
- 簡潔版-https://blog.csdn.net/weixin_44197671