ロボットに乗せるメインマイコンは一つにしたほうがいい
自己紹介
こんにちは。初めてQiitaに投稿させていただきます。
2019から2022まで沖縄高専で高専ロボコンをしていました、nalinalyと申します。
後輩への技術継承を目的として、記事を投稿していこうと思います。いつまで続くかな?
この記事が少しでも助けになれば幸いです。
本題
自分が4年間ロボコンをしていて、4年目の地区大会が始まろうかというときに気づいたことです。
メインマイコンは1つにしたほうがいい。
タイトルの通りです。この記事で言いたいのはこれだけなので、もう読まなくていいです。
一応、メインマイコンを2つとか3つにすると何が起こるかだけ説明します。
メインマイコンを2つとか3つにすると何が起こるか
悪いことばかりではなくて、一応メリットもあります。
メリット
- 使えるピンの数が増える
これはメリットというより、目的? - すぐ動く
それぞれのマイコンが直接駆動系とかセンサに接続しているので、動作確認などは早いです。動くまではこっちの方が早いかな? - すべてのマイコン基板を同じ設計にして、発注と設計のコストを下げる
たとえば、DCモータ3個、サーボモータ3個を接続する基板と、DCモータ2個、サーボモータ4個を接続する基板があるとすれば、DCモータ3個、サーボモータ4個を接続できる基板を設計すれば、その2つをカバーできるわけです。2022年の時は実際にそれで3つのマイコン基板を同じ設計にしてちょっと得意げになってました。5か月後くらいに何が起こるか予想できてればね。ちょっと想像力が足りなかったね、その時の自分。
デメリット
- 開発の手間がn倍
メインマイコンを3つにしていると、3つのマイコンで同じような処理を行うことがあります。たとえば、コントローラからの通信を受け取る部分とか。そのプログラムに変更を加えるときには、3つのプログラムの同じ箇所をそれぞれいじって、3つのマイコンにそれぞれ書き込む必要があります。これ、最初はいいんですが、後々コードが数百行とかになってくると、数百行のコードの中から該当する箇所を探すという作業が発生します。これを3つのファイルにまたがってやるのは結構ストレスなんですよね。軽く発狂するくらいには。とくにロボットの調整時期はパラメータを頻繁に変えるので地獄です。また、急いでいるときは「まあ、他のはあとから変更すればいいや~」っていって、それが積み重なって、あとからどのプログラムのどこを変えてないのかわからなくなります。その状態になると頭にもやがかかったみたいになって、作業効率が落ちます(自分だけかな?)。あと、プログラムを書き込むマイコンを間違えることもあります。そうするとロボットが想定していない動きをするので、最悪回路や機構が破損することも考えられます。 - 連携させるのが手間
役割は異なっていても、2つのマイコン間で同期をとらなければならない場面は必ず出てきます。通信を行って連携をとるのはできなくはないですが手間です。
結論
こうして書いてみると、なんかメリットよりデメリットの方が少ないですね。本当にロボットに乗せるメインマイコンは一つにしたほうがいいのか、ちょっと自信が持てなくなってきました。
でもいえるのは、ロボコンは絶対、設計製作段階で苦労しろってことです。ロボコンだけではないかもしれないですが。
そこで気の利いたシステムを作れば、後々調整段階に入ったときに圧倒的に楽になります。
そういった意味で、メインマイコンを一つにするのは半年後の自分を大いに助けると思います。
また、メインマイコンを一つにするために、UART通信でモータ6個制御します!みたいな回路を作っておけば汎用性が高いので、次の年のロボコンにも使えるかもしれないですね?
2022年の愚痴みたいな記事になってしましましたが、おかげで書き上げた私はかなりすっきりしています(2022年10月末時点)。また、気力と体力があれば、他にも記事を書いていこうと思います。