Try   HackMD

What is micro-ros ?

  • 基於 Micro XRCE-DDS Client 構建的 package,使 ROS 2 可以與資源受限的嵌入式平台上通訊
  • 微控制器可以透過串口、藍牙、乙太網路、Wi-Fi 等多種協定將數據傳遞給Agent,Agent 再轉換成 ROS2 的 Topic 等資訊,以此完成通訊
    Image Not Showing Possible Reasons
    • The image was uploaded to a note which you don't have access to
    • The note which the image was originally uploaded to has been deleted
    Learn More →
  • 透過 RCLC-API 呼叫 MicroROS,程式碼風格和在上位機中使用 Python C++ 呼叫 MicroROS 有所不同

下位機:micro_ros_arduino

在嵌入式平台安裝 Micro-ROS 需要經過一系列的建立、設定、建造和刷新過程。將 Micro-ROS 整合到 Arduino IDE 中可以達成這些步驟。

設定流程,以 ESP32 為例:

  1. FilePreferences 進入 Preferences ,在其中的 Additional boards manager URLs 加入 ESP32、OpenCR 的編譯資源連結:
    ​​​​https://dl.espressif.com/dl/package_esp32_index.json
    ​​​​https://raw.githubusercontent.com/ROBOTIS-GIT/OpenCR/master/arduino/opencr_release/package_opencr_index.json
    
  2. ToolsBoard:...Boards Manager中輸入 esp32 後安裝
    Image Not Showing Possible Reasons
    • The image was uploaded to a note which you don't have access to
    • The note which the image was originally uploaded to has been deleted
    Learn More →

    大約等候15~20分鐘安裝完成後,再一次Toolboard:...boeard manager → 選擇ESP32 Dev Module
  3. ToolsPort:... 中選擇對應的 COM 端口
  4. SketchInclude Library Add .ZIP Library... 加入由 Micro-ROS Arduino 下載下來的 library zip 檔,詳細參考 micro_ros_arduino Github
  5. 可以從 FileExamples 加入 Micro-ROS Arduino 的範例程式並燒錄到 ESP32 進行測試

ERROR: serial not found

ESP32 的編譯需要 python serial 的支援

python3 -m pip install pyserial

上位機:micro-ros-agent

負責在上位機接收 micro ros 的發送資訊

install

source /opt/ros/foxy/setup.bash
cd ~/ros2_ws/src

git clone -b $ROS_DISTRO https://github.com/micro-ROS/micro-ROS-Agent
git clone -b $ROS_DISTRO https://github.com/micro-ROS/micro_ros_msgs

sudo apt update && rosdep update
rosdep install -y -r -q --from-paths src --ignore-src --rosdistro foxy-devel
sudo apt-get install python3-pip

colcon build
source install/local_setup.bash

檢查 package 安裝

source install/setup.bash
ros2 run micro_ros_agent micro_ros_agent udp4 --port 8888

發布 node 以連接下位機

source install/setup.bash
ros2 run micro_ros_agent micro_ros_agent serial --dev /dev/ttyACM0

確定 USB 連接埠

#!/bin/bash

for sysdevpath in $(find /sys/bus/usb/devices/usb*/ -name dev); do
    (
        syspath="${sysdevpath%/dev}"
        devname="$(udevadm info -q name -p $syspath)"
        [[ "$devname" == "bus/"* ]] && exit
        eval "$(udevadm info -q property --export -p $syspath)"
        [[ -z "$ID_SERIAL" ]] && exit
        echo "/dev/$devname - $ID_SERIAL"
    )
done

ERROR: 13. Please re-run with superuser privileges

  1. whoami 找到使用者名字
  2. sudo usermod -a -G dialout $USER 把當前的使用者名字加到串口使用者群組,最後電腦重新開機

節點已建立卻顯示不出來

當有設定 ROS_DOMAIN_ID 的時候會發生終端機都有提示節點已建立、發布了,但是在 ros2 topic list 卻都沒有顯示的問題,後來我是都移除就好了。