welcom ! Handel home

顯示具有 Raspberry Pi 標籤的文章。 顯示所有文章
顯示具有 Raspberry Pi 標籤的文章。 顯示所有文章

2025年4月14日 星期一

Raspberry Pi 4 安裝 ROS 2(Humble 版本)

 Raspberry Pi 4 安裝 ROS 2(Humble 版本) 的完整操作流程,搭配 Ubuntu 22.04 (64-bit) 作業系統為基礎環境。


🧰 安裝前準備

✅ 作業系統建議

  • OS:Ubuntu Server / Desktop 22.04 LTS (64-bit)

    • 官方推薦使用 Ubuntu Server + 手動安裝桌面環境(更輕量)

✅ 系統更新

bash
sudo apt update && sudo apt upgrade -y sudo apt install curl gnupg lsb-release -y

① 安裝 ROS 2 Humble 套件

✅ 1. 新增 ROS 2 軟體源

bash
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg echo "deb [arch=arm64 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

✅ 2. 安裝 ROS 2 Humble 套件(桌面完整版)

bash
sudo apt update sudo apt install ros-humble-desktop -y
  • 若空間受限 可改安裝精簡版:

    bash
    sudo apt install ros-humble-ros-base

② 設定 ROS 2 環境變數

✅ 1. 加入到 .bashrc

bash
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc source ~/.bashrc

③ 安裝開發工具與建構系統

bash
sudo apt install python3-colcon-common-extensions python3-pip -y sudo apt install build-essential -y

④ 驗證安裝成功

✅ 測試 ROS 2 指令

bash
ros2 --version ros2 topic list ros2 run demo_nodes_cpp talker

另開一個終端執行:

bash
ros2 run demo_nodes_cpp listener

你應該會看到 Talker 傳送訊息,Listener 接收訊息。


⑤ 額外推薦套件安裝

工具安裝指令
micro-ROS Agentsudo apt install ros-humble-micro-ros-agent
Gazebo 模擬器sudo apt install ros-humble-gazebo-ros-pkgs
MoveIt 2 運動規劃sudo apt install ros-humble-moveit
RViz 2 視覺化工具sudo apt install ros-humble-rviz2
控制器模組sudo apt install ros-humble-ros2-control ros-humble-ros2-controllers

📁 開發 ROS2 專案建議架構

bash
mkdir -p ~/ros2_ws/src cd ~/ros2_ws colcon build --symlink-install source install/setup.bash

✅ 安裝完成提示

你現在已經在 Raspberry Pi 4 上完成:

  • ✅ ROS 2 Humble 安裝

  • ✅ 開發與建構工具配置

  • ✅ 可運行 Talker / Listener 範例

  • ✅ 準備好整合 micro-ROS、Gazebo、MoveIt2



2025年1月13日 星期一

建置 ROS Master 內網域 NODE 範例(主機 + Raspberry Pi 為範例)

 在一台 Ubuntu 上建立 ROS Noetic Master,並讓兩台 Raspberry Pi 4 各自運行兩個節點的範例流程如下:

環境準備

1. 在 Ubuntu 上安裝 ROS Noetic

確保你的 Ubuntu 系統為 20.04,然後按照以下步驟安裝 ROS Noetic:
bash
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-noetic.list' curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add - sudo apt update sudo apt install ros-noetic-desktop-full

2. 初始化 rosdep

bash
sudo apt install python3-rosdep sudo rosdep init rosdep update

3. 設定環境變數

將 ROS 環境變數添加到 .bashrc 中:
bash
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc source ~/.bashrc

建立 ROS Master

在 Ubuntu 上啟動 ROS Master:
bash
roscore

在 Raspberry Pi 4 上設置 ROS 節點

1. 安裝 ROS Noetic

在每台 Raspberry Pi 4 上安裝相同的 ROS Noetic:
bash
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-noetic.list' curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add - sudo apt update sudo apt install ros-noetic-ros-base

2. 初始化 rosdep

bash
sudo apt install python3-rosdep sudo rosdep init rosdep update

3. 設定環境變數

在每台 Raspberry Pi 上的 .bashrc 檔案中設置 ROS Master URI 和 IP 地址。假設你的 Ubuntu 的 IP 是 192.168.1.100,而 Raspberry Pi 的 IP 分別是 192.168.1.101 和 192.168.1.102,則在每台 Raspberry Pi 的 .bashrc 中添加以下行:
bash
export ROS_MASTER_URI=http://192.168.1.100:11311 export ROS_IP=192.168.1.101 # 對於第一台 Pi,第二台則改為192.168.1.102
然後執行:
bash
source ~/.bashrc

建立節點

1. 在每台 Raspberry Pi 上創建工作空間

在每台 Raspberry Pi 上創建 Catkin 工作空間:
bash
mkdir -p ~/catkin_ws/src cd ~/catkin_ws/ catkin_make

2. 創建節點

在 src 資料夾中創建一個新的 Python 節點,例如 node1.py 和 node2.py:
bash
cd ~/catkin_ws/src mkdir my_package cd my_package mkdir scripts touch scripts/node1.py scripts/node2.py chmod +x scripts/node1.py scripts/node2.py

3. 編輯 Python 節點

使用編輯器打開 node1.py 和 node2.py,並添加以下範例代碼(這裡以 node1.py 為例):
python
#!/usr/bin/env python3 import rospy from std_msgs.msg import String def talker(): pub = rospy.Publisher('topic_node1', String, queue_size=10) rospy.init_node('node1', anonymous=True) rate = rospy.Rate(10) # 10hz while not rospy.is_shutdown(): msg = "Hello from Node 1" rospy.loginfo(msg) pub.publish(msg) rate.sleep() if __name__ == '__main__': try: talker() except rospy.ROSInterruptException: pass
對於 node2.py,可以類似地創建另一個節點,並更改主題名稱和訊息內容。

4. 編譯工作空間

回到工作空間根目錄並編譯:
bash
cd ~/catkin_ws/ catkin_make

啟動節點

在每台 Raspberry Pi 上啟動你的節點:
bash
source ~/catkin_ws/devel/setup.bash rosrun my_package node1.py # 第一台 Pi 執行 node1.py rosrun my_package node2.py # 第二台 Pi 執行 node2.py

測試通信

在 Ubuntu 主機上,你可以使用以下命令來檢查來自 Raspberry Pi 的訊息:
bash
rostopic echo /topic_node1 # 查看第一台 Pi 發佈的訊息 rostopic echo /topic_node2 # 如果有第二台 Pi 發佈的訊息,則查看其主題
這樣,你就成功地在一台 Ubuntu 上建立了 ROS Master,並讓兩台 Raspberry Pi 各自運行兩個節點。