Skip to content

これはAWS Robot Delivery Challengeで使用したパラメータ一覧と、その解説です。

Notifications You must be signed in to change notification settings

DTK-CreativeStudio/AWS-Robot-Delivery-Challenge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

AWS Robot Delivery Challenge

What are These Stuffs?

これはAWS Summit Onlineで開催されたAWS Robot Delivery Challengeで使用したファイル一式です。

Time Schedule

  • 5月
    • 予選 7位/118チーム
      5月の予選ではAWS RoboMaker を使用し、シミュレーション上である地点AからBまでのロボットのタイムを競いました。ここでは上位10%にあたる上位12チームが本線進出のために選考されました。
      予選結果
  • 9月
    • 本線 1位/12チーム
    • 決勝戦 2位/5チーム
      本戦では実機を使用し、オンラインの中継を通じ、ロボットへのデプロイ、及び操作を行いました。
      決勝戦結果

YouTube

決勝戦、表彰式

本線(第2グループ)

Component

上のディレクトリの中身だけではシミュレーションは動きません。

  • AWS Student アカウント
  • AWS RoboMaker
  • Sample アプリケーションのclone
    等が必要となります。

それらの導入の方法などは以下の資料をご覧ください。
AWS Robot Delivery Workshop ロボコンのサンプルアプリケーションで自律走行を試す
aws-robomaker-sample-application-delivery-challenge
AWS Educate 登録ページ

上記のセットアップが終わると、以下のような画面が出てくると思います。

image

私の操作したファイルは/delivery-challenge-sample/robot_ws/src/turtlebot3/turtlebot3_navigation/param配下の

  • costmap_common_params_burger.yaml
  • dwa_local_planner_params_burger.yaml
  • local_costmap_params.yaml

であり上のSophisticatedディレクトリに入っています。
また他にも以下のファイルが入っており、それらの用途は以下のようになっています。

  • cordinates.txt
    マップを回るときに停止する必要のある、黄色の線の座標。私のメモ。
  • map.pgm
    本線、及び決勝戦で使用したロボットに読み込ませるマップです。上記の解説資料ではマッピング(マップの形成)しか触れられていませんが、マップを形成したのちにマップを写真加工アプリを使用して、加工することができます。(私はGIMPを使用しました。)

なお、私の当時の環境はROS1 Melodicでした。

How To Work?

このロボットはROSというオペレーティング システム上で動いており、iPhoneやiPadに搭載されているLiDARセンサ等により、位置情報を把握します。
このアプリケーションでは、LiDARセンサから取得するデータの範囲の調整、及びナビゲーションの設定等でいろいろ変わってきます。

パラメータの調整次第では滑らかに壁にぶつかる事なく動いてくれますが、このパラメータ調整が難しく、大会中現在ではインターネット上の文献も少なく、コツコツとパラメータ作成及び、マップ加工を行い、滑らかに動くようにしました。
私が調整したパラメータと、その内容は以下のようになっています。

  1. costmap_common_params_burger.yaml
    このファイルではロボットの道の通りやすさを定義します。
inflation_radius: 0.12 #1.0
cost_scaling_factor: 15 #3.0

これらの数値は、そのロボットが自分を中心にどれくらいの範囲のものを検知し、障害物と見なすのかを表しています。これらの数値をデフォルトより低く設定しているのは、狭い道でも通り抜けれるようにするためです。これらの数値が大きいと確実に狭い道は通り抜けることができません。

  1. dwa_local_planner_params_burger.yaml
    このファイルではロボットのスピードと、ナビゲーションの各パラメータの重みを定義します。
  max_trans_vel:  0.22
  min_trans_vel:  0.215 #0.11

  max_rot_vel: 2.84 #2.75
  min_rot_vel: 2.74 #1.37

  acc_lim_x: 3.0 #2.5
  acc_lim_y: 0.0
  acc_lim_theta: 3.5 #3.2 

これらはそのロボットの直進及び、カーブにおける走行速度を定義しています。
max値は本戦で使用したturtlebot 3の最高速度を設定しています。

  path_distance_bias: 30.0 #32.0
  goal_distance_bias: 20.0 #20.0
  occdist_scale: 0.02
  forward_point_distance: 0.325
  stop_time_buffer: 0.15 #0.2

これらはナビゲーションを決定するためのパラメータを定義しています。
path_distance_biasの数値をデフォルトから下げたのは、ナビゲーションの経路に忠実に従って、動くと障害物に接触する可能性があるためです。そのため、そのパラメータの数値を下げることで、ナビゲーション経路から道が少しそれても許容できるようにし、障害物に接触する確率を減らしました。 ただし、下げすぎると、ナビゲーション経路から外れすぎて、的外れなナビゲーションの再設定、走行速度の低下を招く可能性があります。

  1. local_costmap_params.yaml
    ここでは、LiDARセンサによる情報の取得方法について定義しています。(たぶん)
resolution: 0.02 #0.05

デフォルトより数値を下げることで、デフォルトより解像度が上がっています。(たぶん)

  1. mapping方式の変更
    /delivery-challenge-sample/robot_ws/src/delivery_robot_sample/launch/slam.launchにLiDARで周りの環境をスキャンする際のマッピング方式が設定できるところがあります。gmappingの他に、cartographer, hector, karto, frontier_explorationがあります。詳しくは[ROS 1] SLAMをご覧ください。

  2. mapの加工
    ロボットはmapを使用して、地形や障害物(建物)を認識し、ナビゲーションを構築します。mapの黒いところは壁(障害物)、グレーは何もない、は道として認識されます。
    グレーは「何もない」扱いのため、ロボットは可能であれば避けますが、無理に避けることはありません。よくあたる壁や、狭い道などのところにグレーを使用すると、うまい具合にそこを避けたり、スルスルっと道を通ってくれたりします。 詳しくはサンプルアプリケーション各機能の内部仕様の概要をご覧ください。
    またマップのダウンロード及び、ダウンロードしたマップの加工後のデータのアップロードは以下のようにして行うことができます。

AWSマネジメントコンソールにてS3を開きます。

image

cf~ではなくdeliverychallenge~の直近のディレクトリを選択してください。(一番下が最新版です)

image

map_storeを開いてください。

image

このmap.pgmがロボットが作ったマップファイルなので、それを適宜加工します。

image

以上のようなパラメータ変更や、マップの加工をするとうまくいけば、ロボットが壁にぶつかったり、狭い道を通れなかったりすることはなくなるので、是非やってみてください。 ただし、以下のような注意事項があります。

  • マップを加工しすぎると、LiDARから把握したデータとマップから計算したロボットの位置と実際のロボットの位置に差異が生じるため、誤作動を起こす。
  • 特にマップを何周も回ると、位置情報に狂いが生じ、マップ上でのナビゲーションの位置と実際の位置が合わなくなり、壁にぶつかったりします。
  • シミュレーションと実物で同じアプケーションで動かしても異なる動きをすることがあります。それらは大抵タイヤのスリップやカーブの遠心力による転倒等の誤差などです。

参考文献

ROS navigation memo

ROS Navigation Tuning Guide

http://wiki.ros.org/dwa_local_planner#DWAPlannerROS

http://wiki.ros.org/dwa_local_planner#Oscillation_Prevention_Parameters

https://sy-base.com/myrobotics/ros/ros-move_base/

http://wiki.ros.org/base_local_planner

編集 by yusuke-1105

About

これはAWS Robot Delivery Challengeで使用したパラメータ一覧と、その解説です。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published