【翻訳】Choregrapheの仮想PepperへPythonスクリプトをアップロードする方法
(2015年7月追記):
本ページのリンク・画像は全て切れています。もともと一般公開されていたページではなかったのかもしれませんので仕方がないです。
すでにPepperの一般販売が開始されており、さらに、Pepperがなくても DEVELOPPER PROGRAMに登録(無料)すれば、無期限のChoregrapheのライセンスキーが入手できます。※ Choregrapheの試用版ダウンロード及び、DEVELOPPER PROGRAMへ登録するには コミュニティサイトへの登録が必要です。
「Aldebaran-Robotics社のロボット制御用ソフト Choregraph(コレグラフ)の仮想ロボットへ、Pythonスクリプトをアップロードする方法」の説明ページを翻訳してみました。
- 仮想のNAOで説明されていますが、Pepperでも実際のロボットでも同じ。NAOqi Frameworkのおかげ様。
- 実際にやってみて間違いを見つけたので注釈を入れています。
- 説明は古いバージョンのChoregrapheで行われているようです。2.1と合致しない点にも注釈を入れています。
- 原文はこちら ⇒「Python with Choregraphe ― Learn how to adapt a python script to your Choregraphe project.」
- このページ(↑)、コミュニティーサイト配下にありますが、サインインしなくても見れるのでパブリックなページ・・・ですよね。
- 画像、画面キャプチャは原文サイトのものを直接参照しています。
- 念のため原文併記しています。間違いや改善案などありましたらご指摘くだされば喜びます。
Choregrapheについて
- ChoregrapheはPepperやNaoなどのAldebaran Robotics(アルデバランロボティクス)社のロボットを制御するためのソフトです。同社のロボットとペアリングすればそのまま使い続けられますが、そうでなければ90日間のみ試用できます。内部には、仮想ロボットのシミュレータがあり、同社のロボット用のOSであるNAOqi(ナオキorナゥキ)が実装された仮想ロボットも用意されています。単純な動作ならこれだけで確認できます。
ChoregrapheでPython ― プロジェクトにPythonスクリプトを適応させる方法
Python with Choregraphe ― Learn how to adapt a python script to your Choregraphe project.
Owner: Céline Boudier (Aldebaran Robotics)
以下のような、Naoで動作する .py があるとして:
Imagine that you have a .py file that runs on your Nao such as:
### hello.py ### import naoqi from naoqi import ALProxy def sayWord(s): ttsProxy = ALProxy("ALTextToSpeech","127.0.0.1",9559) ttsProxy.say(s) return sayWord("Hello!") ######
これをコレグラフへ適応させる2つのやり方を見てみましょう。
Let’s see two methods to adapt it with Choregraphe.
A. コレグラフのBoxへスクリプトを適応させる
A. Adapting a script to a Choregraphe box
コレグラフのBoxを作って、スクリプトを適応させることが可能です。
You can adapt your script and create a Choregraphe box with it.
- コレグラフを開きます。
Open Choregraphe. - メインフロー図を右クリックして[ボックスの新規作成]を選びます。
Right-click the main flow diagram and choose “add a new box”.
Boxにタイトルを入力します。また、ツールチップの内容を入力したり、イメージを選択して、… OKをクリック。
You can then add a title to your box, a tooltip, an image… Click ok.
Boxをダブルクリックすると、スクリプトウィンドウが開きます。
Now double click your box. A script window opens.
ここにPythonを書けます!
Here you can script in python!- onInput_onStart 関数はユーザーが onStart 入力をアクティベートした時に呼ばれます。
The onInput_onStart function is called when the user activates the onStart input. - onStopped 出力をアクティベートしたいなら、self.onStopped() と書きましょう。
Write self.onStopped() when you want the onStopped output to be activated. - onInput_onStartの中にいくつかのコードを書けます。たとえば関数やメソッドをBoxに書いて、それを onInput_onStart()から呼び出せます。
So in your onInput_onStart function, you can write some code. You can for instance write your function ad a method of your box class and call it in the onInput_onStart().
- onInput_onStart 関数はユーザーが onStart 入力をアクティベートした時に呼ばれます。
Note:
- コレグラフでは naoqi をインポートする必要はありません。
You don’t have to import naoqi in Choregraphe! - プロキシーを生成するとき、引数としてNaoのIPアドレスを指定する必要はありません。
If you create a proxy on Nao, you don’t have to put your Nao’s IP address as an argument.
- コレグラフでは naoqi をインポートする必要はありません。
B. Pythonファイルをプロジェクトのリソースへ追加する
B. Adding a python file as a project resource
.py ファイルをプロジェクトのリソースとして追加することもできます。
You can also add your .py file as a resource of your project.
- この場合、ファイルがコレグラフによって起動されるため、(上の例のonInput_onStart内に記述した)“sayWord("hello!”)“ の行を取り除きます。
In this case, we remove the "sayWord("hello!”)“ line from the file as it will be launched with Choregraphe!
### hello_chore.py ### import naoqi from naoqi import ALProxy def sayWord(s): ttsProxy = ALProxy("ALTextToSpeech","127.0.0.1",9559) ttsProxy.say(s) return ######
以降の手順でこのファイル(↑)をリソースへインポートしますが、ここでは、元のファイル内容を示しているにすぎません。何故か図示されていませんが、インポート後に、上のNoteで示されている内容に沿って編集しなければ動作しません。具体的には、2行目のimport naoqi
の行をコメントアウトし、6行目のプロキシ取得部分では第2引数と第3引数(ipとport)を削除し、単にttsProxy = ALProxy("ALTextToSpeech")
とします。
- コレグラフを開きます。
Open a Choregraphe. プロジェクト内容での作業です。もしこれが表示されていないなら、メニューの[表示]-[プロジェクトの内容]をクリックしてください:
Go in the project content. If you can’t see it, click View then Project Content:
ここで、パート1のステップ1から4で説明されている新しいBoxを追加します。
Then, create a new box as explained in Part 1, steps 1 to 4.
新しく作成したBoxにスクリプトを書かなくてはなりません。
You now have to script your new box.- モジュールをインポートする場合、最初にリソースのパスをsys.pathに追加しなくてはなりません。ALFrameManager.getBehaviorPath(self.behaviorId)は、NAOにおいてロードされた、現在のビヘイビアパスを返します。__init__の中では、これが使えないことに注意してください。onLoadかonStartでは使用できます。
To import your module, you have first to add your resource path to sys.path and then import your module. ALFrameManager.getBehaviorPath(self.behaviorId) returns the current behavior path - where it has been loaded on NAO. Note that it is currently not available in the __init__ but you can use it in the onLoad or onStart. - スクリプト中では追加したモジュールの関数を使用できます。
You can use your module’s functions in your script.
- モジュールをインポートする場合、最初にリソースのパスをsys.pathに追加しなくてはなりません。ALFrameManager.getBehaviorPath(self.behaviorId)は、NAOにおいてロードされた、現在のビヘイビアパスを返します。__init__の中では、これが使えないことに注意してください。onLoadかonStartでは使用できます。