忍者ブログ
ロボット、千葉ロッテマリーンズについていいかげんなことを書きます。
[12]  [13]  [14]  [15]  [16]  [17]  [18]  [19]  [20]  [21]  [22
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

以前紹介したインストール簡易化ツールも配布することにしました。
ここからダウンロードできます。





どうやら既存のツールがあるらしいのですが、2011年以降更新されていなさそうな事と僕の環境で動作できなかったので別のツールを作成する事にしました。
OSの問題かなあ?当時はWindows 8はなかっただろうし動作できないのかもしれません。
どうやらあっちにはアップデート検出機能と依存関係の自動解決機能があるらしいので実質的に上位互換のような気もします。どうやって依存関係の自動解決なんてやっているのでしょうね?





後、例のツールの一部のPythonのプログラムをEXEに固めたのでlxml、wasanbonのインストールは不要になりました。おかげでGPL感染してしまったのが残念ですが、これで多少使いやすくなったかもしれません。
どちらにせよ、OpenRTM-aist-Python、rtctree、rtshell、rtsprofile、Pythonのインストールは必須なのでインストール簡易化ツールでインストールしてください。



RTCをリストから選択して起動する機能は最初からインストールされているRTCが多ければ面白いかもしれませんが、まだそろっていないのであまり役に立ちそうにないです。
とりあえずいままで作ったRTCを同梱するようにはしてみます。
今のところ40種類ぐらいのRTCを同梱するつもりです。


ただRTC.xmlは誰も読まないだろうと思って適当に作ってきたので、説明文等を追加している所です。

まあwasanbonがRTC.xmlを使うみたいなので、RTC.xmlを使う機会も増えているかもしれないです。
もはやマニュアルを読ませることでRTCの機能を理解させるというやり方は古くなりつつあると思います。
RTC.xmlに詳細を記述してなんらかのツールで表示させる、そして必要ならばツールでRTCを起動するというのが主流のやり方になると思うのでRTC.xmlは入念に編集するようにしてください。




それからRTCの数が多くなるとリストから選ぶのが面倒になりそうなのでカテゴリ名でさらに分けました。正直なところカテゴリ名はいままで適当に付けてきたのですが、これからはちゃんとした名前を付けようと思います。

カテゴリ名を付けるにもある程度ルールがあった方が良いかもしれません。
OpenRTM-aistのサンプルのカテゴリ名はexampleに設定されていますが、OpenCVのRTCのサンプルはCategoryとなっているので、明確なルールはないのかもしれないです。

ただOpenRTM-aistのサイトにプロジェクトを作成するときに以下の一覧からカテゴリ名を選択する事ができます。

actuator device
arm
control
detection
filter
logger
logic
manipulator
real-time
recorder
signal processing
neural network
soft-computing
switching
viewer
image processing
input device
mobile platform
mobile robot navigation
primitive device
sensor device
speech processing


とりあえずこの中からRTCのカテゴリ名を選択するようにすればいいのじゃないかなあ?







にほんブログ村 科学ブログ ロボットへ
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・

人気ブログランキングへ
PR
例のツールにRTCをリストから選択して起動できる機能を追加しました。



一応使うまでの手順を説明します。
まず、マニュアル通りにツールを起動します。
WindowsではここからツールをダウンロードしてSettingRTSystem.batをダブルクリックすると起動します。

あとlxmlをインストールしていないと動作できなくなったのでインストールしてください。
GUI部分だけEXEにしてますけど、他もEXEにしておいた方が良かったかもしれないです。


次にFIle→Newを選択してプロジェクトを新規作成します。





すると以前とは違ってRTCのリストタブが追加されていることが分かります。

リストに登録されているRTCはComponentsと言うフォルダに入っています。
自動的に各RTCのフォルダからRTC.xmlを検索して情報を表示するようにしています。




ただこの状態ではまだRTCの起動はできません。
まずは、RTCDタブを選択してrtcd起動ボタンを押すことでrtcdを起動してください。






そしてRTCのリストタブを選択して適当なRTCを起動してみてください。

rtcdで起動ボタンを押すと、DLLやPythonファイルを自動検索して先ほど起動したrtcdでRTCを起動します。

また別プロセスで起動ボタンを押すと実行ファイル、Pythonファイルを検索して別プロセスで起動します。

なので自作のRTCをリストに表示するためにはRTC.xml、DLL、実行ファイル(Python版ではPythonファイル)を入れたフォルダをComponentsフォルダに置いておけば良いという事です。
別プロセスでしか起動できない時はDLLの同梱はしなくても構いません。




詳細ボタンを押すとより詳しい情報が表示されます。



コンフィギュレーションパラメータの情報を知りたい場合はコンフィギュレーションパラメータ表示ボタンを押してください。




データポート、サービスポートの詳細な情報を知りたい場合は表示されているRTCのデータポート、サービスポートをダブルクリックしてください。









プロジェクトを保存すればどのRTCを起動したかも保存されます。

後は以前と変わった部分はないのでマニュアルを参照してください。














・・・・それでスプラッシュスクリーンの画像も作りました。
あまりに意味不明な絵になったので表示させるかどうか悩んだのですが、一応起動時に表示させるようにしてあります。










描いた絵がこれです。





  




なんですかね、これは?
感性のままに描いていたらいつのまにかこんな事になっていました。


言い訳させてもらうと、まずロボットを描こうと思ったわけですよ。
ただ普通に描いたら面白くないなと思っていたので色々考えてみました。

最近までジョジョのアニメを視ていたわけですが、ヴァニラアイスみたいに口から出てきたらどうだろうという謎の発想にたどり着きました。

どうせならロボットを少し壊しておいた方が迫力がでるかと思って頭を半壊させました。
そして両腕を描くのが面倒なので片腕を破壊しました。

口から血が出てた方が迫力があるかと思いましたが、気分を害する人がいるかもしれないのでやめておきました。涎ぐらいはたらしておいても良かったかもしれないです。


そして何故かロボットが襞襟を付けていますが、これは描いていく途中で首付近が襞襟っぽくなったので描いてしまいました。




まあ別にスプラッシュスクリーンを注視する人なんてそうそういないだろうし、別にこれでもいいです。












にほんブログ村 科学ブログ ロボットへ
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・

人気ブログランキングへ
例のツールにRTCをリストから選択して起動する機能を追加している所ですが、ファイル保存、復元機能を実装できたので後はスプラッシュスクリーンの絵を描くだけです。

と言うわけで今はデザインを考えているところです。


そういえばPython版OpenRTM-aistのComponentActionListenerの動作の件ですが、どうやら仕様ではなかったみたいです。

あまり頻繁に使う機能ではないので今まで見つかることがなかったのかもしれないです。

そもそも僕の認識としてはクラス変数やグローバル変数のようなどこからでも操作できる変数は極力使うべきでないと思っています。
現にクラス変数を多用したおかげでこういうミスが起こったので、やはり考え方として間違ってなかったようです。


でも一体いつ修正されたバージョンがリリースされるのでしょうね?
1.1.0がリリースされたばかりなので相当先だとは思いますが。





にほんブログ村 科学ブログ ロボットへ
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・

人気ブログランキングへ
例のツールにRTCをリストから選択して起動する機能を追加している所ですが、後は起動したRTCの情報のファイルに保存・復元する機能を実装して、スプラッシュスクリーンの絵を描けば完成です。
まあ後者は別に必須ではないのですが、あった方がかっこいいので描きます。





実装する過程でRTCが終了したかどうか調べるためにComponentActionListenerを使用したのですが、PythonのRTCで謎の怪現象が起こりました。

まず複数のRTCを起動してそれぞれでComponentActionListenerを追加します。
ここではとりあえずPOST_ON_FINALIZE(RTC終了直後)にリスナを設定します。

つまり各RTCに以下のコードを追加します。


self.addPostComponentActionListener(OpenRTM_aist.PostComponentActionListenerType.POST_ON_FINALIZE, 関数)


そしてどれか1つのRTCを終了させると、通常はそのRTCで設定したリスナのみがコールされるはずですが、何故か起動した全てのRTCで設定したリスナが呼び出されてしまいます。


おそらくですが、ComponentActionListener.pyのクラスComponentActionListenersのpreaction_とかportaction_がクラス変数なのが原因だと思います。なんでインスタンス変数にしなかったのでしょうね?
何らかの理由があってこうなっているとは思うのですが、全く想像がつきません。
それどころかComponentActionListener機能を破綻させているのでかなりまずいと思います。

でも意図的にこういう動作にするようにしているとしか思えないしなあ。
だれかメーリングリストで訊いてください。










にほんブログ村 科学ブログ ロボットへ
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・

人気ブログランキングへ
この前のNEDO特別講座のスライドを見ていたのですが、なんでもRTミドルウェア入門書が出版されるみたいですね。

これは楽しみです。内容はどうであっても買うと思います。
以前発売されていた「はじめてのコンポーネント指向ロボットアプリケーション開発 ~RTミドルウェア超入門~」はなかなか面白い内容だったので期待できそうです。
RTM本が発売されるのは7年ぶりなので楽しみですね。
なんだか5~6年ぐらい前にもRTM本が出ていたような気がしますが、多分気のせいだと思います。

ロッテネタで悪いけど、角中が福浦以来首位打者って言われるみたいな扱いだなあ。

あの本はUMLの本だと思えば悪くないのですが、RTMの内容が申し訳程度にしかないのがまずいですね。

てーきゅうのテニス要素ぐらいしかありません。

なんだか今日は変な例えが多いですが、今日はそんな気分なので仕方ないです。









例のツールにRTCをリストから選択して起動する機能を追加しました。






まあまだ手元にあるプログラムで追加できただけで配布はしていないのですけどね。

というかRTシステムエディタにこういう機能があれば劇的に使いやすくなっていたのではないかと思います。





















にほんブログ村 科学ブログ ロボットへ
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・

人気ブログランキングへ
カレンダー
04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
フリーエリア
最新CM
[08/31 ysuga]
[08/31 Nobu]
[08/31 ysuga]
[12/11 Nobu]
[12/11 Kanamura]
最新TB
プロフィール
HN:
Nobu
年齢:
35
性別:
男性
誕生日:
1988/09/22
職業:
あれ
趣味:
妄想、自堕落
バーコード
ブログ内検索
P R
カウンター
忍者ブログ [PR]