更新(2024/02/08)
言語AI搭載ロボへの道
6年前から、LEGO社の「レゴ (LEGO) アイデア ウォーリー 21303」をベースに、様々な改造を加え、映画「Wall-E」のようなロボット化を目指してきました。しかし、映画のように人格を持つように見せるためには、様々な技術的な壁がありました。その実現は中々難しく、あれこれ手伝ってもらっている長男も忙しくなり、正直この2〜3年は開発が停滞しておりました。
ところが昨年夏頃から大いに話題となった「生成AI(特にChatGPT)」の能力は凄まじく、また近年のネットワークアプリケーション技術の広がりもあって、言語系AIの進化をM5Stackといったマイコンでも享受できるようになりました。
そこで、改めてWall-Eに言語AIを搭載し、人格があるように見せるというアイディアを試みることとしました(※ 主開発者の長男も生成AIに興味を持ってくれたのもあります)。
本ページでは、これまでの改造「Micro:bitベースのリモコン動作ロボット化」の歴史と、「おしゃべり機能」を持たせるまでの取り組みについて記載していきます。
これから始まりました
マイコンボードChibi:bitを使ってレゴロボットをリモコン制御します。
リモコンコントローラにもChibi:bitを使います。驚くほど簡単に無線リモコン操縦できますよ。
ベースとなるキット「WALL-E」とパーツたち
レゴ (LEGO) アイデア ウォーリー 21303
ディズニー/ピクサー映画"WALL-E"を主人公ロボットWALL-Eをレゴ化したキット。アマゾンなんかで入手可能です。ピクサーの動画監督さんが映画を作りながら、同時に作成した作品がLEGO/Ideasに採用され商品化。正統派レゴ作品です。
##LEGO Power Functions M-Motor 8883
商品「WALL-E」自体はモータが付いていません。しかし、下記のレゴ純正モータを別途購入すれば、そのまま装着できる設計になっています。純正Mモータの入手ですが、LEGOからは販売されていません。別のLegoキットから流用してもいいですし、専門店からネット購入も可能。自分はこちらのお店から。後ヤフオクでも時々出品されています)。
Chibi:bit
BBC Micro:bitというシングルボードコンピュータの互換機。Armベースでクレジットカード大。技適に対応し国内でのBLE利用可能。入力最大電圧も拡大されている。スイッチエデュケーションが開発/販売中。
【参考】 BBC Micro:bitとは
"BBC Micro:bitは英国の小学生への情報教育のための施策"Make it Digitalキャンペーン"の一環として英国国営放送が11歳と12歳に小学生へ無料配布した(2015)、低消費電力/低コストのシングルボードコンピュータ。"
BBC Micro:bit - Wikipedia
【スペック】
BBC Micro:bitと同じく以下の機能を備える。
項目 | スペック |
---|---|
CPU | ARM Cortex-M0 |
プログラミング言語 | Python、JavaScript |
開発環境 | Webベース開発環境 |
通信I/F | BLE、USB端子 |
入出力端子 | 3つのI/Oリング、20ピンのエッジコネクタ |
その他 | 25個の赤色LED、2個のボタン、加速度センサ、磁力センサ、照度センサ |
その他のパーツ: サーボモータとカメラマウント
頭部を動かすために用意したのが、模型用サーボモータSG90と、ミニ2軸カメラマウントです。サーボモータは400円、マウントは200円〜500円ぐらいで入手できます。
早速作ってみましょう
(0) 部品一覧
一番奥にあるのがLegoキット"Wall-E"。この後の改造のため、一旦、頭部とキャタビラを外してあります。
真ん中頭部パーツの左側にある「青いパーツ」は首を動かすためのサーボセットです。「別に頭を動かさなくてもいいや」って方や「後でじっくり追加」って方は、元のパーツそのままで大丈夫。
手前は(1)Chibi:bitと(2)拡張パーツ"Moto:bit"(3)電池ケース。詳細は後ほど説明します。※今回は2つのChibi:bitを用意。1台はWalle制御、もう一台はリモコンになります。
(1) まずWALL-Eの胴体をちょっとだけ改造
まずLegoキット"Wall-E"を組み立ててください。パーツ数は676。うちは息子と二人で毎晩2時間x5日かかりました。こちらLEGOHASEPさんの組み立て実況ページが参考になります。
オリジナルのLegoキットの"Wall-E"は胴体が空洞になっています。ここに電池ボックスや配線を入れます。ここでは背面のブロックを取り去ります。ここにChibi:bitを挟みます。
※胸のパーツをうまく流用することで、新しくブロッックを購入しなくても作れます。
<前から見た所>
<後ろから見た所>
背面のブロックを全て取り去り、Chibi:bitとMoto:bitを挟めるようにしてあります。赤いポッチや青いブロックは飾りです。構造上の意味はありません。
<上から見た所>
頭部を動かすカメラマウントを置くためLEGOプレートパーツを使ってフラットにしてあります。この辺のブロック組み換えもキット内のパーツのやりくりでなんとかなっています。
(2) モータをつける
Legoキット"Wall-E"へLego純正モータを取り付けてLego純正リモコンで制御するのはわりかしポピュラーです。検索すると動画も多数。ただ意外とモータ取り付け工程を詳しく書いているのところがないので工程写真を載せますね。
<モータ設置後>
まず、モータ取り付け後の状態を。このキットはキャタビラ後部に繋がっている部分のブロックを少しいじるだけで簡単に純正モータを設置可能。すごい設計だと思う。
<胴体側を準備>
キャタビラ後部に繋がっている部分のブロックを取り去ります。2x6プレートブロックが収まるスペースを作ります。キット内のパーツやりくりでなんとかなります。
<モータ>
上記の純正Mモータを2つ用意します。2つのMモータを写真のように背中合わせにし2x6プレートで止めます。写真は穴あきパーツを使っていますが、2x6プレートならなんでも構いません。隙間が空かないよう注意ください。黒いコードは根元から曲げておきます。
【注意】 LEGO純正Mモータの改造
LEGO純正Mモータの線を拡張ボードMoto:bitに接続するためには、一旦ケーブル線を切断しコネクタに付け替える必要があります。4本のケーブルのうち、真ん中の2本をピンコネクタにつなぎ直します。左右の二本は使用しません。
<モータを設置>
モータブロックを本体の後ろ側に載せます。ブロックの本当に乗せるだけになります。両面ポッチのブロックがあればいいんですが。脱落しそうですが、キャタビラ側のパーツが支えになり、うまいこと取り付けられます。邪道ですが、両面テープや接着剤で止めてもいいかもしれません。
<キャタビラパーツを取り付ける>
写真のようにキャタビラを取り付けます。キャタピラパーツには二箇所LEGOパーツを追加しています。一つ目は、モータの駆動力を伝えるためのテクニック4M十字軸(手前の棒パーツ)。もう一つは、モータとキャタピラを接続するコネクターペグ(奥の方黒い筒)。右写真のようにキャタピラパーツでモータと接続する軸を十字軸に交換します。
接続の様子がわかりやすいようにキャタピラパーツを取り除いた状態で示したのが次の写真です。
※写真では十字軸が黒とグレーの二つが出てきますが、長さ39ミリ黒い十字軸より、長さ41ミリグレー十字軸の方が外れにくいようです。ちょっとはみ出してブサイクですがこちらをオススメします。
<注意>
モータケーブルが写真のように地面高さからギリギリになります。うまく折りたたむ、セロハンテープなどでたるみをとるなどの処置をした方がいいかもしれません。
(2) 次に首パーツ(サーボ)を本体に接続
頭を動かさない方はこちらスキップしてください。キット純正として組み立てたままでも次に進めます。
まずはカメラマウントを組み立ててください。機械的な可動の確認が大切です。組み立て方についてはものづくりエクスペリメントさんの記事がとても参考になります。
カメラマウントは上下逆さまにして使います。動作としては、チルト(上下動)が下側、パン(左右動)が上となります。まず、カメラマウントは若干加工します。カメラを挟む爪部分は切り落とし(写真左)、面を平らにします。その面に両面テープで2x4プレートブロックを貼り付けます(写真中)。これが「首パーツ」となります。
この首パーツを本体にはめ込むわけです(上写真右→下写真)。配線が右写真のように中に通します。
(3) 頭部パーツと首パーツの接続
写真左のように、頭部パーツは特に改変なしで使用します。接続パーツには今回写真下部のパーツを自作して使用してみました。写真下部の2x3プレート(黒)は、3Dプリンタで整形したのものです。写真右のように背面にサーボホーンを削ってはめ込んであります。今回は接続パーツを自作しましたが、通常のレゴプレートにサーボホーンが取り付けられればなんでもよく、2x3出なくてもう少し大きいパーツでもいいかもしれません。
この接続パーツと首パーツをサーボ用ネジで止めます。頭部パーツをこの接続パーツにLEGO的に乗せることで、頭部を組み付けます。
(4) Chibi:bitと拡張ボードをWall-Eの背中につける
Chibi:bitと拡張ボードMoto:bit
LEGO純正Mモータもそうですが、コンピュータからモータを動かすには、モータドライバと呼ばれるIC素子を載せた回路を使います。Micro:bitの場合、差し込むだけでモータを動かせるようになる拡張ボードがいくつか販売されており、今回はSparkFunのMoto:bitを使うことにしました。
Sparkfun Moto:bitのスペック |
---|
DCモータ用ポート x2 |
サーボモータ用ポート x2 |
センサ用ポート(デジタル専用x3、デジタル/アナログ共用x3) |
I2C用ポート |
モータ用ON/OFFスイッチ |
DCジャック(入力電圧:3~17 V) |
乾電池ボックスを格納する
もともとWallEキットの胴体に巨大な空間がありますので相当大きな乾電池ボックスが入ります。写真は乾電池ボックス:単3x6個が入れる場合の格納状況です。拡張ボードMoto:bitの入力電圧幅は3V〜17V、LEGO純正Mモータの入力電圧幅(3.3V〜9V)なので、単3〜単4あたりで直列4個〜6個で自由に選べます。liPOやスマホバッテリも良い選択肢かもしれません。
拡張ボードMoto:bitはDCプラグ(2.1mm)で接続するため、2.1mmDCプラグ付バッテリースナップを合わせて使っています。
拡張ボードMoto:bitの取り付け
写真のようにするとうまいことMoto:bitのくびれ部分をレゴパーツで引っ掛けられます。下部の方は空間があり、可動幅を抑えているだけで物理的な接触はありません。
配線はMoto:bitの左右から取り出します。余った配線は適当に押し込んでください。
拡張ボードMoto:bitへの配線
配線後のした写真。サーボモータの接続チャネルやモータ配線C1/C1の接続についてはChibi:bitプログラミング編で説明します。
完成! 首を振る Wall-E
首を振らせることができました!
こうやってみると、首が動くだけで、表情を感じられる気がするのは不思議です。
「レゴ Wall-Eに おしゃべりAIを搭載する」へ続く
<予告編>
胴体にM5Stackを内蔵!
動画
2023年11月ロールアウトした際の記録動画です
https://youtu.be/D9V47Z2d624
Hamamatsu Micro Makers Faire 2023 展示
→ 「HamamatsuMicroMakerFaire2023」会場レポート【公式】に掲載されました