LoginSignup
0
0

More than 3 years have passed since last update.

#toio で 鐘を 108回つく【 #大晦日ハッカソン 】

Last updated at Posted at 2020-12-31

年末に行われた「大晦日ハッカソン」というイベントに参加(といっても、各自が自宅で参加)した際、toio を使って作った作品の話です。

内容は以下のとおりです。最終的には、ロボットトイの「toio」と、toio用の専用マット、そして LEGO を組み合わせて作っています。

この作品は、以下のプロトペディアというサイトにも作品情報を登録しています。

●toio で 鐘を 108回つく【 #大晦日ハッカソン 】 | ProtoPedia
 https://protopedia.net/prototype/2117

開発した経緯と最初のステップ

当初は全く違うことをやろうかと、ぼんやりと考えていたのですが、ふと思いついて作りました。

思いついてみてから、最初は家の中にあるグッズで、単純な動きをするものを試しました。

ブロックを使ったビジュアルプログラミングで、たった 2個のブロックを使っただけです。

その後、回転動作も試してみました。

こちらも、ブロック 2つで構成されたプログラムです。

2台・複数回に増やしてみる

この後、2台を使う形で、単発でなく複数回動かすことをやってみました。

この時点では適当に手動で位置決めをして置いた toio を、「タイヤの速度+稼働時間」を決めた処理で動かしていました。そうすると、複数回の動きで 2回目以降に空振りをすることが・・・。

ちなみに、このようなプログラムを作っていました。

その後、toio につけた LEGO のほうも、少し変えてみました。

ここで生じた問題

上記のツイートにも書いていますが、toio の上につけた LEGO が、長かったり先のほうが重かったりすると、何もつけていない時と比べて回転動作をさせた時に位置のズレが生じていました。

これは、長くのびた LEGO(+その先についた LEGO)がある程度の重みがあるため、toio を回転させた時にその LEGO の部分に遠心力で引っ張られるような感じになることが原因のようでした。また、toio の本体の向きに対して前・横のどちらにつけるかにもよるのですが、LEGO の重みで toio 本体が傾いて、タイヤが少し浮いた状態になることもあるようでした。

問題の対処

タイヤが浮いたようになる状態は、toio の前方(ロゴがある方向)と直角に LEGO をのばすようにすれば、今回は大きな問題がおこるほど傾くことはなさそうでした。

一方で、回転動作をさせた時にズレが生じる問題は、「単純なタイヤの速度指定+動作時間指定」を用いている限りは、(特に複数回の動作を続けると)解決するのが難しい状態になっていきました。こちらは、ズレが生じても定位置に戻ることができれば良い話なので、toio の専用マットを利用することにしました。

最終版

最終的には、以下の動きをさせられるようになりました。

プログラムは以下のようになっています。
2つの toio の動作1回ずつのセットを 59回(合計で 108回)となるように組んでいます。

そして、1回鐘をつく動作をするごとに、初期位置に戻るプログラムを入れています。これにより、ズレがない場合は移動は起こらず(処理が無視されたような状態になる)、ズレが生じていた場合は鐘つきの動作をする前にうまく鐘がつける初期位置に動く、という挙動をするようになっています。

まとめ

今回、鐘を 108回つく、というのはできました。

しかし、本当は鐘をつく動作のトリガーを別デバイスを使う形にしてみたり(M5StickC を 1回動かすと、toio が鐘を 1回つく、というような遠隔での鐘つきのようなもの等)、見た目の部分で「鐘・toio につけた LEGO・専用マットの上」の見た目をそれっぽく変えるようなことをできれば、とも思う部分がありました。
このあたりは、別件もあって時間切れのため、上記の内容で公開ということにしました。
また、見た目や動き的に餅つきに見立てて、ということもできたら、と思ってみたり・・・。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0