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

8 個の投稿 / 0 new
最終投稿
root
オフライン
Last seen: 2時間 6分 前
登録日: 2009-06-23 14:31
[openrtm-users 01590] 開発時の情報源

みなさま

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

皆様はどのような情報源(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/)

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

未定義
root
オフライン
Last seen: 2時間 6分 前
登録日: 2009-06-23 14:31
[openrtm-users 01595] 開発時の情報源

産総研 安藤です

中級以上の人が必要とする情報については、あまりマニュアルが
整っていないので申し訳ないのですが、デベロッパーズガイドの中級編、
応用編も整備していきますのでしばらくお待ちください。

そのほかの情報としては、

・ペーパー
#実験的な内容についてはペーパーで先ずに発表しています。
#ただし、その内容がOpenRTM-aistに取り込まれているとは限りませんが。。。
#実験コードを書いて、データをとってしばらく放置、ということも多々あります。

・クラスリファレンス
#コードを書く際には、C++で書いたものをJavaやPythonに移植する関係上
#一応他の人にも内部の挙動が分かるようなドキュメントを書くようにはしています
#が、すべてをくまなく自然言語で記述するというのは難しいですね。。。

・OMG RTC(またはSDO)の仕様書
#RTCの挙動の大元はOMGの標準で決められているので、実装もそれに
#則っているはずです。もし、違っていたらご指摘ください。
http://www.omg.org/spec/RTC/1.0/
http://www.omg.org/spec/SDO/1.1/

・ソース
#これで得られない情報については、やはりソースをみるしかないですね。
#ただ、publicの関数でも、あえてマニュアルなどに記述していない関数などは
#単に実装上publicになっていて、ユーザは触らない方がいい、とか、
#experimentalな実装なのであまり触ってほしくないとか、そういう事情もあるかもしれません。

> みなさま
>
> 電気通信大学大学院・佐藤と申します.
> お世話になっております.
>
> 皆様はどのような情報源(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さん

root
オフライン
Last seen: 2時間 6分 前
登録日: 2009-06-23 14:31
[openrtm-users 01599] 開発時の情報源

安藤さま,みなさま

電通大院・佐藤です.
お忙しい中にもかかわらず,大変有益な情報・ご提案,誠にありがとうございます.

近いうちに,私のような知識レベル程度の人間が何につまづき,どうやって解決していったのかをま
とめた 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さん
>
>

root
オフライン
Last seen: 2時間 6分 前
登録日: 2009-06-23 14:31
[openrtm-users 01602] 開発時の情報源

> 近いうちに,私のような知識レベル程度の人間が何につまづき,どうやって解決していったのかをま
> とめた webページでも作成できたらと思います.

岡田です.

こういう有益な情報が散逸しないような共通のweb?wiki?blog?ページがあればよいな,
と,よく思います.大学ですと毎年,4月には初心者が何人もいる,という状況ですので,
これをみれば,とりあえず何か出来るよ,というポインタがあると,勧め易くなり,学生も
自ら進んで利用すると思います.

だれでも書き込めるようにしておけば,今回みたいなときに,教えた人,教わった人が
コンテンツを充実してくれるので,3,4年たてば立派なものになるのではないでしょうか.

2011/2/24 Shunji Satoh :
> 安藤さま,みなさま
>
> 電通大院・佐藤です.
> お忙しい中にもかかわらず,大変有益な情報・ご提案,誠にありがとうございます.
>
> 近いうちに,私のような知識レベル程度の人間が何につまづき,どうやって解決していったのかをま
> とめた 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さん
>>
>>
>
>
>

root
オフライン
Last seen: 2時間 6分 前
登録日: 2009-06-23 14:31
[openrtm-users 01603] 開発時の情報源

Willow Garage の大山です。知識共有のためには、アーカイブを検索しにくいMLより、UbuntuのForumhttp://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 <>

> 近いうちに,私のような知識レベル程度の人間が何につまづき,どうやって解決していったのかをま
> とめた webページでも作成できたらと思います.

岡田です.

こういう有益な情報が散逸しないような共通のweb?wiki?blog?ページがあればよいな,
と,よく思います.大学ですと毎年,4月には初心者が何人もいる,という状況ですので,
これをみれば,とりあえず何か出来るよ,というポインタがあると,勧め易くなり,学生も
自ら進んで利用すると思います.

だれでも書き込めるようにしておけば,今回みたいなときに,教えた人,教わった人が
コンテンツを充実してくれるので,3,4年たてば立派なものになるのではないでしょうか.

2011/2/24 Shunji Satoh <>:
> 安藤さま,みなさま
>
> 電通大院・佐藤です.
> お忙しい中にもかかわらず,大変有益な情報・ご提案,誠にありがとうございます.
>
> 近いうちに,私のような知識レベル程度の人間が何につまづき,どうやって解決していったのかをま
> とめた 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さん
>>
>>
>
>
>

root
オフライン
Last seen: 2時間 6分 前
登録日: 2009-06-23 14:31
[openrtm-users 01614] 開発時の情報源

岡田先生、大山様

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

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

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

2011年2月24日21:15 Aki Oyama :
> 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
>>
>> > 近いうちに,私のような知識レベル程度の人間が何につまづき,どうやって解決していったのかをま
>> > とめた webページでも作成できたらと思います.
>>
>> 岡田です.
>>
>> こういう有益な情報が散逸しないような共通のweb?wiki?blog?ページがあればよいな,
>> と,よく思います.大学ですと毎年,4月には初心者が何人もいる,という状況ですので,
>> これをみれば,とりあえず何か出来るよ,というポインタがあると,勧め易くなり,学生も
>> 自ら進んで利用すると思います.
>>
>> だれでも書き込めるようにしておけば,今回みたいなときに,教えた人,教わった人が
>> コンテンツを充実してくれるので,3,4年たてば立派なものになるのではないでしょうか.
>>
>>
>> 2011/2/24 Shunji Satoh :
>> > 安藤さま,みなさま
>> >
>> > 電通大院・佐藤です.
>> > お忙しい中にもかかわらず,大変有益な情報・ご提案,誠にありがとうございます.
>> >
>> > 近いうちに,私のような知識レベル程度の人間が何につまづき,どうやって解決していったのかをま
>> > とめた 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さん
>> >>
>> >>
>> >
>> >
>> >
>>
>
>

root
オフライン
Last seen: 2時間 6分 前
登録日: 2009-06-23 14:31
[openrtm-users 01596] 開発時の情報源

産総研の高瀬です。

> モノシリックな画像処理プログラムを c や c++ で書いてきましたが,
> OpenRTM のようなプログラムの開発は初めてです.

OpenRTMのプログラミングというより予備知識的なものになりますが、
メッセージ通信とその有用性について、次の書籍にやさしい解説があります。

Andrew S. Tanenbaum. オペレーティングシステム 第3版 設計と実装. ピアソンエデュケーション, 2007.

また次の本に、その昔、なぜマルチプログラミングが必要とされたのか、
逐次プログラミングから並行プログラミングが発展した歴史的な経緯、
生み出された技術、デッカーのアルゴリズム、セマフォ、モニタ(条件変数)、
ランデブ(バッファなしメッセージ通信)についての順を追った解説があります。

Mordechai Ben-Ari. 並行プログラミングの原理. 啓学出版, 1986.

残念ながらこちらは絶版なので、大学図書館や古書などで探してください。

Web上の情報の他に書籍を参考にされると良いと思います。
特に条件変数のようなインターネットの普及前に生まれた技術であれば。

(余談ですが「モノシリック」ではなく「モノリシック (Monolithic)」です)

以上、よろしくお願いします。
-------------------------------------------------------
Ryuichi Takase

root
オフライン
Last seen: 2時間 6分 前
登録日: 2009-06-23 14:31
[openrtm-users 01600] 開発時の情報源

高瀬さま

電通大院・佐藤と申します.

> OpenRTMのプログラミングというより予備知識的なものになりますが、
> メッセージ通信とその有用性について、次の書籍にやさしい解説があります。
>
> Andrew S. Tanenbaum. オペレーティングシステム 第3版 設計と実装. ピアソンエデュケーション, 2007.

何を予備的知識として勉強してよいかわからないのが,(私にとって)諸問題の原因でしたので大変
助かります.下記,Ben-Ari の本とも併せて勉強していきます.

高瀬さんに教えていただきたキーワード(セマフォ・モニタなど)はこれを知らなかった私にとって
は,とても重要な情報です.ありがとうございます.

> (余談ですが「モノシリック」ではなく「モノリシック (Monolithic)」です)

これは恥ずかしい.趣味レーションみたいですね.指摘くださる方は本当にありがたいです.

取り急ぎ御礼まで.

以上です.

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

ダウンロード

最新バージョン : 2.0.1-RELESE

統計

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

Choreonoid

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

OpenHRP3

動力学シミュレータ

OpenRTP

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

産総研RTC集

産総研が提供するRTC集

TORK

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

DAQ-Middleware

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