グランプリを受賞した作品は「ピンポン玉の返球マシン『ハンドロン』」です。囲いの付いたテーブルに2関節のハンドロボットを取り付けたシステムです(図1)。テーブルの上でピンポン玉を転がすと、ハンドロンが転がってきたピンポン玉の位置を予測して打ち返します。

図1 「ピンポン玉の返球マシン『ハンドロン』」のシステム外観

 テーブルは図1の右側に向かって傾いているので、打ち返したピンポン玉は再び右側のハンド部分に転がっていきます。ハンドロンはピンポン玉の転がって来る位置を予測して打ち返すという動作を繰り返します。人が左側の「人用ハンド」を操作して、対戦することもできます。

 この作品がグランプリを受賞した大きな理由は、機械学習の技術を組み込んでいることです。ハンドロンは、転がってきたピンポン玉に対して最も高速に打ち返せるタイミングを機械学習で判断しています*1
*1 実際にハンドロンが動作している様子を、受賞者が公開しているブログで参照できます。

 ハンドロンがピンポン玉を打ち返すには、最初にピンポン玉の現在位置を把握し、続いてそのピンポン玉がどこに転がってくるのかを予測する必要があります。これは、テーブルの真上に取り付けたカメラで実現しています(図2)。テーブルを転がるオレンジ色のピンポン玉を認識し、現在位置を割り出します。

図2 ピンポン玉が転がってくる位置を予測している画面
転がってくる方向にハンドロンがハンド部分を広げて待ち受ける。

経験から学んでうまく打ち返す

 位置を予測できたら、次に最も高速に打ち返せる「フォーム」と「打点」を決めます。この決定に利用しているのが機械学習です。「FORE」「DX」「BACK」の3パターンのフォームごとに最も高速に打ち返せる打点を、過去の経験値から割り出しています(図3)。最も高速に打ち返せる組み合わせが選択されます。

図3 機械学習で打つタイミングを決定している画面
三つのフォームに対して打点の候補と、その打点で打ち返したときの速度が、棒グラフで表示されている。

 今回、ハンド部分を動かすモーターはステッピングモーターを採用しました。サーボモーターは回転の範囲に制約があるうえに、回転速度も速くはなく、柔軟に素早く打ち返すことが難しいためです。ただし、ステッピングモーターはサーボモーターと異なり、現在位置を把握できません。原理的には動かした角度を最初から積算しておけばよいのですが、実態とのずれが生じてしまいます。そこで、カメラを使ってずれを修正するようにしています(図4)。

図4 カメラでハンド部分の角度を読み取っている画面



【電子パーツがもらえます!】LoRa通信向け拡張ボードなどを無償提供

「みんなのラズパイコンテスト2019」特別企画を開催中(8/19まで)

 Raspberry Pi(ラズパイ)を使った作品・アイデアを表彰する「みんなのラズパイコンテスト2019」で、最新の電子パーツを無償提供します。今年は、LoRa通信向けの拡張ボードや、各種センサーボードなどを提供します。提供される製品を使った作品やアイデアを応募することが条件です。エントリー期間は2019/8/19まで。

無償提供企画へのエントリーは<<こちらから!>>