welcom ! Handel home

顯示具有 linux 標籤的文章。 顯示所有文章
顯示具有 linux 標籤的文章。 顯示所有文章

2025年4月14日 星期一

ROS 2 各版本與對應的 Ubuntu 版本配對表

 

ROS 2 各版本與對應的 Ubuntu 版本配對表,並補充其支援週期、開發狀態、以及常用工具(如 Gazebo、micro-ROS、MoveIt 2)的支援情況。


✅ ROS 2 版本與 Ubuntu 對應表

ROS 2 版本發佈日期支援狀態對應 Ubuntu 版本GCC版本Python版本備註
Iron Irwini2023/05✅ 支援中 (短期)Ubuntu 22.04 (Jammy)GCC 11+Python 3.10建議用於開發
Humble Hawksbill2022/05✅ LTS (支援至2027)Ubuntu 22.04 (Jammy)GCC 11+Python 3.10✅推薦穩定版
Foxy Fitzroy2020/06❌ EOL (2023年結束)Ubuntu 20.04 (Focal)GCC 9+Python 3.8舊版 LTS,現不建議使用
Galactic Geochelone2021/05❌ 已結束支援Ubuntu 20.04 (Focal)GCC 9+Python 3.8中繼版,已過時
Rolling Ridley滾動發行版✅ 開發中Ubuntu 最新版本 (22.04+)最新 GCC最新 Python適合先進開發者實驗新功能

⚠️ Iron 為非 LTS(約支援一年),Humble 為 LTS(長期支援版)最穩定可靠


🔧 ROS 2 工具支援狀態

工具/套件Humble (22.04)Iron (22.04)Foxy (20.04)備註
micro-ROS✅ 支援完整✅ 支援⚠️ 部分支援推薦搭配 Humble 使用
MoveIt 2✅ 穩定支援✅ 支援⚠️ 過時moveit2 套件以 ROS2 Humble 為主要平台
Gazebo (Ignition)✅ Ignition Fortress✅ Garden⚠️ 舊版 Gazebo ClassicGazebo Classic 漸漸被取代
Nav2 (導航套件)✅ 穩定✅ 穩定⚠️ 過時Humble 為主力支援平台
RMW DDS 中介軟體✅ Cyclone, FastDDS預設使用 FastDDS
RViz2✅ 完整支援✅ 支援⚠️ 畫面問題多需 X11 或 VNC 環境

📦 ROS 2 安裝方式

Ubuntu 22.04 安裝 ROS 2 Humble (推薦)

bash
sudo apt update && sudo apt upgrade sudo apt install curl gnupg lsb-release 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] \ http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" | \ sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null sudo apt update sudo apt install ros-humble-desktop echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc source ~/.bashrc

🧱 colcon 工具與開發依賴安裝

bash
sudo apt install python3-colcon-common-extensions sudo apt install ros-humble-rmw-fastrtps-cpp sudo apt install ros-humble-ros2-control ros-humble-ros2-controllers

🧩 適用開發平台

開發板/平台適用 ROS 2 版本備註
Raspberry Pi 4 (64bit)Humble / Iron22.04 作業系統下建議用 Humble
Jetson Nano / XavierHumble(移植支援)需額外 CUDA 套件整合
STM32 / Pico / ESP32Humble(搭配 micro-ROS)建議 Agent 端在 x86 或 RPi 上運行


STM32F407VET6 + FreeRTOS 上移植 micro-ROS

 STM32F407VET6 + FreeRTOS 上移植 micro-ROS,這會是一個非常實用的配置,

特別適合資源有限但需要 ROS 2 通訊能力的嵌入式裝置。

以下是完整的教學、移植步驟與資源介紹,讓

你可以順利在 FreeRTOS 上跑 micro-ROS,並連接到 ROS 2 主機。


🧱 一、整體架構概念

元件說明
STM32F407VET6Cortex-M4 MCU,支援 UART、USB
FreeRTOS精簡 RTOS,適合小型 MCU
micro-ROS Client跑在 STM32 上的 ROS 2 Node
micro-ROS Agent跑在 PC 上,負責串接 DDS
Transport通常使用 UART 串列傳輸或 USB CDC(推薦)

🔧 二、開發環境準備

✅ 安裝工具鏈(在 Linux 開發主機)

bash
sudo apt install gcc-arm-none-eabi cmake python3-pip pip3 install catkin_pkg empy colcon-common-extensions

🚀 三、使用 micro-ROS 的 build system 建立專案

bash
# 建立 micro-ROS firmware workspace git clone https://github.com/micro-ROS/micro_ros_setup.git cd micro_ros_setup git submodule update --init --recursive # 初始化 firmware workspace ros2 run micro_ros_setup create_firmware_ws.sh freertos stm32f4

這會建立 firmware/ 目錄,內含:

  • freertos 作業系統

  • stm32f4 板支援設定(包含 stm32f4xx_hal 驅動)

  • micro-ROS 所需模組


⚙️ 四、設定與編譯 micro-ROS 程式

1️⃣ 設定要跑的應用(例如 int32_publisher)

bash
ros2 run micro_ros_setup configure_firmware.sh int32_publisher

2️⃣ 建構 firmware

bash
ros2 run micro_ros_setup build_firmware.sh

3️⃣ 燒錄到 STM32F407VET6

bash
st-flash write firmware/build/micro_ros_firmware.elf 0x8000000

🔧 如果使用 PlatformIO / STM32CubeIDE,也可以整合 firmware/freertos_apps/micro_ros_app 進專案


📦 五、連接 micro-ROS Agent

主機端啟動 micro-ROS Agent(透過 UART)

bash
docker run -it --rm \ --net=host \ --privileged \ -v /dev:/dev \ microros/micro-ros-agent:foxy serial --dev /dev/ttyUSB0

你應會看到:

less
[INFO] [micro_ros_agent]: Client connected [INFO] [micro_ros_agent]: Successfully negotiated session

🧪 六、觀察 ROS 資料流

透過 ros2 topic 查看資料是否傳出:

bash
ros2 topic echo /micro_ros_arduino_node_publisher

你會看到整數不斷遞增的資料流。


📂 七、自訂專案架構參考

swift
firmware/ ├── freertos_apps/ └── micro_ros_app/ ├── app.c <- 你的主程式 (pub/sub/init) └── CMakeLists.txt ├── freertos/ └── ... ├── middleware/ ├── toolchain/ ├── build/ └── ...

你可以修改 app.c 加入你自己的控制邏輯與 ROS topic。


📚 八、學習資源與官方支援

資源說明
🔗 micro-ROS 官方教學全平台架構概念與快速上手
🔗 micro_ros_setupROS 2 工具鏈整合建構
🔗 STM32F4 supportSTM32F4 HAL 移植結構
🔗 freertos_apps 應用範例Publisher、Subscriber、Timer 範例
📖 FreeRTOS 官方網站任務、佇列、資源管理等教學

🎯 九、micro-ROS 在 STM32F407VET6 + FreeRTOS 上的實作要點

要點說明
UART 傳輸預設使用 USART2,可在 platform.c 中修改
HAL 設定使用 STM32Cube HAL 驅動初始化
main() 位置app.c 中實作,或由 micro-ROS 自動注入
ROS 介面使用 rclc API 撰寫 Publisher / Subscriber
可裁切性可裁減掉不必要的中介層節省 Flash

✅ 延伸功能

你可以在 micro-ROS 中整合:

  • IMU 資料串接 → /imu/data

  • 馬達命令訂閱 → /cmd_vel

  • STM32 GPIO 控制 → 透過 ROS 介面驅動硬體

RRC(ROS Robot Control)馬達控制板 是透過 USB 串列裝置(/dev/ttyACM0)

 有一塊 RRC(ROS Robot Control)馬達控制板 是透過 USB 串列裝置(/dev/ttyACM0)與系統連線,並想要在 ROS + Docker 環境中驅動這塊控制板,你可以依照下列步驟設定。


🔧 系統目標

  • 控制板連接主機的 /dev/ttyACM0

  • ROS 在 Docker 容器中執行,透過 serial 通訊與 RRC 溝通

  • 控制板可能使用自定協議或標準如 rosserial, pyserial, ros_control 相關 Node


✅ 步驟 1:讓 Docker 容器存取 /dev/ttyACM0

啟動容器時加上:

bash
--device=/dev/ttyACM0 \ --group-add=dialout \

docker-compose.yml 中:

yaml
devices: - "/dev/ttyACM0:/dev/ttyACM0" group_add: - dialout

這樣容器內就能看到這個序列裝置。


✅ 步驟 2:主機使用者加入 dialout 群組(如尚未)

bash
sudo usermod -aG dialout $USER

登出再登入以生效,確保 Docker 能存取該設備。


✅ 步驟 3:在容器中安裝 serial 通訊函式庫

Python 通訊(使用 pyserial

bash
pip install pyserial

✅ 步驟 4:ROS 中寫 Serial 節點驅動 RRC 板

📄 rrc_serial_node.py(Python 範例)

python
#!/usr/bin/env python import rospy import serial from std_msgs.msg import String ser = None def command_callback(msg): rospy.loginfo("Sending command: %s", msg.data) ser.write((msg.data + '\n').encode()) if __name__ == '__main__': rospy.init_node('rrc_serial_node') port = rospy.get_param('~port', '/dev/ttyACM0') baud = rospy.get_param('~baud', 115200) try: ser = serial.Serial(port, baud, timeout=1) rospy.loginfo("Connected to RRC on %s", port) except serial.SerialException as e: rospy.logerr("Failed to connect to RRC: %s", e) exit(1) rospy.Subscriber('rrc_command', String, command_callback) rospy.spin()

✅ 步驟 5:撰寫 launch

📄 rrc_driver.launch

xml
<launch> <node pkg="your_rrc_pkg" type="rrc_serial_node.py" name="rrc_serial_node" output="screen"> <param name="port" value="/dev/ttyACM0"/> <param name="baud" value="115200"/> </node> </launch>

✅ 步驟 6:啟動並測試

在 Docker 容器內執行:

bash
roslaunch your_rrc_pkg rrc_driver.launch

若成功連線,你會看到:

pgsql
[INFO] Connected to RRC on /dev/ttyACM0

你可以透過發送指令給 /rrc_command topic 來控制馬達:

bash
rostopic pub /rrc_command std_msgs/String "data: 'M1:100'"

✅ 選擇性:使用 rosserial(若控制板支援)

若 RRC 支援 rosserial 協定,可用:

bash
rosrun rosserial_python serial_node.py _port:=/dev/ttyACM0 _baud:=115200

搭配控制板端跑 ros.h 的程式,能實現 ROS topic/service 控制。


📦 Docker Compose 範例

yaml
ros_rrc: image: your_ros_image container_name: ros_rrc devices: - "/dev/ttyACM0:/dev/ttyACM0" group_add: - dialout environment: - DISPLAY=${DISPLAY} volumes: - /tmp/.X11-unix:/tmp/.X11-unix command: bash -c "source /opt/ros/noetic/setup.bash && roslaunch your_rrc_pkg rrc_driver.launch"

✅ 總結

項目說明
/dev/ttyACM0是你的 RRC 控制板的 USB 串列埠
Docker 中使用加上 --device 參數讓容器能看到該埠
ROS 節點通訊使用 Python pyserial or rosserial 建立 Serial Node
Topic 控制可透過 /rrc_command 傳送控制指令
可加強加入解析協定 / 讀取回傳 / 發佈狀態等

如果你提供 RRC 指令格式(如:M1:100STOP 之類),我可以幫你擴寫完整 ROS 控制驅動節點!要嗎?

2025年4月13日 星期日

build_network_link.sh 建立docker netwoek 腳本說明

 

🔧 原始腳本

sh
sudo docker network create --driver=bridge --subnet=172.18.0.0/24 --gateway=172.18.0.1 $1 sudo docker network ls sudo docker network inspect $1

🔍 各行說明

第 1 行:建立一個自訂 Docker 網路

sh
sudo docker network create \ --driver=bridge \ --subnet=172.18.0.0/24 \ --gateway=172.18.0.1 \ $1
參數說明
docker network create建立新的 Docker 網路
--driver=bridge使用橋接網路(Bridge mode)
--subnet=172.18.0.0/24設定網路子網(CIDR 格式)
--gateway=172.18.0.1指定這個網路的預設閘道 IP
$1使用者從命令列傳入的網路名稱變數,例如 my_ros_net

範例用法

bash
sh create_net.sh my_ros_net

第 2 行:列出目前所有 Docker 網路

sh
sudo docker network ls

📋 顯示目前 Docker 網路清單,例如:

sql
NETWORK ID NAME DRIVER SCOPE 9d7c1ff36e64 bridge bridge local f8c9875df3bd host host local 2b18a98d97fd my_ros_net bridge local

第 3 行:檢查剛剛建立的網路詳細設定

sh
sudo docker network inspect $1

🔍 顯示該網路的完整設定資訊,例如:

json
[ { "Name": "my_ros_net", "Id": "2b18a98d97fd...", "Driver": "bridge", "IPAM": { "Config": [ { "Subnet": "172.18.0.0/24", "Gateway": "172.18.0.1" } ] }, "Containers": {} } ]

🧠 用途

這段 Shell Script 常見應用場景:

  • 為多個 Docker 容器(如 ROS Master、ROS Slave、Gazebo 等)建立共用的虛擬網路

  • 避免使用 --net=host提高安全性與可控性

  • 自訂 IP 範圍,便於在 Docker 容器間 穩定設定 ROS_MASTER_URI / GAZEBO_MASTER_URI


✅ 總結

功能說明
create建立一個自訂 bridge 網路(可指定 IP 範圍)
network ls確認是否建立成功
network inspect查詳細設定(IP、subnet、容器列表等)

2025年3月18日 星期二

Ngrok 應用範例與設定指南

  Ngrok 應用範例與設定指南

ngrok 是一個用來建立 安全公開網址 (Public URL) 的工具,適用於: ✅ 本機開發測試 (localhost 曝露到網際網路)
遠端存取內部伺服器 (SSH / Web / API)
建立 Webhook 伺服器 (GitHub, Telegram, Stripe, etc.)


📌 1️⃣ 安裝 Ngrok

🔹 在 Linux / macOS

使用以下命令透過 Apt 安裝 ngrok: curl -sSL https://ngrok-agent.s3.amazonaws.com/ngrok.asc \ | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null \ && echo "deb https://ngrok-agent.s3.amazonaws.com buster main" \ | sudo tee /etc/apt/sources.list.d/ngrok.list \ && sudo apt update \ && sudo apt install ngrok

確認安裝

bash
$ngrok version

🔹 在 Windows

1️⃣ 下載 Ngrok:從 官方網站 下載
2️⃣ 解壓縮並執行 ngrok.exe


📌 2️⃣ 設定 Ngrok

📌 註冊 Ngrok 帳號 並取得 Auth Token
👉 官方網站  => https://ngrok.com/

📌 設定 ngrok 認證

bash
ngrok authtoken YOUR_AUTH_TOKEN

這樣就能使用 Ngrok 建立安全隧道 (Tunnel)!


📌 3️⃣ Ngrok 常見應用

🔹 (1) 曝露本機 localhost 伺服器

📌 如果你的 Web 伺服器運行在 localhost:5000

bash
ngrok http 5000

會產生一個 https:// 的公開網址

lua
Forwarding https://random.ngrok.io -> localhost:5000

👉 現在你可以透過 https://random.ngrok.io 存取本機伺服器!


🔹 (2) Ngrok 曝露 ROS Websocket

如果你的 ROS Websocket 伺服器 運行在 localhost:9090

bash
ngrok http 9090

會生成一個 WebSocket 可用的公開網址

nginx
Forwarding https://example.ngrok.io -> localhost:9090

👉 可用於遠端連接 ROSBridge (ws://example.ngrok.io)


🔹 (3) Ngrok SSH 遠端登入

📌 在遠端電腦 (Server A) 開啟 SSH

bash
ngrok tcp 22

Ngrok 會產生一個 TCP 隧道

nginx
Forwarding tcp://4.tcp.ngrok.io:12345 -> localhost:22

📌 在本機 (Client B) 連接

bash
ssh user@4.tcp.ngrok.io -p 12345

你可以遠端登入 Server A,即使它在防火牆後!


🔹 (4) 使用固定網域 (付費方案)

Ngrok 免費版的 網址每次重新啟動都會變動,如果想要固定的網域:

bash
ngrok http -subdomain=mycustom ngrok.io 5000

網址變成:

arduino
https://mycustom.ngrok.io -> localhost:5000

📌 4️⃣ 進階應用

🔹 (1) 用於 Webhook 開發

GitHub Webhook 需要 公開網址 (https://),可用 Ngrok 測試:

bash
ngrok http 3000

Webhook 設定 URL

arduino
https://example.ngrok.io/webhook

🔹 (2) Ngrok 監控 (儀表板)

本機開啟 http://localhost:4040

bash
ngrok http 4040

可以查看請求記錄 & 偵錯!


🚀 總結

應用指令
曝露 localhost Web 伺服器ngrok http 5000
遠端 SSH 存取ngrok tcp 22
ROS WebSocket 遠端連接ngrok http 9090
固定網址 (需付費)ngrok http -subdomain=mycustom ngrok.io 5000
Webhook 開發測試ngrok http 3000
監控流量 (localhost:4040)ngrok http 4040

🚀 Ngrok 是遠端存取與 Webhook 開發的好幫手,讓本機應用輕鬆連接網際網路! 🚀

2025年2月17日 星期一

ROS 2 Humble + Gazebo Fortress + X11 VNC + Python3(支援 rospy & roscpp)+ 預設登入用戶

 ROS 2 Humble + Gazebo Fortress + X11 VNC + Python3(支援 rospy & roscpp)+ 預設登入用戶

這個 Dockerfile 將支援:

  • Gazebo Fortress(最新 Gazebo 版本)
  • X11 forwarding(本機 GUI 支援)
  • VNC Server(遠端 GUI 存取)
  • Python3(支援 rospy
  • C++(支援 roscpp
  • 設定 x11vnc 預設用戶 ubuntu,密碼 ubuntu

🚀 Dockerfile

[dockerfile]

# 使用 ROS 2 Humble 官方映像 FROM ros:humble # 設定環境變數 ENV DEBIAN_FRONTEND=noninteractive # 更新系統並安裝基本工具 RUN apt update && apt install -y \ lsb-release wget gnupg2 curl software-properties-common mesa-utils \ x11vnc xvfb \ python3 python3-pip python3-colcon-common-extensions \ build-essential cmake git \ && rm -rf /var/lib/apt/lists/* # 設定 Gazebo 軟體庫 RUN sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" > /etc/apt/sources.list.d/gazebo-stable.list' \ && wget https://packages.osrfoundation.org/gazebo.key -O - | apt-key add - # 安裝 Gazebo Fortress(Ignition Gazebo) RUN apt update && apt install -y \ gazebo-fortress \ ros-humble-ros-gz \ && rm -rf /var/lib/apt/lists/* # 安裝 rospy & roscpp 相關套件 RUN apt update && apt install -y \ ros-humble-rclpy ros-humble-rclcpp \ ros-humble-std-msgs ros-humble-sensor-msgs \ ros-humble-geometry-msgs ros-humble-nav-msgs \ && rm -rf /var/lib/apt/lists/* # 設定 Gazebo 環境變數 ENV GZ_SIM_RESOURCE_PATH=/usr/share/gz # 設定 ROS 2 環境變數 RUN echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc RUN echo "source /usr/share/gazebo/setup.sh" >> ~/.bashrc # 設定 Python 環境(rospy) RUN pip3 install -U pip setuptools RUN pip3 install empy numpy pyyaml rospkg # 建立 Ubuntu 使用者帳號 (ID: ubuntu / 密碼: ubuntu) RUN useradd -m -s /bin/bash ubuntu && echo "ubuntu:ubuntu" | chpasswd && adduser ubuntu sudo # 設定 VNC 環境變數 ENV DISPLAY=:1 ENV XDG_RUNTIME_DIR=/tmp/runtime-root # 設定 x11vnc 使用 Ubuntu 預設帳戶登入 RUN mkdir -p /home/ubuntu/.vnc && \ echo "ubuntu" | vncpasswd -f > /home/ubuntu/.vnc/passwd && \ chmod 600 /home/ubuntu/.vnc/passwd && \ chown -R ubuntu:ubuntu /home/ubuntu/.vnc # 建立 VNC 啟動指令(預設使用 ubuntu 用戶) RUN mkdir -p /home/ubuntu/.vnc && \ echo "#!/bin/bash" > /home/ubuntu/.vnc/start_vnc.sh && \ echo "Xvfb :1 -screen 0 1920x1080x16 &" >> /home/ubuntu/.vnc/start_vnc.sh && \ echo "x11vnc -display :1 -forever -usepw -rfbport 5900 -shared -noxrecord -noxfixes -noxdamage" >> /home/ubuntu/.vnc/start_vnc.sh && \ chmod +x /home/ubuntu/.vnc/start_vnc.sh && \ chown -R ubuntu:ubuntu /home/ubuntu/.vnc # 設定工作目錄 WORKDIR /home/ubuntu USER ubuntu # 預設執行指令:啟動 VNC Server 並開啟 Bash CMD ["bash", "-c", "/home/ubuntu/.vnc/start_vnc.sh & bash"]


🔹 建置 Docker 映像

bash
docker build -t ros2_humble_gazebo_vnc_user .

🔹 運行容器

1️⃣ 本機 X11 GUI 顯示

bash
xhost +local:docker docker run -it --rm --net=host \ -e DISPLAY=$DISPLAY \ -v /tmp/.X11-unix:/tmp/.X11-unix \ ros2_humble_gazebo_vnc_user

2️⃣ 遠端存取 VNC

bash
docker run -it --rm -p 5900:5900 ros2_humble_gazebo_vnc_user

然後使用 VNC Viewer 連接:

makefile
localhost:5900

帳號: ubuntu
密碼: ubuntu


🔹 測試 Gazebo

進入 Docker 容器後執行:

bash
gz sim shapes.sdf

🔹 測試 rospy

bash
ros2 run demo_nodes_py talker

🔹 測試 roscpp

bash
ros2 run demo_nodes_cpp talker

📌 結論

這個 Dockerfile 建立了一個完整的 ROS 2 + Gazebo + X11 VNC 環境,並支援:

  • Gazebo GUI 顯示(X11 & VNC)
  • Python (rospy)
  • C++ (roscpp)
  • VNC 遠端存取,帳號 ubuntu,密碼 ubuntu

🚀 現在你可以用 Ubuntu 預設用戶登入並開發 ROS 2 應用了! 🎉


2025年2月16日 星期日

ubuntu 安裝 Docker

 1. 安裝 Docker

首先,確保您的系統上已安裝 Docker。如果尚未安裝,您可以按照以下步驟進行:

  • 更新 apt 套件索引:

    bash
    sudo apt update
  • 安裝必要的套件:

    bash
    sudo apt install apt-transport-https ca-certificates curl software-properties-common
  • 添加 Docker 的 GPG 金鑰:

    bash
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  • 添加 Docker 的 APT 軟體庫:

    bash
    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  • 再次更新 apt 套件索引:

    bash
    sudo apt update
  • 安裝 Docker:

    bash
    sudo apt install docker-ce
  • 將當前使用者添加到 Docker 群組(可選):

    bash
    sudo usermod -aG docker $USER

    完成後,重新啟動系統以使更改生效。

2025年1月13日 星期一

Raspberry Pi 4 上安装 ROS Noetic by Ubuntu 20.04

 在 Raspberry Pi 4 上安装 ROS Master 是一个重要的步骤,可以使其成为机器人系统的控制中心。以下是详细的安装过程,主要以 ROS Noetic 为例,因为它支持 Ubuntu 20.04(Focal Fossa)操作系统。

准备工作

1. 安装操作系统

首先,需要在 Raspberry Pi 4 上安装 Ubuntu Server 20.04 LTS。可以通过以下步骤进行:
  • 下载镜像:访问 Ubuntu 官方网站下载适合 Raspberry Pi 的 Ubuntu Server 镜像。
  • 烧录镜像:使用工具如 Raspberry Pi Imager 或 balenaEtcher 将镜像烧录到 microSD 卡中。
  • 启动 Raspberry Pi:将烧录好的 microSD 卡插入 Raspberry Pi,连接电源并启动。

2. 设置网络

确保 Raspberry Pi 连接到互联网,可以通过有线或无线网络进行设置。

安装 ROS Noetic

1. 更新系统

在终端中运行以下命令,以确保系统软件包是最新的:
bash
sudo apt update sudo apt upgrade

2. 添加 ROS 源

将 ROS 的软件源添加到系统中:
bash
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-noetic.list'

3. 添加密钥

添加 ROS 的公钥,以验证软件包的完整性:
bash
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

4. 安装 ROS

选择安装完整版本或基础版本。以下命令将安装 ROS Noetic 的完整桌面版本:
bash
sudo apt install ros-noetic-desktop-full
如果只需基本功能,可以使用以下命令:
bash
sudo apt install ros-noetic-ros-base

5. 初始化 rosdep

rosdep 是一个用于管理 ROS 依赖关系的工具。运行以下命令进行初始化:
bash
sudo apt install python3-rosdep sudo rosdep init rosdep update

6. 设置环境变量

为了每次打开终端时自动加载 ROS 环境变量,将以下行添加到 ~/.bashrc 文件末尾:
bash
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc source ~/.bashrc

启动 ROS Master

完成以上步骤后,可以启动 ROS Master(即 roscore),在终端中输入:
bash
roscore
如果看到类似于“started core service” 的消息,表示 ROS Master 已成功启动。

总结

通过上述步骤,您可以在 Raspberry Pi 4 上成功安装并运行 ROS Master。这为开发和测试机器人应用程序提供了强大的基础设施,支持多种传感器和执行器的集成与控制。