前回作成したムシロボットを実際にプログラミングして動かしてみます。ちなみにIchigoJam操作の基礎についてはやった事がある前提ですすめます。もし自信がなければ、PCN原秀一さんが執筆されたマイナビニュースの「プログラミング一年生」の第6回ぐらいまでをやってみてください。プログラム自体は難しく無いので、LEDをチカチカさせた事があるぐらいでオッケーです。
マイナビニュース【連載】プログラミングいちねんせい!~IchigoJamでロボットを動かそう~
それでは大まかな流れは以下の様になります。
少しステップが多いですが、難しくは無いので一つずつ確認していきましょう。
IchigoJamに対してプログラミングを行うときの一般的な接続です。MaypleSyrupが乗っかっていますが、全く気にせず接続してください。注意点は一つだけ。IchigoJamを電源に接続した場合は、電池ボックスのスイッチを必ずオフにしてください。電池ボックスからMaypleSyrup経由で電源を供給しつつ、IchigoJamを電源につないでスイッチを入れると、最悪IchigoJamが壊れてしまいます。電池ボックスから電源供給されているかは、MaypleSyrupのLEDからも確認できます。
電源供給されている時
電池供給がされていない時
もし不安であれば、IchigoJamを電源につながず、MypleSyrupと電池ボックスだけで電源供給しながらプログラミングすることも可能ですが、その場合電池の消耗が若干激しくなるので気をつけてください。あと、電池が少なくなってくるとIchigoJamでプログラミングはできるのに、ムシロボットは動かないという事が発生します。これはIchigoJamを動かす為に必要な電圧が、モーターを動かす為に必要な電圧に比べて少ないために、電池の電圧低下によってIchigoJamだけ動くという状態が発生する為です。故障と誤認しやすいので注意してください。動きがおかしいなと思ったら一度電池を替えてみてください。
さあ、プログラミングをしましょう。今ムシロボットの両足のモーターはMaypleSyrupにつながっています。MaypleSyrupにはモータードライバというチップが搭載されていて、IchigoJamから命令を出す事でそれぞれのモーターを正回転・逆回転させる事ができます。モーターが正回転すると足が前に動き、逆回転すると足が後ろに動きます。それぞれの対応コマンドは
OUT 1,1 (右足を前に)
OUT 2,1 (右足を後ろに)
OUT 5,1 (左足を前に)
OUT 6,1 (左足を後ろに)
となります。それぞれの足を止める時には、カンマの後ろの数字を0にします。例えば
OUT 1,0 (右足を止める)
となります。すべての足を止める時には
OUT 0
で一斉に動いている足が止まります。それではまずは1秒間前に進むプログラムを作ってみましょう。
10 OUT1,1
20 OUT5,1
30 WAIT60
40 OUT0
このプログラムの意味は、右足と左足を前に動かし(正回転させて)、1秒後に止めるというものです。それぞれの行が
10 OUT 1,1 (右足を前に)
20 OUT 5,1 (左足を前に)
30 WAIT 60 (1秒=60ミリ秒待つ)
40 OUT 0 (両足を止める)
つくったプログラムの大まかな動作を確認する為に実行してみましょう。
RUN
を入力して最後にエンターを打つとプログラムが実行されます。この時ロボットをすこし持つか、お腹の下にものをおいて足を少しうかせておいてください。結構勢い良く動くので、そのまま動かすと大変な事になります。
さあ、両足が1秒間動きましたか?あとは動かし方を自分の中で想像しながらプログラムを作っていきます。右足だけ動かすとどうなるだろう?左足だけ動かすとどうなるだろう?足を動かした後は適切にWAITを入れて動かす時間を調整してください。WAITコマンドはミリ秒単位で指定できます。60だと1秒、180だと3秒になります。
作ったプログラムをIchigoJamに保存します。保存する場所は0番という領域です。コマンドは
SAVE 0
となります。IchigoJamは標準で3つのプログラムを保存できますが、ロボットを実行する場合はかならず0番に保存してください。0番は特別な保存場所で、IchigoJamにモニタやキーボードをつながない状態で、RUNコマンドを打たずにプログラムを実行する事ができる領域です。
プログラムを保存するコマンドが成功したら、IchigoJamの電源を切ります。つづいてIchigoJamにつながっている電源コード、キーボード、モニターのコードをすべて外します。ロボットがすべてのケーブルから解き放たれましたね。次に電池ボックスのスイッチをオンにします。
MaypleSyrupのLEDが点灯したら電源供給の準備ができました。
さあ実行してみましょう。さっそくIchigoJamの電源を入れるのですが、このときIchigoJam本体のタクトスイッチを押しながら電源を入れてください。このタクトスイッチを押した状態で電源を入れる事で、0番に保存したプログラムが自動で実行されます。電源を入れてからプログラムが実行されるまでほんの少し時間があるので、その間に手を離してください。
さあ、思い通りに動いたでしょうか?動く距離や曲がる角度、最初は上手く動かないかもしれません。何が違うかを考えて、もう一度モニタやキーボードをつないでIchigoJamのプログラムを修正してください。モニタやキーボードをつないだら
LOAD 0
LIST
と入力すると、0番に保存したプログラムを確認する事ができます。なんども繰り返して思い通りにロボットを動かす事で、どんどん複雑な動きをさせる事ができます。また、このロボットを改造してセンサーをつけることで、本当の虫のように自立的にロボットを動かす事ができます。
このムシロボットは有線リモコンで動いていたものをIchigoJamから制御しているだけですが、非常にコミカルに動くので子供達は喜ぶのですが、思い通りに動かすためには色々な命令を書く必要があり、比較的長いプログラムを書くことになっていきます。小学校低学年だと長いプログラムは混乱しやすくなってくるので、あまり複雑なゴールを目標にしないほうが良いかなと思います。4年生ぐらいから少し長め(20行程度)のプログラムを上手く扱える子が増えてくるという感覚です。もちろん教え方次第なところもあって、動きを大きな紙の上に描いておいてい、それぞれの命令をそこに書き込んだ上でプログラムに落とし込んでいったりすると長いプログラムを理解しやすくなります。ビジュアルプログラミングを事前に紙の上(アンプラグド)でやるわけですね。このあたりの教え方はカード化したりだとか、まだまだ工夫の余地があります。
また、ロボットと言ったらやっぱり自動制御なんじゃないかというのがみんな頭に浮かぶ改造です。当然そういった改造も可能で、実際にやっている人もいらっしゃるようです。ただし、ハードルは高い。詳しく解説したサイトは今のところありません。じゃあ私がやれば良いのですが・・・少々お待ち下さい。なるべく簡単にできる方法を試行錯誤中です。そんなの待てないという方のためのヒントとしては・・・またもや登場!マイナビニュースの「プログラミング一年生」の第13回からの連載がヒントになります。
プログラミングいちねんせい! ~IchigoJamでロボットを動かそう~
13 「paprika」を改造して「目」をつけよう(前編)
14 「paprika」を改造して「目」をつけよう(後編)
Paprikaを対象に書かれていますが、この虫ロボットでも基本的なところは同じです。
本当にこの記事は良記事。とんでもない労力を注ぎ込んでらっしゃると思うのですが、報酬的に報われているのか心配になるレベルです。きっと報われて無いんだと思うのですが、そのあたりの問題を次のエントリーにしたいと思います。
はじめましてこんにちは。
とても興味深い記事が多く楽しく読ませていただきました。
アシェットから2018年8月に発売された週刊学習ロボットからこちらへたどり着きました。
アシェットの学習ロボットが総額10万円を超える価格なので全て購入するべきか迷っていましたが、タミヤさんとイチゴジャムさんのものからチャレンジしてみようと思いました。全くの素人初心者なので判断がつかず困っていた所、とても参考になりました。ありがとうございました。
コメントありがとうございます。
ロボット教材どこも高すぎですよね。Ichigojamプログラミングはいろんなセンサーも扱いやすいので、簡単に安くて深い学びがえられます。その辺りの記事も書こうと思っていますが、最近なかなか時間が・・・頑張りたいと思います。
お忙しいなか、ご返信いただきましてありがとうございました。更新をとても楽しみにしておりますが管理人様も大変お忙しい事かと存じますm(__)m
今後もこれまでの丁寧で素晴らしい記事を何度も読み返し理解を深めていきたいと思っています。本当にありがとうございました。
こんばんは!
ichigojamのプログラム保存の手順がイマイチ理解できず、
さまよっていた際にここへたどり着きました。
お陰で保存方法が理解できました、ありがとうございました。
私はカムロボでプログラミングを勉強しようと思っているのですが、
別の手段として、安価でいい方法もあるもんですね!勉強になりました。
今後も楽しみにしています!
チャンタケさん
こんばんは。コメントありがとうございます。
お役に立てたようで嬉しいです。
カムロボおもしろいですよね。ただちょっと構造が複雑で、別の選択肢もあっていいかなと思って虫ロボを選びました。
根本的なロボット制御としてはこの記事と同じことなので頑張ってください。