[openrtm-users 01614] Re: 開発時の情報源

Ando Noriaki n-ando @ aist.go.jp
2011年 2月 25日 (金) 15:35:36 JST


岡田先生、大山様

ご意見、情報ありがとうございます。
ただいま、OpenRTM.org上にメーリングリストとフォーラムを連携させたものを
構築しているところです。外部に頼んで作業しているのですが、少々難航しておりまして
できれば今年度中には立ち上げたいと思っているのですが、
こちらの情報についても参考にさせていただきます。

あと、その際にはwikiも立ち上げますのでよろしくお願いいたします。

ありがとうございました。


2011年2月24日21:15 Aki Oyama <oyama @ willowgarage.com>:
> Willow Garage の大山です。
>
> 知識共有のためには、アーカイブを検索しにくいMLより、
> UbuntuのForum
> http://ubuntuforums.org/index.php
> みたいなもののほうが、
> Error Message とUbuntuでGoogle検索すると、
> 大体、良い答えがヒットしていたので、いいなと思っていましたが、
> つい最近、ROS.orgで使い始めたAskbot (PythonとDjango上のオープンソース)
> http://askbot.org/en/about/
> は、非常にユーザーインターフェースが、
> 現代風で、初心者にとってもなじみやすいのではと感じました。
> http://answers.ros.org/questions/
>
> ご参考まで。
>  askbotの日本語化は、まだ、21%のようです。
>
> 2011/2/24 Kei Okada <k-okada @ jsk.t.u-tokyo.ac.jp>
>>
>> > 近いうちに,私のような知識レベル程度の人間が何につまづき,どうやって解決していったのかをま
>> > とめた webページでも作成できたらと思います.
>>
>> 岡田です.
>>
>> こういう有益な情報が散逸しないような共通のweb?wiki?blog?ページがあればよいな,
>> と,よく思います.大学ですと毎年,4月には初心者が何人もいる,という状況ですので,
>> これをみれば,とりあえず何か出来るよ,というポインタがあると,勧め易くなり,学生も
>> 自ら進んで利用すると思います.
>>
>> だれでも書き込めるようにしておけば,今回みたいなときに,教えた人,教わった人が
>> コンテンツを充実してくれるので,3,4年たてば立派なものになるのではないでしょうか.
>>
>>
>> 2011/2/24 Shunji Satoh <shun @ is.uec.ac.jp>:
>> > 安藤さま,みなさま
>> >
>> > 電通大院・佐藤です.
>> > お忙しい中にもかかわらず,大変有益な情報・ご提案,誠にありがとうございます.
>> >
>> > 近いうちに,私のような知識レベル程度の人間が何につまづき,どうやって解決していったのかをま
>> > とめた webページでも作成できたらと思います.
>> >
>> >> デベロッパーズガイドの中級編、
>> >> 応用編も整備していきますのでしばらくお待ちください。
>> >
>> > とても期待しています.それまでについていけるようにしたいです.
>> >
>> >> ・ペーパー
>> >
>> > いくつかペーパーを斜め読みしましたが,記載されているサンプルコードだけでは,理解できない場
>> > 合もありました.論文なので仕方ありませんが.
>> >
>> >
>> >> ・クラスリファレンス
>> >> #コードを書く際には、C++で書いたものをJavaやPythonに移植する関係上
>> >> #一応他の人にも内部の挙動が分かるようなドキュメントを書くようにはしています
>> >> #が、すべてをくまなく自然言語で記述するというのは難しいですね。。。
>> >
>> > おそらく,専門の方にとっては必要十分なのだと予測しています.が,私のような専門外の人間にも
>> > 対応させる必要は「ない」と,私自身思っています.例えば,安藤さんには下で「pthread 関係の勉
>> > 強をするように」と教えていただきましたが,この suggestion で理解を加速できそうです.
>> > まさに知りたかった情報の一部です.(要は,何が前提知識なのかわからないということです)
>> >
>> >> ・OMG RTC(またはSDO)の仕様書
>> >> #RTCの挙動の大元はOMGの標準で決められているので、実装もそれに
>> >> #則っているはずです。もし、違っていたらご指摘ください。
>> >> http://www.omg.org/spec/RTC/1.0/
>> >> http://www.omg.org/spec/SDO/1.1/
>> >
>> > まだ RTC の section5.3 の斜め読みしかしていませんがとても参考になります.section 5.3 あた
>> > りは私にとってとても参考になりました(脚注も興味深いです).
>> >
>> >> ・ソース
>> >
>> > C++ が元になっていると教えてくださったので,まずは C++ のソースを読んでみます.Python コー
>> > ドは全体を書いてくださっているので,C++ のソースと並べて読むとよくわかる場合があります.
>> >
>> > いずれにせよ,有益な情報,誠にありがとうございます.
>> >
>> > 以上です.
>> >
>> >
>> >
>> >>
>> >>
>> >>> みなさま
>> >>>
>> >>> 電気通信大学大学院・佐藤と申します.
>> >>> お世話になっております.
>> >>>
>> >>> 皆様はどのような情報源(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; は構造体....
>> >>
>> >> ちなみに、これは条件変数の典型的な使い方なので、スレッド関係の本とか
>> >> みてもらった方がいいと思います。
>> >>
>> >> たとえば、2つのスレッドがあって、それぞれ以下のようなものだとします。
>> >>
>> >> スレッド1:ある変数が(仮に)trueになるまで待ち、trueになったら処理を開始
>> >> 場合によっては処理後にまた待ちに入る
>> >> スレッド2:ある変数をtrueに変更してスレッド1の実行を再開(シグナルを送る)させるスレッド
>> >>
>> >> このとき、単純にbool変数を用意してスレッド1をループさせて変数を見張ると、
>> >> 1.ループ周期が早いと、スレッド2からのシグナルをすぐに受けっとって処理を
>> >> 再開できるが、CPU時間を消費しすぎる。
>> >> 2.ループ周期が遅いと、CPU時間の消費を抑えられるかもしれないが、
>> >> スレッド2から来たシグナル受け取ってすぐに処理を再開できる
>> >>
>> >> といった解決方法があると思います。
>> >>
>> >> 条件変数は、これを解決するもので、スレッド1を待ち状態にして、
>> >> スレッド2からそれを起こすことができます。条件変数の使用自体は
>> >> 書き方にパターンがあって、分かればそれほど難しくありません。
>> >>
>> >> 詳しくは、pthreadやJavaのスレッド関係の本、Webなどを見てみてください。
>> >>
>> >>> と調べていくうちに「こ,これは無理だ・・・」と思った次第です.しかし,検索した web ページ
>> >>> を見ていると,みなさんどんどんプログラムを書かれているので,「もしかしたら他に情報源がある
>> >>> のではないだろうか?」と子供じみた考えに至っています.
>> >>> (例えば http://rbintelligence.blog.shinobi.jp/)
>> >>
>> >> この、Nobuさんのページの記事に、RTM関連の情報が載っている
>> >> リンク集の記事が出ていましたね。
>> >> http://rbintelligence.blog.shinobi.jp/Date/20110223/
>> >>
>> >> Web上の情報に関しては、ほぼこれで網羅されているのではないでしょうか?
>> >> ありがとうございます。>Nobuさん
>> >>
>> >>
>> >
>> >
>> >
>>
>
>



-- 
安藤慶昭@独立行政法人産業技術総合研究所 知能システム研究部門
    統合知能研究グループ 主任研究員, 博士(工学)
    〒305-8568 つくば市梅園1-1-1 中央第2
    e-mail: n-ando @ aist.go.jp, web: http://staff.aist.go.jp/n-ando
    OpenRTM-aist: http://www.openrtm.org

Noriaki Ando, Ph.D.
    Senior Research Scientist, RT-Synthesis R.G., ISRI, AIST
    AIST Tsukuba Central 2, Tsukuba, Ibaraki 305-8568 JAPAN
    e-mail: n-ando @ aist.go.jp, web: http://staff.aist.go.jp/n-ando
    OpenRTM-aist: http://www.openrtm.org



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