【ATMEGA328P-AU】M5Stackで4つのモータを動作できる基板を作成した件【基板設計編】

こんにちは。

先日、M5swarmという作品を各所のコンテストに応募しました。

protopedia.net

作品の実装の際に、M5stackを群ロボット化するための足回り基板を作成ました。機能としては、M5Stackからの命令を受け取るマイコン部分と、電源分離しながらモータ4つを独立に動作させられるものです。

今回は、そのモータを動作させるための基板実装について紹介していきたいと思います。


機能概要

足回り用の基板を設計する上で、モータ制御用のマイコンを搭載することで、制御ピン数の面で有利になると考えました。そのため、外部のメイン処理部分からシリアル通信で命令を受け取り、その命令を基に足回り専用のマイコンでモータを制御するようにしています。そして、利便性向上のため、半固定抵抗によるパラメータ調節の機能や、移動精度向上を目的としてエンコーダの追実装もできるようにしました。
搭載機能を列挙すると下記の項目があります。

  • ATMEGA328P-AUを用いた処理部分
  • 4モータを動作させられるモータードライバ
  • 各種シリアル通信(SPI、I2C)
  • 2相エンコーダ用ピン
  • 半固定抵抗2つ分
  • 電源分離


回路について

回路概要

はじめてATMEGA328P-AUを用いたため、その動作が正常にできるかが心配で、特別こだわった点はありません。ちなみに、ATMEGAに正常に書き込みできるようにと気を取られすぎて、PWM周りのピン割り当てをミスってしまいました。(ATMEGA328ってPWM用のピンが6個しかないのかよ... ESPに慣れすぎて全部のピンでPWMできる気でいたわ...!)

下図が実際に動作させた基板の回路図です。

f:id:ume-boshi:20211125081000p:plain
M5Swarmの足回り基板の回路図です。

回路図説明

適当な解説ですが、左下にあるのがATMEGA328P-AUです。プログラムを書き込むために必要なのは、マイコン右側にある7, 8番ピンのクリスタルと、29番ピンのRESET用ボタンです。クリスタルが必要な理由としては、ATMEGA328P-AUには内蔵クリスタルが8MHzのものしかなく、16MHzに変えたい場合などに使うためです。個人的には、今使っているY2の部品よりも、セラコンまで内蔵している3パッドのクリスタルのほうが、実装時の領域を削減できるのでオススメです(基板の説明箇所に製品リンク)。ちなみに、Arduino Pro miniでも3パッドのものが使われています。

リセットボタンについては、単純にプログラムを再動作するために必要です。さらにATMEGA328P-AUArduino Pro miniのブートローダを書き込む際にも29番ピンへの接続をしなければなりません。なので、ジャンパー線接続用のピンを1つ出しておくことをオススメします。

それ以外の要素として、左上がモータを動作させるための外部電源の供給と、3V3への降圧をしています。なんで降圧する必要があったかは、今見返すと不明なのです。
右下はモータドライバ動作用の箇所です。U19とU20がフォトカプラのアレイで、ここで電源分離を実現しています。U19の左側がマイコンで、右側がモータ側です。U19等の右側から、さらにU17とU18のモータドライバの方に接続しています。このモータドライバは1素子で2個のモータを制御できます。

右上の大量のピンについては、他の基板などと通信するための箇所です。J32とJ33はume-boshiオリジナル基板(メイン処理部)に、J34はFT232などの書き込み機に、J35はI2C用に、J28とJ31はエンコーダ用に配線しています。

回路設計の反省点

今回、はじめてATMEGA328P-AU用の基板を作成しましたが、ちゃんと動作しているか確認することにすごく手間取りました。というのも、Debug用のLEDを1つも配置しないという失態をしていたためです。状態の可視化は大切ですよね。

また、モタドラ基板としての致命的なミスとして、マイコンの選定そのものが間違っていました。ESP32感覚で全部のピンでPWM出力できるとなぜか勘違いしており、今回は適当に配線してしまいました。しかしATMEGA328P-AUはPWMの本数が6本しかありません…
4つのモータをPWMで制御しようと思うと、8本のPWM信号線が必要です。 滑稽なことにピン数が足りていないのです。結果、ソフトPWMを実装して乗り切りましたが、大失態を犯したのであります。

最後に、個人的には不要な回路があった点です。Encoder用のピンで4本確保していますが、そんなに要らない要素ですね。Encoderの代わりに、マウスに搭載されているようなイメージセンサを用いれば、軽量に2軸方向の移動が分かってしまいますし、それで位置推定するほうが良かっただろうなと後悔しています。




基板について

概要

特にこだわった点は無いです。しいて言えば、人生初のマイコン斜め配置に挑戦したぐらいでしょうか。5cm x 5cmの基板サイズでは配線に限界があったので、リフローが必要なレベルの表面実装部品が使えるようになりたいものです。あと、抵抗アレイも使ってみたいです。

f:id:ume-boshi:20211125081003p:plain:w400
基板図。こんなの見ても参考にならないですね。

主な使用部品

完成品

f:id:ume-boshi:20210522230836j:plain
M5Swarmの足回り基板写真。裏にATMEGA328P-AUがあります。

おわりに

研究活動が忙しくて、2か月くらい記事を書くのをめんどくさがっていました。でもいざ手を動かしてみると、以外にすぐ書けるものです。

次はATMEGA328P-AUArduino Pro miniのブートローダを書き込んで、一番最初のプログラムを書き込む話です。QiitaのAdvent Calendar用の記事。

では、皆さんお元気で。

スタートアップの不確実性を排除できるノウハウが詰め込まれた参考書「入門 起業の科学」を読みました :)

こんにちは。

先日、「入門 起業の科学」という書籍を読破しました。今回はその紹介記事となります。

この本は、「起業の科学」という同著者の書籍をベースに、アイデアをブラッシュアップし企業をし始めるまでをまとた書籍です。前著には実例がかなり盛り込まれており、図表は講演資料から抜粋したような少々雑なものが多くぶ厚い本でした。結構読み進めるのが苦痛だった印象です。

それに対し本書は、図表がかなりわかりやすく丁寧に作り直されており、事例を少なく端的に説明するようになっていました。実際に起業をする際は、この本を片手にトレースしていく形で進められるような、無駄の少ない作りになっています!


概要

科学

起業の”科学”として、起業開始時において失敗しないための手順が紹介されています。"科学"という言葉は、ある程度「プロセス化できて再現性がある」ことを本書では意味していますが、科学と言えるほどのものかは起業経験がない素人には判断できませんでした。読んでいた印象としては、"科学"というよりは「事業化する内容の効果を、起業する前にとことん慎重に事前調査する沢山の手法」をまとめているような印象です。ともかく、慎重に全てを明かしてから進めていくので、この本に従えば「ここまでしたら失敗しないだろう」という自信は確実に着けられそうです。

スタートアップの不確実性を排除

この書籍で取り扱っている起業は、スモールビジネスではなくスタートアップの方でした。

スモールビジネスとは、既に需要が明らかになっているため、決まったサービスを提供するだけで安定して儲かるような、小売店や飲食店・サービス店などです。「おいしいラーメン」や「車を駐車したい」こと、「何かを専門職の人に修理してもらいたい」などの需要は既に存在しており、それに対応する職業も既にあるため、それを真似できる比較的容易な起業です。
それに対し、スタートアップは需要は潜在的なものであり、この世に無かった新しい仕組みをつくることで莫大な利益を出せるような、Uber EatsやNash・DiDiのようなサービスのことを指しています。スタートアップは需要がわかっていない上に、新しい概念を顧客に浸透させる必要があったり、類似サービスが極めて少なかったりするため、成功することが比較的難しい起業です。ただ、利益面でいうとロマンのある起業ですよね。

f:id:ume-boshi:20211011052432p:plain
利益にロマンがあるスタートアップ


このスタートアップの難しさは、需要予測や顧客のペルソナ、好まれる機能の選定などの不確実要素を明らかにすることで排除できると考えられます。

本書ではそのための手法として、「リーンキャンバス」や「ストーリーカンバンボード」のワークシートや、見込み客への聞き取り調査におけるコツなどが盛り込まれています。どれも実用的で、簡単に取り組めることばかりなので、実際に起業をする際には非常に参考になりそうです。起業するかを、顧客に受け入れられない恐怖で思いとどまっている人には、ぜひオススメしたい書籍でした。


感想

起業の本を読んでいると、結構「スモールビジネス」に焦点を当てたものが多くて、参考にできず読み終えることがよくありました。この本では、スタートアップに焦点を当てて、慎重に不確実要素を取り除く姿勢が詳細に述べられており、欲しい情報が満足に得られた印象です。リーンキャンバスやペルソナなどのツールは、書籍を読む前は単語すら知らなかった有用な概念で、それを知れただけでも大満足です。



さて、私も1人のゴミクリエイターとして起業には興味があるのですが、書籍を見ていてもやる気は出ないものですね。むしろ、「この事務的な(?)計画作業をしなければならない」という煩わしい気持ちが湧いてしまいます... そして結局「こんなこともやる気がでないのか」という、アイデアへの悪印象と自己嫌悪感で辞めてしまうんですよね。
私は座学でワクワクすることがほぼ無いので、実践に移すとまた変わってくるのかもしれません。

ということで模擬的に実践すべく、専用のデジタルノートを用意しただけなのであった... (To be discontinued...)

ただ万年筆が欲しいだけの記事 :)【はてなブロガーに10の質問】

こんにちは。

最近は全然記事を投稿していないものの、下書きに色々書きだめているume-boshiです。以前の記事で、技術記事を4つほど投稿する宣言をしてしまったものの面倒で放置しているので、他の記事を上げるのもどうかな... と思っていたところです。



そんなところ、はてなブログの10周年記念イベントで「万年筆をプレゼント!」などと言われたものですから、つい投稿した次第です。
べ、別に、モノで釣られたわけじゃないんだからね!

さて、取り組むお題は、"はてなブログ10周年特別お題「はてなブロガーに10の質問" というものです。それでは1つずつ回答していきましょう。


10の質問!

ブログ名もしくはハンドルネームの由来は?

ブログ名は、作りたい作品のアイデア(机上の空論)が大量にあろうとも、開発に着手しない自分自身を世間体に晒上げて厳しく戒めるためのものです。

私は各所で"ume-boshi"という名前を利用していますが、実は酸っぱい梅干しは苦手です。
(甘いはちみつ系の梅干しのお菓子は大好物で、毎日服用するほどですが)

さて、ume-boshiを採用した由来ですが、さかのぼること5年ほど。
「PUBG mobile」がリリースされたときに、ニックネームを決めかねていたところ、当時ハマっていた梅干しシートというお菓子が目に入り、気まぐれでそれを選びました。

www.lawson.co.jp

https://www.lawson.co.jp/recommend/original/detail/img/l589520_4.png

※LawsonのHPを参照

以来、"sheet"の部分は邪魔だったので取り除き、時々使っており、ブログの開設とともに本格的に使い始めました。


はてなブログを始めたきっかけは?

NAISTに進学する1か月前にブログを始めたのですが、そのころ教授から「アウトプットを続けていると、そのうち努力が実って新しいイベントが生まれたりするよ」とアドバイスをされたことを思い出します。教授は私がNAISTに進学する年に大学をご退官したのですが、有名な雑誌の特別枠を執筆する機会があったらしいです。

言ってることは間違ってないなと思い、普段からモノづくりをしている身としても、アウトプットをしないのは知識の共有がされず勿体ないなと感じたためブログを始めました。
// 就活用という話も。

(果たして、現在知識の共有がまともにできているんでしょうか... 疑問です。)


自分で書いたお気に入りの1記事はある?あるならどんな記事?

↓ これですね。

ume-boshi.hatenablog.jp

この記事を投稿するまでは技術記事を書くことが多く、経験から得た思想をしっかりと書いた記事はほぼありませんでした(今もほぼ無いけど)。 スタートアップが失敗する例について、ちょっと炎上するかなと怯えながらも愚直に感情を書いたことを覚えています。本記事はTwitterでちょっとだけ拡散されたのですが、滅多に発さない持論を認めてもらえたことはとても嬉しいことでしたね。


ブログを書きたくなるのはどんなとき?

満場一致(1人)で、研究室の嫌な作業が溜まっているときですね。

研究室では人目があり、娯楽となるデバイスが少ない分、記事を書くことに集中できるのです。
あと、研究室で使っているキーボードの方が入力しやすくて心地よい。

umeboshi-lab.hatenablog.com


下書きに保存された記事は何記事? あるならどんなテーマの記事?

当ブログで16記事、別のブログの方で6記事もありました笑 どれもほとんどタイトルだけメモしたものですが...

当ブログのは、基本的には技術記事ですかね。本の紹介とか、途中まで手を付けて放置している開発の話とか、そういうのばかりです。
別ブログの方では、商品・映画のしょうもない紹介をするつもりで放置したものと、死ぬまでにしたい100のことを書き溜めています。死ぬまでにしたい100のことは、本ブログでも「ブログ1か月連騰チャレンジ」としてちょっと出てきていましたね。

ume-boshi.hatenablog.jp

自分の放置癖には飽きれたものです ;)


自分の記事を読み返すことはある?

技術記事は自分のために書いているといっても過言ではないです。自作のVIVE Trackerの位置推定の理論なんかは、自分のブログが日本語で馴染みもあるので良く見返しています。

ume-boshi.hatenablog.jp

あと、NAISTの受験記は、人に教えることが良くあるので、有利になりすぎる情報がないかは度々見返すようにしています。

ume-boshi.hatenablog.jp


好きなはてなブロガーは?

ブログ開設時からずっと見てくださっているkaraageさんは、このブログを続けるモチベーションにもつながったLegendです。(時々、karaageさんにtwitterで拡散してくださるときは閲覧数が爆上がりするので、「何が起こったんだ!?」と冷や汗をかきながら、動揺して日常生活に支障をきたす状態に陥ります。)技術ブログ界隈の頂点だと勝手に崇めて、友人にも広めているのですが私の影響力はごくわずかです。
karaageさんの記事で個人的に好きなのは、エンジニアパパ + 家族の生活を投稿しておられるところでしょうか。技術系のブログも最新の流行の実践や、変なデバイスをハッキングしたりと大変為になるのですが、技術者がいる家庭の日常風景は、自分の将来像を妄想してしまう良い機会になるのです。mi band宝さがしなどは、技術者家族ならではの団らんで、憧れるところでもあります。

それ以外に面白いなと思う人は、京太郎さんです。この方は技術系ではなく、非モテの話やフェミニズムなどの社会問題について考察しておられます。思想を述べたブログはおそらく大量にありますが、京太郎さんはその文章から知識の深さが見て取れます。毎回の記事が、大量の参考文献に基づいており、一般人にできる芸当ではないなと、いつも尊敬しています。固めの文章に惹きつけられたのは初めてかもしれません。


はてなブログに一言メッセージを伝えるなら?

新しい万年筆をください!


この10年を一言でまとめると?

人間不信で友達がいない喋れないゴミ陰キャから、arctanみたいな軌跡で成長して見せました。

13年前の私は中学2年生でした。当時、中国から日本に帰国した私は、友達の不登校や、いじめられそうになったことによる同学年の子とのコミュニケーションの断絶から家族と先生しか喋らない人でした。そこから、高校生になって最高の仲間に触れ、写真撮影を初めてこの世のすばらしさを知り、周囲の良いところを見ることができるようになりました。大学生ではプロジェクト活動やロボコン出場/運営を経験して、技術的に尊敬できる人の存在ができ、実践的な活動の方法を学び、人を動かす立場として挑戦できました。そして今は修士2年の大学院ですが、学会やブログ、開発コンテストでアウトプットすることを覚え、研究室でプレゼンテーションの方法を知り、偉大な論文達から蓄積された知識の偉大さを学んできました。

これで、多少はまともな人間になれたのではないでしょうか。


この10年を10文字でまとめると?

「最底辺人間からの脱却」

f:id:ume-boshi:20211016065738j:plain
(別の局所解に陥った可能性も?)




おわりに

はてなブログ企画のイベント記事を書くのは、今回が初めてでした。自分のブログと人生を振り返る良い機会ができました。ありがとうございます。

唐突な自分語りは、以降の記事では慎んでいきます...

公式ストアでOculus Quest2を購入して厄介な目に遭った話

こんにちは。 もうすぐ社会に旅立ってしまうume-boshiです。

学生中の時間があるうちに、HMDを使った開発の勉強をしておきたいなと思い、Oculus Quest2(とOculus Linkケーブル)を購入しました!

f:id:ume-boshi:20211016072624j:plain
ブロガーなのでちゃんと写真を撮るようになってきました

Oculus Quest2の購入の際に、公式ストアから購入したのですが、色々と面倒なことがあったので記録しておきます。 Quest2の購入の際に生じた問題として、クレジットカードの制限がかかったこと、住所を無理やり変更されたこと、2重発送になってしまったことの3点がありました。

// 結論から言うと、Amazonから購入するのが一番楽だと思います。


生じた問題1: カード会社のセキュリティ制限

1つ目のクレジットカードの制限について、Oculusの公式ストアでの支払い方法はVISAなどのクレジットカードを用いた方法か、PayPalを用いた方法が用意されています。この支払の際に、カードが拒否される問題が高頻度であるようです。クレジットカードを選択した場合は、支払いボタンをクリックした時点ですぐに弾かれるので、私はPayPalで支払いをしました。

数日が経ち、なぜかOculus Linkケーブルのみで支払いが成功し、デスクトップPCもHMDも持っていない我が家に、1万円のケーブルだけが届きました。

f:id:ume-boshi:20211016074359p:plain:w450
これだけ届いてもなぁ・・・

原因としては、高額な支払いであるためか海外?への送金であるためなのか、一部の製品において銀行のセキュリティ制限に引っかかったためのようです。 この問題を解決するために、Oculusのサポートセンタに英語で質問してわかった解決方法ですが、やはり、銀行会社に問い合わせて一時的にセキュリティ制限を解除して貰う方法しかないらしい。

ということで、制限を一時的に解除してもらい、再度購入手続きをしました。


生じた問題2: フォームで住所が無理やり変更される

2つ目の問題として、購入時の個人情報入力の際に、住所を勝手に書き換えてくることです。Oculusの公式ストアで購入する際は、全て英語入力しなければならないのですが、住所のフォーマットがおかしいと自動修正してきやがります。この自動修正機能は商品の購入時には無効にできるので、特に問題はありません。

ただ、脳死状態で変更を適用してしまうと、存在しない住所が登録されることになるので注意が必要です。おそらく数字に反応しており、例えば、「○-MACHI 10-532, hogeマンション-11235」は 「10-53211235, ○-MACHI」みたいな感じで修正されます。厄介極まりないです。

たまたま私の場合は、正常に自宅に商品が届きましたが、高価な買い物をしているときに起こる問題としては恐ろしいですね。



また、次の問題で返送したことを説明しますが、その返品申請時にも住所入力欄では自動修正機能を無効にできませんでした。 スマホ・PCの両方から登録してみたのですが、両者で同様のUIであり、どうも必ず変更しないといけないようです。

ということで、自動修正機能に引っかからない誤った住所順番で、とりあえず全ての項目を入力して登録しました...


生じた問題3: 二重注文

カード会社で支払い制限を解除してもらったときに、「もう一度購入手続きをしてください」と言われたので素直に従ったところ、二重注文されてしまいました。Oculusの公式ストアでは、厳密に支払いが確定したタイミングではメールで連絡してくれず、発送されたタイミングでメールが届きます。そのため、二重注文されたことに気づかず、2つのQuest2が家に届く羽目に...
時すでにおすしですし🍣

f:id:ume-boshi:20211016072957j:plain
2つ届いた記念写真

さて、Oculus公式ストアで購入する場合、すべての商品は香港の倉庫から届くようです。Oculusのサイトから返品手続きを行うと、FedExというサービスで返送するための書類がメールで送られてきます。 FedExでは、モノを集荷してもらう際に、家まで受け取りに来てくれるのですが、そのためには電話で問い合わせて日程を予約してあげなければなりません。このFedExの集荷予約の電話が混んでいて繋がらない...

無事に電話で予約ができると、指定の日程にFedExの人が来て、{梱包したモノ + メールに添付されたものを印刷した書類}を渡して終了です。


まとめ

色々と問題がありましたが、これらが生じた原因は下記のことが考慮されていなかったためだと考えられます。

  • 国ごとの住所の特性が違うこと、アパート名の未考慮
  • 自動修正機能が間違っている可能性の未考慮
  • 決済が完了した通知が無い
  • 銀行会社から信用されていない?


おわりに

9月末に購入し、まともに全部の処理が終わったのは10月10日を超えていました...
皆さんがOculus Quest2を購入する際は,Amazonで購入するのが手っ取り早くて安心できると思います。転売ヤーには注意しなければならないですけどね!

では、素晴らしいVRライフを送りたいと思います!

【M5swarm】群ロボットの作品をM5Stack Contest 2021に応募しました!

お久しぶりです。

先日、M5Stack Japan Creativity Contest 2021に作品を応募しました! protopedia.net

youtu.be

概要

M5stackが群ロボット(Swarm Robotics)への応用可能性を秘めていることを示すために、移動するための足回りモジュールの作成と、いくつかの応用例により表現した作品です。足回り基板の製作を主眼に開発しており、群ロボットの作例はちょっとだけ。

f:id:ume-boshi:20210909013555p:plain:w400
M5swarmのとても雑な宣伝画像


作品背景

群ロボット学習用環境を身近にしたい

群ロボットに実際に取り組む人はほぼ見ませんが、皆さん群ロボットには強力な魅力を感じるのではないでしょうか?ベイマックスの「マイクロボット」といい、ヤッターマンの「ビックリドッキリメカ」といい、単体では微力なロボットが個々に判断して動き、群れることによって偉大な目的を達成できている様は感動しますよね。

そんな群ロボットですが、従来は勉強・応用開発してみたいけれど、なかなか手を出せるものではありませんでした。その理由に、普段の開発環境とプラットフォーム(マイコン等)が異なるため新しく製品を大量購入する必要があることや、学習コストがかかること、ネットに開発向けの情報が少ないなどの問題があると考えられます。研究者向けの群ロボットを購入した場合、ネットに情報が少なく、位置推定や情報共有、個体認識などの群ロボット特有の機能を改善する難しさはもちろん、製品のバグに頭を悩ませられること間違いなしでしょう。 最近では、toioという良い感じの製品がありますが、新しく買うのは少し勿体ないように思えますし、群ロボット以外への応用先が少ないです(とはいっても、何度も物欲に負けそうになりましたが…)。

したがって、幾人かがすでに複数個所持しており、ネットに情報が溢れているマイコンを群ロボットに拡張できれば、Makerにとって身近な開発分野に1歩近づくと予想されます。つまり、日本のMaker内で大流行しているM5stackで群ロボットができれば、やりやすさがグンと高まると考えたわけです。日本では「M5stackが増殖する」という伝説もありますから、群にするためにわざわざ新しいマイコンを購入する必要も少なそうです。その上、M5stackが持つ液晶ディスプレイはARmarkerによる位置推定機能、WiFiBluetoothなどの無線機能が個体間の情報共有、5cm x 5cmの小型性は複数個所持でかさばらない特性が与えられるでしょう。群ロボット学習には良いとこずくめです。

今回はそのM5stackの拡張可能性を世に広めるために、M5stackを群ロボット化するための拡張基板を作成し、応用可能性を示すための作品をつくった次第です。

個人的な学習意欲

過去に記事にしたことがあるように、群ロボット向けの動作はM5stackが無くても自作基板で実現できそうでした。 ume-boshi.hatenablog.jp

しかし、ここ3年くらい改善し続けている自作基板は、M5stackをリスペクトして進めてきたものだったので、M5stackへの互換性もあると面白いかなと思っていました。リスペクトしつつも自作できると意地を張っており、M5stackを購入したのはここ最近ですが...

別の意欲として、今まで自作基板に使用したことがあるマイコンが「Nucleo F446」、「LPC1114・1768」、「ESP系」のみでした。mbed開発環境はオンラインの鯖落ちでトラウマがあるので、Arduino IDE(オフライン)で開発できるESP系のマイコンは気に入っているのですが、マイコンの価格が500円します。高くはありませんが、バカバカと買い足せるほど安価でもないので、より安価なArduino IDEで開発できるマイコンを求めていました。

また、個人開発で基板の量産をしてみたいなと思った次第です。将来的に、自分の開発物をどこかで売れたらうれしいなと考えており、量産に掛かるコストなどを知っておきたいなと考えていました。

つまり ↓ のことを成し遂げたいということです。

  • M5stackとの互換基板の動作確認をすること
  • M5stackに慣れ親しむこと
  • ATMEGA328P AUを使った基板設計(自作Arduinoボード)に挑戦すること
  • 量産の苦しみを味わいたかった


作品について

要件

本作品が動作するために必要な要件と、その実現のための機能は下記があると考えています。

  1. 電源的にM5stackが安全 → 別マイコンによる制御とモータ部の電源分離
  2. M5stackの小型性の保持 → 5cm角の基板サイズ
  3. 安価 → ATMEGA328P-AUなどの安価な部品を採用
  4. 誰でも足回り基板の処理を変更しやすい → ATMEGA328P-AUArduinoボード化
  5. M5stackから制御できる → SPI通信による移動命令の受付
  6. 位置推定が容易 → LCDにARマーカを表示 + カメラによる位置推定
  7. 遠隔から制御可能 → HTTP通信で移動命令を受け付け可能

これらの機能については、投稿予定の記事で詳説するつもりです。具体的には1・2・3項目:「回路編」、4項目:「Arduinoボード化編(ATMEGA328P AU)」、5項目:「ソフト編 ~足回り~」、6・7項目:「ソフト編 ~応用~」に分けて紹介したいと考えています。

システム構成

作品を実現するために、画像のようなシステムを構成しました。要素としてはM5swarmとPCだけですね。M5swarmの行動の管理は、全て遠隔のPCで行う中央処理型のシステムになっています。M5swarmは、PCからのHTTP通信で命令を受信し、それに従って移動をするわけですね。群ロボットをするためには、各ロボット同士の位置関係を知る必要がありますが、それはロボットの上側からwebカメラで撮影することで実現しています。

f:id:ume-boshi:20210909012832p:plain
システム構成

M5swarm単体は、3つの階層で構成されています。1番上はM5stackで、真ん中がM5stackと自作基板の互換基板、最下部がモータを4つ動作させられる足回り関連の基板です。足回り基板はATMEGA328P-AUを用いたボードとなっています。M5stackと足回り基板のやり取りはSPI通信でします。電源分離の関係上、3.7VのLiPoバッテリーが2つ接続されます。

f:id:ume-boshi:20210909013739j:plain:w400
基板そのものはM5stackを含めた3枚です

動作例

基板実装をメインにしていたため、動作例はこだわれていません。ソフト的に実装してみたのは下記の機能のみです...

  1. 1つの個体をBlynkでラジコン的に動作
  2. HTTP命令を基に複数個を同時に移動
  3. 個体位置の認識 + 目的地への移動

たったこれだけの機能ですが、複数の個体を同時に動作させられ、目的地を決めて移動できると言えます。つまり少しコードを追加するだけでも、隊列移動をすることぐらいは容易に実現できそうです。


↓ もう一回、動画のリンクを貼っておきます。動画はキリスト教の神様が7日間で世界を創生したのと同様に、私も万物の創造主になったつもりで7日間のストーリーにより構成しました。1日ごとに作品の様子や機能、応用を紹介していく感じですね。 youtu.be 2時間半以内に作り上げるというタイムリミットがあったので、いつも使っているVideoPadというソフトで雑な感じの動画を作成しました。


おわりに

M5swarmの発想自体は、昨年2020年のコンテストの時点でありましたが、忙しすぎて実現できていませんでした...
イデアはずっと気に入っていたのですが、M5stackとの連携面は隠しながら開発・記事化を進めており、いつしか「じゃじゃ~ん!」と見せられる時期を楽しみにしていました。そして、ようやくコンテストを介して皆様に真相を明らかにできました! SNSでもいくつか反応をいただけて、とても嬉しく思っています :)

さて、本作品ですが、学業面で学会準備に時間を割く必要があり、プログラミングにほとんど時間を割けませんでした。とはいえ、何とかさぼりつつ供養させた次第です。実は私は、M5stackを1つしか所持しておらず、研究室から3つも借りていました。研究室から物資で協力してもらったにもかかわらず、動きがかなりぎこちない低クオリティな作品であることに、頭が上がらないです。(そもそもモータを4つオムニホイール風に配置するのは、結構な加工精度 + モータの選定が重要となり、個人開発クオリティでは限界かも...)

それでは、引き続きよろしくお願いします!

備忘録

本作品で達成できなかった点も、今後の発展のために一応記録しておきます。

  • 移動能力の向上(加工精度 + フィードバック制御
  • 位置取得手法とその特徴を検証
  • 各ロボット同士の位置関係をカメラを使用せずに取得
  • Haptic Swarm Robot的な挙動
  • 赤外線による近距離通信(分散的な群ロボット制御)