citbrains / GankenKun_webots

Control of humanoid robots on webots, walking, deep-learning, Bayesian-optimization
14 stars 4 forks source link

multi_agent_env #73

Open yasuohayashibara opened 1 year ago

yasuohayashibara commented 1 year ago

multi-agentの学習を行う環境を作成する. インターフェイスはPettingZooを参考にする.

yasuohayashibara commented 1 year ago

速度の検証から(訓練の時間に影響する要素であるため) 検証PC Galleria ノートPC i7 RTX2070 簡易的なモデルで6体並べてシミュレーションすると最高16倍程度 https://youtu.be/o6aQ4tWirx0

yasuohayashibara commented 1 year ago

GankenKun_walkを6台で試した様子 0.25倍程度と非常に遅い https://youtu.be/1n6tCZ5th2c

yasuohayashibara commented 1 year ago

c言語で書かれた非常にシンプルなコントローラにしても同様であった https://youtu.be/FDsIXMfO7Wc

yasuohayashibara commented 1 year ago

チューイングをしたというのと,コントローラが別プロセスで動いているというのもあるが,strategy_devの方が処理が速い 1台のみの環境だと,2倍以上で動作する.

https://youtu.be/VnktNcgNRtE

yasuohayashibara commented 1 year ago

以下の設定の値を大きくすることで,速度が上昇 0.25 -> 0.6倍程度になる.

optimalThreadCount 10
yasuohayashibara commented 1 year ago

歩行した場合も0.5倍程度の速度となる. ただし,スクリーンキャプチャしながらだと,速度が低下する. https://youtu.be/_Zcngm6PI-s

yasuohayashibara commented 1 year ago

RTX4090のPCで1.5倍程度

yasuohayashibara commented 1 year ago

各ロボットにコマンドを送って歩行させる仕組みを入れた.

https://youtu.be/-T_NXYqWWvE

yasuohayashibara commented 1 year ago

RTX4090で実行したときの様子 4倍程度で実行できている.

IMAGE

yasuohayashibara commented 1 year ago

間を開けて前進するコマンドを与えたら直進しない. キックのときに停止するので,対策することが必要である.

https://youtu.be/H5UZMzI1068

yasuohayashibara commented 1 year ago

歩行を調整した 1)歩行時に左右に位置がずれる現象が見られたのでその対策 2)足を上げるまでの時間を0.34sとした.(従来は0.68s) 3)停止の時間を0.34sとした.(従来は1.6s)

全てのタイミングを0.34とした.

IMAGE

yasuohayashibara commented 1 year ago

周期を0.34->0.32sに変更 webotsの計算の周期が0.008なので,40step分となり扱いやすいため. 挙動は0.34と変わらず

yasuohayashibara commented 1 year ago

キックも含めた動きの完成 IMAGE

yasuohayashibara commented 1 year ago

以下を参考に実装する

PPO https://pettingzoo.farama.org/tutorials/sb3/kaz/

maddpg https://pettingzoo.farama.org/main/tutorials/agilerl/MADDPG/

yasuohayashibara commented 1 year ago

学習環境の整備

IMAGE

yasuohayashibara commented 1 year ago

~/.local/lib/python3.8/site-packages/supersuit/vectorの vector_constructors.pyの64行目をコメントアウト

    #vec_env = MakeCPUAsyncConstructor(num_cpus)(*vec_env_args(vec_env, num_vec_envs))
yasuohayashibara commented 1 year ago

学習できるようになった. ロボット転倒時にプログラムが停止する問題があるようである.

IMAGE

yasuohayashibara commented 1 year ago

学習した結果

IMAGE

RTX4090 IMAGE

yasuohayashibara commented 1 year ago

相手側へのx軸のボールの速度を報酬としたときの様子 転倒時に最初の位置に戻す挙動を追加

IMAGE

yasuohayashibara commented 1 year ago

PPOを実行するときの環境設定

virtualenv -p python3.8 env
source env/bin/activate
pip install supersuit pettingzoo stable_baselines3 tensorboard control

以下のファイルを編集

code env/lib/python3.8/site-packages/supersuit/vector/vector_constructors.py

vector_constructors.pyの64行目をコメントアウト

    #vec_env = MakeCPUAsyncConstructor(num_cpus)(*vec_env_args(vec_env, num_vec_envs))