RAPIROの基本を知ろう

何だか気がつけば『SMARTHOUSE HACKERS』の主催者の方からTwitterでリンクを貼られていた模様。ありがたいことですが、うーん、恥ずかしい記事を書いてしまった…このサイトのサブタイトルの「うっかりエンジニアになってしまった人」の代表例は、他ならぬ僕自身であり、言うなれば僕は技術にさして興味のない似非Hackerです。僕の書く記事は、そういう人達のちょっとした足しになればと思って書いているので、間違った事もきっと多分に書かれており、プロのHackerの方からしたらきっと、鼻で笑っちゃうようなことも書いていたりします。

今日はRAPIROの基本的なところを書こうと思っていますが、それも同じ動機で書いています。多分、現時点(2014/2/21)でRAPIROを手に入れている人は、わざわざKickStarterとかの先行投資で買っちゃうぐらいですから、自分で結構いじれる技術力を持った方が多いのかなと思います。ただ、RAPIROのターゲットを考えると、今後「プログラムとかハードとか全然わからんけど、とりあえず面白そうだから買ってみた!」という人も、そこそこ出てきそうな気がしています。自分は、そういう人たちのちょっとした足しになればと思って、こういう自分のためのメモを公開しております。はい。

さてさて、前置きはこれぐらいにして。

先日、中途半端にサンプルソースを読んだのですが、それ以前にRAPIROの基本的な構造を押さえとこうと思います。ざくっと言うと、こんな感じになっています。

about_rapiro

どういう動き(モーション)をさせるかは、全部Arduino側で定義することになります。Raspberry Piは、基本的にはどういう入力に対してどういう動きをさせるかを判断して、Arduinoで定義したモーションを呼び出すように、シリアル通信でコマンド(文字列)を送るだけ。

なお、Raspberry Piへの電源供給はArduino基盤からGPIO経由で行われているようなので、Raspberry Piの電源供給用Micro-USBへのコード取り回しとかは考えなくて大丈夫です。

th_raipro_power

ちょっとわかりにくいですが、Micro-USBを使わなくてもRaspberry Piは起動しています(赤色LEDが点灯)。また、ACアダプタで電源供給する場合は、4A程度出力可能なものが推奨されています。自分は初めは手元にあった2A出力のアダプタを使っていましたが、サーボがちゃんと動かなかったりしたので、ちゃんと4A出力のものを使った方がよいです。自分はこれを使っていますが、今のところ特に問題はありません。

さて、次にRAPIROの動きを決めるサーボモータについてです。どういう値を入れればどこがどう動くのか、最初全然わからなかったので、整理しました。

RAPIRO付属のサーボモータの基本的な動きは、以下のとおりです。

rapiro_servo_basic

これがすべてではありますが、実際のRAPIROの動きを理解するためには、これだけだとちょっと厳しいかと思います(自分が相当悩んだので)。RAPIROの動きとして理解するためのポイントは、

  • モータがどの向きで配置されているか
  • 軸にくっついて動く(ハズ)のものは何か
  • 動いた後の部品の相対位置関係から動きを導く

ぐらいかなと思います。ちょっと見にくいですが、以下にまとめたので、具体的に見てみます。

rapiro_servo_all

頭、腰、肩(上下回転)、両脚(水平回転)はわかりやすい(軸の回転=部品の回転なので)ですが、両腕、両手、両脚のひねりがわかりにくいです。特に両脚のひねり。

赤枠になっている部分が、実際にサーボモータの軸と接続して回転する部分です。両肩と両脚については、部品の方が固定されているので、実際にはモーター側の方が回転します。そのへんを考え出すとわけがわからなくなってくるので、一旦は赤枠部品が回転すると考えて、それが回転したとして、部品の位置関係がどうなっているかをイメージすると、動きが理解しやすいと思います。

あと、それぞれ角度のMaxを記載していますが、あくまで自分の環境での値なので、他の方が組み上げたRAPIROでは、このへんの値は変わってくるかもしれません。

さて、これでようやく、RAPIROに好きなポーズをとらせることができるようになった…ハズ。ここからが本番。どういじっていこうかしら。

(追記)

実際にポーズをとらせようと思ったら結構大変だったので、アシストツールを作りました