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)が提供されます。

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_research_library からサンプル(例:sm_atomic)を選び、その README を参照してステートマシンを実行します。

Typical use cases

  • 移動、アーム、グリッパー、複数のセンサーを協調制御する必要がある複雑なモバイルマニピュレータ。
  • 決定論的な、コンパイル時チェックされた振る舞いが必要な産業用ロボット。
  • ナビゲーション (Nav2) とマニピュレーション (MoveIt2) を単一の、保守可能なステートマシンアーキテクチャ内で組み合わせる研究用プロトタイプ。

Documentation & support


SMACC2 は、一般的な AI/ML ライブラリではなく、真のロボティクスに特化したソフトウェアプロジェクトです。機械学習モデルのトレーニングや実行ではなく、ロボットの振る舞いをオーケストレートするためのインフラストラクチャを提供します。",

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト