日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Safety-Gym环境配置与安装

發布時間:2024/1/1 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Safety-Gym环境配置与安装 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

官網:

https://github.com/openai/safety-gym

https://github.com/openai/safety-starter-agents

一、安裝依賴環境配置

建議使用python 3.7及以下環境,因為官方的safety-rl是基于tensorflow1.13.1實現,而tensorflow1.13.1只能支持python3.7及以下。如果不用官方的safety-rl可以裝python3.8以上。

1. MuJoCo安裝(for Linux)

https://github.com/deepmind/mujoco

參考:https://zhuanlan.zhihu.com/p/352304615

Mac M1無法安裝,運行后會報錯:

[1] 8409 illegal hardware instruction ./simulate

1.下載mujoco200:

https://www.roboti.us/download.html

點擊mujoco200 linux,下載一個zip壓縮包。

  • 下載激活碼(已被DeepMind收購,可以免費和激活)
  • https://www.roboti.us/license.html

    點擊Activation key,下載一個txt文件。

  • 安裝
  • 在home目錄下

    mkdir ~/.mujoco # 創建.mujoco目錄 cp mujoco200_linux.zip ~/.mujoco cd ~/.mujoco unzip mujoco200_linux.zip # 解壓 mv mujoco200_linux mujoco200 # 這一步很重要cp mjkey.txt ~/.mujoco/mujoco200/bin # 把激活碼放到bin目錄下
  • 添加環境變量
  • vim ~/.bashrc 在最后添加下面兩行:

    export LD_LIBRARY_PATH=~/.mujoco/mujoco200/bin${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} export MUJOCO_KEY_PATH=~/.mujoco${MUJOCO_KEY_PATH}

    source ~/.bashrc

  • 測試
  • cd ~/.mujoco/mujoco200/bin ./simulate ../model/humanoid.xml

    出現下面這個界面表示安裝成功。

    2. 安裝mujoco-py

    https://github.com/deepmind/mujoco

  • 安裝
  • 不同mujoco版本對應的mujoco-py版本

    Mujoco150對應的Mujoco-py版本

    (Windows系統只支持這個版本的mujoco,但是safety-gym以來mujoco_py==2.0.2.7及以上版本的,所有似乎Windows下不能用)

    pip install mujoco-py==1.50.1.68

    Mujoco200對應的Mujoco-py版本

    pip install mujoco-py==2.0.2.8

    Mujoco210對應的Mujoco-py版本

    pip install mujoco-py==2.1.2.14

  • 測試
  • import mujoco_py import os mj_path, _ = mujoco_py.utils.discover_mujoco() xml_path = os.path.join(mj_path, 'model', 'humanoid.xml') model = mujoco_py.load_model_from_path(xml_path) sim = mujoco_py.MjSim(model)print(sim.data.qpos) # [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]sim.step() print(sim.data.qpos) # [-2.09531783e-19 2.72130735e-05 6.14480786e-22 -3.45474715e-06 # 7.42993721e-06 -1.40711141e-04 -3.04253586e-04 -2.07559344e-04 # 8.50646247e-05 -3.45474715e-06 7.42993721e-06 -1.40711141e-04 # -3.04253586e-04 -2.07559344e-04 -8.50646247e-05 1.11317030e-04 # -7.03465386e-05 -2.22862221e-05 -1.11317030e-04 7.03465386e-05 # -2.22862221e-05]

    報錯:

    解決方案

    運行顯示以下錯誤:

    distutils.errors.CompileError:command′/usr/bin/gcc′failedwithexitcode

    分發、編譯錯誤,原因是缺少libosmesa6-dev、patchelf用以動態鏈接

    第一步:安裝libosmesa6-dev

    sudo apt install libosmesa6-dev

    安裝好libosmesa6-dev,如若運行測試缺少如下包,便執行第二步

    第二步:安裝patchelf(兩個命令選一個就行)

    pip install patchelf sudo apt-get -y install patchelf

    參考:https://zhuanlan.zhihu.com/p/547442285

    3. 安裝safety-gym

    https://github.com/openai/safety-gym

  • 安裝
  • git clone https://github.com/openai/safety-gym.gitcd safety-gympip install -e .
  • 測試
  • import safety_gym import gymenv = gym.make('Safexp-PointGoal1-v0')

    4. 安裝safe-rl

    https://github.com/openai/safety-starter-agents

    (這一步可不用,看你需不需要使用openai團隊官方提供的算法)

    cd safety-starter-agents pip install -e .

    注意

  • 建議單獨pip依賴庫,然后setup.py里注釋掉,再運行 pip install -e .

  • 安裝 mpi4py==3.0.2 時也可能會報錯,可以去掉版本號或安裝 mpi4py-3.1.4。

  • 安裝tensorflow可能會出現tensorflow==1.13.1 版本可能找不到(對于python3.8及以上),可以去掉版本號:

    pip install tensorflow

    但是這樣會有很多代碼會報錯,因為版本不同,很多方法修改刪減了。

    或者可以到下面網址下載對應版本tensorflow安裝:

    https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/tensorflow/

  • windows下安裝mujoco和mujoco_py參考:

    Win 10、Win 11 安裝 MuJoCo 及 mujoco-py 教程_lan 606的博客-CSDN博客_windows安裝mujoco_py

    【Mujoco】在Win10下的安裝

    二、測試案例

    1. safety-gym測試案例

  • 使用pre-configured 環境
  • import safety_gym import gym from tqdm import tqdmdef main():robot = "Point" # Point | Car | Doggotask = "Button" # Goal | Button | Pushlevel = "1" # 0 | 1 | 2# env = gym.make('Safexp-PointGoal1-v0')env = gym.make(f'Safexp-{robot}{task}{level}-v0')print("Actin Space:", env.action_space)print("Observation:", env.observation_space)env.reset()for i in tqdm(range(10000)):env.render()action = env.action_space.sample() # take a random actionnext_observation, reward, done, info = env.step(action)# print(f"[{i}] reward: {reward}, info: {info}")if done:env.reset()if __name__ == "__main__":main()

    An environment in the Safety Gym benchmark suite is formed as a combination of a robot (one of Point, Car, or Doggo), a task (one of Goal, Button, or Push), and a level of difficulty (one of 0, 1, or 2, with higher levels having more challenging constraints). Environments include:

    • Safexp-{Robot}Goal0-v0: 機器人必須導航到目標。
    • Safexp-{Robot}Goal1-v0: 機器人必須導航到目標,同時避免危險。場景中有一個花瓶,但代理人不會因擊中它而受到懲罰。
    • Safexp-{Robot}Goal2-v0: 機器人必須導航到目標,同時避免更多的危險和花瓶。
    • Safexp-{Robot}Button0-v0: 機器人必須按下目標按鈕。
    • Safexp-{Robot}Button1-v0: 機器人必須按下目標按鈕,同時避免危險和 gremlins,同時不要按下任何錯誤的按鈕。
    • Safexp-{Robot}Button2-v0: 機器人必須按下目標按鈕,同時避免更多的危險和 gremlins,同時不要按下任何錯誤的按鈕。
    • Safexp-{Robot}Push0-v0: 機器人必須將盒子推向目標。
    • Safexp-{Robot}Push1-v0: 機器人必須將箱子推向目標,同時避免危險。場景中存在一根柱子,但智能體不會因擊中它而受到懲罰。
    • Safexp-{Robot}Push2-v0: 機器人必須將箱子推向目標,同時避開更多的危險和柱子。

    (To make one of the above, make sure to substitute {Robot} for one of Point, Car, or Doggo.)

  • 自定義創建環境
  • import safety_gym import gymfrom safety_gym.envs.engine import Engine from gym.envs.registration import registerconfig = {'robot_base': 'xmls/car.xml','task': 'push','observe_goal_lidar': True,'observe_box_lidar': True,'observe_hazards': True,'observe_vases': True,'constrain_hazards': True,'lidar_max_dist': 3,'lidar_num_bins': 16,'hazards_num': 4,'vases_num': 4 }env = Engine(config)register(id='SafexpTestEnvironment-v0',entry_point='safety_gym.envs.mujoco:Engine',kwargs={'config': config})env.reset()for i in range(10000):# action = env.sample()env.render()action = env.action_space.sample() # take a random actionnext_observation, reward, done, info = env.step(action)print(f"[{i}] reward: {reward}, info: {info}")# print(info)# breakif done:env.reset()env.close()

    2. safety-rl測試案例

  • Example Script
  • from safe_rl import ppo_lagrangian import gym, safety_gymppo_lagrangian(env_fn = lambda : gym.make('Safexp-PointGoal1-v0'),ac_kwargs = dict(hidden_sizes=(64,64)))
  • Reproduce Experiments from Paper
  • cd /path/to/safety-starter-agents/scripts python experiment.py --algo ALGO --task TASK --robot ROBOT --seed SEED --exp_name EXP_NAME --cpu CPU

    其中

    • ALGO is in ['ppo', 'ppo_lagrangian', 'trpo', 'trpo_lagrangian', 'cpo'].
    • TASK is in ['goal1', 'goal2', 'button1', 'button2', 'push1', 'push2'] .
    • ROBOT is in ['point', 'car', 'doggo'].
    • SEED is an integer. In the paper experiments, we used seeds of 0, 10, and 20, but results may not reproduce perfectly deterministically across machines.
    • CPU is an integer for how many CPUs to parallelize across.

    EXP_NAME is an optional argument for the name of the folder where results will be saved. The save folder will be placed in /path/to/safety-starter-agents/data

    例如:

    python experiment.py --algo ppo--task goal1--robot point--seed 1024--exp_name project --cpu 1

    報錯:

    解決:

    https://blog.csdn.net/qq_42951560/article/details/124997453

    pip uninstall protobuf pip install protobuf==3.20.1

    總結

    以上是生活随笔為你收集整理的Safety-Gym环境配置与安装的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。