본문으로 건너뛰기

왜 ROS/ROS 2 대신 WebAssembly인가

· 약 2분
Jaegyeom Kim
Robotics Software Engineer

ROS와 ROS 2는 완성도 높은 로봇 시스템을 만들기에 훌륭한 선택입니다. 통신, 도구, 드라이버, 시각화 기능과 넓은 생태계를 제공합니다.

하지만 이 블로그의 목표는 조금 다릅니다. 기구학, 플래닝, 동역학의 수학적 개념을 브라우저에서 직접 확인하고 실행하게 만드는 것이 핵심입니다.

해결하려는 문제의 차이

이 블로그는 실제 로봇을 운용하거나 여러 하드웨어 노드를 연결하려는 것이 아닙니다. 순기구학, 역기구학, 모션 플래닝, 동역학을 보여 주는 것이 목적입니다.

따라서 로보틱스 개발 환경을 따로 준비하지 않아도 누구나 열어서 실행할 수 있는 작고 독립적인 프로그램이 더 적합합니다.

WebAssembly를 선택한 이유

  • 설치가 필요 없습니다. ROS, ROS 2, workspace, 시스템 패키지를 따로 설치하지 않아도 됩니다.
  • 브라우저에서 실행됩니다. Linux, macOS, Windows, 모바일 기기에서 같은 페이지를 열 수 있습니다.
  • 인터랙티브 시각화가 쉽습니다. 슬라이더와 3D 컨트롤로 컴파일된 알고리즘을 즉시 실행할 수 있습니다.
  • 네이티브 구현을 유지합니다. 계산 코어를 JavaScript로 다시 작성하지 않고 C++를 WebAssembly로 컴파일합니다.
  • 공유가 간단합니다. 백엔드나 로봇 미들웨어 없이 정적 사이트만으로 예제 전체를 배포할 수 있습니다.

ROS와 ROS 2가 더 적합한 경우

하드웨어 드라이버, 센서 스트림, 분산 노드, 로봇 기술 파일, lifecycle 관리, 더 큰 자율주행 스택과의 통합이 필요하다면 ROS나 ROS 2가 더 적합합니다.

이런 요구 사항은 수학을 설명하는 데 필요한 기능이라기보다 시스템 통합에 필요한 기능입니다. ROS와 ROS 2는 실행 중인 로봇 시스템을 구성하고, WebAssembly는 계산 코드를 웹 페이지 안에서 실행하도록 패키징합니다.

실제 적용 범위

브라우저 데모는 알고리즘 코어를 작고 관찰하기 쉬운 형태로 유지합니다. 실제 로봇 애플리케이션에서는 같은 C++ 개념을 ROS나 ROS 2 노드 안에서 사용할 수 있습니다. 미들웨어가 플래너와 컨트롤러를 센서, 액추에이터, 다른 프로세스와 연결하면 됩니다.

이 프로젝트에서 WebAssembly는 알고리즘 자체가 아니라 표현과 배포를 위한 선택입니다. 실험의 진입 장벽을 낮추면서도 로보틱스 구현을 네이티브 C++ 코드에 가깝게 유지합니다.