つくばチャレンジ2021に参加した話
Sun Dec 5 17:48:54 JST 2021 (modified: Tue Dec 21 23:44:44 JST 2021)
views: 3051, keywords: つくばチャレンジ
執筆: B4池邉
はじめに
今年から初めてつくばチャレンジに参加しました。 つくばチャレンジの会場には様々な自律移動ロボットをたくさん見たり、 参加者の方と自律移動についての技術トークができたり、とても刺激を受けました。
今回、初参加ということで色々なことを試してみました。結果的に信号あり横断歩道まで走行することができました!
本走行は、スタートから信号あり横断歩道まで走行しました。https://t.co/fZF7aQIi54
— BEIKE (@BEIKE_RE) November 22, 2021
ということで、つくばチャレンジで試したことなどについて話していきます。
つくばチャレンジ2021に参加した目的
つくばチャレンジでは、センサをたくさん載せたりしてツヨツヨに強化した機体がよく見られます。 例えば、GNSSやIMUや3D LiDARや色々なカメラや2D LiDAR複数搭載などです。 また、機体のサイズも大きいものが多いような気がします。確かに、ホイールのサイズが大きいと走破性があって安定します。
しかし、あえて私たちのチームは最小構成(2D LiDARのみ)で小型である移動ロボットを使用しています。 その理由は、上記のロボットを使用して出てくる問題に対して、ソフトウェアで実装して対応できるものであれば対応しようというモットーのもとやっているからです。 なので、最小構成で小型である移動ロボットでどこまで走行できるかチャレンジしてみることを目的としました。
使用した機体について
つくばチャレンジ2021に参加するためにRaspberry Pi Catという機体を使用しました。 つくばチャレンジ2021に参加している機体の中でも小型です。 つくばチャレンジに参加するためには機体の仕様条件として高さが0.6mであるのと 非常停止スイッチがどこからでも押せる必要があります。 なのでアルミフレームを追加して高さ増しをして非常停止スイッチの位置も変更しました。
注:写真ではRealSenseが搭載されてますが、本走行では使用していません。
つくばチャレンジ2021で試したこと
つくばチャレンジ2021に参加して色々なことを試しました。 その中でも試してよかったことについて4つほど話します。
2D LiDARの位置調整
「ソフトウェアで何でも解決させると言っておきながら調整してるんかい!」と思う方がいるかもしれませんが、流石に許してください。 安定した自己位置推定を行うためにランドマークを獲得することは重要です。 なので、どの高さの位置に2D LiDARを設置するべきなのか現地で計測して最適な値を導きました。(多分)
花壇やベンチの高さを計測した所、地面から36cmぐらいの高さに2D LiDARを設置すると、 花壇やベンチをマップに含ませることができます。マップに含まれるということは走行中に観測ができるということです。
マッピング・自己位置推定テスト用のシステム作成
マッピングや自己位置推定のテストをチームメンバーが簡単にできれば良いなと思ったので、システムを作りました。これのおかげでマッピングや自己位置推定のテストを他のメンバーに任せることができました。
DockerとROSがインストールされていれば、実行することができます。 rosbagはgoogle driveで管理されていて実行したいrosbagを選択すれば使用することができます。
合成したマップの使用
本走行2日前に確認走行エリアを完走しました。 その時、確認走行エリアの分のマップ作成は終わっていましたが確認走行エリア以降から信号あり横断歩道までのマップは未完成でした。 rosbagを取る時間やいちから地図生成を行う時間の無駄を考え、確認走行エリアの分のマップは実際に完走できたマップであることから再利用した方が良いと考えました。
そこでGIMPを使用してマップの合成を行いました。 確認走行エリアのマップと確認走行エリア以降から信号あり横断歩道までのマップを合成しました。
自己位置推定用と経路計画用にマップを分ける
期待通りの経路計画を行ってくれるようにマップの編集を行いました。
当然、過度に編集したマップは自己位置推定に使用すると支障を来すので別々にする必要があります。
何が期待通りかというと、以下の写真のように線で囲まれた範囲内でしか経路計画が行われないということです。線の範囲外に行くとロボットがスタックする可能性があるので線の範囲内で走行するようにマップを以下の写真のように編集しました。
スタックしそうな場所の例を2つほど紹介させて頂きます。
①芝生エリア
車輪径が小さいこともあり、一度芝生エリアに入ると芝生エリアから戻る際にスタックしそうなので避けた方が良さそうです。
②横断歩道の段差
これは実際にスタックした例ですが、やはり車輪径が小さいため横断歩道の段差を乗り越えるのが厳しく、結果的に自己位置推定にも影響が出てしまいました。
小型ロボットは辛い2 #つくチャレ pic.twitter.com/Vq0mxatPHi
— 千葉工大未ロボ上田研 (@uedalaboratory) November 20, 2021
動画を見ると右側が段差になっていて左側がスロープになっていることがわかります。右側の段差を避けて通るような経路計画をすれば問題なく走行する事ができます。
マップを編集する時にふと思ったのですが、通りたくないと設定した領域を上手く利用して、ロボットの存在確率をその領域だけ高くするのもありなのではと考えました。パーティクルが誘拐され全く別の場所にワープしてしまうことがあるので、その対策として効果的であるか気になります。
つくばチャレンジ用に作成したシミュレータ環境の活用
地図や自己位置推定をテストするのは、rosbagを使用することで可能です。rosbagのようにナビゲーションもつくばチャレンジの現地に近いデータでテストできたら良いなと考え、下の記事のように2次元のマップからGazeboのモデルを作成しました。
10LGTM! | 2次元地図からGazeboのmodelを作ってナビゲーションしてみた by @BEIKE_RE https://t.co/Z5TnKlt7YG
— Qiitaマイルストーン (@qiita_milestone) December 3, 2021
これは、本走行前日の夜に作成したワールドです。 色々あってwaypointを一から置き直す必要がありました。 本走行は1度きりなので、以下のワールドを使用することで事前にテスト(確認)を行うことができました。
確認したことは、waypointの置きミスやマッピングの際にできた余計な障害物やパスプランです。
実際にナビゲーションのテストをしている様子
今後について
現在、経路計画においてはmove_baseを使用しており、元々あるリソースを上手く使用している状況です。中身のアルゴリズムやシステムに関してはブラックボックスとして扱ってきてしまってます。
何か対応するべき時に中身を理解してないと、いざという時に対応できない問題があったりするので、経路計画や障害物回避などを自分たちで実装するなどをしてチーム全体でレベルアップを図っていきたいと考えています。
チームメンバー
- B3
- 出野 廣太郎
- 畑中 優一郎
- B4
- 池邉龍宏
- 内田璃空
- M1
- 曹越
- M2
- クルス・アントニオ
- スタッフ
- 上田隆一