ロボット、千葉ロッテマリーンズについていいかげんなことを書きます。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
てっきりOpenRTM-aist-1.1.1でCameraImage型はImg.idlのTimedCameraImage型に変更するものと思っていましたがそのままでした。
OpenCVのサンプルもそのままです。
OpenRTM-aist/1.1/rtm/idlフォルダにもImg.idlは入っていません。
ここに1.1.1から正式採用と書いているのですが、一体何があったのでしょうね?
独自データ型を使うのは地味に面倒なので、多分ですがこれから開発されるRTCのほとんどでInterfaceDataTypes.idlのCameraImage型が使われると思います。
言い方は悪いですが、過去に開発されたRTCを切り捨てるのであれば早い方が良いとは思います。
そういえばrtcdで同一プロセスで起動したRTC同士の通信する場合に直接変数に書き込むことができるようになるらしいです。
RTCを細分化しすぎると通信のオーバーヘッドが問題になるわけですが、これで問題はなくなりそうですね。rtcdや複合コンポーネントがもう少し使いやすくなればですけど。
今の所rtcdでRTCを起動するように設定ファイルを書くのは簡単ではないわけで、rtcdで起動したRTC同士の通信が高速化してもあまりありがたみは感じないかもしれません。
その作業を簡単にするツールは作ったのですが、本当に簡単になっているかどうかも怪しいです。
あまり書くこともなかったので作成したRTシステムを他の環境で実行してもらう際の注意点を書きたいと思います。
僕がほかの人のRTシステムを試してみようと思った時ですが、こういう事がありました。
ビルドができない
→ビルドはできるようになったものの、10個以上のRTCをビルドするのは面倒なので諦める
→→実行ファイルが付属したもののDLLが足りず実行できず、あと何故かデバッグビルドしていた
未だに僕の環境では動作できてません。
なんだか何回か悪い例として紹介してるなあ。
そもそも必要なDLLを付属させないにも関わらず実行ファイルを付属させるのが間違いで、OpenRTM-aistのバージョン、対応するVSのバージョン、32bitか64bitかで何種類も違う環境が存在するので動作できないと思った方が良いです。
ライセンスを気にするのであればこちらでビルドするようにすれば良いのですが、複数のRTCをまとめてビルドするようなスクリプトでも作らない限り使ってはもらえません。
あと、他の人の開発したRTシステムでさらに別の人のRTCを使っているものがあったわけですが、これも動作できませんでした。
何が問題かと言うと自作のRTCはOpenRTM-aist-1.1.0でビルドしていて、別の人の作成したRTCはOpenRTM-aist-1.0.0でビルドしていたので、わざわざ1.0.0のdllを入手してくる必要があったみたいです。さすがに面倒くさいので動作させるのは諦めました。当時はOpenRTM-aist-1.1.0をインストールしていたので、こちらのdllは問題になりませんでした。
マニュアルに一言OpenRTM-aist-1.0.0のdllが必要だと書いてくれたら良かったのに、別の人のRTCのマニュアルに丸投げしていたのが不味かったと思います。
2つのバージョンのOpenRTM-aistのインストールが必要なんて普通は考えません。
それに2つ以上のOpenRTM-aistをインストールするとCMakeでプロジェクトを生成する時に問題が出てくるみたいだからなあ。
あの不具合はRTM_ROOTで指定されたOpenRTM-aistのバージョンとOMNI_ROOTで指定されたOpenRTM-aistのバージョンが違うせいだと思っていたのですが、ひょっとしたらRTM_ROOTで指定されたOpenRTM-aistと違うバージョンからOpenRTMConfig.cmakeが検索されるせいだったかもしれないです。面倒くさいので検証はしませんけど。
そもそも公式サイトに異なるバージョンのOpenRTM-aistのインストールは非推奨と書いてあるので、ユーザーに異なるバージョンのOpenRTM-aistをインストールを強いる時点でかなりの失態を犯していると言っても過言ではないです。
インストーラーから抽出して使えとでも言っているのでしょうか?
まあ元はと言えばその別の人が作成したRTCが実行ファイルのみの付属、さらにはソースコードを付属していないのが原因ではあるのですけど、ライセンスの問題もあったのかもしれないです。
どっかからdllだけ入手できればそれでも良かったのだけどなあ。
OpenCVのサンプルもそのままです。
OpenRTM-aist/1.1/rtm/idlフォルダにもImg.idlは入っていません。
ここに1.1.1から正式採用と書いているのですが、一体何があったのでしょうね?
独自データ型を使うのは地味に面倒なので、多分ですがこれから開発されるRTCのほとんどでInterfaceDataTypes.idlのCameraImage型が使われると思います。
言い方は悪いですが、過去に開発されたRTCを切り捨てるのであれば早い方が良いとは思います。
そういえばrtcdで同一プロセスで起動したRTC同士の通信する場合に直接変数に書き込むことができるようになるらしいです。
RTCを細分化しすぎると通信のオーバーヘッドが問題になるわけですが、これで問題はなくなりそうですね。rtcdや複合コンポーネントがもう少し使いやすくなればですけど。
今の所rtcdでRTCを起動するように設定ファイルを書くのは簡単ではないわけで、rtcdで起動したRTC同士の通信が高速化してもあまりありがたみは感じないかもしれません。
その作業を簡単にするツールは作ったのですが、本当に簡単になっているかどうかも怪しいです。
あまり書くこともなかったので作成したRTシステムを他の環境で実行してもらう際の注意点を書きたいと思います。
僕がほかの人のRTシステムを試してみようと思った時ですが、こういう事がありました。
ビルドができない
→ビルドはできるようになったものの、10個以上のRTCをビルドするのは面倒なので諦める
→→実行ファイルが付属したもののDLLが足りず実行できず、あと何故かデバッグビルドしていた
未だに僕の環境では動作できてません。
なんだか何回か悪い例として紹介してるなあ。
そもそも必要なDLLを付属させないにも関わらず実行ファイルを付属させるのが間違いで、OpenRTM-aistのバージョン、対応するVSのバージョン、32bitか64bitかで何種類も違う環境が存在するので動作できないと思った方が良いです。
ライセンスを気にするのであればこちらでビルドするようにすれば良いのですが、複数のRTCをまとめてビルドするようなスクリプトでも作らない限り使ってはもらえません。
あと、他の人の開発したRTシステムでさらに別の人のRTCを使っているものがあったわけですが、これも動作できませんでした。
何が問題かと言うと自作のRTCはOpenRTM-aist-1.1.0でビルドしていて、別の人の作成したRTCはOpenRTM-aist-1.0.0でビルドしていたので、わざわざ1.0.0のdllを入手してくる必要があったみたいです。さすがに面倒くさいので動作させるのは諦めました。当時はOpenRTM-aist-1.1.0をインストールしていたので、こちらのdllは問題になりませんでした。
マニュアルに一言OpenRTM-aist-1.0.0のdllが必要だと書いてくれたら良かったのに、別の人のRTCのマニュアルに丸投げしていたのが不味かったと思います。
2つのバージョンのOpenRTM-aistのインストールが必要なんて普通は考えません。
それに2つ以上のOpenRTM-aistをインストールするとCMakeでプロジェクトを生成する時に問題が出てくるみたいだからなあ。
あの不具合はRTM_ROOTで指定されたOpenRTM-aistのバージョンとOMNI_ROOTで指定されたOpenRTM-aistのバージョンが違うせいだと思っていたのですが、ひょっとしたらRTM_ROOTで指定されたOpenRTM-aistと違うバージョンからOpenRTMConfig.cmakeが検索されるせいだったかもしれないです。面倒くさいので検証はしませんけど。
そもそも公式サイトに異なるバージョンのOpenRTM-aistのインストールは非推奨と書いてあるので、ユーザーに異なるバージョンのOpenRTM-aistをインストールを強いる時点でかなりの失態を犯していると言っても過言ではないです。
インストーラーから抽出して使えとでも言っているのでしょうか?
まあ元はと言えばその別の人が作成したRTCが実行ファイルのみの付属、さらにはソースコードを付属していないのが原因ではあるのですけど、ライセンスの問題もあったのかもしれないです。
どっかからdllだけ入手できればそれでも良かったのだけどなあ。
PR
この記事にコメントする