自律走行台車を作りたくなったと言いましたが、熱が冷めないので作り始めることにしました。
熱が冷めないのは、自分がイメージできる作業が「台車の形を考えて、部材を買ってきて、組み立てるまで」までしか無いからだとは自覚しています。
もし「環境認識をして、走行計画をして、車両制御をする、という部分を実装する作業」までイメージ出来ていたら、大変そうだからやめておこうかな、となっていたかもしれません。
が、やったことが無いのでイメージができません。知識が無いというのは幸せなこと(?)です。
とはいえ、初めて自律走行にチャレンジするのに、ハードウェアや機能の制約でチャレンジの幅が狭まるのはつまらないので、最初は日曜大工から入るのもアリでしょう。
とりあえず、少しでも環境認識系の概念に慣れるために、intel realsense のグループが公開しているyoutubeの動画を垂れ流しで聞いています。睡眠学習的に能力が上がると良いのですが。
www.youtube.com
基本設計をやり直す
私がやっているのは基本設計ではなく要件定義なのでは・・・と内心思わなくもないですが、パワポエンジニアの世界ではこの作業を基本設計と呼ぶのだと自分に言い聞かせて、前回行った基本設計をもう少し掘り下げてみました。
掘り下げると言っても大したことはやりませんが、一度屋外仕様と屋内仕様を分けて考えなおしました。
- 屋外仕様:路面、環境、周辺障害物等すべてが過酷な環境で長時間走ること
- 屋内仕様:手段は問わないから、自宅の部屋の中で住人の役に立つロボットであること
を究極目標に据えて、もう一度必要となりそうな機能・性能を洗い出して、設計書の目次を作るようなイメージです。いつもどおり、要求機能を列挙し、それぞれに対する設計解を導出する思考展開図を書いていきます。
屋外仕様の基本設計
屋外では多分こんな感じで要求機能を列挙し、設計解というか、細部の設計に向けた要件を決められるのではないかと思います。
大体の考え方は倒立振子ロボットの時と同じで、車輪やモータも(節約のためにも)同じものを使う予定ですが、
- 野外対応(振動、紫外線、雨等)
- 自律走行用の今まで以上にリッチな環境認識・計算資源
- 家の外あるいは遠方まで運び出すための被運搬性、(出場するなら)コンテストのレギュレーションを満たすサイズ要件
あたりが重要になってくるはずです。
走破性のうち、段差乗り越え性能は倒立振子ロボットの時の設計を準用するつもりです。
純粋な構成部品性能としては、最終的に倒立振子ロットver2で採用したservocityのギヤードDCモータ、6インチホイールでも、大体5cmくらいの段差を乗り越える能力はあるはず。
どちらかというと、車体が転覆しないための車体安定性確保(ホイールベース延伸、低重心化等)が重要ではないかと思います。こちらはまた後で細部を検討します。
ちょっと気になるのが振動で、搭載機器が壊れたり、樹脂部品が割れたりすることを危惧していますが、解析的な設計能力は残念ながら持たないため最低限の対策にとどめようと思います。何らかのサスペンションをつけられないか、考えてみるつもりです。
自律走行は正直何から手を付けて良いのかわかりませんが、路面認識やSLAMをやるなら、それなりのセンサと計算機をバッテリ駆動でロボット本体に搭載する必要があるでしょう。
カメラとラズパイで単眼SLAM・・・みたいのも聞いたことがある気がしますし、安価に作るならそれに越したことはないのですが、傾向としては高性能・高価格なのではないかと。
手持ちの機材でも少し試せると思うので、色々試しながら、具体的にどのようなHW構成、処理方式にするか詰めていくつもりです。
上記の機能・性能は、最悪達成できなくても洒落で済むのですが、そもそもの問題としてサイズや重量が重要です。ここで失敗すると、実験すらままならなくなります。
つくばチャレンジ等に出すならば当然そのレギュレーションを満たす必要がありますし、そうでなくても、野外に持ち出すための最低限の被運搬性が必要となります。
そうはいっても、DJIのMavicAirのように凝った折り畳み機構を設計できる能力は無いので、
- そもそも軽く作る
- 分解しやすいように気を付けて作る
ようにすることで対応しようと思います。
バッテリの持ちは、充電をしに家に戻るのも大変ですし、それなりの長距離走行が必要となりそうなので、1~2h@4km/hあたりを狙っていくつもりです。
屋内仕様の基本設計
屋内用途についても同様に思考展開図を描いていきます。
こちらはこちらで、不整地走破性は不要となるものの、違う種類の要求性能が厳しくなってきます。
- 壁や住人を傷つけない
- 壁や天井に自己位置推定用マーカを貼っても良いし、外部PCとの連携もできるが、任意の位置に任意の経路で正確に移動する
- 音声認識、物体認識、物体把持・操作・運搬、家電の操作
等が求められます。
当初、倒立振子ロボットで実現しようとしていて、すっかり忘れてしまっていた機能群です(笑)
コンテストに出るとすればRoboCupHomeあたりになりますが、ルールを見る限りかなり難易度が高そう(つくチャレも同じくらい高い気もしますが)なので、当面はRoboCupHomeのレギュレーションを満たすことは考えず、ホームロボットとして一通りの機能をそろえることを目指します。
サイズや重量については特に規定はありませんが、
- 壁や床を傷つけない
- 住人(僕)に危害・圧迫感を加えない
- ドアの幅等を通り抜ける
あたりから、サイズは床面投影面積(いわゆるフットプリント)ベースでルンバと同サイズ(Φ350mm)を狙います。
速度は1km/h程度のゆっくりスピードに制限します。小さい子供がいるわけではないので、米袋がぶつかってくるくらいなら耐えられる(気がする)ので、重量は10kg以下を狙います。
ホイールベース、トレッド幅も小さくして、車輪が車体からはみ出さないようにします。できればクッションみたいのを車体周囲に貼り付けたいですね。
環境認識や自律走行にかかる部分は、例えば壁や天井に位置補正用のマーカのようなものを貼っても良いし、ホストPCの計算資源を利用することも可能なので、多少自由度が上がるのではと考えています。
できればやりたくないですが、電源も有線給電化しても良いくらいです。逆にバッテリ駆動なら、ルンバみたいに自動的に充電ドックに戻ってくるくらいやってみたいですね。
結局どうするか
2台作るのも大変ですしお金もかかるので、屋外仕様、屋内仕様の最小公約数的な1台を作ることを目指します。
- ベースはルンバサイズの車輪移動ロボット
- 屋内・屋外それぞれの使用を想定した安全関連装備
- 屋内外で使える環境認識・車両制御系
- 野外使用可能なセンサ系・ナビゲーション系
- 屋内での正確な移動、物体認識・把持・操作・運搬
といった感じでしょうか。
掘り下げたと言っても、整理しなおしただけなので、前回記事から比べ特に検討が深まった感じは出ませんが。
まとめ
わざわざ思考展開図など作らなくても良い程度の、当たり前の設計成果となりましたが、とにかくこれでロボットを作ってみようと思います。
次回はベースの台車の設計か何かを記事にします。