今回は、7月18日に行われた、IchigoJamを使ったロボット制御の講座について書きます。
ロボットと言えば、一度は撤退したSONYも再び参入するとか、それなりにホットな世界という感じでしょうか。ロボット自体は古くからありますので、特に目新しいということはありませんが、AI(人工知能)と組み合わせると幅広い応用ができそうという流れがあります。
ただ、実際にロボットを制御したことがなかったので、どんなものなのかなということで、実際に自分で安いものを購入して組み立ててみました。
まあ、講座では助手役なのである程度の知識と経験、ノウハウを持っていなければいけないという理由もありました。ロボットといっても非常に多くの種類がありますが、今回購入したのは以下のロボットです。
・こどもプログラミングロボット「Paprika」
http://pcn.club/paprika/
これはIchigoJamから制御できるロボットです。IchigoJamならBASICなので制御も簡単、つまり子供でも手軽に扱えるということです。
ロボット自体は段ボールなので、購入後に自分で組み立てる必要があります。このロボットで制御できるのは、下のキャタピラ部分と両腕だけです。頭を回転させたり胴体を傾けることはできません。
キャタピラ部分はTAMIYAのものを利用しており、購入するとそのままTAMIYAの箱が入っています。こども向けの講座では、面倒なキャタピラ部分はあらかじめ作ってあるのですが、自分で購入した場合は、1から組み立てる必要があります。プラモデルを作ったことがある人なら簡単にできると思います。
思います、と書いたのはプラモデルという高級品を組み立てたことがないからです。多くの人は子供の頃にプラモデルを組み立てるのでしょうけど、そういう経験がないのでよく分かりません(まあ、貧乏だったので何かを買うという行為が、ほとんどなかったというのもあります)。
ということで、キャタピラ部分の説明書を開いて組み立てを開始しました。が、プラモデルを組み立てたことがないので、説明書にある図がよくわからないf(^^; それ以前に、ニッパーなるものが必要ということで、ホームセンターに買い出しに行きました。
道具を購入してようやく組み立て開始です。なんですが、最初の図が一体何の意味があるのか分からず。一応最後の方まで組み立て終わった後に、ああ、そういうことか、と理解するという状態。
プラモデルの図は、まとめて複数の部品を組み立てるように書いてあるので、何がどうなっているのか、ぱっと見ても分からず、とりあえず付けてみて何とかモジュールが完成。
プラモデルの図は、1を聞いて10を知るタイプの人にはいいのかもしれないけど(普通の人は、そういうタイプなのでしょう)、1から1ステップずつやって20くらいまでやって、10に戻って理解するタイプだとナントモです。
その後、ベース部分に電池モジュールなどを取り付けて、土台部分は完成しました。次はロボットの胴体部分です。段ボール部分の組み立ては簡単に終わりました。腕にはサーボモーターを取り付けます。
次にIchigoJamを接続します。ただし、そのままIchigoJamと接続しません。これらのモーターを制御するためには、以下の制御ボードMapleSyrupを付ける必要があります。
・MapleSyrup
https://hello002.stores.jp/items/5710afac00d331e5d00004b8
IchigoJamの上にこのボードを重ねます。あとは、ロボットを制御するための線を接続します。これでようやくロボットを制御する準備ができました。組み立て開始から、ここまで2時間。
ロボットをIchigoJamから制御するのは簡単です。ロボットを前進させるには、以下のように入力するだけです。
OUT 33
ロボットの移動を停止するには、以下のように入力します。
OUT 0
左腕を前に出すには、以下のように入力します。50の値は多少変更しないと腕がプルプルしちゃうことがあります。
PWM 3,50
右腕を前に出すには以下のようにします。240の値は多少変更しないと、腕がプルプルしちゃうことがあります。
PWM 4,240
両方の腕を下げるには、以下のようにします。
PWM 3,145:PWM 4,145
あとは、これらの命令を組み合わせてロボットを制御します。
ここまでが、前日の準備段階。これで、何となくロボット制御の最低限の知識を得られたので講座もバッチリ……のはず。
当日はキーボードからロボットを制御して、タイムアタックのレースを行います(というのを現場に行って知った)。
実際にコースを走らせてみると……30cmも走行しないうちに、キャタピラが外れてしまいました。う〜ん、こんなものなのか。
その後、実際のレースでもキャタピラが外れてしまう人が多発。車輪部分の間隔を調整すれば外れないみたいですが、それが分かったのは、講座終了直前でした。
IchigoJamを使ったロボット制御は簡単なので、単に走行するだけでなく腕を振るようにしたり、旗を持たせたり、いろいろ工夫する人もいました。
ロボットの講座は終わりましたが、実は組み立てたロボットの段ボール部分以外は持ち帰れないというオチが。
これは備品扱いになっているためで、実際にロボットを制御したい人はサイトから購入してください、とのこと。まあ、金額がやや高いので仕方ない面もあります。
はじめてのロボット制御講座だったので、何ともな部分も多々ありましたが、それなりにロボットレースもできてよかったのではないかと。にしても、ロボットをまっすぐに直進させるのも結構大変でした。
IchigoJamだと容量が1KBしかないのと、センサーがないので補正できません(IchigoLatteだと容量2KBなので工夫次第というのはあります)。
ロボット制御は簡単そうで難しいな、と思いました。
【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/
IchigoLatte用にロボット制御ライブラリを作ってみました。しかし、ロボット制御は詳しくないので基本的な動作をサポートしている、というだけのシンプルなライブラリ(関数群)です。
http://www.openspc2.org/reibun/IchigoLatte/0.9.1/index.html#library8
話題のポケモンGOは配信されてすぐにプレイ。ベースがイングレスなので、ポケストップ=ポータル。写真もイングレスのデータを、そのまま流用。イングレスがシューティング系で、ポケモンGOはRPG系といった感じです。
妖怪ウオッチもキャラ変えれば同じようにできるし、ドラゴンクエストも同様の手法でゲームを実現できそうです。
ただ、いずれも都市部が圧倒的に有利なので田舎だと辛い。現在の位置ゲームは都市部有利なので、できれば田舎(地方)にも足を運ばせる位置ゲームの方がありがたい。
例えば、昔ナムコで出していたパックマンのように、全国の道路にあるドットを全部食べちゃうとか。ラリーX/スプラトゥーンなどのように、全国の道路を走って塗り潰すとか。
・パックマン
http://pacman.com/ja/
・ラリーX
https://ja.wikipedia.org/wiki/%E3%83%A9%E3%83%AA%E3%83%BCX
・スプラトゥーン
https://www.nintendo.co.jp/wiiu/agmj/
いずれは実際の地図でスプラトゥーンやるんじゃないかなあ、という気はしないでもないのですが。今のサーバー側のパワーでは無理がありそうです。
7/23日に長野県岡谷市で行われた機械学習のイベントにも参加しました(撮影部隊)。以下にまとめがありますので、興味のある方はどうぞ。
・GCPUG信州 第1回勉強会まとめ(2016/7/23)
http://togetter.com/li/1003876
・IchigoLatteを楽しもう
http://www.openspc2.org/reibun/IchigoLatte/0.9.1/
・みんなのIchigoJam入門 BASICで楽しむゲーム作りと電子工作
http://www.amazon.co.jp/dp/4865940332/
・Premiere Pro & Media Encoder自動化サンプル集
http://www.amazon.co.jp/dp/4802090471/
・JavaScriptによるデータビジュアライゼーション入門
http://www.amazon.co.jp/dp/4873117461/
・Photoshop自動化基本編
http://www.amazon.co.jp/dp/B00W952JQW/
・Illustrator自動化基本編
http://www.amazon.co.jp/dp/B00R5MZ1PA/
・Adobe JavaScriptリファレンス
http://www.amazon.co.jp/dp/B00FZEK6J6/
・4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/
・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/