robosoft-ai/SMACC2

An Event-Driven, Asynchronous, Behavioral State Machine Library for ROS2 (Robotic Operating System) applications written in C++

SMACC2 – A C++ State‑Machine Library for ROS 2

What it is

  • ROS 2 상에서 event-driven, asynchronous (이벤트 중심, 비동기) 동작 상태 머신을 구축할 수 있는 오픈 소스 C++ 라이브러리입니다. 실시간 멀티 컴포넌트 로봇(이동 베이스 + 암 + 센서 등)을 대상으로 합니다.

Why it matters

  • ROS 2는 C++를 이용한 task-level (태스크 레벨) 상태 머신 프로그래밍을 위한 네이티브 옵션이 거의 없습니다. SMACC2는 Boost Statechart를 통해 컴파일 타임 검증을 제공하고, ROS 2 topics, services, actions와 깔끔하게 통합되는 프레임워크를 제공하여 그 간극을 메워줍니다.

Key features

  • ROS 2 native – topics, services, actions를 즉시 사용할 수 있습니다.
  • C++ only – Python이 너무 무거운 산업용 실시간 배포 환경에 적합합니다.
  • Orthogonal regions – 로봇의 독립적인 병렬 부분(예: 내비게이션, 암 제어, 센서 처리)을 단일 상태 머신 내에서 모델링할 수 있습니다.

Static validation – 컴파일 타임에 상태 머신 구조를 검증하여 런타임 버그를를 줄입니다.

  • Reference library – 복사하여 확장할 수 있는 준비된 샘플 상태 머신(sm_atomic, sm_three_some, Nav2 demos) 컬렉션입니다.
  • Client library – 상태 머신 프레임워크에 바로 연결할 수 있는 준비된 ROS 2 클라이언트(Nav2, MoveIt2, timers, keyboard, multi-role sensors)가 제공됩니다.
  • Extensive Doxygen docs – UML 다이어그램과 호출 그래프가 포함된 자동 생성 API 문서입니다.
  • Runtime Analyzer (RTA) – 상태 머신 실행을 시각화하고 디버깅하기 위한 별도의 무료(학술용) 도구입니다 (소스 코드는 비공개이지만 vendor 사이트에서 다운로드 가능합니다).

Repository layout

  • smacc2/ – 핵심 라이브러리 구현.
  • smacc2_client_library/ – ROS 2 클라이언트 래퍼 (Nav2, MoveIt2 등).
  • smacc2_event_generators/, smacc2_msgs/ – 지원 코드 및 메시지 정의.
  • smacc2_sm_reference_library/ – 샘플 상태 머신 프로젝트.
  • 추가 헬퍼 라이브러리 (smacc2_state_reactor_library, smacc2_performance_tools).

Getting started (ROS 2 Jazzy example)

  1. ROS 2 Jazzy 및 필요한 도구 (colcon, vcs, pre-commit)를 설치합니다.
  2. ROS 2 워크스페이스를 생성하고 SMACC2 저장소를 클론합니다.
  3. jazzy 브랜치를 체크아웃합니다.
  4. vcs import …를 사용하여 ROS 2 의존성을 가져오고 rosdep을 통해 설치합니다.
  5. colcon build -DCMAKE_BUILD_TYPE=Release로 워크스페이스를 빌드합니다.
  6. smacc2_sm_reference_library에서 샘플(예: sm_atomic)을 선택하고 해당 README를 따라 상태 머신을 실행합니다.

Typical use cases

  • 이동, 암, 그리퍼, 그리고 여러 센서를 조정하여 제어해야 하는 복잡한 모바일 매니퓰레이터.
  • 결정론적이고 컴파일 타임에 검증된 동작이 필요한 산업용 로봇.

Documentation & support


SMACC2는 일반적인 AI/ML 라이브러리가 아닌, 진정한 로봇 공학 중심의 소프트웨어 프로젝트입니다. AI/ML 모델을 훈련시키거나 실행하는 것이 아니라, 로봇의 동작을 조나클레이션(orchestrate)하기 위한 인프라스트럭처를 제공합니다.",

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트