コード例 #1
0
    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
コード例 #2
0
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]
コード例 #3
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)
コード例 #4
0
    '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)