みなさん,こんにちは.
おかしょです.
今回は,さまざまなロボットを作成する上で必要な手順を説明したいと思います.
このブログでは現在,倒立振子ロボットを作成するために必要な,電子工作や基板設計などの知識を紹介してきました.倒立振子については以下を参照してください.
しかし,ロボットを制作する大まかな手順の解説をしたことはありませんでした.
このような手順の解説は必要ないのかもしれませんが,ロボットを作りたいけど何から手を付けたらいいのかわからない方やどのくらいの期間で作れるのか知りたい方にとっては重要な情報だと思ったので,開設することにしました.
この記事を読むと以下のようなことがわかる・できるようになります.
- 自律ロボットとは
- ロボットを作成する手順
- ロボットを自律させるために必要なこと
また,このブログではラジコンカーのようなコントローラで操縦するロボットではなく,ロボットが自分で考えて動く,自律型のロボットを対象としているのでご了承ください.
自律型ロボットとは
最近は無人機の利用が活発になっています.最も目に入りやすいのはドローンの空撮ではないでしょうか.一般的に言われるこのドローンは,正式にはマルチコプターと言います.実はドローンというのは無人機の総称のことで,空撮で利用されるもののみをさしたものではありません.
空撮で用いられるドローンはパイロットが操縦して,撮影を行っています.最近の空撮用のドローンはほとんど操縦をしなくても,撮影対象について行ったりすることができるようになっています.このように,パイロットがコントローラを使わないでも,ドローンが自分で判断をして与えられたミッションを達成するロボットを自律ロボットと言います.
このような自律型ロボットが作ることができたら,家事の一部をロボットにやらせるという,夢のようなこともできるようになります.
このような自律型ロボットを作るためには,機体を製作し制御系の設計及び実装をする必要があります.
この流れについて,細かく見ていきます.
自律型ロボットの仕様
何よりも最初にやることはどのようなロボットを作りたいかです.つまり,ロボットの仕様を考えることが最初にやるべきことです.
例えば,空撮で使用されるようなマルチコプターが作りたい場合の仕様は以下のように考えられます.
- 自動で離着陸を行う
- 空調の風などがあっても姿勢が乱れない
- 万が一,墜落した場合でも安全である
- 壊れにくい
- 重量は200g未満
この程度で十分だと思います.
しかし,マルチコプターを初心者が作るのは難易度が非常に高いです.無理とは言いませんが,難しいと思います.
なぜかというと,マルチコプターのように3次元で移動するものは常に安定した制御が行えなければすぐに墜落してしまい,機体が壊れてしまうからです.車のように地面を走る,2次元で移動するロボットは壁などにぶつからない限り,そう簡単には壊れません.
機体が壊れてしまうと,修理,もしくは作り直す必要が出てきて,時間や費用が多くかかってしまいます.
なので,初心者はまずは地面を走るもの,車型の自律ロボットなどがおすすめです.
制御もしっかり学びたい場合は,倒立振子型のロボットが非常におすすめです.
倒立振子型のロボットは入力が車輪の回転の一つに対して,制御したい出力は振子の角度とロボットの位置の二つになるので,制御の学習対象として適していると思います.制御工学の参考書でも,制御対象に倒立振子が選ばれることが多いです.
この倒立振子ロボットの仕様は以下のように考えられます.
- 振子を直立させ続けることができる.
- 振子を直立させたまま,任意の位置に移動させることができる.
- 空調などの風があっても,振子を直立させられる
- ものを載せたりしても,問題なく制御できる
- さまざまな制御則を実装することができる
- 振子の長さを変えることができる
自律型ロボットの制作の流れ
このような倒立振子ロボットを作るには以下のような工程を踏んでいく必要があります.
Step 0. 数値シミュレーションを行う
Step 1. 実験装置の製作
Step 2. 制御対象のモデリング(モデルの妥当性を数値シミュレーションと比較して判断)
Step 3. コントローラの設計(モデリングしたパラメータを用いてゲイン調整などを行う)
Step 4. コントローラの実装
大まかな流れは上記のとおりです.
それでは,それぞれのstepの細かい流れを説明していきます.
Step 0. 数値シミュレーション
このstepでは,これから作るロボットの数値シミュレーションを行います.
なぜ,step 1ではなくstep 0なのかというと,数値シミュレーションの作成は一番最初にやらなくてもいいからです.
機体を作ってからでも大丈夫ですし,別にやらなくても倒立振子を制御することはできると思います.
このstepはやっておくと非常に勉強になり,得るものが多いと思いますがとにかく作れればいいという方は飛ばしてもらってもかまいません.
しかし,数値シミュレーションを行うことによって,制御仕様としているロボットが本当に制御できるのかどうかを確認することができます.
なので,「実際に作ってみたら,全然制御できませんでした.」ということを防げます.
この数値シミュレーションを行うためには,作ろうとしているロボットの運動方程式を求める必要があります.
そして運動方程式を求めたら,その制御対象が可制御なのかを確認します.可制御であれば,良いのですが不可制御であった場合はそのロボットを作っても意味はありません.読んで字のごとく,制御が不可能だからです.
そのような場合は,入力を増やす,もしくは入力の向きを変えるなどして改善する必要があります.
そして可制御であることが確認できたら,簡単な制御則で制御対象を数値シミュレーション上で制御してみます.
早く作りたい場合は,可制御かどうかだけ確認して次のstepに進んでも構いません.
一回で成功させたい場合は,この数値シミュレーションをどれだけ現実に近づけられるかで成功率が変わってきます.現実に近づけるには数値シミュレーション上で,離散化や外乱の影響,モデル化誤差,可観測性なども考慮しておくと必要があります.もっと言えば,ボード線図を使ってシステムの解析もしておくと良いです.
ただ,ここまでやると,かなりの時間がかかるため大変です.
Step 1. 実験装置の制作
ここでは,step 0で考えた状態量を取得するにはどのようなセンサが必要なのか,機体はどのくらいのサイズで作るのかなどを考えます.
このstep 1でまず最初にやることはロボットの制作に必要なものを書きだすことです.
倒立振子ロボットの場合は以下のものが考えられます.
- 基板
- マイクロコントローラー
- モーター
- モータードライバー
- ギヤボックス
- タイヤ
- 姿勢角センサ
- 無線通信機
- 電池
- 段ボールなど
- ボルト
- ナット
基本的な道具は以下のものが考えられます.
- はんだごて
- はんだ
- はんだ吸い取り線
- はんだごてスタンド
- マスキングテープ
- ニッパー
- ペンチ
- ルーペ
- カッター
- 六角レンチ
- ドライバー
これらのものが倒立振子ロボットを作るために必ず必要だとは限りませんが,これだけあれば十分だと思います.さて,必要なものがわかったら,ロボットの設計を行います.
設計は3次元CADソフトなどを使って行うとイメージしやすく,部品同士が干渉していないかなどの確認ができるため良いと思います.紙に書いてもいいのですが,慣れていないと実際に作った時に部品同士がうまくかみ合わないことがあります.
3次元CADを使えば部品同士がかみ合うかどうかを確認できます.
無料の3次元CADソフトでfusion 360などが非常に使いやすいと思います.
このstepでロボットの設計もできて,問題ないことが確認できたら実際に制作に取り掛かります.
Step 2. 制御対象のモデリング
ここでは製作したロボットの数学モデルを求めます.
Step 0で求めた運動方程式に基づいて数学モデルを求めていきます.
システム同定で数学モデルをイチから求める方法もあるのですが,理論が難しいため難易度が高いです.
数学モデルが構築できたら,step 0で作った数値シミュレーションに組み込んで確認すると,構築した数学モデルが実際のロボットに対して正しいのかが確認できます.
問題なく数値シミュレーションが行えたら,次のstepへ行きましょう.
この時に.問題が生じた場合は,数学モデルが間違っている可能性があるのでもう一度数学モデルを求めなおす必要があります.
Step 3. コントローラの設計
ここでは数値シミュレーション上で,実際に使用する制御器のゲインの設計などを行います.
この数値シミュレーション上で制御ができない時は,プログラムが間違っているか,ゲインの調整ができていないことが多いです.その確認ができて,実装しても問題ないことがわかったら次のstepへ行きます.
Step 4. コントローラの実装
このstepではついに,マイコンに設計した制御器を書き込み,作成したロボットに実装します.
もちろん,問題なく自律させることができたら成功です.
できない場合は,ゲインに問題がある可能性が高いです.数値シミュレーションでは上手くいっても,このstepでは上手くいかないことがほとんどだと思います.
根本の原因は数学モデルにあるのですが,数学モデルを現実のロボットに近づけるには限度があるため,ある程度は妥協する必要があります.
それでも,むやみにゲインを調整してもうまくいかないので,数値シミュレーションで再度調整を行いながら,実際の機体を使って調整していきます.
まとめ
この記事では自律型ロボットの作成手順を解説しました.
全てのロボットが,この流れで開発されているわけではないと思いますが,このような手順は必要だと思います.
これらの手順をすべて一人で行うのは非常に大変ですが,その分やりがいは大きいです.
数値シミュレーションではうまくいっても,実機に実装するのは非常に難しいのですが,原因を特定し対応していけば,自立させることは絶対にできるはずです.
あきらめずに根気よくやることが大切です.
しかし,あきらめてしまう人が非常に多いです.
私の所属する研究室でも,実験をあきらめて,数値シミュレーションの改善に手をかける人や研究そのものをあきらめて,研究室を去る人などもたくさんいます.
そのくらい大変なことですが,あきらめなければ成功する可能性は続いていくので,皆さんもあきらめずにかんばりましょう.
続けて読む
以下のページでは私がこれまでに作ったロボットなどをまとめています.
このページからさまざまなロボットの作成過程を解説したページに飛べるので,気になる方は読んでみてください.
Twitterでは記事の更新情報や活動の進捗などをつぶやいているので,フォローしていただけると幸いです.
それでは最後まで読んでいただきありがとうございました.
コメント