welcom ! Handel home

2025年2月16日 星期日

Dockerfile 建立 ROS 2 Humble 映像

 

使用 Docker 建立 ROS 2 Humble 映像

這裡是一個範例,使用 docker build 來建立 ROS 2 Humble 的 Docker 映像。


1. 創建 Dockerfile

$mkdir ros2_humble_docker

$cd ros2_humble_docker

$mkdir src

$nano Dockerfile 

在你的專案目錄(例如 ros2_humble_docker)內建立一個 Dockerfile,內容如下:


dockerfile:

# 使用官方 ROS 2 Humble 基礎映像 FROM ros:humble # 設定環境變數 ENV DEBIAN_FRONTEND=noninteractive # 更新系統並安裝必要的工具 RUN apt update && apt install -y \ python3-colcon-common-extensions \ python3-pip \ git \ && rm -rf /var/lib/apt/lists/* # 設定工作目錄 WORKDIR /root/ros2_ws # 複製當前目錄內的 ROS 2 套件(如果有) COPY ./src ./src # 下載相依套件 RUN apt update && rosdep update && rosdep install --from-paths src --ignore-src -r -y RUN apt update && apt install -y ros-humble-demo-nodes-cpp # 編譯 ROS 2 工作區 RUN . /opt/ros/humble/setup.sh && colcon build # 設定環境變數,使容器內可直接使用 ROS 2 RUN echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc RUN echo "source /root/ros2_ws/install/setup.bash" >> ~/.bashrc SHELL ["/bin/bash", "-c", "source ~/.bashrc"] # 設定容器啟動時執行的命令(可根據需求更改) CMD ["bash"]

2. 建立 Docker 映像

Dockerfile 所在的目錄中,執行以下指令來 建立 Docker 映像

bash
docker build -t ros2_humble .

這將建立一個名為 ros2_humble 的 Docker 映像。


3. 運行容器

當 Docker 映像建立完成後,您可以啟動一個 ROS 2 Humble 容器:

bash
docker run -it --rm ros2_humble

這將開啟一個終端,並讓你進入 ROS 2 環境。


4. 測試 ROS 2

進入容器後,您可以測試 ROS 2 是否正確運行:

bash
ros2 --version ros2 topic list

如果 ROS 2 安裝正確,你應該會看到當前的 ROS 2 版本(Humble)和可用的話題(topics)。


可選:在 Docker 容器中執行 ROS 2 範例

如果您想在 Docker 容器內執行 ROS 2 的 Publisher / Subscriber 測試,請執行以下命令:

開啟第一個終端,執行 Talker(發送訊息)

bash
$docker run -it --rm ros2_humble ros2 run demo_nodes_cpp talker

開啟另一個終端,執行 Listener(接收訊息)

bash
$docker run -it --rm ros2_humble ros2 run demo_nodes_cpp listener

如果一切正常,你應該會在 listener 的輸出中看到 talker 發送的訊息。


結論

這個 Dockerfile 允許你快速建立 ROS 2 Humble 環境,並支援自訂 ROS 2 專案(可透過 COPY ./src ./src 來引入自訂套件)。透過 Docker,你可以在不同系統上輕鬆部署 ROS 2,確保開發環境的一致性。

📌 推薦使用情境

  • ROS 2 開發環境標準化
  • 快速測試 ROS 2 功能
  • 輕鬆共享開發環境(可以 docker push 到 Docker Hub)

=========================================================
[ Dockerfile  內容分析說明 ] 

 Dockerfile 是用來建立一個基於官方 ROS 2 Humble 長版本映像的容器,其中包含了設置和編譯 ROS 2 工作區的指令。讓我們逐步分析每部分的內容及其目的:

  1. 基礎映像 :

    dockerfile
    FROM ros:humble

    使用官方的 ROS 2 Humble 長版本作為基礎。

  2. 設定環境變數

    dockerfile
    ENV DEBIAN_FRONTEND=noninteractive

    設置 DEBIAN_FRONTENDnoninteractive,使得在安裝過程中不會有交互式輸入要求。

  3. 更新系統和安裝工具

    dockerfile
    RUN apt update && apt install -y \
    python3-colcon-common-extensions \
    python3-pip \
    git \
    && rm -rf /var/lib/apt/lists/*

    更新包資料庫,並安裝 python3-colcon-common-extensionspython3-pipgit 工具。清理 /var/lib/apt/lists/* 是為了減少容器大小。

  4. 設定工作目錄

    dockerfile
    WORKDIR /root/ros2_ws

    設置工作目錄為 /root/ros2_ws,這是您將要操作的 ROS 工作區。

  5. 複製檔案

    dockerfile
    COPY ./src ./src

    將當前目錄下的 src 資料夾內容複製到容器中的 /root/ros2_ws/src

  6. 安裝相依套件

    dockerfile
    RUN apt update && rosdep update && rosdep install --from-paths src --ignore-src -r -y

    更新包資料庫,並使用 rosdep 安裝 src 目錄下套件所需的相依項。

  7. 安裝示例節點

    dockerfile
    RUN apt update && apt install -y ros-humble-demo-nodes-cpp

    安裝 ROS 2 Humble 示例节点套件 ros-humble-demo-nodes-cpp

  8. 編譯工作區

    dockerfile
    RUN . /opt/ros/humble/setup.sh && colcon build

    載入 ROS 2 環境並使用 colcon 命令來編譯您的工作區。

  9. 設定環境變數

    dockerfile
    RUN echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
    RUN echo "source /root/ros2_ws/install/setup.bash" >> ~/.bashrc

    將 ROS 的設置腳本加入 ~/.bashrc,以便在容器內啟動 bash shell 時自動源這些設定。

  10. 設置鉤子

    dockerfile
    SHELL ["/bin/bash", "-c", "source ~/.bashrc"]

    設置 SHELL 為一個 bash 命令,以便在後續指令中自動源 .bashrc

  11. 設定啟動命令

    dockerfile
    CMD ["bash"]

    容器啟動時執行 bash 命令,進入交互式 shell 環境。根據實際需求可以修改這部分。

總的來說,這個 Dockerfile 設計了一個 ROS 2 的開發和測試環境,並提供了基本的套件安裝和配置。根據實際需求,您可能需要調整相依套件、加入其他自定義設置或節點測試腳本等部分。





沒有留言: