屋外自律移動ロボット「plat」の機体構成
はじめに
こんにちは.趣味で屋外自律移動ロボットをやっております.EGと申します.
本記事ではつくば市での自律移動ロボットの実証実験つくばチャレンジ2022に出走し,2kmの自律移動を果たしたロボット「plat」について解説したいと思います.よろしくおねがいします.
機体作成の動機
機体解説の前に私が代表を務めております学生団体「Planner」についてご紹介させていただきます.(団体といっても内々の集まりですが)Plannerはロボット等,ものづくりを趣味に持つ学生が集まって出来た団体です.基本的には毎年開催されるつくばチャレンジに参加しよう!というものです.メンバーは筑波大生を主とし,その他,阪大院や奈良先端大などで5人のメンバーがいます.もともと私個人でつくばチャレンジに出たい!といったところからそれに賛同するメンバーあれよあれよと増えこのような形となりました.
つくばチャレンジの簡単な紹介
つくばチャレンジでは主たる課題は以下のような全長2.5kmのコースを自律移動ロボットで走行させるものです.またつくばチャレンジでは実際に人がいる環境で動くロボット技術のシンポを目的としており,実施中交通規制が行われることはありません.そのため歩行者や未知の障害物に対してぶつからないように対処する必要がありますし,信号がある横断歩道もロボット自身が判断して横断するタイミングを決める必要があります.(信号機認識は選択課題として実施するか決めることが出来ます)
platの機体構成について
名前の由来
初めて個人でここまで大規模なロボット(特に金額的に)を作るのは初めてだったため,せっかくだったら汎用的な自律移動ロボットplatformにして他の用途にも使えたら嬉しいよね!ということでplatformからplatと命名しました.
(自律移動ロボットで何かやってみたいそこのあなた,お話お待ちしております)
ハードウェア
基本的なハードウェア構成は以下のようになります
・アクチュエータ
インホイールモーター(ブラシレスモータ) を使いました.名前の通りホイールの中にモータのロータが入っています.採用した理由としては2つあります.
- 安い(5000円)
- 組み付けがすごく楽
まず,インホイールモーターはタイヤ,モータ,エンコーダ全てが入って一個5000円とかなり安価です.これは個人出資のロボットとしては外せない要素でした.
そして,構造的モータからホイールへのシャフト設計がいらずシンプルな構造のためフレームへの組み付けが非常に容易でした.そして部品点数があまり増えないようにするというのも個人で作る上で外せない要素でした.
モータの駆動に使うモータドライバにはodriveを使いました.(モータはすごく安いんだけど,ドライバはすごく高かった...)
あとodriveの使い方はこちらの記事が大変参考になりました
・センサ構成
今年ロボットに搭載したセンサは以下のようになります.認識系のタスクは実施しなかったのでカメラは搭載しませんでした.
- velodyne hdl-32e (3D Lidar)
- hokuyo utm-30lx (2D Lidar)
個人でやるにはこれらのセンサは大変高価なので手が届きづらいのですが,海外オークション等を周りましてなんとか安価に中古を入手しました.
velodyneで遊んだ話
・PC
もともとPCゲームで遊ぶ用のものを流用しました
【CPU】インテル Core i7-10750H
【GPU】NVIDIA GeForce GTX 1660 Ti
【メモリ】16GB
【SSD】512GB
・バッテリー
ロボットに搭載したバッテリー及びそれぞれの用途は以下のとおりです.
- 鉛蓄電池12V ✕ 2 直列 : モータ,センサ駆動用
- ステーションモバイルバッテリー : PC用
・機体の状態indicator
機体の状態を示すのにフルカラーLEDを使いました.意外と周りの反応よかったですね?
・回路構成
こんな感じ.
odrive以外用途に合わせ自作しました.
制作費用の話
50万以降は数えることをやめました(白目)
ソフト構成
ロボットの自律移動ソフトウェアに説明します.ソフトウェアのプラットフォームはROS1(noetic)で動かしました.我々の方針としてはmove_baseやautoware等の自律移動パッケージ郡を使わず,なるべく自作,または各アルゴリズム分野でよさげなOSSを切り貼りのような形でやっています.
概要図
・地図生成
地図生成にはLeGO-LOAMを使用しました.
また,ある程度振動等にも結構強い?感じなので↓こんな感じで雑にとってもきれいに作ってくれます.
また,つくばチャレンジの本環境では時短のためMap Ⅳ様が提供されている点群地図を使用しました.
・自己位置推定
自己位置推定にはhdl_localizationを使用しました.
(正直そんなに詳しくないんですが)ndt matchingベースの自己位置推定のようです.・経路生成
障害物回避のための経路計画にはAベースのものを使用しました.
Aは簡単に説明するとxyである一定区間でグリッドを分け,スタート(ロボットの位置)からゴールまでの距離を最小化するような動的計画法を解くといったアルゴリズムとなります.
ここでは,距離最小化の項に図の青色に広がっているコストマップの項を足し,距離及び障害物コストが最小化するような経路を決定します.(図の紫色の経路)
(経路計画に興味のある方はココらへんを視ると幸せになれるかと思います)
・経路追従
上で計画した経路に対する追従器にはpure pursuitを用いました.
pure pursuitはロボットの現在位置と経路上の一定区間前方の任意の点の間の幾何学的な関係からロボットの旋回角速度を算出するというものです.
ココらへんがわかりやすいです
・開発repository
ここまでお話したソフトは全て公開しております.参考になれば幸いです
開発中の認識システムについて
今年ロボットに搭載しませんでしたが,信号機,人認識のためにカメラ映像からの認識器を作成を行っていました.
認識器の構成としてはまずカメラ画像から機械学習ベースのyoloxで信号機の領域を取得し,その領域から色認識等の処理に回しています.現在,単体テストまで完了しており来年度までに現在の自律移動システムに組み込む予定です.
最後に
ここまで,今年作成したロボットの構成についてお話しました.
私達Plannerは来年度のロボット改良にあたり,メンバーを募集しております.
もし,この記事を見て興味をお持ちの方は私EGまでご連絡いただけると嬉しいです...!(特にソフト書ける方)
Discussion