[openrtm-users 01590] 開発時の情報源

Shunji Satoh shun @ is.uec.ac.jp
2011年 2月 22日 (火) 19:17:05 JST


みなさま

電気通信大学大学院・佐藤と申します.
お世話になっております.

皆様はどのような情報源(web,本など)から,開発に必要な情報を得ているのかを教えていただけ
ませんでしょうか.

私がやりたいことは,動画像処理をモジュール化して多段接続し,全体をシミュレーションすること
です.リアルタイム性は求めていません.これまでは,モノシリックな画像処理プログラムを c や
c++ で書いてきましたが,OpenRTM のようなプログラムの開発は初めてです.
# CORBA の存在は, OpenRTM を勉強している最中に先週知った程度の知識レベルです.

まずは自分でいろいろ試してみたく,
http://www.openrtm.org/openrtm/ja/content/%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88
や,そのほか検索してヒットした web ページを見て勉強していました.「全部入り」やわかりやす
いサンプル,ウェブページ情報も初学者にとっては大変助かりました.

また,大学図書館に「長瀬他:はじめてのコンポーネント指向ロボットアプリケーション開発,毎日
コミュニケーションズ」がありましたので,これを読みながら手を動かしている最中です.
# 残念ながら絶版のようです.


しかし,具体的な開発をしようとした場合(私にとってですが)分からないことも多々あります.ま
ず,目的を達成するためには ExtTrigExecutionContext が必要だと気付くのに,一昼夜かかりまし
た(私の調べ方が悪いのだとおもいますが.ただ,見つけた時は小躍りしました.)
次に,svc() と tick() の違いがわかりませんでした.そこで,ExtTrigExecutionContext::tick()
は具体的に何を実行するのかを調べるために,ソースコードを見てみました.
----
  /*!
   * @if jp
   * @brief 処理を1ステップ進める
   * @else
   * @brief Move forward one step of ExecutionContext
   * @endif
   */
  void ExtTrigExecutionContext::tick()
    throw (CORBA::SystemException)

    RTC_TRACE(("tick()"));
    m_worker._mutex.lock();
    m_worker._called = true;
    m_worker._cond.signal();
    m_worker._mutex.unlock();
    return;
  }
---
RTC_TRACE はマクロであり,ログ出力をしているのだと思います.
どうやら m_worker がキーワードなのだと思いましたので,ヘッダを見ると Worker は構造体
で,Mutex _mutex,Condition _cond, bool _called のメンバを持っています.

_mutex.lock() はどうやら排他処理をしているらしいことがわかりました.
_called = true は tick() が呼ばれたことを示すフラグかと推測しました.
_cond.signal() は pthread_cond_signal(&m_cond) を呼び出し,m_cond は coil::pthread_cond_t
m_cond; は構造体....

と調べていくうちに「こ,これは無理だ・・・」と思った次第です.しかし,検索した web ページ
を見ていると,みなさんどんどんプログラムを書かれているので,「もしかしたら他に情報源がある
のではないだろうか?」と子供じみた考えに至っています.
(例えば http://rbintelligence.blog.shinobi.jp/)

以上,よろしくお願いいたします.



openrtm-users メーリングリストの案内