差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
ssm:how-to-use [2014/10/31 07:10] – [ssm-logger] rpp | ssm:how-to-use [2023/03/29 15:16] (現在) – 外部編集 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | ======使い方====== | ||
+ | - まずssm-coodinatorを起動する。 | ||
+ | - 次にセンサ用のドライバプログラムを起動する。 | ||
+ | - それらのデータを利用するプログラムを起動する。 | ||
+ | - 気になったらlsssm等で登録されているセンサを確認する。 | ||
+ | - 詳細は「ユーティリティプログラム」の項を参照。 | ||
+ | [[http:// | ||
+ | =====動作テスト===== | ||
+ | |||
+ | サンプルプログラムを使って、動作テストします。 | ||
+ | |||
+ | まず、ターミナルを起動し、ssm情報を管理するssm-coordinatorを立ち上げます。 | ||
+ | |||
+ | $ ssm-coordinator | ||
+ | |||
+ | 別ターミナルでSSMサンプルを実行し、共有メモリにデータを書き込みます。 | ||
+ | |||
+ | $ cd ssm-【ダウンロードされたssmのバージョン】/ | ||
+ | $ ./ | ||
+ | |||
+ | 別ターミナルでSSMサンプルを実効し、共有メモリからデータを読み込みます。 | ||
+ | |||
+ | $ cd ssm-【ダウンロードされたssmのバージョン】/ | ||
+ | $ ./ | ||
+ | |||
+ | このプログラムを参考にプログラミングして下さい。 | ||
+ | |||
+ | ===== ユーティリティプログラム | ||
+ | ==== ssm-coordinator | ||
+ | SSMのメインプログラム | ||
+ | $ ssm-coordinator | ||
+ | これを起動してから他のプログラムを立ち上げる。 | ||
+ | |||
+ | ==== lsssm ==== | ||
+ | SSMに登録されているセンサの情報を表示。 | ||
+ | |||
+ | SSMに正しく登録できているかこれで確認。 | ||
+ | $ lsssm | ||
+ | No. | stream name | suid | size[B] | num | cycle[s] | property[B] | | ||
+ | ---|----------------|------|---------|-------|----------|-------------| | ||
+ | 000 | spur_adjust | 0 | 40.00 | 239 | 0.005 | | ||
+ | 001 | spur_global | 0 | 40.00 | 1199 | 0.005 | | ||
+ | 002 | spur_odometry | 0 | 40.00 | 1199 | 0.005 | | ||
+ | 003 | pws_motor | 0 | 16.00 | 239 | 0.005 | | ||
+ | 004 | scan_data2d | 2 | 19.73k | 239 | 0.025 | | ||
+ | 005 | scan_data2d | 1 | 26.27k | 239 | 0.025 | | ||
+ | 006 | | ||
+ | 007 | | ||
+ | 008 | | ||
+ | | ||
+ | |||
+ | * No. - SSMに登録された順番 | ||
+ | * stream name - ストリームの名前 | ||
+ | * suid - 同一ストリーム名を区別するための番号 | ||
+ | * size - ストリームデータのサイズ | ||
+ | * num - リングバッファ個数 | ||
+ | * cycle - ストリームのサイクル | ||
+ | * property - プロパティのサイズ | ||
+ | |||
+ | |||
+ | |||
+ | ==== ssm-monitor | ||
+ | SSMに登録されているセンサの書き込み状況を表示。 | ||
+ | |||
+ | handlerを作成したときこれをviewerを作成しなくても書き込まれているかどうかを調べることができる。(もちろん書き込まれたデータが正しいかどうかは別の話) | ||
+ | |||
+ | 読み込みについては確認することができないので注意! | ||
+ | |||
+ | Ctrl-Cで終了する。 | ||
+ | $ ssm-monitor | ||
+ | No. | | ||
+ | | ||
+ | 0 | spur_adjust | 0 | 200 | 3954 | 7.812k | ||
+ | 1 | spur_global | 0 | 0 | 3984 | 0.000 | ||
+ | 2 | spur_odometry | 0 | 200 | 5822 | 7.812k | ||
+ | 3 | pws_motor | 0 | 0 | 3984 | 0.000 | ||
+ | 4 | scan_data2d | 2 | 40 | 1165 | 789.219k | ||
+ | 5 | scan_data2d | 1 | 40 | 1162 | 1.026M | ||
+ | 6 | | ||
+ | 7 | | ||
+ | 8 | | ||
+ | | ||
+ | |||
+ | ssm total wrote size : 11.435 MB/s | ||
+ | * No. - SSMに登録された順番 | ||
+ | * stream name - ストリームの名前 | ||
+ | * id - 同一ストリーム名を区別するための番号 | ||
+ | * count - データ書き込み回数/ | ||
+ | * tid - 累計書き込み回数 | ||
+ | * data - 書き込み量 | ||
+ | |||
+ | |||
+ | |||
+ | ==== ssm-logger | ||
+ | SSMに登録されているセンサのデータを記録。 | ||
+ | |||
+ | $ ssm-logger -n センサ名 -i センサのID -l 記録ファイル名 | ||
+ | $ ssm-logger -l hoge.log -n hogehoge -i 0 | ||
+ | |||
+ | 複数記録したいときは複数起動する。 | ||
+ | |||
+ | 終了するときはCtrl-C | ||
+ | |||
+ | 基本的にシェルスクリプトを使う。 | ||
+ | |||
+ | |||
+ | ストリームに書き込まれたデータを全て保存します。 | ||
+ | |||
+ | 保存形式は順番は、 | ||
+ | 1行目にストリームのテキスト情報 | ||
+ | |||
+ | その後バイナリでプロパティデータ | ||
+ | |||
+ | タイムスタンプ、ストリームデータのセット | ||
+ | の順です。 | ||
+ | |||
+ | === スクリプトの例(logger.sh) === | ||
+ | ==起動== | ||
+ | | ||
+ | ./logger.sh ログディレクトリ | ||
+ | |||
+ | ==ファイル例== | ||
+ | | ||
+ | #!/bin/bash | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | if [ -e ${LOGDIR} ]; then | ||
+ | echo " | ||
+ | else | ||
+ | | ||
+ | cd ${LOGDIR} | ||
+ | echo SSM-logger log $NOW > logger.err | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | fi | ||
+ | |||
+ | 最後の行に& | ||
+ | |||
+ | ==== ssm-player | ||
+ | 複数のセンサデータを同時に再生。 | ||
+ | |||
+ | 途中での速度変更や、ポーズ、逆再生もできる。 | ||
+ | $ ssm-player 記録ファイル名1 記録ファイル名2 記録ファイル名3 ... | ||
+ | 基本的には | ||
+ | $ ssm-player ログディレクトリ/ | ||
+ | |||
+ | 注意: | ||
+ | |||
+ | ssm-playerで再生する場合、 | ||
+ | |||
+ | タイムスタンプを参照してSSMに書き出すため、 | ||
+ | |||
+ | URG等に見られるセンサの計測→通信等による取得の時間遅れが0の状態になります。 | ||
+ | |||
+ | そのため、URGのデータの時刻がオドメトリより先に来る場合もあり、 | ||
+ | |||
+ | 実際の動作と異なる場合があります。 | ||
+ | |||
+ | === オプション | ||
+ | | ||
+ | -x | --speed < | ||
+ | -s | --start-time <OFFSET TIME> : ログファイルの途中から再生 | ||
+ | -e | --end-time <OFFSET TIME> | ||
+ | -l | --loop | ||
+ | -S | --start-ssmtime < | ||
+ | -E | --end-ssmtime < | ||
+ | -v | --verbose | ||
+ | -q | --quiet | ||
+ | -h | --help | ||
+ | |||
+ | ex) ログの10秒から20秒の間を2倍速で繰り替えし再生する | ||
+ | $ ssm-player -x 2 -s 10 -e 20 -l *.log | ||
+ | |||
+ | === コマンド | ||
+ | 再生中に変更するときのコマンド。 | ||
+ | |||
+ | そのうち追加するかも。 | ||
+ | |||
+ | 再生中にキーを押してエンターを押すと反映される。 | ||
+ | p | pause : ポーズ | ||
+ | s | start : 再生 | ||
+ | r | reverse | ||
+ | x | speed SPEED : 再生速度をSPEEDに設定 | ||
+ | | skip TIME : 時間をTIME秒進める | ||
+ | q | quit : 終了 | ||
+ | | ||
+ | | ||
+ | > | ||
+ | |||
+ | " | ||
+ | |||
+ | ==== ssm-date | ||
+ | SSM時間を取得・書き込みするソフト。 | ||
+ | |||
+ | 時間の一時停止・速度などをコントロールできる。 | ||
+ | |||
+ | ssm-playerと併用して使用する(というかssm-playerを外部からコントロールするために作ったプログラムです)。 | ||
+ | $ ssm-date -g | ||
+ | |||
+ | === オプション | ||
+ | 代表的なオプションだけを示す。 | ||
+ | |||
+ | 詳しくはhelpを参照 | ||
+ | | ||
+ | -s | --increase-speed | ||
+ | -S | --decrease-speed | ||
+ | -g | --toggle-pause | ||
+ | -G | --toggle-reverse | ||
+ | -I | --init | ||
+ | -h | --help | ||
+ | -H | --long-help | ||
+ | |||
+ | === パネルへの登録 | ||
+ | gnomeパネルなどに登録してくと、パネルをクリックするだけでssm-playerをコントロールできるようになるので便利。 | ||
+ | |||
+ | 登録方法は、 | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | これだけで、追加したアイコンをクリックするだけで | ||
+ | |||
+ | ログの再生・一時停止を切り替えることができます。 | ||
+ | |||
+ | ==== ssm-transporter | ||
+ | 複数PC間でセンサデータを共有するためのソフトウェア。 | ||
+ | |||
+ | 別のPCに接続されているセンサを使えるようになります。 | ||
+ | |||
+ | |||
+ | PCの接続は現在は1対1の通信のみ対応。 | ||
+ | |||
+ | センサは複数転送可能(なはず)です。 | ||
+ | |||
+ | 互いにファイルsend_sensors.server(send_sensor.client)に送りたいセンサの名前とIDを書いて、 | ||
+ | |||
+ | サーバ側は | ||
+ | $ ssm-transporter | ||
+ | クライアント側は | ||
+ | $ ssm-transporter < | ||
+ | で起動する。 | ||
+ | |||
+ | 両方に同じセンサ名が書いてあると大変なことになるかも。 | ||
+ | |||
+ | なお、PC間ではNTP等で時刻同期をとることを推奨します。 | ||
+ | |||
+ | ==== killssm | ||
+ | ssmを使っているプログラム全てに対してシグナルを送る | ||
+ | |||
+ | デフォルトはSIGINT(Ctrl-Cと同じ入力)。 | ||
+ | $ killssm | ||
+ | |||
+ | ==== psssm ==== | ||
+ | ssmを使用しているプログラムを全て表示 | ||
+ | |||
+ | psコマンドのssm版です | ||
+ | $ psssm | ||
+ | |||
+ | ==== topssm | ||
+ | ssmを使用しているプログラムの負荷を表示 | ||
+ | |||
+ | topコマンドのssm版です | ||
+ | |||
+ | ==== ssm-graph | ||
+ | SSMのプロセスのつながり方をDOT言語で出力するプログラムです。 | ||
+ | |||
+ | Graphviz等と組み合わせて使用してください。 | ||
+ | |||
+ | ex) | ||
+ | $ ssm-graph > sample1.dot | ||
+ | $ dot -Tpng sample1.dot -o sample1.png | ||
+ | |||
+ | ex) | ||
+ | $ ssm-graph | dot -Tpng -o sample2.png | ||
+ | | ||
+ | |||
+ | DOT のubuntuでのインストールは、以下のコマンドでできます。 | ||
+ | $ sudo apt-get install graphviz | ||
+ |