welcom ! Handel home

2025年4月14日 星期一

micro-ROS + FreeRTOS + Olimex STM32-E407 by Dockerfile

 完整支援 micro-ROS + FreeRTOS + Olimex STM32-E407(即 STM32F407ZGT6)的 Dockerfile,可直接在容器中進行 firmware 建置、設定與燒錄流程,適合開發 STM32 上的 micro-ROS 範例程式。


✅ Dockerfile(針對 freertos + olimex-stm32-e407

Dockerfile
FROM ros:humble # 安裝必要工具 RUN apt update && apt install -y \ python3-pip \ python3-colcon-common-extensions \ build-essential \ git \ curl \ cmake \ gcc \ g++ \ unzip \ python3-rosdep \ python3-vcstool \ python3-argcomplete \ nano \ wget \ libpython3-dev \ openocd \ screen \ python3-serial # 安裝 micro-ROS setup 工具 WORKDIR /root/microros_ws RUN git clone -b humble https://github.com/micro-ROS/micro_ros_setup.git src/micro_ros_setup RUN rosdep update RUN rosdep install --from-path src --ignore-src -y RUN . /opt/ros/humble/setup.sh && colcon build # 啟用 micro_ros_setup SHELL ["/bin/bash", "-c"] RUN echo "source /root/microros_ws/install/local_setup.bash" >> ~/.bashrc # 建立 firmware workspace,預設為 FreeRTOS + olimex-stm32-e407 RUN source /root/microros_ws/install/local_setup.bash && \ ros2 run micro_ros_setup create_firmware_ws.sh freertos olimex-stm32-e407 # 設定工作目錄 WORKDIR /root/microros_ws/firmware

🚀 使用方式

1️⃣ 建立 Docker Image

bash
docker build -t microros_stm32f407 .

2️⃣ 啟動容器並連接 ST-LINK / USB 串口

bash
docker run -it --rm \ --privileged \ --device=/dev/ttyUSB0 \ --device=/dev/bus/usb \ -v $(pwd):/root/microros_ws/firmware \ microros_stm32f407

📋 容器內操作流程(以 UART 為例)

設定 UART 串口連線(如 ttyUSB0)

bash
ros2 run micro_ros_setup configure_firmware.sh serial --dev /dev/ttyUSB0

建構韌體

bash
ros2 run micro_ros_setup build_firmware.sh

燒錄韌體(使用 openocd)

bash
ros2 run micro_ros_setup flash_firmware.sh

⚠️ 若使用自訂 ST-LINK,可用 openocd 參數:

bash
openocd -f interface/stlink.cfg -f target/stm32f4x.cfg -c "program build/firmware.elf verify reset exit"

✅ 確認連線與通訊

Host 啟動 micro-ROS Agent(在主機或容器中皆可)

bash
ros2 run micro_ros_agent micro_ros_agent serial --dev /dev/ttyUSB0 -v6

若連線成功,會看到:

pgsql
[INFO] Connection established with client

🧩 延伸功能

你可以將這個 Dockerfile 搭配:

  • 🔁 Publisher + Subscriber 範例 app.c

  • 🔧 加入自訂底層 LED / Motor 控制函式

  • 📡 改為 UDP 模式傳輸以支持 Wi-Fi

沒有留言: