def __init__(self, beamng: BeamNGpy, name: str, camera: Camera = None): self.name = name self.pose: BeamNGPose = BeamNGPose() self.camera = camera if not self.camera: self.camera = Camera((0, 0, 0), (0, 0, 0), 120, (1280, 1280), colour=True, depth=True, annotation=True) self.beamng = beamng
def __init__(self, road_nodes: List4DTuple = None, beamng_home=None, beamng_user=None): self.beamng = BeamNGpy('localhost', 64256, home=beamng_home, user=beamng_user) self.vehicle: Vehicle = None self.camera: BeamNGCamera = None if road_nodes: self.setup_road_nodes(road_nodes) steps = 5 self.params = SimulationParams(beamng_steps=steps, delay_msec=int(steps * 0.05 * 1000)) self.vehicle_start_pose = BeamNGPose()
def vehicle_start_pose(self, meters_from_road_start=2.5, road_point_index=0) \ -> BeamNGPose: assert self.n > road_point_index, f'road length is {self.n} it does not have index {road_point_index}' p1 = self.middle[road_point_index] p1r = self.right[road_point_index] p2 = self.middle[road_point_index + 1] p2v = np.subtract(p2[0:2], p1[0:2]) v = (p2v / np.linalg.norm(p2v)) * meters_from_road_start origin = np.add(p1[0:2], p1r[0:2]) / 2 deg = np.degrees(np.arctan2([-v[0]], [-v[1]])) res = BeamNGPose(pos=tuple(origin + v) + (p1[2], ), rot=(0, 0, deg[0])) return res
def __init__(self, beamng_home=None, beamng_user=None, reuse_beamng=True, road_nodes: List4DTuple = None): self.reuse_beamng = reuse_beamng if self.reuse_beamng: # This represents the running BeamNG simulator. Since we use launch=True this should automatically # shut down when the main python process exits or when we call self.beamng_process.stop() self.beamng_process = BeamNGpy('localhost', 64256, home=beamng_home, user=beamng_user) self.beamng_process = self.beamng_process.open(launch=True) # This is used to bring up each simulation without restarting the simulator self.beamng = BeamNGpy('localhost', 64256, home=beamng_home, user=beamng_user) # We need to wait until this point otherwise the BeamNG loggers's level will be (re)configured by BeamNGpy log.info("Disabling BEAMNG logs") for id in [ "beamngpy", "beamngpy.beamngpycommon", "beamngpy.BeamNGpy", "beamngpy.beamng", "beamngpy.Scenario", "beamngpy.Vehicle" ]: logger = log.getLogger(id) logger.setLevel(log.CRITICAL) logger.disabled = True self.vehicle: Vehicle = None self.camera: BeamNGCamera = None if road_nodes: self.setup_road_nodes(road_nodes) steps = 5 self.params = SimulationParams(beamng_steps=steps, delay_msec=int(steps * 0.05 * 1000)) self.vehicle_start_pose = BeamNGPose()