この記事はUEQareer Advent Calendar 2016 16日目の記事です。
#はじめに
みなさんはロボットを作りたいなと思ったことはありますか?
実はここ最近になってロボットを簡単に作ることができるようになってきました。
今回は入門の一つ手前、そもそもどのような考え方で作っていけばいいのかなどの考え方について書いていこうかと思います。
実はロボットを作ってみたかったんだよねという方
ソフトだけじゃなくてハードもやってみたいなという方。
魔術師として使い魔が欲しいなという方。
そういった方の一助となれば幸いです。
ただし我流ですのでご留意ください。
いろんな用語が出てきますが詳細はGoogle先生に尋ねてみてください。
#ロボットの要素
そもそもロボットを構成している要素には何があるのでしょうか。
個人的には
1. エネルギー源・・・いわゆるバッテリーなどのこと。人間でいうところの脂肪や肝臓。
2. 頭脳・・・いわゆるマイコンなどのこと。人間でいうところの脳みそ。
3. 感覚器・・・いわゆるセンサーなどのこと。人間でいうところの目や耳。
4. 骨格・・・いわゆるフレームなどのこと。人間でいうところの骨。
5. 駆動装置・・・いわゆるモーターなどのこと。人間でいうところの筋肉。
これらのものがあるんじゃないかと考えています。
逆に言えばこれらの要素を用意してしまえばロボットが作れちゃうってことです。
##エネルギー源
エネルギー源として用意すべきはバッテリー類です。
簡単に入手できるのは乾電池ですかね。簡単なロボットならそれだけで動きます。
よりパワフルな動作をさせるときはラジコン用のバッテリー(Li-PoとかLi-Feとか)を用意しましょう。
選ぶ際はマイコンやモーターなどが必要とする電圧や電流、ロボット自体の稼働時間に注意しましょう。電池の容量はmAh、放電レートはCといった単位で表されています。
##頭脳
頭脳として用意すべきはマイコンやパソコンなどだと思います。
実際問題センサーやモーターなどの制御が行えるだけの賢さがあればいいので、お好みでどうぞ。私の場合はレジスタをいじるのがかっこいいと思っていたのでSHマイコンやRXマイコンを使っていましたが、手を出しやすいのはArduinoやNucleoなどのmbed系かなと思います。
マイコンは入出力に使えるピンに限りがあるので、ロボットの規模に合わせてマイコン自体の数やピン数の選択を行いましょう。
プログラミング言語は使うデバイスごとに使えるものを使うといったことになると思います。私の場合はCやC++が多いです。最近はPythonでも開発しています。
##感覚器
感覚器として用意すべきはセンサー類です。
これはロボットに知らせたい情報が何なのかを考えて選びましょう。
ロボット自体の姿勢を知らせたければ加速度センサーやジャイロセンサー、目標物までの位置や距離を知らせたければカメラや測距センサーといった感じです。
その他にも温度センサーや匂いセンサー、光センサーなどなどやりたいことに合わせて選びましょう。
ちなみにラジコン感覚でロボットを操る場合は無くても良かったりします。その場合のセンサーは人間の目や耳、鼻になります。
##骨格
骨格はまぁロボットが形を保てればなんでもいいと思います。
紙だったり段ボールだったりもなかなかいいですし、もっと強度が欲しければABS樹脂だったりアルミだったりといった感じです。
デザインは全体の形や使うマイコンやモーターなどの位置に注意しながら行うことになると思います。例としてロボットハンドを作る場合であれば、全体の形は人間の腕のようにしてロボットの根元にマイコンを、各関節にモーターを設置、といった感じです。
設計は紙に手描きからCADを使うまでいろいろありますが、やはり便利なのは3DCADソフトでしょう。学生であればAutodeskのInventorやFusion360が無料で使えたり、FreeCADというオープンソースのソフトがあったりします。設計の仕方自体はそれらのソフトのチュートリアルをこなせば身につくはずです。
実際に骨格を作るとなった場合は手加工や加工業者に頼む、CNCフライスを買う、3Dプリンタで出力するなどの手段があります。(余談ですが3Dプリンタは楽に造形ができるので最近多用しています。出力代行業者もあるので気になる方は試してみるのもいいかと。)
##駆動装置(アクチュエーター)
駆動装置の代表はモーターです。一口にモーターといっても無限回転させるのか角度指定で動かすのかと用途は様々です。無限回転させるだけならばいわゆるDCモーターを使うのがいいでしょう。角度指定をする場合はサーボモーターやステッピングモーターが便利です。DCモーター + ロータリーエンコーダーでも可能です。
選ぶ際は必要となる回転数だったりトルクだったりを考慮しましょう。この両者はよくトレードオフの関係になっているのでどちらが必要なのかをよく考える必要があります。
考えたくない場合は市販されているキットを使いましょう。タミヤがギヤボックスやタイヤ、キャタピラなどのキットを出していたりするので利用するとよいかと。
モーターの駆動にはモータードライバというICがよく使われます。というのもモーターは結構電流を流さなければならないのですが、マイコンに直に接続するとマイコンの性能を超えて電流を流そうとして最悪の場合(マイコンが)死に至るからです。
##その他
上述した要素以外にあると便利なものとしてはディスプレイやスピーカーなどのロボットからの出力を表示するものです。ロボットとコミュニケーションをとりたい場合などには必要になってくると思います。
#ロボットのつくりかた
では実際にロボットをどのように作るのか、それは
1. コンセプトを決める
2. デザインを起こす
3. 必要なパーツを見繕う
4. パーツとの兼ね合いを見ながら詳細にデザインする
5. デザインからフレームを設計
6. フレームを加工
7. 全パーツを組立
8. プログラミング
9. デバッグ
10. 完成
こんな感じです。
##例として茶運びロボットを作るとすると
###コンセプト
お茶を運んでくれるロボット
###デザイン
駆動部分はキャタピラ
湯呑を載せる荷台がある
キッチンからデスクまでお茶を運んでもらう
###パーツを見繕う
頭脳はArduinoで十分かな
キャタピラのキットを買ってこよう
モータードライバも必要かな
荷台には湯呑検知用に圧力センサを用意しよう
キッチンからデスク線を引いてライントレースをしてもらうのにフォトセンサーを買ってこよう
それぞれの接続に配線やらネジやらを買おう
###再デザイン
それぞれパーツの寸法をデザインに反映
キャタピラユニットの上にArduinoは縦置きにして設置その隣に荷台、防水対策もしておく
フォトセンサはキャタピラの前側下向きに設置
###フレーム設計
Arduino設置フレームはL形でネジ穴の位置を合わせておく
荷台はただのトレイでいいかな
###フレーム加工
3Dプリンタ出力代行業者に設計データをぽい
あとはよろしく
###組立
パーツをデザイン通りに組み立てるだけ。
###プログラミング
Arduinoさんにフォトセンサーと圧力センサーの処理を書き込み
モータードライバへの出力も忘れずに
フォトセンサーの値をモータードライバへの出力に反映させてライントレースさせよう
###デバッグ
湯呑検知の閾値を変更
モーターの動きが激しいから緩やかにしよう
###完成
茶運びロボットが完成
快適なお茶ライフ
こんな感じです。
#さいごに
今回の記事ではロボットの要素とつくりかたについて書いてみました。
かなりざっくばらんに書いているので詳しい話は他に解説をしている方がいるのでGoogle先生に尋ねてみたください。
ただこんな感じで難しく考えなくてもロボットができるんだということを知ってもらえればいいかなと思います。
ではでは