Code Monkey home page Code Monkey logo

navstack-gym-expr's Introduction

Example Code

あとでちゃんと書きます

概要

各ディレクトリの意味

  • ルートディレクトリ直下
    • 学習用スクリプトとか評価用スクリプトとかの置き場
    • 頻繁に触る
  • algo
    • 上記のスクリプトで使うDrQアルゴリズムとかその他細かいモジュール置き場
  • conf
    • 実験条件の設定ファイル置き場
    • 環境生成条件やハイパラの設定(hydra形式)がまとまって存在する
  • log
    • 学習ログ置き場
  • movie
    • 評価時の動画(gif)置き場
  • work
    • 学習開始時に作られるワークスペース
    • 各モデルやリプレイバッファや学習結果の保存先

ルートディレクトリ下の各スクリプトの役割

  • train.py:
    • 学習開始用スクリプト
  • visualize.ipynb:
    • 学習過程のプロット用
  • eval.ipynb:
    • 学習済みエージェントの評価用(動画出力)
  • test_env.ipynb, test_obs.ipynb:
    • 環境の動作確認したくなったときに触るやつ
  • その他:
    • 名前のはじめに _ がついているものは実装途中とか微妙なやつ

実行メモ

依存関係解決(poetry)

poetry install

学習のバックグラウンド実行+ログ記録

poetry run nohup python train.py >> log/hoge.log &

学習環境(navstack-gym)について

ざっくり

  • グリッドワールド状の移動ロボット制御タスク環境
    • 空間はグレイスケールの値域で画像形式で表される(現時点では通行可能・障害物のいずれか)
    • ロボットは「通行可能」色のピクセル上でのみ移動可能
  • NavStackライクなシステムを内包
    • 疑似LiDARからOccupancyMapを生成
    • move_baseっぽく目標姿勢指定による自律移動制御

リポジトリ

基本的なつかいかた

import gym
import navstack_gym

env = gym.make('VisibleTreasureChestRoom-v0')
env.reset()

以下のタイミングでの引数の指定によってタスク条件を変更可

  • Envインスタンス生成時:
    • 該当メソッド:gym.make()
    • 設定対象:シミュレーションの動作設定(地図サイズ等・経路探索上限回数など)
  • 環境リセット時:
    • 該当メソッド:env.reset()
    • 設定対象:部屋生成条件・再生成の可否

gym.make()で設定できる項目

引数名 デフォルト値 意味 感覚的な解釈
id str - タスク環境のID(後述) -
map_size int 256 地図のサイズ 実質的な世界の大きさ
map_resolution float 0.1 地図1マスあたりの距離(m) -
spawn_extension float 0.3 エージェントの生成領域を障害物からどれだけ離すか(m) どれだけ安全な内地からサンプルされやすくするか
path_exploration int 4,000 経路探索時の隣接ノード探索回数上限 1回の経路探索をどれだけ長く行うか
path_planning_count int 10 経路探索回数上限 経路探索のやり直しを何回まで許容するか
path_turnable float $\frac{\pi}{8}$ 1ピクセル移動ごとの回転可能角度(rad) ロボットの旋回性能
allowable_goal_error_norm float 0.5 ゴール到達判定の閾値(m) -
avoidance_size int 3 障害物マスから周囲何ピクセルを避けるか ロボットの体の大きさ
move_limit int -1 1回の移動可能距離上限(ピクセル単位・-1で上限なし) 自律移動の制限時間的な役割
movable_discount float 5 目標位置の指定可能距離上限(地図サイズの何分割分まで指定できるようにするか) 大きくするほど指定可能範囲が狭まる
found_threshold float 0.75 オブジェクトの発見判定閾値(m) -
passable_color int 0 環境の通行可能領域の値設定 -
map_obs_val int 100 地図に記録する障害物属性 -
map_pass_val int 0 地図に記録する通行可能属性 -
map_unk_val int -1 地図に記録する未知属性 -

env.reset()で設定できる項目

引数名 デフォルト値 意味 感覚的な解釈
is_generate_pose bool True エージェント初期位置の再サンプルの可否 -
is_generate_room bool True 部屋構造の再生成の可否 -
scene_obstacle_count int 10 部屋内に生成する障害物の個数 -
scene_obstacle_size float 0.7 障害物のサイズ(m) -
scene_target_size float 0.2 宝箱のサイズ(m) -
scene_key_size float 0.2 鍵のサイズ(m) -
scene_obstacle_zone_thresh float 1.5 障害物クラスタリングの閾値(m) どこまで障害物群とみなすか
scene_distance_key_placing float 0.7 鍵配置領域を障害物・壁からどれだけ離すか(m) -
scene_range_key_placing float 0.3 鍵配置領域の幅(m) -
scene_room_length_max float 9 部屋ポリゴンの外接円の最大直径(m) 部屋のだいたいの大きさ
scene_room_wall_thickness float 0.05 壁の厚さ(m) -
scene_wall_threshold float 0.1 オブジェクト生成を壁からどれだけ離すか(m) 高くするほど全オブジェクトの配置が内地に寄る

タスク環境のID一覧

以下参照。
navstack_gym/init.py

  • Invisible
    • 宝箱・鍵に衝突判定が付与されない
    • 地図に記録されない
  • Visible
    • 全てオブジェクトに衝突判定が付与される
    • 地図に記録され、獲得されると衝突判定が消失(地図からも消える)

navstack-gym-expr's People

Contributors

wwwshwww avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.