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

3 posts / 0 new
Last post
root
Offline
Last seen: 3 days 20 hours ago
Joined: 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
に直したものなど、何かご推奨の形式はありますでしょうか。

Undefined
root
Offline
Last seen: 3 days 20 hours ago
Joined: 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
Offline
Last seen: 3 days 20 hours ago
Joined: 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がリングバッファになっていることから、古いデータ
は自動的に新しいデータで上書きされると思いますので、必ずしも上記の
掃除は必要ないかもしれません。

Log in or register to post comments

Download

latest Releases : 2.0.0-RELESE

2.0.0-RELESE Download page

Number of Projects

Choreonoid

Motion editor/Dynamics simulator

OpenHRP3

Dynamics simulator

OpenRTP

Integrated Development Platform

AIST RTC collection

RT-Components collection by AIST

TORK

Tokyo Opensource Robotics Association

DAQ-Middleware

Middleware for DAQ (Data Aquisition) by KEK