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()
Esempio n. 3
0
    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
Esempio n. 4
0
    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()