最近研究AirSim仿真平台主要是为了进行强化学习的相关实验,所以利用AirSim提供的Python API搭建一个OpenAI Gym风格的强化学习环境才是我的最终目的。
AirSim提供了一个Gym强化学习模板,我对这个文件进行了适合自己需求的修改,具体修改内容都在注释中标注了。该文件和相关文件都在https://github.com/microsoft/AirSim/tree/master/PythonClient/reinforcement_learning。
在接下来的文章,我将会对这个Gym环境加入更多功能。
import setup_path
import airsim
import numpy as np
import math
import time
from PIL import Image
import gym
from gym import spaces
from airgym.envs.airsim_env import AirSimEnv
class AirSimCarEnv(AirSimEnv):
def __init__(self, ip_address="127.0.0.1", image_shape=(84,84,1),time_scale=1e-1):
super().__init__(image_shape)
self.image_shape = image_shape
self.start_ts = 0
self.simulation_time_scale = time_scale # 仿真步长,也就是每个动作执行多长时间
self.state = {
"pose": np.zeros(3),
"collision": False,
"prev_pose": np.zeros(3),
}
self.car = airsim.CarClient(ip=ip_address)
self.action_space = spaces.Discrete(6)
self.image_request = airsim.ImageRequest("0", airsim.ImageType.DepthPerspective, True, False) # 浮点图像,不压缩
# airsim.ImageRequest("0", airsim.ImageType.DepthPlanner, True, False)
# airsim.ImageType.DepthVis
# airsim.ImageType.Scene
# airsim.ImageType.Segmentation
# airsim.ImageType.SurfaceNormals
# airsim.ImageType.Infrared
# airsim.ImageType.DisparityNormalized
self.car_controls = airsim.CarControls()
self.car_state = None
self.state["pose"] = None