読者です 読者をやめる 読者になる 読者になる

器用貧乏です。はげたかです。日記です。

どうも、はげたかです。今まで器用貧乏に生きてきました。ジェネラリスト・フルスタックエンジニアを目指しています。

今日の一言:カテゴリ分けをしっかりしたらPVあがるかな?

【動画あり】Spheroを使って猫と遊んでみたwww

はじめに

上の記事を元に、Spheroで猫と遊ぶコードを書いてみた。それと同時に少しSpheroを改造した。

Spheroを改造

うちの犬と猫は素のSpheroは怖がって逃げてしまう。だから、普段じゃれるアイテムをSpheroにくっつけることで、更にじゃれさせるようにする。

  • 猫じゃらし
  • ねずみのおもちゃ

これをSpheroにつけるのだ。

f:id:hagetak:20150412171522j:plain

f:id:hagetak:20150412171529j:plain

布がなかったので、いらない靴下(洗いました。)をいい感じサイズに切って、糸で上のアイテムをつけた。

靴下(ファブリーズ済)は、ゴムがはいっているので、すごく便利だ。みんなも靴下を使ってくれ。

コード

// Cylonを使うためのおまじない
var Cylon = require("cylon");

Cylon.robot({
  connections: {
    // port: "/dev/tty.Sphero-Your-NAME"
    sphero: { adaptor: "sphero", port: "/dev/tty.Sphero-ROG-AMP-SPP-17" }
  },
  devices: {
    sphero: { driver: "sphero" }
  },

  work: function(my) {
    my.sphero.collisionCount = 0;
    my.sphero.moveCount = 0;
    my.sphero.moveHeading = 0;

    after((1).seconds(), function() {
      console.log("Setting up Collision Detection...");
      my.sphero.detectCollisions(); //collisionを使うよ!
    });

    every((1).second(), function() {

      console.log("move:", ++my.sphero.moveCount);
      if(my.sphero.moveCount % 2 == 0) {
        my.sphero.moveHeading += 90;
      }
      if(my.sphero.moveHeading > 360) {
        my.sphero.moveHeading = 0;
      }
      my.sphero.roll(120, my.sphero.moveHeading);
      // my.sphero.roll(180, my.sphero.moveHeading);
      // my.sphero.roll(200, Math.floor(Math.random() * 360));
      my.sphero.setRandomColor()
    });

    my.sphero.on("collision", function() {

      console.log("Collision:", ++my.sphero.collisionCount);
      my.sphero.setColor("black");
      // my.sphero.roll(150, Math.floor(Math.random() * 360));
    });

  }
}).start();

この内容は、以下の記事に解説してあるものとほぼ一緒。気になったら読んでみてください。

さて、これを動かしてみると

じゃれた!!!!!

少し怖がる・Spheroの動きが微妙なので、改善の余地がすごくある。

nodeJS版のSpheroライブラリ?がちょっと使いにくい。

今後、Spheroを使ったプログラミングの課題とやりたいことは、

  • APIを元に、自分で作ってみる?
  • Spheroが自分で動けるようにプログラミングする
  • Spheroでマッピング
  • 引っかかる部分が多いので、Spheroの外見を更に変える(靴下じゃないものを使う)

かなり楽しみだぁぁ〜。できるかなぁ???