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
client = airsim.MultirotorClient()
client.armDisarm(False)
if self.iterations <= 0:
self.iterations = 1
if len(center) != 2:
raise Exception("Expecting '[x,y]' for the center direction vector")
# center is just a direction vector, so normalize it to compute the actual cx,cy locations.
cx = float(center[0])
cy = float(center[1])
length = math.sqrt((cx*cx) + (cy*cy))
cx /= length
cy /= length
cx *= self.radius
cy *= self.radius
self.client = airsim.MultirotorClient()
self.client.confirmConnection()
self.client.enableApiControl(True)
self.home = self.client.getMultirotorState().kinematics_estimated.position
# check that our home position is stable
start = time.time()
count = 0
while count < 100:
pos = self.home
if abs(pos.z_val - self.home.z_val) > 1:
count = 0
self.home = pos
if time.time() - start > 10:
print("Drone position is drifting, we are waiting for it to settle down...")
start = time
else:
def airpub():
pub = rospy.Publisher("airsim/image_raw", Image, queue_size=1)
rospy.init_node('image_raw', anonymous=True)
rate = rospy.Rate(10) # 10hz
# connect to the AirSim simulator
client = airsim.MultirotorClient()
client.confirmConnection()
while not rospy.is_shutdown():
# get camera images from the car
responses = client.simGetImages([
airsim.ImageRequest("1", airsim.ImageType.Scene, False, False)]) #scene vision image in uncompressed RGB array
for response in responses:
img_rgb_string = response.image_data_uint8
# Populate image message
msg=Image()
msg.header.stamp = rospy.Time.now()
msg.header.frame_id = "frameId"
msg.encoding = "rgb8"
msg.height = 360 # resolution should match values in settings.json
self.train_lap_idx = 0
# should be same as settings.json
self.drone_name = drone_name
# training params
self.race_course_radius = race_course_radius
self.radius_noise = radius_noise
self.height_range = height_range
self.direction = direction
self.perpendicular=perpendicular
self.vel_max = vel_max
self.acc_max = acc_max
# todo encapsulate in function
self.client = airsim.MultirotorClient()
self.client.confirmConnection()
self.client.enableApiControl(True, vehicle_name=self.drone_name)
time.sleep(0.05)
# threading stuff
self.got_odom = False
self.is_expert_planner_controller_thread_active = False
self.expert_planner_controller_thread = threading.Thread(target=self.repeat_timer_expert, args=(self.expert_planner_controller_callback, odom_loop_rate_sec))
# self.image_loop = threading.Thread(target=self.repeat_timer, args=(self.image_callback, 0.05))
"Vehicles": {
"Drone1": {
"VehicleType": "SimpleFlight",
"X": 4, "Y": 0, "Z": -2
},
"Drone2": {
"VehicleType": "SimpleFlight",
"X": 8, "Y": 0, "Z": -2
}
}
}
"""
# connect to the AirSim simulator
client = airsim.MultirotorClient()
client.confirmConnection()
client.enableApiControl(True, "Drone1")
client.enableApiControl(True, "Drone2")
client.armDisarm(True, "Drone1")
client.armDisarm(True, "Drone2")
airsim.wait_key('Press any key to takeoff')
f1 = client.takeoffAsync(vehicle_name="Drone1")
f2 = client.takeoffAsync(vehicle_name="Drone2")
f1.join()
f2.join()
state1 = client.getMultirotorState(vehicle_name="Drone1")
s = pprint.pformat(state1)
print("state: %s" % s)
state2 = client.getMultirotorState(vehicle_name="Drone2")
def __init__(self):
# connect to the AirSim simulator
self.client = airsim.MultirotorClient(settings.ip)
self.client.confirmConnection()
self.client.enableApiControl(True)
self.client.armDisarm(True)
self.home_pos = self.client.getPosition()
self.home_ori = self.client.getOrientation()
self.z = -4
import setup_path
import airsim
import sys
import time
client = airsim.MultirotorClient()
client.confirmConnection()
client.enableApiControl(True)
# AirSim uses NED coordinates so negative axis is up.
# z of -7 is 7 meters above the original launch point.
z = -7
# see https://github.com/Microsoft/AirSim/wiki/moveOnPath-demo
# this method is async and we are not waiting for the result since we are passing timeout_sec=0.
result = client.moveOnPathAsync([airsim.Vector3r(0,-253,z),airsim.Vector3r(125,-253,z),airsim.Vector3r(125,0,z),airsim.Vector3r(0,0,z),airsim.Vector3r(0,0,-20)],
12, 120,
airsim.DrivetrainType.ForwardOnly, airsim.YawMode(False,0), 20, 1).join()
client.moveToPositionAsync(0,0,z,1).join()
client.landAsync()