Wiznet makers

mason

Published December 10, 2025 © GNU General Public License, version 3 or later (GPL3+)

119 UCC

21 WCC

32 VAR

0 Contests

0 Followers

0 Following

Original Link

MCB_ROS

MCB_ROS

COMPONENTS Hardware components

WIZnet - W5500

x 1


teensy - Teensy USB 3.2 Development Board

x 1


PROJECT DESCRIPTION

MCB_ROS란?

MCB_ROSROS 환경에서 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)

 

Documents
  • Github Code

Comments Write