ESP32S3-MicroROS
Implements a Micro-ROS publisher on ESP32-S3-ETH via W5500. It ensures stable wired Ethernet connectivity for ROS 2, solving the S3's lack of internal MAC
1. 프로젝트 개요 및 분석
이 프로젝트는 ESP32-S3 칩셋과 W5500 이더넷 모듈이 결합된 하드웨어를 사용하여 ROS 2(Robot Operating System 2) 네트워크에 참여하는 Micro-ROS Publisher(퍼블리셔) 노드를 구현한 것입니다.
프로젝트 레벨: 기초(Basic) ~ 중급(Intermediate) 레벨의 커넥티비티(Connectivity) 구현 프로젝트입니다.
복잡한 로봇 제어 알고리즘보다는, "ESP32-S3에서 안정적인 유선 통신(Ethernet)을 통해 Micro-ROS를 구동하는 것" 자체가 핵심 목표인 프로젝트입니다.
일반적으로 Micro-ROS는 Wi-Fi를 많이 사용하지만, 이 프로젝트는 산업용이나 신뢰성이 중요한 환경을 위한 유선 이더넷 기반의 통신 드라이버 성격이 강합니다.
2. Micro-ROS 사용 방식 분석
이 프로젝트에서 Micro-ROS는 다음과 같은 구조로 구현되었을 것입니다.
Transport Layer (전송 계층):
가장 중요한 부분입니다. 일반적인 ESP32 Micro-ROS 예제는 Wi-Fi Transport를 사용하지만, 이 프로젝트는 Custom Transport 혹은 Arduino Ethernet 라이브러리 기반의 Transport를 사용합니다.
W5500은 SPI 통신을 하므로, micro_ros_platformio 라이브러리 설정에서 시리얼이나 Wi-Fi 대신 W5500 Ethernet을 통신 매체로 지정하여 ROS 2 에이전트(Agent)와 데이터를 주고받습니다.
Node & Publisher:
초기화(Init): rclc_support_init 함수를 통해 Micro-ROS 에이전트와 연결을 시도합니다. (이때 IP 주소 할당 및 Agent IP 연결이 수행됨)
토픽 발행(Publish): rclc_publisher_init_default를 사용하여 특정 토픽(예: 센서 데이터, 카운터 값 등)을 생성하고, 타이머 인터럽트(Timer Callback)를 통해 주기적으로 메시지를 ROS 2 네트워크로 쏘아 올립니다.
3. 왜 W5500이 있는 ESP32-S3-ETH 보드를 사용했는가? (핵심 분석)
이 부분이 기술적으로 가장 중요한 포인트입니다. 두 가지 이유가 결합되어 있습니다.
① ESP32-S3 칩의 하드웨어적 제약 (MAC 부재)
기존 ESP32(Original) 칩은 내부에 Ethernet MAC(Media Access Control) 컨트롤러가 내장되어 있어, 외부에는 저렴한 PHY 칩(예: LAN8720)만 달면 이더넷 구현이 가능했습니다.
하지만 ESP32-S3는 성능은 좋아졌지만 내부 Ethernet MAC이 제거되었습니다.
따라서 ESP32-S3에서 이더넷을 쓰려면, MAC과 PHY 기능이 모두 들어있는 외부 이더넷 컨트롤러가 필수적입니다. W5500은 MAC+PHY가 통합되어 있고 SPI 인터페이스로 통신하므로, MAC이 없는 ESP32-S3에 이더넷을 달기 위한 가장 표준적인 솔루션입니다.
② 로봇 시스템에서의 통신 안정성 (Stability)
Latency & Jitter: 로봇 제어에서 Wi-Fi는 무선 간섭으로 인해 통신 지연(Latency)이 튀는 현상(Jitter)이 발생할 수 있습니다. 이는 실시간 제어(Real-time Control)에 치명적입니다.
W5500: 유선 이더넷은 패킷 손실이 거의 없고 통신 속도가 일정하므로, 로봇의 센서 데이터(IMU, Lidar 등)를 신뢰성 있게 전송하기 위해 이 보드를 선택한 것입니다.
4. ROS 2 타겟 시스템 분석
이 프로젝트는 다음과 같은 ROS 2 시스템을 대상으로 합니다.
ROS 2 배포판(Distro):
ESP32-S3가 비교적 최신 칩셋이므로, ROS 2 Humble Hawksbill (LTS 버전) 혹은 Foxy Fitzroy 시스템을 타겟으로 했을 가능성이 매우 높습니다.
현재 Micro-ROS 생태계에서 가장 안정적으로 지원되는 버전이 Humble입니다.
시스템 아키텍처:
Micro-ROS Agent: PC(Ubuntu 리눅스) 측에 micro-ros-agent가 Docker 컨테이너나 네이티브 패키지로 실행되고 있어야 합니다.
통신 프로토콜: Micro-XRCE-DDS 프로토콜을 사용하며, W5500을 통해 UDP 패킷으로 PC의 에이전트와 통신합니다.
요약하자면: 이 프로젝트는 "내부 MAC이 없는 고성능 ESP32-S3 칩셋에 W5500을 붙여, 로봇 시스템에 필수적인 '끊김 없는 유선 통신'을 확보하기 위한 Micro-ROS 통신 모듈 구현체"입니다.


