基于OpenAI Gym 的自定义可视化环境

OpenAI Gym  有大量已定义的环境,同时自己也完全可以定一个环境来进行操作(免费)。

我们这里定义一个箭头跟随圆点移动的例子。

1、在Python\Python38\Lib\site-packages\gym\envs  下的 __init__.py 文件中自定义一个环境

id=BallView-v0,这个在主程序中调用的id号

BallEnv是需要新建环境的类名

#自定义环境
register(
    id='BallView-v0',
    entry_point='gym.envs.classic_control:BallEnv',
    max_episode_steps=200,
    reward_threshold=195.0,
)

2、我们定义的环境classic_control目录底下,这里还有一个 __init__.py 文件,加入如下代码,从环境源文件BallView_v0.py中导入类

from gym.envs.classic_control.BallView_v0 import BallEnv

3、新建BallView_v0.py

按照官方的说法,包括seed(), step(),reset()和render()几个函数,这个我们可以自行调整。我在使用step()的时候,提示TypeError: 'float' object is not callable,和time_limit.py 的类有冲突,

一直找不到原因,所以这里改为step_do(),如果谁知道怎么处理,麻烦告诉我。这里我们加入了主程序段 if __name__ == '__main__': 方便先调测。

#ballview-v0-run的独立测试程序 by lhf
import math
import gym
from gym import spaces
from gym.utils import seeding
import numpy as np
from gym.envs.classic_control import rendering


class BallEnv(gym.Env):
    """
    Description: 球体在屏幕上方移动,实现对球体的动态追踪
    Source:
        design by lhf

    Observation:
        Type: Box(4)
        Num     Observation               Min                     Max
        0       ball X Position            0                      640
        1       ball Y Position            100                    100(480)
        2       ball Velocity             -Inf                    Inf
        3       Eye Angle                 -90 deg                90 deg
    Actions:
        Type: Discrete(2)
        Num   Action
        0     让 eye逆时针旋转
        1     让 eye顺时针旋转

    """
    metadata = {
        'render.modes': ['human', 'rgb_array'],
        'video.frames_per_second': 50
    }

    def __init__(self):
        self.screen_width, self.screen_heigh = 640, 480
        self.kinematics_integrator = 'euler'

        # 定义旋转初始角度,方向
        self.degree = 0
        self.turnback_left = True
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值