Choreonoid用OpenRTM連携プラグイン Python版

Choreonoid用OpenRTM連携プラグイン Python版

投稿者: 
root
Choreonoid用OpenRTM連携プラグイン Python版

概要・特徴

  • ChoreonoidとOpenRTM-aistの連携プラグインPython版
    • Pythonで作成したRTCによりシミュレータ上のロボットと連携
      • Choreonoid標準で実装されているC++版プラグインと比較すると、開発環境の構築やコンパイルの手間が激減
    • RTCの処理を実行中に変更するPythonエディタ
      • RTCを再起動することなく、編集したソースコードの内容が反映される
    • RTCのランチャー表示機能
      • 起動可能なRTC一覧をChoreonoid上で表示
      • ボタン1つでRTCを起動
        • 73種類のサンプルコンポーネントを同梱

仕様

  • 言語: Python、C++
  • OS: Windows 8.1、Windows 10、Ubuntu 14.04、Ubuntu 16.04
  • RTミドルウェア:OpenRTM-aist-1.2.0(開発版)

ソースコードおよびマニュアル

概要スライド

ライセンス

  • LGPL
問合先(メールアドレス): 
n-miyamoto<at>aist.go.jp
Resources
Project Information
OS: 
Windows
Linux
言語: 
C++
Python
OpenRTM ver.: 
1.1
embedded video: 
Embedded thumbnail for Choreonoid用OpenRTM連携プラグイン Python版
Average: 
5
Average: 5 (2 votes)
最終更新日時: 
日, 2017-12-03 18:59

コメント

投稿者: 

Windows版のバイナリをダウンロードしましたが、私の環境では、そのままでは動作しませんでした。(起動まで行きますが、何も表示されずにプロセスが終了しています)PYTHONHOMEの設定またはChorenoidをQt5でビルドすると一部のWindowsでは動作しないことがありますので、そのあたりのバグだと思います。ここで使用しているPYTHONのバージョンは何でしょうか?

投稿者: 

Pythonは2.7.13(64bit)、Qtは5.8です。

同じようにプロセスが終了する環境があったので、Pythonプラグインを起動時にロードせずに手動でロードしてみたところロードした瞬間に終了しました。 この環境ではPython 3.6をインストールしていたようなので、それが原因かもしれません。

投稿者: 

ご回答ありがとうございます。そのような状況でしたら、環境変数のPYTHONHOMEを設定すれば問題ないと思います。これは、Py_Initialize関数の呼び出し時に、PYTHONのライブラリの場所が不明な場合に、FATAL ERRORになるのが原因です。本来は、PYTHONHOME等があるかどうかを確認して、プラグインをロードするかどうかを判断するルーチンがないためです。新しいバージョンでは、警告を表示し、プラグインがロードできないようになると思います。(私の修正が反映されればですが)

投稿者: 

貴重な情報を教えていただいてありがとうございます。マニュアルに記載したいと思います。

ただPythonだけではなくOpenRTMプラグインのロードに失敗する環境もあるようです。 OpenRTMロード時に「必要なプラグインが見つからないため、OpenRTMプラグインの初期化ができません」と表示されます。Choreonoid起動時にOpenRTMプラグインを読み込んだ場合は何も表示されずにプロセスが終了します。 こちらの問題については調査したいと思います。

投稿者: 

PYTHONHOMEをセットして実行したところ’ImportError: No module named RTC’がでて実行できていません。 パッケージにRTCのフォルダがないためだと思います。

また、OpenRTMの少し古いバージョン(1.1.1)の入っているPythonのHOMEを指定した場合にもPy_Initializeで失敗しいているようです。原因は、古いバージョンのインストーラではomniORBが4.2.0(VC10のDLLが入っています)であるためだと思います。

私の環境では最新版にしていないため(インストールすらしていません)、試すことができませんでした。パッケージ内にRTCを入れる必要があると思います。

RTCはOpenRTM_aist.RTM_IDL.RTCと同じでしょうか? それはあるのですが、Choreonoidでは失敗します。また、import onmiORBも失敗しています(import _omnipy のところで)ので、OpenRTM-aistのインストールが必要なのでしょうか?それだと少し利便性が半減しますが。

投稿者: 

RTCのモジュールが見つからない問題ですが、RTCよりOpenRTM_aistを先にインポートすれば解決するようです。現在アップロードしているファイルでは修正済みです。

これはOpenRTM_aistフォルダの__init__.pyでsys.pathにRTM_IDLを追加しているためで、RTM_IDLの中にRTCがあります。

投稿者: 

import omniORBの失敗の原因がわかりました。Pythonは64ビット版を使う必要があるのですね。私はうっかり32ビット版を指定していました。申し訳ございません。後程動作確認をさせていただきます。

投稿者: 

Python2.7の64bit版のMSIインストーラーを展開したフォルダも同梱して、そこをPYTHONHOMEにすればPythonをインストールしなくても実行できそうに思うのですが、そのように変更したほうがいいですか?

投稿者: 

Tankと4本足ロボットのチュートリアルで「新規」のメニューの画像が異なっています。Windows版のバイナリでは、4本足ロボットの方のメニューが出てきますが、どちらも正しいのでしょうか?PyRTCアイテムの表記が PyRTCItemかPyRTCかの違いですが。

投稿者: 

四足ロボットに出ている画像が正しい画像です。 Tankのチュートリアルの画像は少し古いので修正します。 ご指摘ありがとうございます。

投稿者: 

原因はよく分からないのですが、新規で表示されるアイテムの順番が変わることがあるようです。

投稿者: 

4本足ロボットのチュートリアルを行ったのですが、Component Listが出ない場合がありました(しかも2回)。この2回は、ロボットのRTCの子アイテムとして表示されていましたが、3回目では、アイテムツリーのトップにあり、無事にRTCが動作しました。また、EditRTCのところも最初のみ’ImportError: No module named rtc_module’のエラーがでてエディット画面がでませんでした(しかしRTCは起動しています)。サイド行うとエディタが出てきましたので、動作が少し不安定な気がします。アイテムツリーの関係なのでしょうか…。

投稿者: 

EditRTCについてはChoreonoidメーリングリストで聞いた方法で修正しました。 ComponentListはcnoid::Viewを継承したクラスで実装しているため、おそらく表示に問題は無いと思います。

rtc_moduleのインポートエラーについてですが、問題が再現できておらず、まだ原因は特定できていません。

投稿者: 

画面が出ない現象ですが、そもそもChoreonoidでQWidgetのshow関数を使うのがまずいのかもしれません。 Choreonoidのメーリングリストで聞いてみようと思います。 ComponentListについてはcnoid::Viewを継承したクラスに変更したので正常に表示できるようになった可能性はあります。

rtc_moduleのインポートエラーが出る件ですが、RTCEditorではPythonファイルをTempフォルダに作成して、更新時にロードするようになっています。

 C:\Users\(ユーザー名)\AppData\Local\Temp\Choreonoid-*****

もしかしたら上記のファイルパスに日本語が混ざっていた場合にロードできないのかもしれませんが、まだ確認ができていません。

ダウンロード

最新バージョン

初めての方へ

Windows msi(インストーラ) パッケージ (サンプルの実行ができます。)

C++,Python,Java,
Toolsを含む
1.2.0-RELEASE

RTコンポーネントを開発するためには開発環境のインストールが必要です。詳細はダウンロードページ

統計

Webサイト統計
ユーザ数:1761
プロジェクト統計
RTコンポーネント292
RTミドルウエア23
ツール20
文書・仕様書1

旧Webサイト

OpenRTM.org旧Webサイト

OpenHRP3

動力学シミュレータ

Choreonoid

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

OpenHRI

対話制御コンポーネント群

OpenRTP

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

産総研RTC集

産総研が提供するRTC集

TORK

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

DAQ-Middleware

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

VirCA

遠隔空間同士を接続し、実験を行うことが可能な仮想空間プラットホーム