ロボット製作のスケジューリング
0.はじめに
この記事はMicro Mouse Advent Calendar 11日目の記事です.
目録
- 0.はじめに
- 1.スケジューリングが重要ってはなし
- 2.「適切な」スケジュールとは
- 3.ロボット開発のフロー
- 4.スケジューリングで特に注意すべきこと
- 5.スケジューリングを実行するために
- 6.まとめ
※つらつら書いてたらめっちゃ長くなりました.暇なときに見てください…
昨日はぱわぷろ君の今年得た教訓の話 - ぱわぷろ活動日誌という記事でした.この人マウスから身を引くマ??とか思いながら読みましたが,どうせ彼のことだから来年には何かに取り憑かれたようにマウスもやってるんだろうなぁ.兎にも角にも,道標の開発,お疲れ様でした.卒論ともに頑張ろう.
はじめまして,WMMCの老害B4,まんぼーと申します.
最近はマイクロマウスに一切触れられずに卒論に呑まれていますが,平時は⇩のようなクラシックマウスを作っています.
この子には完走歴はないのでまだマウスではありません.早くマウスにしてあげたい.
ロボットの詳しい紹介についてはまた後日(卒論終わったら)書きたいと思います.
1.スケジューリングが重要ってはなし
今回は完走できてない人がマウスについて語るのもあれなので,大学に入ってから4年間ロボット製作に携わって学んだことのうち,一番大事なことだと思うロボット製作のスケジューリングについて語りたいと思います.
この記事を見ている人の多くはロボットを作ったことがあると思います.
では,ロボットを作るとき,最初に何をしますか?
頭でふわっとしている構想を紙にまとめてみよう!と思ってノートにラフ絵をかいてみる?
作りたいものが思いつかないからインターネットで作りたいロボットを見つける?
それともとりあえず秋葉原に行ってみる?
いや俺はマウスを作るんだから機構を設計をするよ!回路を先に設計するよ!
ロボコンをやる人はルールが発表された瞬間にチームで話し合ったり.
などなど.人や状況によって様々な答えが返ってくると思います.
では,ロボット製作を経験したことのある人は⇩のようなことを経験したことありませんか?
- 途中でやる気が起きなくなり,適当に遊んでいるうちに授業が忙しくなり気づいたら他のことをやっている
- ずっと一人で設計してたアイツが消えたぞ!?
- 気づいたら大会1週間前だ…海外で頼んだ部品まだ届かない…
- ロボット作るの遅すぎて調整不足だ!
ない人は凄いですが,多くの人はこれに似たようなことを経験した(もしくは知人が経験していた)ことがあると思います.
こうならないように,ロボット開発をするときは何よりも始めに「適切な」スケジュールを立てることが重要になります.
2.「適切な」スケジュールとは
当たり前ですが,わざわざ「適切な」という言葉を強調しているのは,無理なスケジュールを立てても実現不可能だからです.
例えば,大会1か月前にこのロボットは機能不足だ!マイコンのピン全部使っちゃったし使っているマイコンを変えよう!と思って大会に間に合うでしょうか?
正直強い人はギリギリできるかもしれません.ですが,ロボット製作歴が浅い人には到底無理だと思います.なぜ無理なのか?
マイコンを変えようとしたときにやるタスクはおおざっぱに以下の通りです.
マイコンに関する知識を多少持った人目線に立って書いてみましたが,日数はかなりテキトーです.これもっとかかるやろとかいうのたくさんありますが目を伏せてください.もちろん,一概にマイコンを変えると言って,Renesas製からSTMicro製に変えるのと,STMから違うSTMに変えるのではかかる時間が桁違いに変わりますし,マイコンプログラミングをどの程度やったことがあるかによっても時間はかなり変わります.
言いたいのは,マイコンを変えるという一見簡単そうなことをするだけでこんなにも時間がかかるということです.大会1か月前にこれをやる!と言い出したら上級生は全力で止めにかかります.
このように,大会等といった期日のあるロボット開発中に,これをいつまでにやりたい!となった時,いつまでにできるだろうという憶測を立てないと破綻します(ロボットに限りませんが).逆に言えば,期日から逆算する能力があればいつから始めれば物事が間に合うかどうかがわかるわけです.
というわけで,私は
スケジューリング能力=逆算能力
かなぁと思ってます.
適切な逆算能力を持つためには,ロボットを1から作るときの流れを知ることが大事です.次の章で見ていきましょう.
3.ロボット開発のフロー
早稲田大学理工学術院創造理工学部総合機械工学科(長い)ではデザインエンジニアリングという授業で機械設計に関するフローを学びますが,それのロボット製作版です.
ロボットを開発する際にしなければいけないことは大きく分けて
-
マシン設計
-
回路設計
-
プログラム(ソフト)
の3つです.
設計の流れとかかる時間に焦点を当てながら説明したいと思います.
3.1 マシン設計フロー
マウスなどの目的が明確なロボットの設計ではここまで面倒な段階を踏むことはないですが,自分でロボットを作ったり研究したりするときはそうはいきません.知っておきましょう.
※ロボットのサイズと複雑さによってマシン設計に必要な時間はめちゃくちゃ変わるので,時間は最低でもこんなにかかるんだくらいに思ってください.
1.要求仕様の決定
ロボットを作るときには要求仕様(マイクロマウスなら迷路1区間以内に収まること)を決定することがマストです.これをなくしていきなり詳細設計に入ろうとすると,どんなサイズで作ればいいのかわからなくなり,いざ加工しようとしたときに思ったサイズとちがう!とかが起きます.さすがにサイズを決めずに加工し始めようとする人はいないと思いますが,サイズを決め直してCADをいじり直すという2度手間は避けたいですよね.
3.モータ選定
ロボットの性能のほとんどを決めるのがモータ選定です.
モータ選定を詳細設計より前に行う(※今回は3DCADでの設計のことを詳細設計と言ってますが,厳密にはモータ選定も詳細設計に含まれる)のはモータの納期が長いからです.特に性能が良いことで有名なMaxonモータはスイスから取り寄せをするため,在庫があっても3週間,なければ1~2カ月かかります.クラシックマウスで多くの人が使っているFAULHABER製モータは新光電子で買うと1か月近くの納期を必要とします.
モータの発注が遅くなると納期に間に合わない!現象に陥るため,なんとしても早く発注しなければなりません.
4.詳細設計
マシン製作では詳細設計が一番時間かかります.
とはいってもマウスは他のロボコン等と比べてここのウエイトはかなり軽いです.マウスはマシン面では足回り+筐体+吸引ファンの設計くらいしかないので(他にあったらごめんなさい),設計に関して何も知らない状態でも,他人のブログを見ながら設計すれば1か月あれば終わると思います.
設計ミスがあったら,改良を加えて+1か月くらいでしょうか.
※マウスでは当たり前の話ですが,回路基板をロボットの内部に入れる場合は,基板を置くスペース考慮して設計を行いましょう.作った後に基板どこ置く?なんて考え始めるのは愚かです.同様に,回路素子と筐体が干渉したぁとかいうのも愚かです(ブーメラン2回目).
雑談:
私は普段3DCADにSolidworksを使用していますが,基板が筐体になっているマイクロマウスでは, Fusion360をEagleと連携させることで部品の干渉等をチェックできる上,学生は3年間(中途半端…)無料なのでこちらがおすすめです(詳しくは⇩のブログ).
3.2 回路設計フロー
続いては回路設計の流れです.
なんかこう見るとめっちゃ簡単そうに見えますが,つまずく箇所はたくさんあります.
データシートの読み方,Eagleの使い方,ノイズ対策…全部学びながら設計するとなんやかんや1カ月は使いそうです.ミスの粗探しをしてもミスは見つかる物なので,周りに頼れる人がいたら見てもらうことをお勧めします.初めて作る基板を早く欲しいばかりにミス探しを疎かにすると,最悪何もできない基板が届き虚無になるだけです.
基板発注してから届くまでの時間は発注先によって様々です.Elecrowだと通常2~3週間,PCBGOGOだと最短1週間くらいで届くみたいです.どこがいいかについては他のブログを漁って考えてみてください.
ミスがあったとして,2回くらい発注したら2か月弱過ぎ去ります.
3.3 ソフト開発フロー
最後にソフト開発の流れを見てみましょう.
こちらはマイクロマウスに特化して書きましたが,マイクロマウスではソフト開発にかかる時間が一番長いと思います.そもそもプログラミングを書けない人は学ぶ時間も発生するので,とにかくめちゃくちゃ時間がかかります.全くの初心者が1から書くとなると,1年以上はかかると思います.1回完成すれば流用できるんですが(クソプログラムを生み出してしまった場合はもう一回書き直せるドン).
3.4 フローまとめ
おおまかにそれぞれの開発の流れをみてきました.
開発するロボット,知識量によってはどこかで無限ループがあったりします.僕の卒論はハード開発の無限ループを起こしています.
これらを1人で行うのははっきり言って神の為す業です.全部ひとりでやれる人はすごい.
マイクロマウスサイズですらかなり大変なので,少しでも大きくなると一人でやるのは無理があります.そのため,大型の機体を作るロボコンチームは大体がハード屋さんとソフト屋さんに分かれてやります.
3.5 それぞれのフローの進め方
話を戻しますが,3つのフローを順番に消化したらとてつもない時間が必要になります.
では,それぞれのフローをどのように進めていくか.
仮にロボット開発を4月にスタートして,9月にある大会に間に合わせたいとします.
マイクロマウスに絞って考えていくと,こんな感じかなぁと思います. (※人によって進め方は多少違うと思いますが,一例です)
どうでしょうか?できそうですか?
超強い人は「余裕」とか言いそうですが.
もしくは,回路図・ソフトはもらったからあるという人(WMMCの新人教育を受けた人)ならこの期間でもどうにかなります.
しかし,マシン設計・回路設計に関しての知識が少なくて,1からプログラムを書かなければならない人が1人でやると,当然どこかでうまくいかなくなり間に合いません. 経験者でも設計にミスが生じたら,間に合ってもギリギリ・調整不足になると思います.
ではいつからやれば間に合うか.
正直知識と経験の量・聞ける先輩がいるかどうかによってかなり差が出てくると思います.
参考までに私がMola Tactを開発したときに立てた開発フローを載せておきます.
<進め方に関する補足>
- 最初はマシン設計で寸法を決めた後回路設計を行った.基板上に部品を配置する前に穴の位置を決定するのが好ましい
- 発注の合間を縫って他の事をやるというイメージ.動作確認などすぐにできるものは隙間時間に済ませる
<ついでに1年間を振り返ってみる>
卒論というおもりがあることを考慮してオフシーズンになった瞬間に始めましたが,これでも間に合うかどうかわからないスケジューリングでした.
これを見るとずっとわりとマウスやってるように見えますが,3月末から卒論がスタートしてるので,土日とマウスをやりたい気分の日だけ開発するといった感じです.
WMMCのプログラム(標準プログラムと呼ばれている)を捨てて(※探索法を除く)1から書き直したおかげでかなり時間を吸われましたが,シーズンオフになってわりとすぐ始めたおかげで東日本大会で走る状態になりました(※なお完走はしていない模様).
研究室配属前はもっと時間を割けるはずなので,同様のスケジュールでもうまくいくかもしれないです(※十分な知識を持った先輩にある程度頼ることは必須).
あとは自分が持っている知識量・実装能力を考慮して,自分なりのスケジュールを立ててみましょう.
(プログラムを大して書いたことがないけど1からプログラムを書きたい!という場合は倍以上の時間がかかると思います)
4.スケジューリングで特に注意すべきこと
4.1 試行錯誤が必要な場合
マシン設計には試行錯誤が必要な場合があります.
試行錯誤が必要な例→
- 物を掴んだり投げたりするための機構が重要になるロボット
- 一部の研究(ソフトロボットなど)
こういったロボットを設計する場合,複数回の試行錯誤をして初めてうまくいくケースがあります.複数人で設計する場合は分担して設計→評価することができますが(そうすると選ばれず失職する者が現れる闇があったりする),1人 or 少人数で開発を行う場合,試行錯誤に必要なサイクルを把握する必要があります.
設計サイクルは設計するサイズと人(やる気と充てられる時間)に大きく依存しますが,1つの機構を設計して実験まで済ませるのにかかる時間は2~3カ月くらいと見積もっています.
これを始めにすることで納期までに何回試行錯誤ができるかがイメージでき,開発スパンの目安になります.
試行錯誤をする際に最も気を付けなければいけないのは,
「切り捨てられる機構を見極める」
ことです.いくら試行錯誤が重要な開発をやっていたとしても,最初から悪い結果が想定できるロボットを開発していては時間の無駄です.
4.2 開発における外乱
外乱?スケジューリングについて話してるのにいきなりどうした?と思うかもしれませんが,
ロボット開発における外乱 = 開発の妨げになる要因
です.
この外乱を2種類に分けると,
- 予測できる外乱
↪予め日程の決まっているレポート(実験や製図など)・中間発表・期末考査・ゲーム発売日
- 予測できない外乱
↪いきなりやってこいと言われた大量のレポート・入院
に分けられます.後者はどうしようもないので余裕を持って開発しましょうとしか言えないのですが,前者はスケジュール上で必ず考慮しなければいけません.
特に期末考査は,正常な人間なら1~3週間勉強に時間が取られるので,この期間は空白としてスケジュールを組みましょう.
5.スケジューリングを実行するために
スケジューリングを立てたとして,そのスケジュール通りにやるにはどうするの?
答えは根性です.
は?って思うかもしれないですが,人間は弱い生き物なので,根気がないと辛くなった瞬間に逃げ出します.なので,スケジューリングを立てた後は根性でやり遂げるしかないです.
※補足:他人に自分の根性を押し付けるのはダメです
ただし,モチベーションを保てば継続できると思います.
モチベーションの保ち方は以下の通りです.
- マウスの大会やプチ大会で行われる懇親会に参加する
-
目標となる人を見つける
- サークル内or他校のライバルと競い合う
→私は同時期にDCマウスの開発をしていた東京理科大学MiceのMakotoさんやふくだくんを勝手にライバルにしてました.向こうの方がどうみても強いんだけど,強い人をライバルとすることで得られることは腐るほどあります.進捗勝負も負けましたが,いつか同じスピードで戦いたいです.
- 選ばれし者しか出れない大会(=全日本大会)に出るという目標を立てる
→大会があるロボットを作るならこれが一番のモチベーションになると思います.
- リーダー・教授に急かされる
→チームで開発する際はこれが一番効きますが,圧が強いと逃げ出す可能性もあります.
自分がリーダーの場合は優しくいたぶろうね☆
6.まとめ
ロボット製作のスケジューリングについて,たらたらと書いてきましたが,まとめです.
- スケジューリング能力=逆算能力
- 自分の知識量・実装能力を考慮しよう
- 外乱を考慮したスケジューリングをしよう
- スケジューリングを立てた後は根性でこなそう
長くなりましたが,少しでもロボット製作の参考になれば幸いです.
「俺は大丈夫」って思ったそこの1・2年生,本当ですか?(煽) ロボット製作を何回かやったことがあっても,スケジュール管理(とメンタル・モチベーション維持)ができなくなった瞬間に破綻します.卒論やってても結構そういう人がいる印象を受けます.
最後に,今年は行けなかったですが,全日本大会に参加した皆さんお疲れ様でした.
来年は参戦したいです.
<以下WMMCの後輩向け>
今年うまくいって来年DCマウスを作りたい人は,今からでも新機体を作りましょう.
※その前にちゃんとスケジュールを立てましょう.
間違ってもB4(特に「ぐでたまうす」の飼い主)の開発スピードは参考にしちゃいけないです.積み重なった知識があるからこそ成せる業です.