MCB_ROS
MCB_ROS
MCB_ROS란?
MCB_ROS는 ROS 환경에서 Ethernet을 통해 모터 컨트롤 보드를 제어하기 위한 Teensy 펌웨어 프로젝트입니다. ROS 워크스테이션에서 토픽을 발행하면, 보드는 엔코더 피드백을 이용해 Closed-loop 제어를 수행하고 상태를 다시 토픽으로 제공합니다.
하드웨어 구성: Teensy + WIZnet Ethernet 모듈
프로젝트에서 전제로 하는 대표 구성은 다음과 같습니다.
Teensy 3.2
WIZnet Ethernet 모듈: WIZ820io 또는 WIZ850io(+ Teensy 어댑터)
Motor Control Board + daughterboard(및 모터 앰프 구성)
이미지 출처 : AI 생성
W5500의 역할: “ROS ↔ Teensy”를 이어주는 Ethernet 통신 엔진
MCB_ROS에서 **W5500(또는 W5500 기반 모듈)**은 단순히 LAN 케이블을 꽂는 부품이 아니라, Teensy가 ROS PC와 안정적으로 소켓 통신을 하도록 만드는 핵심 하드웨어입니다.
유선 Ethernet 연결 제공(10/100 MAC/PHY 통합)
TCP/UDP/IP 처리를 하드웨어로 오프로딩(Hardwired TCP/IP) → MCU 부담을 크게 줄이고 구현을 단순화
MCB_ROS 동작 흐름에서도 보드가 WIZnet Ethernet 보드를 초기화하고 rosserial_server에 연결을 시도한다고 명시
rosserial_server란? 왜 필요한가?
ROS 토픽/서비스 세계를 임베디드 장치가 직접 “ROS 네이티브”로 붙기엔 부담이 큽니다. 그래서 rosserial이 ROS 메시지를 직렬화해 임베디드로 보내고, PC 쪽에서 이를 ROS 그래프에 연결해 주는 브리지 노드가 필요합니다. 그게 rosserial_server예요.
MCB_ROS는 이 브리지를 Ethernet 소켓 방식으로 구성합니다.
ROS PC에서 roslaunch rosserial_server socket.launch 실행
Teensy+WIZnet(W5500 계열)이 TCP 소켓으로 접속
rosserial_server가 데이터를 받아 ROS 토픽으로 재퍼블리시/연결
즉, W5500(네트워크) + rosserial_server(ROS 브리지) 조합이 MCB_ROS의 “ROS 연동 통로”를 완성합니다.
주요 ROS 토픽(핵심)
상태/요청: /status, /get_status
제어 시작: /enable_ros_control
엔코더: /encoder_current, /encoder_command
PID 튜닝: /set_gains (토픽으로 게인 설정)
What is MCB_ROS?
MCB_ROS is a Teensy firmware project designed to control a motor control board over Ethernet in a ROS environment. When the ROS workstation publishes topics, the board performs closed-loop control using encoder feedback and publishes its status back as ROS topics.
Hardware Setup: Teensy + WIZnet Ethernet Module
A typical setup assumed by this project is:
Teensy 3.2
WIZnet Ethernet module: WIZ820io or WIZ850io (+ Teensy adapter)
Motor Control Board + daughterboard (and a motor amplifier setup)
Image source: AI-generated
Role of the W5500: The Ethernet Communication Engine Linking “ROS ↔ Teensy”
In MCB_ROS, the W5500 (or a W5500-based module) is not just a component for plugging in a LAN cable—it is the key hardware that enables the Teensy to communicate reliably with a ROS PC via sockets.
Provides wired Ethernet connectivity (integrated 10/100 MAC/PHY)
Hardware offload of TCP/UDP/IP processing (Hardwired TCP/IP) → greatly reduces the MCU’s workload and simplifies implementation
The MCB_ROS operation flow also explicitly states that the board initializes the WIZnet Ethernet board and attempts to connect to rosserial_server
What is rosserial_server, and why is it needed?
It can be heavy for an embedded device to connect “natively” to the ROS topic/service ecosystem. That’s why rosserial serializes ROS messages and sends them to the embedded device, and a bridge node on the PC side is needed to connect that link to the ROS graph. That bridge is rosserial_server.
MCB_ROS implements this bridge using an Ethernet socket approach:
Run roslaunch rosserial_server socket.launch on the ROS PC
The Teensy + WIZnet (W5500 family) connects via a TCP socket
rosserial_server receives the data and republishes/bridges it into ROS topics
In other words, the combination of W5500 (network) + rosserial_server (ROS bridge) completes the ROS integration path for MCB_ROS.
Key ROS Topics (Core)
Status/Request: /status, /get_status
Start control: /enable_ros_control
Encoder: /encoder_current, /encoder_command
PID tuning: /set_gains (set gains via topic)


