Sensor Sharing Manager

SensorSharingManager(以降SSM)は、時系列で得られるセンサデータを複数のプロセスで扱いやすくするための プログラムです。

SSMは共有メモリによりリングバッファを構成することで、 センサデータを複数プロセスでアクセスできるようにするだけでなく、 オドメトリ情報などの高速に更新されるような情報の利用や、 時刻情報を用いることで、複数のセンサデータを対応付ける事が可能になります。 これにより、非リアルタイムOS上での複数センサ情報処理を補助します。

本ページでは、SSMとユーティリティプログラムについての概要について説明します。

ダウンロード

インストール

基本的にはファイルのダウンロード→解凍→makeのみです。

 tar xzvf <ダウンロードしたファイル>
 cd <展開されたディレクトリ>
 make clean
 make
 sudo make install
以上の操作により、SSM/bin以下にバイナリ、/usr/local/libにライブラリ、/usr/local/includeにヘッダファイルがコピーされます。

SSMの特徴

特徴:

  • シンプルな構成・インターフェース
  • 任意のデータサイズに対応
  • 一定個数の履歴を保持
  • 共有メモリベースでコンテキストスイッチを待たず高速にアクセス可能
  • 各センサにつき1入力n出力
  • 時刻指定でのアクセスが可能
  • よほど古いデータにアクセスしなければほとんど衝突は起こらない。

制約:

  • 途中でデータサイズが変えられない
  • でかいデータが扱えない(各Linuxの共有メモリの制限による)
  • 書き込み側、読み込み側はデータ型が分かっている必要がある
  • あらかじめ最低周期を設定する必要がある
  • 著しく不規則な周期だと時刻指定でのアクセスに時間がかかる可能性がある
  • 時刻はdouble型に固定

SSMの構成

SSMに関わるプログラムは大きく次の三種類に分けられます。

  • ssm: センサの登録等一括管理を行う
  • センサドライバ: 各センサのデータを読み込みSSMに登録する
  • ユーザプログラム: SSMからデータを読み込み、センサ情報処理を行う

ssm_system.png
SSMの構成

パッケージ内容

  • ssm : 管理プログラム
  • lsssm : SSMに登録されているセンサの情報を表示。
  • ssmlogger : SSMに登録されているセンサのデータを記録。
  • ssmmulltiplayer : 複数のセンサデータを同時に再生。
  • ssmtransport : 別のPCのSSMとセンサデータを共有する。