RAPIROの動きを設定する(モーション設定アシストツール作成)

前回、晴れてRAPIROの動きが理解できたので、さーRAPIROを思い通りに操るぞーと意気込んで見たものの…うん、ダメです、面倒くさい。

Arduinoサンプルソースでは1つのモーションを8つのフレーム(ポーズ)に分割して定義していたので、とりあえずはそのフォーマットで作るのが手っ取り早いと思います。が、それでもやはり面倒くさい。まず、

  1. 自分が思い描く動作を8分割して
  2. それぞれのポーズのときに各部位の位置をイメージして
  3. 各部位をその位置にするためのサーボの設定値を確認して
  4. {90, 90, 0, 130, 70, 180, …}の形に書き直す

…うぱー、時間がかかって仕方がない。もう少し簡単にしたい。

というわけで、上記の3.と4.の手順だけでも簡単化できるように、表計算ソフトのマクロを作ってみました。

rapiro_motion

EDIT欄の各セルで各部位毎の位置を選択すると、下のPARAMETER欄に自動的に必要なパラメータが入力されます(動作、赤、緑、青、bufferTime欄はEDIT欄に手入力)。

rapiro_motion_detail

8フレーム分入力したら、PARAMETER欄の横の”Output!”ボタンを押すと、ダイアログにソースコードの形になったものが出てきます。

rapiro_motion_text

あとは、これをRAPIROのArduinoソース(RAPIRO_ver0_0.ino)のモーション定義のところにコピペすればOKです。とりあえずは、プリセットの定義と置き換えてしまうのが簡単だと思います。

arduino_motion

この場合は、Arduinoのシリアル通信で”#M9″を送ると、新しく設定した動作をするようになります。自分はとりあえず、これでRAPIROに暴力を振るわせてみました。

一応、両手でパンチしているつもりですが、手が短いのであんまりそれっぽく見えないかもしれません。モーションに『ため』の動作を入れると、ちょっと人っぽい動きに見えるかも、と思いました。あと、RAPIROへの電源供給は、推奨通りに4A程度出力できるもの にしましょう。自分は2A出力のものしか手元になくてそれで代用していましたが、サーボが回りきらないこともあったりしましたので(ちなみに上の動画は、2AのACアダプタ利用時点で撮影しています)。

以上、自分の為にとりあえずで作ったものなので、全然作り込めていませんが、必要な人もいるかもしれないので公開しておきます。ご利用の際は、マクロを有効化してお使いください。

RAPIROモーション設定アシストツール【rapiro_motion.ods】

これだけでは思うような動作にならないかもしれません。あくまでアシストツールという位置づけなので、出力された値をベースに、より自分の望む動作になるようにパラメータを調整してみてください。その際は、自分が前回書いた記事も少しは役立つかもしれません。

また、このツール自体は、これまでマクロを作ったことがない自分が作ったので、とてもシンプルです。なので、動作の定義をもう少し細かくしたいとか、8フレームじゃなくて16フレーム対応にしたいとかなったときも、ご自分で簡単に改造して使ってもらえると思います。そして誰かが、もっとビジュアルベースで使いやすいものを作ってくれたら、そのときは是非是非それを使わせていただきたいです。

なお、「なぜExcelマクロではなくLibreOffice(Calc)のマクロなのか?」と言いますと、自分の環境(Mac + Excel 2008)ではVBAのマクロが使えなかったためです…なので、LibreOfficeをインストールしてご利用頂いた後、必要に応じてExcel VBAに移植して使ってもらっても良いと思います。あんまり調べていませんが、マクロの基本文法はほとんど同じだと思います。