====== SSM ====== ===== Streaming data Sharing Manager (SSM) ===== Streaming data Sharing Manager(以降SSM)は、時系列で得られるセンサデータを複数のプロセスで扱いやすくするための一種のリングバッファです。 これにより非リアルタイムOS上でも時刻の整合性を保ったままセンサデータを扱う事ができます。SSMは共有メモリを簡単に使うためのプロトコル・管理ソフトです。 センサのハンドラーやビューアなどのユーザプログラムは自分で用意する必要があります。 ===== 詳細 ===== ==== 機能 ==== * 黒板型のプロセス間データ通信 * ストリームデータの保存・再生 * 他のパソコンとのストリームデータ共有 ==== 特徴 ==== * 任意のデータサイズに対応 * 一定個数の履歴を保持 * 共有メモリベースでコンテキストスイッチを待たず高速にアクセス可能 * 各センサにつき1入力n出力 * 時刻指定でのアクセスが可能 * 衝突が起こらない(lockしている) ==== 制約 ==== * データサイズが変えられない * でかいデータが扱えない(各Linuxの共有メモリの制限による) * 書き込み側、読み込み側はデータ型が分かっている必要がある * あらかじめ最低周期を設定する必要がある * 著しく不規則な周期だと時刻指定でのアクセスに時間がかかる可能性がある * 時刻はdouble型に固定 ====システム構成==== こんな感じのシステム構成 {{::ssm-info.png|}} この内オレンジ色の部分がSSMのライブラリで用意されているものです。 この図から分かる様に、SSMは各プロセスから共有メモリにセンサデータを書き込み・読み込みの部分だけの機能しか持っていません。 緑色の部分の、実際にセンサのデータをSSMに登録するセンサハンドラーやSSMから読み込んで表示するビューアなどは、自分で作成する必要があります。 ==== 論文に書くときは ==== SSMは竹内氏によって論文で発表され、そのときはSensorSharingManagerという名前で発表しています。 これは山彦の標準的な考え方である、オブジェクト指向的な考え方で作成されており、これまでラックの中で行っていたことをPC内部で簡単に再現できるようにしたものです。 当初SSMはセンサデータのみの共有を目的として作成されましたが、使いやすく(竹内氏公認で)改造され、現在はセンサデータ以外のものも共有することによって本来の目的・仕様とはかけ離れてしまいました。 その為、内部的には名前を別にしようという話があり、SSMは現在の名前に変更されました。 実際に竹内氏もすでにSensorSharingManagerという名称は使用してないそうです。 ロボ研内部では、必ずStreaming data Sharing Managerという言葉を使用して下さい。 (SH-SpurとYP-Spurの関係と同様に、名前を変えることで管理をしているのが竹内氏ではなくロボ研であるということが明確になるといった理由もあります。) ただし、Streaming data Sharing Managerは論文で発表されていないため、外部論文で引用するときはSensorSharingManagerという名前を使用した方が良いかもしれません。 ==== SSM用語集 ==== ここでの言葉は所謂ロボ研語です! 外部で使用するときは注意してください。 (もちろん内部でも通じないときがあります。山彦シンポジウムでは特に注意!) ===センサドライバ(SensorDriver)=== パソコンとセンサをつなぐインターフェース。 例)scip2awdはURGのドライバです。 ===センサハンドラ(SensorHandler)=== センサから得た情報をSSMに登録するためのプログラム。 ドライバと役割を明確に区別するためにハンドラと呼ぶ。 人によってはドライバと言うことがあるが、その人にはハンドラという言葉を教えてあげよう。 例)URGハンドラはURGのドライバであるscip2awdを使用してセンサと通信し、得た情報をSSMに書き込む。 =====不具合報告===== ^ 日付 ^ 報告者 ^ タイトル ^ 内容 ^ 対応状況 ^ | 2014.10.27 | SKI |(例)SSMのXXXXX関数がXXXXXXの環境で正常に動作しない |(例)SSMのXXXXX関数がXXXXXXXをオンにしていると必ずエラーコード-1が返ってくる | 済 / 未 |