Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
subprocess.Popen(self.cmd, shell=True)
time.sleep(2)
unreal_pids_after_launch = utils.find_process_id_by_name("UE4Editor")
diff_proc = [] # a list containing the difference between the previous UE4 processes
# and the one that is about to be launched
# wait till there is a UE4Editor process
while not (len(diff_proc) == 1):
time.sleep(3)
diff_proc = (utils.list_diff(unreal_pids_after_launch, unreal_pids_before_launch))
settings.game_proc_pid = diff_proc[0]
#time.sleep(30)
client = airsim.MultirotorClient(settings.ip)
connection_established = False
connection_ctr = 0 # counting the number of time tried to connect
# wait till connected to the multi rotor
time.sleep(1)
while not (connection_established):
try:
#os.system(self.press_play_file)
time.sleep(2)
connection_established = client.confirmConnection()
except Exception as e:
if (connection_ctr >= settings.connection_count_threshold and msgs.restart_game_count >= settings.restart_game_from_scratch_count_threshold):
print("couldn't connect to the UE4Editor multirotor after multiple tries")
print("memory utilization:" + str(psutil.virtual_memory()[2]) + "%")
exit(0)
if (connection_ctr == settings.connection_count_threshold):
self.restart_game()
import setup_path
import airsim
#from keras.models import load_model
import sys
import numpy as np
#if (len(sys.argv) != 2):
# print('usage: python drive.py ')
# sys.exit()
#print('Loading model...')
#model = load_model(sys.argv[1])
# connect to the AirSim simulator
client = airsim.CarClient()
client.confirmConnection()
client.enableApiControl(True)
car_controls = airsim.CarControls()
car_controls.steering = 0
car_controls.throttle = 0
car_controls.brake = 0
image_buf = np.zeros((1, 144, 256, 3))
state_buf = np.zeros((1,4))
def get_image():
image = client.simGetImages([airsim.ImageRequest("0", airsim.ImageType.Scene, False, False)])[0]
image1d = np.fromstring(image.image_data_uint8, dtype=np.uint8)
image_rgba = image1d.reshape(image.height, image.width, 4)
image_rgba = np.flipud(image_rgba)
def get_new_images(self):
# Construct the Images State Vector
# Order is Front Center, Front Right, Front Left
tic = time.time()
self.client.simPause(True)
if (self.image_mask_FC_FR_FL[0] and self.image_mask_FC_FR_FL[1] and self.image_mask_FC_FR_FL[2]):
images = self.client.simGetImages([client.ImageRequest("0", client.ImageType.Scene, False, False), # Front Center
client.ImageRequest("1", client.ImageType.Scene, False, False), # Front Right
client.ImageRequest("2", client.ImageType.Scene, False, False)]) # Front Left
img1d_FC = np.fromstring(images[0].image_data_uint8, dtype=np.uint8)
img_rgba_FC = np.array(img1d_FC.reshape(images[0].height, images[0].width, 4), dtype = np.uint8)
img_rgb_FC = img_rgba_FC[:,:,0:3]
img1d_FR = np.fromstring(images[1].image_data_uint8, dtype=np.uint8)
img_rgba_FR = np.array(img1d_FR.reshape(images[1].height, images[1].width, 4), dtype = np.uint8)
img_rgb_FR = img_rgba_FR[:,:,0:3]
#plt.imshow(img_rgb_FR)
#plt.show()
#time.sleep(2)
img1d_FL = np.fromstring(images[2].image_data_uint8, dtype=np.uint8)
img_rgba_FL = np.array(img1d_FL.reshape(images[2].height, images[2].width, 4), dtype = np.uint8)
img_rgb_FL = img_rgba_FL[:,:,0:3]
vel[0] - self.initial_velocity[vn][0],
vel[1] - self.initial_velocity[vn][1],
vel[2] - self.initial_velocity[vn][2],
acc[0], acc[1], acc[2],
angVel[0], angVel[1], angVel[2],
angAcc[0], angAcc[1], angAcc[2]])
# Posx, Posy, PosZ, Vx, Vy, Vz, Ax, Ay, Az, AngVelx, AngVely, AngVelz, AngAccx, AngAccy, AngAccz
# Construct the Images State Vector
# Order is Front Center, Front Right, Front Left
for vn in self.vehicle_names:
if (self.image_mask_FC_FR_FL[0] and self.image_mask_FC_FR_FL[1] and self.image_mask_FC_FR_FL[2]):
images = self.client.simGetImages([client.ImageRequest("0", client.ImageType.Scene, False, False), # Front Center
client.ImageRequest("1", client.ImageType.Scene, False, False), # Front Right
client.ImageRequest("2", client.ImageType.Scene, False, False)], vehicle_name = vn) # Front Left
img1d_FC = np.fromstring(images[0].image_data_uint8, dtype=np.uint8)
img_rgba_FC = np.array(img1d_FC.reshape(images[0].height, images[0].width, 4), dtype = np.uint8)
img_rgb_FC = img_rgba_FC[:,:,0:3]
img1d_FR = np.fromstring(images[1].image_data_uint8, dtype=np.uint8)
img_rgba_FR = np.array(img1d_FR.reshape(images[1].height, images[1].width, 4), dtype = np.uint8)
img_rgb_FR = img_rgba_FR[:,:,0:3]
#plt.imshow(img_rgb_FR)
#plt.show()
#time.sleep(2)
img1d_FL = np.fromstring(images[2].image_data_uint8, dtype=np.uint8)
img_rgba_FL = np.array(img1d_FL.reshape(images[2].height, images[2].width, 4), dtype = np.uint8)
img_rgb_FL = img_rgba_FL[:,:,0:3]
img_rgb_FR = img_rgba_FR[:,:,0:3]
img1d_FL = np.fromstring(images[2].image_data_uint8, dtype=np.uint8)
img_rgba_FL = np.array(img1d_FL.reshape(images[2].height, images[2].width, 4), dtype = np.uint8)
img_rgb_FL = img_rgba_FL[:,:,0:3]
# Can either use the RGBA images or the RGB Images
self.images_rgba = np.dstack((img_rgba_FC,img_rgba_FR,img_rgba_FL))
self.images_rgb = np.dstack((img_rgb_FC,img_rgb_FR,img_rgb_FL))
self.time_to_grab_images = time.time() - tic
print("Time to Grab Images: ", self.time_to_grab_images)
# We Just want front
elif (self.image_mask_FC_FR_FL[0] and not self.image_mask_FC_FR_FL[1] and not self.image_mask_FC_FR_FL[2]):
images = self.client.simGetImages([client.ImageRequest("0", client.ImageType.Scene, False, False)])
img1d_FC = np.fromstring(images[0].image_data_uint8, dtype=np.uint8)
img_rgba_FC = np.array(img1d_FC.reshape(images[0].height, images[0].width, 4), dtype = np.uint8)
img_rgb_FC = img_rgba_FC[:,:,0:3]
self.images_rgba = img_rgba_FC
self.images_rgb = img_rgb_FC
self.time_to_grab_images = time.time() - tic
print("Time to Grab Images: ", self.time_to_grab_images)
else:
print("A screw up in set new images")
def get_new_images(self):
# Construct the Images State Vector
# Order is Front Center, Front Right, Front Left
tic = time.time()
self.client.simPause(True)
if (self.image_mask_FC_FR_FL[0] and self.image_mask_FC_FR_FL[1] and self.image_mask_FC_FR_FL[2]):
images = self.client.simGetImages([client.ImageRequest("0", client.ImageType.Scene, False, False), # Front Center
client.ImageRequest("1", client.ImageType.Scene, False, False), # Front Right
client.ImageRequest("2", client.ImageType.Scene, False, False)]) # Front Left
img1d_FC = np.fromstring(images[0].image_data_uint8, dtype=np.uint8)
img_rgba_FC = np.array(img1d_FC.reshape(images[0].height, images[0].width, 4), dtype = np.uint8)
img_rgb_FC = img_rgba_FC[:,:,0:3]
img1d_FR = np.fromstring(images[1].image_data_uint8, dtype=np.uint8)
img_rgba_FR = np.array(img1d_FR.reshape(images[1].height, images[1].width, 4), dtype = np.uint8)
img_rgb_FR = img_rgba_FR[:,:,0:3]
img1d_FL = np.fromstring(images[2].image_data_uint8, dtype=np.uint8)
img_rgba_FL = np.array(img1d_FL.reshape(images[2].height, images[2].width, 4), dtype = np.uint8)
img_rgb_FL = img_rgba_FL[:,:,0:3]
# Can either use the RGBA images or the RGB Images
self.images_rgba = np.dstack((img_rgba_FC,img_rgba_FR,img_rgba_FL))
self.images_rgb = np.dstack((img_rgb_FC,img_rgb_FR,img_rgb_FL))
self.time_to_grab_images = time.time() - tic
def get_new_images(self):
# Wait to grad images
tic = time.time()
if (self.image_mask_FC_FR_FL[0] and self.image_mask_FC_FR_FL[1] and self.image_mask_FC_FR_FL[2]):
images = self.client.simGetImages([
client.ImageRequest("0", client.ImageType.Scene, False, False), # Front Center
client.ImageRequest("1", client.ImageType.Scene, False, False), # Front Right
client.ImageRequest("2", client.ImageType.Scene, False, False)]) # Front Left
img1d_FC = np.fromstring(images[0].image_data_uint8, dtype=np.uint8)
img_rgba_FC = np.array(img1d_FC.reshape(images[0].height, images[0].width, 4), dtype = np.uint8)
img_rgb_FC = img_rgba_FC[:,:,0:3]
img1d_FR = np.fromstring(images[1].image_data_uint8, dtype=np.uint8)
img_rgba_FR = np.array(img1d_FR.reshape(images[1].height, images[1].width, 4), dtype = np.uint8)
img_rgb_FR = img_rgba_FR[:,:,0:3]
img1d_FL = np.fromstring(images[2].image_data_uint8, dtype=np.uint8)
img_rgba_FL = np.array(img1d_FL.reshape(images[2].height, images[2].width, 4), dtype = np.uint8)
img_rgb_FL = img_rgba_FL[:,:,0:3]
# Can either use the RGBA images or the RGB Images
self.images_rgba = np.dstack((img_rgba_FC,img_rgba_FR,img_rgba_FL))
def get_new_images(self, vehicleName):
# Wait to grad images
tic = time.time()
print("Collecting Images from AirSim")
if (self.image_mask_FC_FR_FL[0] and self.image_mask_FC_FR_FL[1] and self.image_mask_FC_FR_FL[2]):
images = self.client.simGetImages([
client.ImageRequest("0", client.ImageType.Scene, False, False), # Front Center
client.ImageRequest("1", client.ImageType.Scene, False, False), # Front Right
client.ImageRequest("2", client.ImageType.Scene, False, False)], vehicle_name = vehicleName) # Front Left
img1d_FC = np.fromstring(images[0].image_data_uint8, dtype=np.uint8)
img_rgba_FC = np.array(img1d_FC.reshape(images[0].height, images[0].width, 4), dtype = np.uint8)
img_rgb_FC = img_rgba_FC[:,:,0:3]
img1d_FR = np.fromstring(images[1].image_data_uint8, dtype=np.uint8)
img_rgba_FR = np.array(img1d_FR.reshape(images[1].height, images[1].width, 4), dtype = np.uint8)
img_rgb_FR = img_rgba_FR[:,:,0:3]
img1d_FL = np.fromstring(images[2].image_data_uint8, dtype=np.uint8)
img_rgba_FL = np.array(img1d_FL.reshape(images[2].height, images[2].width, 4), dtype = np.uint8)
img_rgb_FL = img_rgba_FL[:,:,0:3]
# Can either use the RGBA images or the RGB Images
self.images_rgba[vehicleName] = np.dstack((img_rgba_FC,img_rgba_FR,img_rgba_FL))
img1d_FR = np.fromstring(images[1].image_data_uint8, dtype=np.uint8)
img_rgba_FR = np.array(img1d_FR.reshape(images[1].height, images[1].width, 4), dtype = np.uint8)
img_rgb_FR = img_rgba_FR[:,:,0:3]
img1d_FL = np.fromstring(images[2].image_data_uint8, dtype=np.uint8)
img_rgba_FL = np.array(img1d_FL.reshape(images[2].height, images[2].width, 4), dtype = np.uint8)
img_rgb_FL = img_rgba_FL[:,:,0:3]
# Can either use the RGBA images or the RGB Images
self.images_rgba = np.dstack((img_rgba_FC,img_rgba_FR,img_rgba_FL))
self.images_rgb = np.dstack((img_rgb_FC,img_rgb_FR,img_rgb_FL))
self.time_to_grab_images = time.time() - tic
# We Just want front view
elif (self.image_mask_FC_FR_FL[0] and not self.image_mask_FC_FR_FL[1] and not self.image_mask_FC_FR_FL[2]):
images = self.client.simGetImages([client.ImageRequest("0", client.ImageType.Scene, False, False)]) # Front Center
img1d_FC = np.fromstring(images[0].image_data_uint8, dtype=np.uint8)
img_rgba_FC = np.array(img1d_FC.reshape(images[0].height, images[0].width, 4), dtype = np.uint8)
img_rgb_FC = img_rgba_FC[:,:,0:3]
self.images_rgba = img_rgba_FC
self.images_rgb = img_rgb_FC
self.time_to_grab_images = time.time() - tic
self.client.simPause(False)
img1d_FR = np.fromstring(images[1].image_data_uint8, dtype=np.uint8)
img_rgba_FR = np.array(img1d_FR.reshape(images[1].height, images[1].width, 4), dtype = np.uint8)
img_rgb_FR = img_rgba_FR[:,:,0:3]
img1d_FL = np.fromstring(images[2].image_data_uint8, dtype=np.uint8)
img_rgba_FL = np.array(img1d_FL.reshape(images[2].height, images[2].width, 4), dtype = np.uint8)
img_rgb_FL = img_rgba_FL[:,:,0:3]
# Can either use the RGBA images or the RGB Images
self.images_rgba = np.dstack((img_rgba_FC,img_rgba_FR,img_rgba_FL))
self.images_rgb = np.dstack((img_rgb_FC,img_rgb_FR,img_rgb_FL))
self.time_to_grab_images = time.time() - tic
# We Just want front view
elif (self.image_mask_FC_FR_FL[0] and not self.image_mask_FC_FR_FL[1] and not self.image_mask_FC_FR_FL[2]):
images = self.client.simGetImages([client.ImageRequest("0", client.ImageType.Scene, False, False)]) # Front Center
img1d_FC = np.fromstring(images[0].image_data_uint8, dtype=np.uint8)
img_rgba_FC = np.array(img1d_FC.reshape(images[0].height, images[0].width, 4), dtype = np.uint8)
img_rgb_FC = img_rgba_FC[:,:,0:3]
self.images_rgba = img_rgba_FC
self.images_rgb = img_rgb_FC
self.time_to_grab_images = time.time() - tic
self.client.simPause(False)