石井英男のロボットキットレビュー
近藤科学「KHR-3HV」ソフトウェア編(基礎編)

~HeartToHeart4でのオリジナルモーション作成
Reported by 石井英男

 今回はKHR-3HVのソフトウェア編として、付属のモーション作成ソフト「HeartToHeart4」を使って、オリジナルモーションを作成する手順を紹介したい。

まずはHeartToHeart4のアップデート

 HeartToHeart4は、KHR-3HVに搭載されているコントロールボード「RCB-4HV」専用モーション作成ソフトであり、従来のKHR-2HVなどで使われていた「RCB-3HV」専用モーション作成ソフト「HeartToHeart3」とは、画面デザインや操作方法が大きく異なっている。

 KHR-3HVの初期ロットに付属しているCD-ROMに収録されているHeartToHeart4のバージョンは1.0.0.0でファーストリリース版だが、ファーストリリース版には、いくつかの不具合があるほか、HeartToHeart3で可能だった、モーション内でのアナログミキシングの設定変更などの機能が利用できない。近藤科学のWebサイトで、HeartToHeart4のバージョンアップ版(執筆時点では1.1.0.2)が公開されているので、そちらをダウンロードしてアップデートを行なっておくこと。

 バージョン1.1.0.2では、バグが修正されているほか、スタートアップモーションの登録が可能になり、アナログ入力値の較正コントロールやアナログミキシングの修正コントロール、トリム情報のみのマージが可能になるなど、機能も強化されている。なお、バージョン1.1.0.2のマニュアルは、HeartToHeart4を起動して、ヘルプを開くことで見られる。マニュアルはPDF形式で60ページあるので、プリントアウトしておくとよいだろう。

新規プロジェクトを作成し、初期設定を行なう

 HeartToHeart4(以下HTH4)ではモーション管理の概念が、HeartToHeart3(以下HTH3)とは大きく変わっている。HTH3では、モーションデータは別々のファイルとして管理されており、コントロールボードにモーションデータを書き込む際には、一つずつモーションを指定していく必要があった。そのため、バトル競技に出る場合とサッカー競技に出る場合など、利用するモーションが異なる場合は、モーションの入れ替えが非常に面倒であった。

 しかし、HTH4では、複数のモーションデータをまとめたプロジェクトファイルが用意されており、プロジェクトを切り替えることで、コントロールボードにモーションデータを一斉に書き込むことができるようになった。

 もちろん、モーション一つ一つをモーションファイルとして保存することも可能で、プロジェクトファイルは、それらのモーションファイルを一つにまとめたものになる。モーションファイルもプロジェクトファイルも、拡張子はすべてxmlになっているので、慣れないと混同しやすいが、プロジェクトファイルは、それが保存されているフォルダ(プロジェクトフォルダ)と必ず同じ名前になる。

 HTH4でモーションを作成する際には、必ずプロジェクトを新規作成するか、あるいは既存のプロジェクトを開いて、そこに追加する形になる。ここでは、プロジェクトを新規作成して、モーションを作成する手順を解説する。

 まず、KHR-3HVとPCを付属のシリアルUSBアダプターHS経由で接続し、KHR-3HVの電源を入れる。HTH4を起動して、シリアルUSBアダプターHSのCOMポートを指定する。シリアルUSBアダプターHSのCOMポートは、デバイスマネージャで確認できる。次に、「ファイル」→「新規作成」→「プロジェクト」の順に選んで、新規プロジェクトを開き、プロジェクト名を指定する。標準で「C:\Program Files\HeartToHeart4\Projects\」以下に保存されているサンプルプロジェクトをインポートする。なお、ユーザーが作成したプロジェクトは、マイドキュメントの中のHeartToHeart4\Projectsフォルダ以下に保存されるので、間違えないよう気をつけよう。

 プロジェクトを新規作成するか、既存のプロジェクトを読み込んだら、必ず、プロジェクト設定ウィンドウを開いて、プロジェクトの設定を行なう。プロジェクト設定ウィンドウでは、通信速度やフレーム周期、トリム調整などが可能だ。設定が完了したら(基本的にデフォルトのままでよい。トリムについてはトリムマージでトリム情報のみを読み込むことが可能)、ツールバーの「ROMへ保存」→「全て保存」を選び、設定したトリム情報などをRCB-4HVのEEPROMに書き込む。さらに、ツールバーの「ファイル」→「プロジェクトを保存」を選んで、プロジェクトを上書き保存すれば、プロジェクトの初期設定は完了だ。

KHR-3HVとPCをシリアルUSBアダプターHS経由で接続し、KHR-3HVの電源を入れる。HeartToHeart4を起動し、COMツールバーのコンボボックスを開いて、シリアルUSBアダプターHSが接続されたCOMポートを選択する「ファイル」→「新規作成」→「プロジェクト」の順に選ぶ新規プロジェクトダイアログが表示されるので、「新規プロジェクト名」の欄にプロジェクト名を入力し、「プロジェクトをインポート」にチェックを付け、参照ボタン(マウスカーソル位置)をクリックする
インポートするプロジェクトを指定する。バージョン1.1.0.2の場合は、「C:\Program Files\HeartToHeart4\Projects\Hello_KHR3(V1.1)」を指定すればよい。ここでの表記が、「プロジェクトを保存するフォルダーを選択」となっているのは紛らわしいインポートするプロジェクトを指定して、OKボタンをクリックしたら、「プロジェクト」→「プロジェクトの設定」の順に選んで、プロジェクト設定ウィンドウを開くプロジェクト設定画面では、トリム調整を行なうことが可能
トリムの調整が終了したら、「ROMへ保存」→「全て保存」を選び、トリム位置をROMに書き込む「ファイル」→「プロジェクトを保存」を選び、プロジェクトを上書き保存する

モーション編集ウィンドウで、モーションを作成する

 HTH4では、マルチウィンドウ方式を採用しており、必要に応じてウィンドウの表示・非表示を切り替えたり、ウィンドウを自由な場所に配置できることが特徴だ。そのため、画面解像度が高いほど、快適に利用できる。ネットブックに多い1,024×600ドットではかなり窮屈であろう。

 モーションを作成するには、「ファイル」→「新規作成」→「モーション」の順に選んで、モーション編集ウィンドウを開く。最初は、まっさらなキャンバスのみが表示されるので、ツールボックスウィンドウを表示させる。ツールボックスウィンドウには、多くのアイコン(コントロールと呼ばれる)が、ジャンル別に並んでいる。このコントロールをキャンバス上にドラッグ&ドロップして配置し、線で繋いでいくことでモーションを作成するのだ。

 HTH3でも、似たような方法でモーションを作成してたのだが(HTH3の場合、コントロールではなくオブジェクトと呼ばれていた)、HTH4は、HTH3に比べてコントロールの種類が非常に多く、より柔軟で高度なモーション作成が可能である。

 また、HTH4のコントロールは、それぞれがDLLファイルとなっており、プラグインによって新たな機能を持つコントロールを追加できるように設計されている。実際に、最新バージョンではアナログミキシングの修正コントロールなどの新たなコントロールが追加されており、今後の機能強化も期待できる。

 モーション作成で、最も基本となるコントロールがPosコントロールである。Posコントロールは、ロボットのサーボモーターを動かしポジション(ポーズ)を決めるためのコントロールだ。二足歩行ロボットのモーションは、パラパラ漫画のようにいくつかのポーズを順番に並べていくことで作成するのが基本だ。Posコントロールを必要な数だけ並べて、各コントロールをダブルクリックし、ポジション設定ダイアログを開く。

 ただし、最初にモーションを作際する際は、各サーボモーターに対応するポジションパネルが配置されていないので、必要なポジションパネルを左のリストからドラッグ&ドロップしてロボットの形になるように並べる。

 あとは、Syncボタンをクリックしてから、各サーボモーターのスライダーを動かせば、ロボットのサーボモーターがそれに応じて動く。狙ったポーズができたら、OKボタンをクリックする。なお、そのポーズへの遷移時間(動きの速さ)は、フレーム数で指定できる。1フレームの時間は、プロジェクト設定ウィンドウで変更できるが、KHR-3HVの標準設定では15msである。

「ファイル」→「新規作成」→「モーション」の順に選んで、モーション編集ウィンドウを開くモーション編集ウィンドウ。最初はまっさらなキャンバスのみが表示される「ウィンドウ」→「ツールボックス」を選び、ツールボックスウィンドウを表示させる
左に表示されているのがツールボックスウィンドウだ。ここから、各種コントロールをキャンバスにドラッグ&ドロップしてモーションを作成していくツールボックスにあるPosコントロールをキャンバスへドラッグ&ドロップするPosコントロールをダブルクリックして、ポジション設定ダイアログを開く
左のリストから必要なポジションパネルをドラッグ&ドロップで並べる。並べ替えが完了したら、フレーム数を「80」にしてOKボタンをクリックするモーション保存ボタンをクリックして、「ホームポジション.xml」という名前で保存すると、タブの名前が変わる。ポジションパネルの色や位置を保存するために、「ファイル」→「プロジェクトを保存」を選び、プロジェクトを保存する「ファイル」→「新規作成」→「モーション」の順に選ぶ。画面には先ほど作成した「ホームポジション」と今新規作成した「モーション編集2」の2つのタブが表示される
タブをつかんでドラッグ&ドロップすると、そのウィンドウを切り離して、自由に配置することが可能「ホームポジション」タブをクリックして、ホームポジションのウィンドウを手前に表示させ、Pos0をクリックして選択し、右クリックメニューを開いて「コピー」を選ぶ「モーション編集2」タブをクリックして、モーション編集2のウィンドウを手前に表示させて、右クリックメニューを開いて「貼り付け」を選び、先ほどコピーしたPos0コントロールを貼り付ける
コピーと貼り付けを繰り返して、Posコントロールを3つ並べる

接続モードでコントロール同士を線で繋ぐ

 必要なPosコントロールの設定が完了したら、ツールバーのコネクトボタンをクリックして、接続モードに切り替え、マウスカーソルをコントロールにあわせてクリックし、順にコントロールを線で繋いでいく。接続線の開始位置は青いコネクタ、終了位置は赤いコネクタが表示されるので、正しい順序で接続されているか確認すること。

 接続が完了したら、フラッグ配置モードに切り替えて、スタートフラッグとストップフラグをコントロールに配置する。ある程度、モーションの形ができたら、実際に再生してみよう。HTH4では、オンライン再生機能と呼ばれる新機能が追加されており、コントロールボードのEEPROM上にモーションデータを書き込まなくても、作成したモーションを実際に再生することが可能なのだが、現バージョンのオンライン再生機能では、ループなどの条件分岐に対応していないので、オンライン再生機能を使わずに、毎回コントロールボードに書き込んで実行させたほうが確実だ。

 モーションをコントロールボードに書き込むには、ビルドメニューからビルドを選択するか、F5キーを押せばよい。モーションを書き込みたい番号を指定すると、モーションの書き込みが行なわれるので、モーション一覧ウィンドウを開いて、そのモーションを選択し、再生ボタンをクリックしたら、今書き込んだモーションが再生される。

ツールバーのコネクトボタンをクリックして、接続モードに切り替える接続モードで、マウスカーソルをコントロールに近づけると、接続ポイントが表示されるので、ポイント候補をクリックして、線を延ばすつなぎ先のコントロールにマウスカーソルを移動して、クリックして線を繋ぐ。同様にして、3つのPosコントロールを上から順番に繋げる。接続開始位置のコネクタは青、接続終了位置のコネクタは赤で表示される
コントロールの接続が完了したら、モーションに名前をつけて保存する。ここでは「空手チョップ.xml」とした上から2つめのPos1コントロールをダブルクリックしてポジション設定ダイアログを開く。「Sync」ボタンをクリックして、スライダーとサーボモーターの同期させる右肩ピッチ軸のスライダーを動かして、右手を上げさせる。フレーム数も適当に変更する。ここではとりあえず「20」とした。ポジションができたら、OKボタンをクリックする
ツールバーのフラッグモードボタンをクリックして、フラッグ配置モードに切り替えるPos0をクリックしてスタートフラッグを付け、POS2を右クリックしてストップフラグをつけるツールバーからビルドメニューを開き、「ビルド」を選択する。または、F5キーを押してもよい
ビルドダイアログが開くので、モーションを書き込みたい番号を指定し(この場合だとM37)、OKボタンをクリックし、モーションを書き込むツールバーのモーション一覧ボタンをクリックして、モーション一覧ウィンドウを開く、「M37 空手チョップ」を選んで、再生ボタンをクリックして、今作ったモーションを再生させる空手チョップを作ろうと思ったのだが、これでは単に右手を上げて挨拶しているように見える。また、腕を上げるPos2のフレーム数が小さすぎて(時間が短すぎて)、最後まで腕があがっていない

繰り返し実行には、SetCounterとLoopを使う

 ここでは、例として空手チョップモーションを作ったが、単に右手を真上まで動かしてから下まで振り下ろすだけでは、空手チョップには見えない。フレーム数を変更して速度を変更し、もう一つ中身がPosコントロールをコピー&ペーストで作成し、そちらのフレーム数を多くすることで、振り上げてからそのままのポーズで少し静止するようにした。

 ある形でしばらく静止させたいときは、同じポーズのPosコントロールを2つ並べて、最初のPosコントロールでそのポーズまで動かし、次のPosコントロールで静止させるというのがモーション作成の基本的なテクニックだ。モーションを修正したら、再びビルドして同じ番号に上書きし、動作を確認。気に入らないところがあったらさらに修正とビルドを繰り返していけばよい。

 空手チョップの場合だと、腕を下まで振り下ろすよりも、水平よりやや下くらいで止めたほうがそれらしく見えるので、そのように修正してみた。ある程度形になったので、今度は、同じ空手チョップを3回繰り返すモーションにしてみよう。Posコントロールをすべてコピー&ペーストとして3回分並べても、繰り返しモーションを作れるが、SetCounterコントロールとLoopコントロールを使えば、もっとエレガントに繰り返しモーションを作ることができる。

 SetCounterコントロールは、カウンター(変数)に値を代入するためのコントロールで、Loopコントロールは、カウンターから値を1引いて、結果が0になったら、指定したコントロールへ移動させるコントロールだ。SetCounterコントロールとLoopコントロールは、必ずペアで利用することになる。HTH3でも、繰り返しは可能だが、カウンターが1つしかなく、多重ループなどは実現できなかった。HTH4では、C1からC10の10種類のカウンターが用意されており、より複雑なループも可能になっている。

 また、HTH3の場合、分岐の条件を満たす場合と、満たさない場合では、オブジェクト同士を繋ぐ線の形状が違っていたのだが、HTH4では、Loopコントロールのダイアログを開いて、Loopコントロールから他のコントロールへ結ぶ線のコネクタの位置(Bottomならコントロールの下の辺から延びる線ということ)を指定するようになっている。

 なお、各コントロールのダイアログを開いて、値を変更した際は、必ずOKボタンをクリックしてダイアログを閉じること。「×」をクリックしてしまうと、その変更が反映されない。また、コントロールに線の始点(青いコネクタ)だけが残ってしまうことがあるが、その場合は、いったんそのコントロールをコピー&ペーストして、古いコントロールを消してしまい、新しく配線し直すとよい。

 モーションが完成したら、忘れずに作成したモーションとプロジェクトをそれぞれ保存しておくこと。

Posコントロールを2つ追加して、腕を上にゆっくりあげて、上げた状態でしばらくためて、そこから下に腕を振り下ろすようにした【動画】腕を上げるのはいい感じだが、やはりあまり空手チョップらしく見えないさらにPosコントロールを一つ追加し、上げた腕を最後まで下におろさず、水平よりやや下で止めて、そこでまたしばらく動かさないように改良
【動画】改良したモーションを再生したところ、だいぶ空手チョップらしくなってきた空手チョップを3回繰り返させるために、SetCounterコントロールを追加繰り返し処理を行なわせるLoopコントロールも追加する
SetCounterコントロールとLoopコントロールを次のように接続するSetCounterコントロールをダブルクリックして開き、カウンターを「C1」、カウント値を「3」にセットし、OKボタンをクリックするLoopコントロールをダブルクリックして開き、カウンターを「C1」、移動先を「Bottom:(0)」にセットし、OKボタンをクリックする
【動画】ちゃんと空手チョップを3回繰り返している。これでモーションは完成「ファイル」→「モーション保存」で、作成したモーションを保存する「ファイル」→「プロジェクトを保存」で、プロジェクトを保存する

自由度が高く、慣れれば効率よくモーション作成が可能

 今回紹介したのは、HTH4の豊富な機能の中でも、ごく基本的なもののみだ。ポーズを作成する際にスライダーを動かすのではなく、脱力したサーボモーターを手で動かし、目的のポーズができたら、その位置を取り込むという教示機能(HTH4ではSmart Teachと呼んでいる)ももちろん用意されているし、アナログセンサーの値によって、分岐を行なったり、ミキシングを行なうことも可能だ。さらに、オプションの無線コントローラへのモーション割り付けも、従来のHTH3よりもずっと簡単に行なえるようになっている。このあたりの高度な使い方については、また別の機会に紹介したい。

 HTH4は、HTH3とは画面デザインや操作方法、ファイル概念などが大きく異なっているため、HTH3に慣れていた人は当初は戸惑うかもしれない。しかし、複数のモーションデータを同時に開いてタブで切り替えられ、コピー&ペーストも自由にできることなど、HTH4にはいろいろ便利な機能が搭載されている。センサー入力の数も大幅に増えているので、HTH4を使いこなせば、HTH3では難しかった高度な自律モーションも実現できるだろう。



2009/10/23 17:39