[openrtm-users 00046] タイムスタンプの扱いについて

3 個の投稿 / 0 new
最終投稿
root
オフライン
Last seen: 1日 10時間 前
登録日: 2009-06-23 14:31
[openrtm-users 00046] タイムスタンプの扱いについて

いつも御世話になります。宇田@NECシステムテクノロジーです

OpenRTMコンポーネントのタイムスタンプの扱いについて教えて下さい。

InPort/OutPortの型としてタイムスタンプ付きのデータ型が定義されて
いるかと思いますが、このタイムスタンプの付け方について、RTMとして
何か統一的な取り決めはありますでしょうか?

例えばタイムスタンプの意味としては、

(1) データの生成時刻
(2) OutPortからの送出時刻
(3) データの有効期限

などが考えられますが、基本的には(1)と考えてよろしいでしょうか。

またRTMBase.idlには

struct Time

{

unsigned long sec; // sec

unsigned long nsec; // nano sec

};

と定義されていますが、これは例えばUTC(協定世界時)をsec:nsec
に直したものなど、何かご推奨の形式はありますでしょうか。

未定義
root
オフライン
Last seen: 1日 10時間 前
登録日: 2009-06-23 14:31
[openrtm-users 00047] タイムスタンプの扱いについて

宇田様

安藤@産総研です

御世話になります。

> OpenRTMコンポーネントのタイムスタンプの扱いについて教えて下さい。
>
> InPort/OutPortの型としてタイムスタンプ付きのデータ型が定義されて
> いるかと思いますが、このタイムスタンプの付け方について、RTMとして
> 何か統一的な取り決めはありますでしょうか?
>
> 例えばタイムスタンプの意味としては、
>
> (1) データの生成時刻
> (2) OutPortからの送出時刻
> (3) データの有効期限
>
> などが考えられますが、基本的には(1)と考えてよろしいでしょうか。

はい、基本的に(1)でよろしいと思います。
もう少し詳しく言いますと、OutPortAny の write() メソッドが呼ばれた
時刻が自動的に代入されます。

>
> またRTMBase.idlには
>
> struct Time
>
> {
>
> unsigned long sec; // sec
>
> unsigned long nsec; // nano sec
>
> };
>
>
> と定義されていますが、これは例えばUTC(協定世界時)をsec:nsec
> に直したものなど、何かご推奨の形式はありますでしょうか。

これは、clock_gettime(2) で取得した値が上記のタイミングで自動的に代入されます。

この辺はガイドでもあまり詳しく述べていませんでしたね。
次バージョンでは詳細に記述したいと思います。

タイムスタンプはどのようにお使いでしょうか?
もしよろしければどのように使っているかお教えくださいませんか?

root
オフライン
Last seen: 1日 10時間 前
登録日: 2009-06-23 14:31
[openrtm-users 00048] タイムスタンプの扱いについて

いつも御世話になります。宇田@NECシステムテクノロジーです

ご回答ありがとうございます。

> 宇田様
>
> 安藤@産総研です
>
> 御世話になります。
>
> > OpenRTMコンポーネントのタイムスタンプの扱いについて教えて下さい。
> >
> > InPort/OutPortの型としてタイムスタンプ付きのデータ型が定義されて
> > いるかと思いますが、このタイムスタンプの付け方について、RTMとして
> > 何か統一的な取り決めはありますでしょうか?
> >
> > 例えばタイムスタンプの意味としては、
> >
> > (1) データの生成時刻
> > (2) OutPortからの送出時刻
> > (3) データの有効期限
> >
> > などが考えられますが、基本的には(1)と考えてよろしいでしょうか。
>
> はい、基本的に(1)でよろしいと思います。
> もう少し詳しく言いますと、OutPortAny の write() メソッドが呼ばれた
> 時刻が自動的に代入されます。

了解致しました。タイムスタンプを自前で設定する必要があるのかと
思いまして、質問させて頂いた次第です。

> > またRTMBase.idlには
> >
> > struct Time
> >
> > {
> >
> > unsigned long sec; // sec
> >
> > unsigned long nsec; // nano sec
> >
> > };
> >
> >
> > と定義されていますが、これは例えばUTC(協定世界時)をsec:nsec
> > に直したものなど、何かご推奨の形式はありますでしょうか。
>
> これは、clock_gettime(2) で取得した値が上記のタイミングで自動的に代入されます。
>
> この辺はガイドでもあまり詳しく述べていませんでしたね。
> 次バージョンでは詳細に記述したいと思います。

ありがとうございます。そうして頂けるととても助かります。

> タイムスタンプはどのようにお使いでしょうか?
> もしよろしければどのように使っているかお教えくださいませんか?

RTMでは(設定するだけで)使うことは特に想定していなかったのですが、
例えばイベントドリブンで駆動するロボットシステムの場合、イベントの
タイムスタンプからその鮮度を判定して、あまり古いイベントは定期的に
イベントキューから除去するといった使い方があるかと思います。

無論、アプリケーションが待ち合わせに使っているイベントは勝手に掃除
するとフリーズの原因になりますので、選択的に掃除できるしくみが必要
になるとは思いますが。

RTMの場合はInPortがリングバッファになっていることから、古いデータ
は自動的に新しいデータで上書きされると思いますので、必ずしも上記の
掃除は必要ないかもしれません。

コメントを投稿するにはログインまたはユーザー登録を行ってください

ダウンロード

最新バージョン : 2.0.1-RELESE

統計

Webサイト統計
ユーザ数:2209
プロジェクト統計
RTコンポーネント307
RTミドルウエア35
ツール22
文書・仕様書2

Choreonoid

モーションエディタ/シミュレータ

OpenHRP3

動力学シミュレータ

OpenRTP

統合開発プラットフォーム

産総研RTC集

産総研が提供するRTC集

TORK

東京オープンソースロボティクス協会

DAQ-Middleware

ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク