def my_constructor( self, SCENEGRAPH=None, START_MATRIX=avango.gua.make_identity_mat(), ): ### parameters ### self.fall_velocity = 0.003 # in meter/sec self.pick_length = 1.0 # in meter self.pick_direction = avango.gua.Vec3(0.0, -1.0, 0.0) ### variables ### self.fall_vec = avango.gua.Vec3() self.lf_time = time.time() ## init internal sub-classes self.gravity_intersection = Intersection() self.gravity_intersection.my_constructor(SCENEGRAPH, self.sf_mat, self.pick_length, self.pick_direction) ## init field connections self.mf_pick_result.connect_from( self.gravity_intersection.mf_pick_result) ## set initial state self.sf_modified_mat.value = START_MATRIX
def model_for_sensitivity(p_spawn=0.1, max_speed_horizontal=10, max_speed_vertical=10, intersection_type=0): t_traffic_light_cycle = 5 p_bend = 0.33 p_u_turn = 0.01 p_left = p_bend p_right = p_bend p_straight = p_bend t_from_north = t_traffic_light_cycle t_from_west = t_traffic_light_cycle t_from_east = t_traffic_light_cycle t_from_south = t_traffic_light_cycle intersection_type = int(intersection_type) intersections = ['Fourway', 'Traffic lights', 'Equivalent', 'Smart lights'] intersection = intersections[intersection_type] parameter_set = { "max_speed_horizontal": int(max_speed_horizontal), "max_speed_vertical": int(max_speed_vertical), "seed": 1337, "bmw_fraction": 0.1, "intersection_type": intersection, "t_from_north": t_from_north, "t_from_west": t_from_west, "t_from_east": t_from_east, "t_from_south": t_from_south, "p_car_spawn_north": p_spawn, "p_north_to_north": p_u_turn, "p_north_to_west": p_right, "p_north_to_east": p_left, "p_north_to_south": p_straight, "p_car_spawn_west": p_spawn, "p_west_to_north": p_left, "p_west_to_west": p_u_turn, "p_west_to_east": p_straight, "p_west_to_south": p_right, "p_car_spawn_east": p_spawn, "p_east_to_north": p_right, "p_east_to_west": p_straight, "p_east_to_east": p_u_turn, "p_east_to_south": p_left, "p_car_spawn_south": p_spawn, "p_south_to_north": p_straight, "p_south_to_west": p_left, "p_south_to_east": p_right, "p_south_to_south": p_u_turn, } model = Intersection(parameters = parameter_set, parameters_as_dict=True) datawriter = DataWriter(model) datawriter.run() data = datawriter.get_runs_by_parameters(parameter_set) flow = data['results']['throughput'][-1] crossover = data['results']['mean_crossover_time'][-1] av_speed = data['results']['average_speed'][-1] out = np.array([flow,crossover,av_speed]) return out[0]
def my_constructor( self, SCENEGRAPH, PARENT_NODE, MF_NAV_DOF, POINTER_STATION_NAME, POINTER_TRACKING_NAME, TRACKING_TRANSMITTER_OFFSET, ): self.scenegraph = SCENEGRAPH self.parent_node = PARENT_NODE ### parameters ### self.ray_length = 100.0 # in meters self.ray_thickness = 0.01 # in meters self.intersection_point_size = 0.025 # in meters self.navidget_duration = 10.0 # in seconds self.navidget_sphere_size = 0.5 # in meters ### variables ### self.navigation_mode = 0 # 0 = steering mode, 1 = maneuvering mode, 3 = Navidget target-mode, 4 = Navidget animation-mode self.navidget_start_pos = None self.navidget_target_pos = None self.navidget_start_quat = None self.navidget_target_quat = None self.navidget_start_time = None ### navigation variables self.rotation_center = None self.first_pick_result = None self.rot_x_accum_value = 0.0 self.rot_y_accum_value = 0.0 self.manu_distance = 0.0 self.offset_trans_mat = avango.gua.make_identity_mat() self.offset_rot_mat = avango.gua.make_identity_mat() self.navidget_trans_mat = avango.gua.make_identity_mat() self.navidget_rot_mat = avango.gua.make_identity_mat() self.animation_state = "start" ### resources ### # init pointer sensors self.pointer_tracking_sensor = avango.daemon.nodes.DeviceSensor( DeviceService=avango.daemon.DeviceService()) self.pointer_tracking_sensor.Station.value = POINTER_TRACKING_NAME self.pointer_tracking_sensor.ReceiverOffset.value = avango.gua.make_identity_mat( ) self.pointer_tracking_sensor.TransmitterOffset.value = TRACKING_TRANSMITTER_OFFSET self.pointer_device_sensor = avango.daemon.nodes.DeviceSensor( DeviceService=avango.daemon.DeviceService()) self.pointer_device_sensor.Station.value = POINTER_STATION_NAME # init nodes and geometries _loader = avango.gua.nodes.TriMeshLoader() self.offset_node = avango.gua.nodes.TransformNode(Name="offset_node") self.offset_node.Transform.value = avango.gua.make_trans_mat( 0.0, 0.0, 0.0) SCENEGRAPH.Root.value.Children.value.append(self.offset_node) self.proxy_geo = _loader.create_geometry_from_file( "proxy_geo", "data/objects/sphere.obj", avango.gua.LoaderFlags.DEFAULTS) self.proxy_geo.Transform.value = avango.gua.make_scale_mat(0.2) SCENEGRAPH.Root.value.Children.value.append(self.proxy_geo) self.proxy_geo.Material.value.set_uniform( "Color", avango.gua.Vec4(0.0, 0.5, 1.0, 1.0)) self.rot_helper = avango.gua.nodes.TransformNode(Name="rot_helper") self.offset_node.Children.value.append(self.rot_helper) #self.proxy_geo.Tags.value = [] # set geometry invisible self.ray_transform = avango.gua.nodes.TransformNode( Name="ray_transform") PARENT_NODE.Children.value.append(self.ray_transform) self.ray_geometry = _loader.create_geometry_from_file( "ray_geometry", "data/objects/cylinder.obj", avango.gua.LoaderFlags.DEFAULTS) self.ray_transform.Children.value.append(self.ray_geometry) self.ray_geometry.Material.value.set_uniform( "Color", avango.gua.Vec4(1.0, 0.0, 0.0, 1.0)) self.ray_geometry.Transform.value = avango.gua.make_trans_mat(0.0,0.0,self.ray_length * -0.5) * \ avango.gua.make_scale_mat(self.ray_thickness,self.ray_thickness,self.ray_length) self.intersection_point_geometry = _loader.create_geometry_from_file( "intersection_point_geometry", "data/objects/sphere.obj", avango.gua.LoaderFlags.DEFAULTS) SCENEGRAPH.Root.value.Children.value.append( self.intersection_point_geometry) self.intersection_point_geometry.Tags.value = [ "invisible" ] # set geometry invisible self.maneuvering_point_geometry = _loader.create_geometry_from_file( "maneuvering_point_geometry", "data/objects/sphere.obj", avango.gua.LoaderFlags.DEFAULTS) SCENEGRAPH.Root.value.Children.value.append( self.maneuvering_point_geometry) self.maneuvering_point_geometry.Material.value.set_uniform( "Color", avango.gua.Vec4(1.0, 0.0, 0.0, 0.25)) self.maneuvering_point_geometry.Tags.value = [ "invisible" ] # set geometry invisible ## init Navidget nodes self.navidget_node = avango.gua.nodes.TransformNode( Name="navidget_node") SCENEGRAPH.Root.value.Children.value.append(self.navidget_node) self.navidget_node.Tags.value = ["invisible"] self.navidget_sphere = avango.gua.nodes.TransformNode( Name="navidget_sphere") self.navidget_node.Children.value.append(self.navidget_sphere) self.navidget_sphere_geometry = _loader.create_geometry_from_file( "navidget_sphere_geometry", "data/objects/sphere.obj", avango.gua.LoaderFlags.DEFAULTS | avango.gua.LoaderFlags.MAKE_PICKABLE) self.navidget_node.Children.value.append(self.navidget_sphere_geometry) self.navidget_sphere_geometry.Material.value.set_uniform( "Color", avango.gua.Vec4(0.0, 1.0, 1.0, 0.25)) self.navidget_sphere_geometry.Transform.value = avango.gua.make_scale_mat( self.navidget_sphere_size) self.navidget_stick = avango.gua.nodes.TransformNode( Name="navidget_stick") self.navidget_node.Children.value.append(self.navidget_stick) self.navidget_stick_geometry = _loader.create_geometry_from_file( "navidget_stick_geometry", "data/objects/cylinder.obj", avango.gua.LoaderFlags.DEFAULTS) self.navidget_stick.Children.value.append(self.navidget_stick_geometry) self.navidget_stick_geometry.Material.value.set_uniform( "Color", avango.gua.Vec4(1.0, 0.0, 1.0, 1.0)) self.navidget_stick_geometry.Transform.value = avango.gua.make_scale_mat( 0.015, 0.015, self.navidget_sphere_size * 2.0) self.navidget_camera_geometry = _loader.create_geometry_from_file( "navidget_camera_geometry", "data/objects/cam.obj", avango.gua.LoaderFlags.DEFAULTS) self.navidget_node.Children.value.append(self.navidget_camera_geometry) #self.navidget_camera_geometry.Material.value.set_uniform("Color", avango.gua.Vec4(1.0,0.0,0.0,1.0)) self.navidget_camera_geometry.Transform.value = avango.gua.make_trans_mat(0.0,0.0,self.navidget_sphere_size * 2.0) * \ avango.gua.make_scale_mat(3.0) # init ray intersection for target identification self.intersection = Intersection(SCENEGRAPH=SCENEGRAPH) self.navidget_intersection = Intersection(SCENEGRAPH=SCENEGRAPH) self.navidget_intersection.white_list = ["navidget_sphere"] self.navidget_intersection.black_list = [""] self.frame_trigger = avango.script.nodes.Update( Callback=self.frame_callback, Active=True) # init field connections self.mf_dof.connect_from(MF_NAV_DOF) self.sf_pointer_button0.connect_from( self.pointer_device_sensor.Button0) self.sf_pointer_button1.connect_from( self.pointer_device_sensor.Button1) self.ray_transform.Transform.connect_from( self.pointer_tracking_sensor.Matrix)
'p_east_to_north': from_0_to_1, 'p_east_to_west': from_0_to_1, 'p_east_to_east': from_0_to_1, 'p_east_to_south': from_0_to_1, 'p_car_spawn_south': p_spawn, 'p_south_to_north': from_0_to_1, 'p_south_to_west': from_0_to_1, 'p_south_to_east': from_0_to_1, 'p_south_to_south': from_0_to_1 } parameter_space = [ dict(zip(parameters, v)) for v in product(*parameters.values()) ] print('Generating {} intersections'.format(len(parameter_space))) for parameter_set in parameter_space: intersection = Intersection(parameters=parameter_set, parameters_as_dict=True) datawriter = DataWriter(intersection) datawriter.run(10)