M5Stack 사의 ESP32 계열 모듈에서 micro-ROS 샘플 확인

기사 개요


micro-ROS이 ROS2 Foxy 대응과 시기를 동일하게 하여 ESP32 MCU을 지원했기 때문에, M5Stack사제 ESP32계 모듈(M5StickC, M5Atom Lite, M5Atom Matrix)로 publisher 샘플을 동작시킬 때까지의 순서를 기재한다. 앞서 언급 한 3 개의 장치는 모두이 절차에서 생성 된 동일한 펌웨어를 동일한 방식으로 쓸 수 있으며 동일한 방식으로 작동했습니다.
또한이 기사의 내용은 기본적으로 micro-ROS 공식 사이트의 정보를 수집하여 필자가 새롭게 덧붙인 정보는 특별히 없다.

환경




기본 OS
ROS2
Micro-XRCE-DDS-Agent
CPU, RAM


환경 1
우분투 20.04(amd64)
Foxy
v1.3.0
Core i5-7200U, 4GB x 2

절차


이 절차에서는 마이크로 컴퓨터 측 펌웨어의 빌드까지를 커버하고, 동작 확인의 항에서 사용하고있는 PC 측의 Micro-XRCE-DDS-Agent의 빌드에 대해서는 끝난 것으로한다. 대략적인 단계는 다음과 같습니다.
Step1. 작업 공간 생성에서 펌웨어 구성
Step2. WiFi 연결 설정
Step3. 펌웨어 빌드 및 쓰기
Step4. 동작 확인

작업 공간 생성에서 펌웨어 구성

# ROS2の環境変数を読み込む.
$ source ros2_foxy/install/setup.bash
# 筆者なりのワークスペースディレクトリ命名規則
$ mkdir -p uros_ws/freertos__esp32__int32_publisher
$ cd uros_ws/freertos__esp32__int32_publisher
$ git clone -b $ROS_DISTRO https://github.com/micro-ROS/micro_ros_setup.git src/micro_ros_setup
$ rosdep update && rosdep install --from-path src --ignore-src -y
$ colcon build
$ source install/local_setup.bash
# 次のコマンドを実行すると大容量のファイル群(ESP32用ツールチェーンやESP-IDF)がダウンロードされるので,太い回線下での実行を強く推奨
$ ros2 run micro_ros_setup create_firmware_ws.sh freertos esp32
# [your local machine IP]の部分はDDS-Agentを起動するPCのIPアドレス.
# ポート番号は8888以外でも動くと思われるが,とりあえずデフォルトの8888を使用する.
# 具体的には -t udp -i 192.168.11.2 -p 8888 のように指定する.
$ ros2 run micro_ros_setup configure_firmware.sh int32_publisher -t udp -i [your local machine IP] -p 8888

WiFi 연결 설정


다음 명령을 실행하여 menuconfig로 들어갑니다. 여기에서는 WiFi 라우터에 연결하기위한 SSID와 암호를 설정합니다. 설정 파일에는 SSID와 패스워드가 평문으로 보존되므로 취급 주의.
$ ros2 run micro_ros_setup build_firmware.sh menuconfig

  • micro-ROS Transport Settings에 들어간다.


  • WiFi Configuration으로 들어갑니다.


  • WiFi SSID와 WiFi Password를 설정 한 후 저장하고 메뉴를 빠져 나간다.


  • 펌웨어 빌드 및 쓰기

    # 次のコマンドを実行して [100%] Built target app のメッセージが出たらビルド成功と思われる
    $ ros2 run micro_ros_setup build_firmware.sh
    # USBケーブル(M5StickCやM5Atomならデバイス側はType-C)で接続して,次のコマンドでファームウェアを書き込む
    $ ros2 run micro_ros_setup flash_firmware.sh
    

    동작 확인


    Micro-XRCE-DDS-Agent를 시작합니다.
    # MicroXRCEAgentのバイナリがあるディレクトリで実行する
    $ ./MicroXRCEAgent udp4 --port 8888
    

    마이크로 컴퓨터를 재설정하고 조금 기다리면 WiFi 라우터에서 IP가 배포되고 세션이 설정됩니다.

    다른 터미널을 시작하고 주제 이름을 확인하고 subscribe합니다.
    $ source ros2_foxy/install/setup.bash
    $ ros2 topic list
    $ ros2 topic echo /freertos_int32_publisher
    

    소감


    publisher 샘플의 소스 코드를 들여다 보면 FreeRTOS 작업으로 구현되는 것 같습니다. 보다 실용적인 응용 프로그램으로 I/O를 처리하려면 ESP-IDF의 API를 두드릴 것입니다 (gpio_get_level 및 gpio_set_level 함수 등).

    참고 자료


    1. micro-ROS 공식 사이트
    2. ESP32 Overview
    3. Micro-XRCE-DDS-Agent
    4. ESP-IDF Programming Guide
    5. @MAEHARA_Keisuke의 포털 기사

    좋은 웹페이지 즐겨찾기