子供の頃誰しもが憧れるロボット作り。そんな永遠の夢をちょっとだけ実現出来ましたのでまとめてみます。

名付けて「ポンボット1号」です。これから機能を拡充していきたいのですが、とりあえず今出来ることは…。

回ります。

アームをぐるぐるします。

これだけ。

プログラミングはJavaScriptだけ、はんだ付けはもちろん、ブレッドボードを使った配線なども行なっていません。

きっかけ

結構前の事ですが、こんな記事 を書いた事がありました。大ファンなんでよね、クラタス(及び製作者の倉田光吾郎さん)。このクラタス、アマゾンで購入することも出来るのですが

クラタス スターターキット - Amazon

価格が1億2千万円とちょっとお高く、

ガガンガン 水道橋重工 人型四脚陸戦型トイロボット クラタスモデル - Amazon

こちらを購入するのが精一杯でした。。このクラタス(おもちゃの方です)の敵ロボットを自作出来ないだろうか?という誠にどうでも良い事がきっかけでロボット作りを始めることにしました。

JavaScript Robotics

本格的なロボットは上級言語を利用してプログラミングしなければならない様ですが、最近ではそれらを比較的利用しやすいJavaScriptにラッピングしたライブラリが公開されています。

Johnny Five

小型のマイコンボードを利用する際、ArduinoであればC/C++言語(の簡易版)を利用します。

Johnny-fiveをNode.jsにインストールする事でJavaScriptで小型マイコンボードを操作する事が可能になります。

まだ少し試しただけなのですが、JavaScriptを使ってWebサイト上のアイテムをアニメーションさせるのと同じ感覚でロボットを操作出来ます。

これはなかなか新鮮な感覚です。

ブラウザベースのインターフェース(ボタンとか)を利用してロボットを操作するのも比較的容易に行えそうです。

ArduinoのGroveシステム

電子工作でもう一つ敷居が高いのが、様々なセンサーを利用した配線です。そこでコネクタを接続するだけで配線を行えるシステムキットを利用することにしました。

GROVE - スターターキットV3

少々割高になりますが、コネクタに差し込んですぐにセンサー類を使用する事が出来ます。

モーターを利用する際には、モータードライバモジュールを利用する事が出来ます。

GROVE - I2C モータードライバ

このドライバにモーター用の電源とモーター2個を接続する事が出来ます。

また、特にロボット作りに欠かせないサーボモーターもコネクタを差し込むだけで利用する事が出来ます。

GROVE - サーボモータ

これらを組み合わせる事で比較的簡単にセンサーやモーターを利用する事が出来ます。

コネクタが沢山ありますが、A0〜A3が「アナログ接続」D2〜D8が「デジタル接続」I2Cが「I2C接続」になっています。

この3種類の接続だけ気をつけれて接続すれば良いのです。

やってみる

Node.jsとJohnny-fiveをインストールしたPC(ここではMac)にArduino、Grove、I2C モータードライバ、モーター、モーター用の電源を接続します。

※Arduinoへのプログラミングは必要ないのですが、一つだけPingFirmataが必要になるのでダウンロードして読み込んで下さい。

サンプルコードがGitHubに公開されているのでそのまま利用します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
var five = require("johnny-five.js");
var board = new five.Board();
board.on("ready", function() {
var a = new five.Motor({
controller: "GROVE_I2C_MOTOR_DRIVER",
pin: "A",
});
var b = new five.Motor({
controller: "GROVE_I2C_MOTOR_DRIVER",
pin: "B",
});
this.wait(3000, function() {
console.log("REVERSE");
a.rev(127);
b.rev(127);
this.wait(3000, function() {
console.log("STOP");
a.stop();
b.stop();
this.wait(1000, function() {
process.emit("SIGINT");
});
}.bind(this));
}.bind(this));
console.log("FORWARD");
a.fwd(127);
b.fwd(127);
});

モーター2個がくるくる回りました。

続いてサーボモータをデジタル端子に接続します。

こちらもGitHubサンプルコードをそのまま利用します。

1
2
3
4
5
6
7
8
9
var five = require("johnny-five");
var board = new five.Board();
board.on("ready", function() {
var servo_1 = new five.Servo(2);
var servo_2 = new five.Servo(3);
servo_1.sweep();
servo_2.sweep();
});

サーボモータがグリグリ動きました。

本体など

PC部分はMacからRaspberryPiに変更すれば簡単にロボットを無線化する事が出来ます。(「3」になってWiFiが標準になってから以前より接続が楽になりました。)

肝心の本体は、アマゾンで異常にお買い得だった少々怪しい中国製ロボット購入しました。(なんか色々入ってるのにArduino UNO本体より安い…本当に大丈夫なのだろうかと思いながら購入)

ANBE Arduino Starter KIT スマートカー用 改善版 UNO R3 KIT―UNOR3互換ボード ケーブル付き スマートカーシャーシ SG90サーボ FPVカメラマウント 距離センサー電池ホルダーなど全部含む・お得セット

説明書はこんな感じです。

怪しい(笑)。けどまあ、中身はいたって普通に組み立て出来ました。

まとめ

まあ、なんやかんやでとりあえず動く様になりました。

RaspberryPiをSSHで接続してコマンドで動く様になったのですが、次回はこれをローカルブラウザ経由で動かしてみたいと思います。

つづく。(のか?)