Update readme

This commit is contained in:
Anwar, Malik Aqeel
2020-02-05 19:04:26 -05:00
parent 7eee22356a
commit 915164b6fe
7 changed files with 33 additions and 20 deletions

View File

@@ -6,7 +6,7 @@ The repository containing the code for **real** environment on a **real** DJI Te
![Cover Photo](/images/cover.png)
![Cover Photo](/images/depth.gif)
![Cover Photo](/images/envs.png)

View File

@@ -2,7 +2,7 @@
# Created: 10/14/2019, 12:50 PM
# Email: aqeel.anwar@gatech.edu
import numpy as np
import os, subprocess
import os, subprocess, psutil
import math
import random
import time
@@ -11,6 +11,15 @@ import pygame
from configs.read_cfg import read_cfg
import matplotlib.pyplot as plt
def close_env(env_process):
process = psutil.Process(env_process.pid)
for proc in process.children(recursive=True):
proc.kill()
process.kill()
def save_network_path(cfg):
# Save the network to the directory network_path
weights_type = 'Imagenet'
@@ -28,17 +37,21 @@ def save_network_path(cfg):
def start_environment(env_name):
env_folder = os.path.dirname(os.path.abspath(__file__)) + "/unreal_envs/" + env_name + "/"
path = env_folder + env_name + ".exe"
# print(path)
env_process = subprocess.Popen(path)
time.sleep(6)
time.sleep(5)
print("Successfully loaded environment: " + env_name)
return env_process, env_folder
def initialize_infer(env_cfg, client, env_folder):
c_z = (env_cfg.ceiling_z - env_cfg.player_start_z) / 100
f_z = (env_cfg.floor_z - env_cfg.player_start_z) / 100
if not os.path.exists(env_folder+'results'):
os.makedirs(env_folder+'results')
# Mapping floor to 0 height
c_z = (env_cfg.ceiling_z-env_cfg.floor_z)/100
p_z = (env_cfg.player_start_z-env_cfg.floor_z)/100
plt.ion()
fig_z = plt.figure()
@@ -47,11 +60,11 @@ def initialize_infer(env_cfg, client, env_folder):
ax_z.set_ylim(0, c_z)
plt.title("Altitude variation")
start_posit = client.simGetVehiclePose()
# start_posit = client.simGetVehiclePose()
fig_nav = plt.figure()
ax_nav = fig_nav.add_subplot(111)
img = plt.imread(env_folder+ "floor.png")
img = plt.imread(env_folder+ env_cfg.floorplan)
ax_nav.imshow(img)
plt.axis('off')
plt.title("Navigational map")
@@ -59,7 +72,7 @@ def initialize_infer(env_cfg, client, env_folder):
nav, = ax_nav.plot(env_cfg.o_x, env_cfg.o_y)
return f_z, fig_z, ax_z, line_z, fig_nav, ax_nav, nav
return p_z, fig_z, ax_z, line_z, fig_nav, ax_nav, nav
def translate_action(action, num_actions):
# action_word = ['Forward', 'Right', 'Left', 'Sharp Right', 'Sharp Left']
@@ -185,7 +198,7 @@ def connect_drone(ip_address='127.0.0.0', phase='infer'):
old_posit = client.simGetVehiclePose()
if phase == 'train':
client.simSetVehiclePose(
airsim.Pose(airsim.Vector3r(0, 0, -2.2), old_posit.orientation),
airsim.Pose(airsim.Vector3r(0, 0, 0), old_posit.orientation),
ignore_collison=True)
elif phase == 'infer':
client.enableApiControl(True)

View File

@@ -3,7 +3,7 @@ run_name: Tello_indoor
custom_load: True
custom_load_path: models/trained/Indoor/indoor_cloud/Imagenet/e2e/e2e
env_type: Indoor
env_name: indoor_cloud
env_name: indoor_frogeyes
phase: infer

View File

@@ -13,7 +13,7 @@ def read_env_cfg(config_filename = 'configs/main.cfg'):
config.read(config_filename)
cfg.run_name = config.get('general_params', 'env_name')
cfg.custom_load_path = str(config.get('general_params', 'floorplan'))
cfg.floorplan = str(config.get('general_params', 'floorplan'))
cfg.o_x = float(config.get('general_params', 'o_x').split(',')[0])
cfg.o_y = float(config.get('general_params', 'o_y').split(',')[0])
cfg.alpha = float(config.get('general_params', 'alpha').split(',')[0])
@@ -69,7 +69,7 @@ def read_cfg(config_filename = 'configs/main.cfg', verbose = False):
cfg.update_target_interval = int(config.get('RL_params', 'update_target_interval').split(',')[0])
if verbose:
if verbose and cfg.phase=='train':
print('------------------------------ Config File ------------------------------')
for param in cfg:
spaces = ' '*(30-len(param))

View File

@@ -79,7 +79,7 @@ def indoor_complex():
]
level_name = ['Complex1', 'Complex2', 'Complex3', 'Complex4']
crash_threshold = 0.07
initZ = -2
initZ = 0
return orig_ip, level_name, crash_threshold, initZ
# Test condo indoor initial positions
@@ -115,7 +115,7 @@ def indoor_vanleer():
# The environment can be downloaded from
# https://drive.google.com/drive/u/2/folders/1u5teth6l4JW2IXAkZAg1CbDGR6zE-v6Z
orig_ip = [
[-3080, -4280, 90], #Player Start
[-3100, -4530, 90], #Player Start
[-1340, -2240, -90],
[-3790, -5450, 180],
[-3980, -1760, -90]

BIN
images/depth.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 MiB

10
main.py
View File

@@ -46,7 +46,7 @@ elif cfg.phase == 'infer':
nav_x=[]
nav_y=[]
altitude=[]
f_z, fig_z, ax_z, line_z, fig_nav, ax_nav, nav = initialize_infer(env_cfg=env_cfg, client=client, env_folder=env_folder)
p_z, fig_z, ax_z, line_z, fig_nav, ax_nav, nav = initialize_infer(env_cfg=env_cfg, client=client, env_folder=env_folder)
nav_text = ax_nav.text(0, 0, '')
# Initialize variables
@@ -239,14 +239,14 @@ while active:
client.moveByVelocityAsync(vx=0, vy=0, vz=0, duration=1).join()
ax_nav.plot(nav_x.pop(), nav_y.pop(), 'r*', linewidth=20)
file_path = env_folder + 'results/'
fig_z.savefig(file_path + 'altitude_variation.png', dpi=1000)
fig_nav.savefig(file_path + 'navigation.png', dpi=1000)
fig_z.savefig(file_path + 'altitude_variation.png', dpi=500)
fig_nav.savefig(file_path + 'navigation.png', dpi=500)
close_env(env_process)
print('Figures saved')
else:
posit = agent.client.simGetVehiclePose()
distance = distance + np.linalg.norm(np.array([old_posit.position.x_val-posit.position.x_val,old_posit.position.y_val-posit.position.y_val]))
altitude.append(-posit.position.z_val-f_z)
altitude.append(-posit.position.z_val+p_z)
x_val = posit.position.x_val
y_val = posit.position.y_val