Files
XRLib/Assets/Resources/DataSample.json

632 lines
12 KiB
JSON
Raw Normal View History

2025-09-30 11:20:24 +09:00
{
"name": "Manual Node Network Example",
"description": "Simple factory simulation with manually configured node network",
"physical_layout": {
"world_bounds": {
"x": {
"min": 0,
"max": 100
},
"y": {
"min": 0,
"max": 50
},
"z": {
"min": 0,
"max": 10
}
},
"unit": "meter",
"collision_margin": 0.2
},
"prefabs": [ // <20>ùķ<C3B9><C4B7>̼ǿ<CCBC><C7BF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ü<EFBFBD><C3BC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
"name": "raw_material_box", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD>
"label": "Raw Material Box", // ȭ<><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD>
"width": 4, // <20><>ü <20><><EFBFBD><EFBFBD>
"length": 3, // <20><>ü <20><><EFBFBD><EFBFBD>
"height": 2, // <20><>ü <20><><EFBFBD><EFBFBD>
"weight": 10, // <20><>ü <20><><EFBFBD><EFBFBD>
"priority_order": 1, // <20><>ü <20><EFBFBD><ECBCB1><EFBFBD><EFBFBD>
"tags": [ // <20><>ü<EFBFBD><C3BC> <20>±<EFBFBD> <20><>
{
"key": "address", // <20>±<EFBFBD> Ű
"value": "anyang", // <20>±<EFBFBD> <20><>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> string, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> type<70><65> <20><><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
"type": "string" // <20>±<EFBFBD> <20><><EFBFBD><EFBFBD> Ÿ<>Ե<EFBFBD> (string, number <20><><EFBFBD><EFBFBD>)
}
]
}
],
"resources": [
{
"name": "agv_fleet",
"type": "agv",
"capacity": 2,
"speed": 2.0,
"failure_rate": 0.001,
"repair_time": 300
}
],
"queues": [ // <20>ȷ<EFBFBD>Ʈ(queue)
{
"name": "buffer_A",
"label": "Buffer A",
"capacity": 20, // <20>ִ<EFBFBD><D6B4>
"is_unlimited": false, // <20><EFBFBD><EBB7AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
"policy": "fifo", // <20><><EFBFBD>⿭ó<E2BFAD><C3B3> <20><><EFBFBD><EFBFBD>
"wait_cost": 2.5, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
"cost_time": 60, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
"physical": {
"position": {
"x": 30,
"y": 20,
"z": 0
},
"dimensions": {
"width": 3,
"depth": 2,
"height": 1.5
},
"orientation": 0,
"access_points": {
"input": {
"local_position": {
"x": -1.5,
"y": 0,
"z": 0
}
},
"output": {
"local_position": {
"x": 1.5,
"y": 0,
"z": 0
}
}
}
}
}
],
"rack": [ // <20><>(rack)
{
"name": "raw_materials",
"label": "Raw Materials",
"is_unlimited": false, // <20><EFBFBD><EBB7AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
"rack_layout": { // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
"bay": 10,
"level": 5,
"depth": 2,
"bay_length": 10,
"level_length": 10,
"depth_length": 10
},
"entity_count_per_block": 4, // ĭ<><C4AD> <20><>ü <20><><EFBFBD><EFBFBD>
"receiving_time_policy": { // <20>԰<EFBFBD><D4B0>ҿ<EFBFBD><D2BF><EFBFBD>å
"type": "exponential",
"mean": 10.0
},
"shipping_time_policy": { // <20><><EFBFBD><EFBFBD><EFBFBD>ҿ<EFBFBD><D2BF><EFBFBD>å
"type": "exponential",
"mean": 10.0
},
"storage_cost_policy": { // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>å
"type": "exponential",
"mean": 10.0
},
"required_resource": [ "forklift" ], // <20>ڿ<EFBFBD> <20><><EFBFBD><EFBFBD>
"resource_usage": 1, // <20>ڿ<EFBFBD> <20><><EFBFBD>
"physical": {
"position": {
"x": 10,
"y": 25,
"z": 0
},
"dimensions": {
"width": 6,
"depth": 4,
"height": 3
},
"orientation": 0,
"access_points": {
"pickup": {
"local_position": {
"x": 3,
"y": 0,
"z": 0
}
}
}
}
}
],
"asrs": [ // <20>ڵ<EFBFBD>â<EFBFBD><C3A2>(asrs)
{
"name": "automated_storage_A",
"label": "ASRS A",
"capacity": 1000, // <20>ִ<EFBFBD><D6B4>
"is_unlimited": false, // <20><EFBFBD><EBB7AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
"policy": "lifo", // <20><><EFBFBD>⿭ó<E2BFAD><C3B3> <20><><EFBFBD><EFBFBD>
"receive_policy": "closest_available_cell", // <20>԰<EFBFBD><D4B0><EFBFBD>å
"shipping_policy": "batch_retrieval", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>å
"rack_layout": { // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
"bay": 10,
"level": 5,
"depth": 2,
"bay_length": 10,
"level_length": 10,
"depth_length": 10
},
"entity_count_per_cell": 1, // <20><><EFBFBD><EFBFBD> <20><>ü <20><><EFBFBD><EFBFBD>
"receiving_time_policy": { // <20>԰<EFBFBD><D4B0>ҿ<EFBFBD><D2BF><EFBFBD>å
"type": "exponential",
"mean": 10.0
},
"shipping_time_policy": { // <20><><EFBFBD><EFBFBD><EFBFBD>ҿ<EFBFBD><D2BF><EFBFBD>å
"type": "exponential",
"mean": 10.0
},
"storage_cost": 0.05, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
"storage_cost_policy": "per_cell_per_day", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>å
"wait_cost": 0.5, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
"cost_time": 3600, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
"required_resource": [ "stacker_crane_A" ], // <20>ڿ<EFBFBD> <20><><EFBFBD><EFBFBD>
"resource_usage": 1, // <20>ڿ<EFBFBD> <20><><EFBFBD>
"stacker_crane": { // <20><><EFBFBD><EFBFBD>Ŀ ũ<><C5A9><EFBFBD><EFBFBD>
"horizontal_speed": 3.0, // <20><><EFBFBD><EFBFBD> <20>̵<EFBFBD><CCB5>ӵ<EFBFBD>
"vertical_speed": 1.5, // <20><><EFBFBD><EFBFBD> <20>̵<EFBFBD><CCB5>ӵ<EFBFBD>
"fork_cycle_time": 15 // <20><>ũ <20><><EFBFBD><EFBFBD>Ŭ Ÿ<><C5B8> (for_cycle_time <20><>Ÿ <20><><EFBFBD><EFBFBD>)
},
"physical": {
"position": {
"x": 10,
"y": 25,
"z": 0
},
"dimensions": {
"width": 6,
"depth": 4,
"height": 3
},
"orientation": 0,
"access_points": {
"pickup": {
"local_position": {
"x": 3,
"y": 0,
"z": 0
}
}
}
}
}
],
"sources": [ // <20><><EFBFBD><EFBFBD>
{
"name": "material_source",
"label": "Material Source",
"prefab": "raw_material_box", // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ü <20><><EFBFBD><EFBFBD>(prefab)
"spawn_time_policy": { // <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD> <20><>å
"type": "exponential",
"mean": 10.0
},
"spawn_count_policy": { // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>å
"type": "triangular",
"min_val": 10.0,
"mode": 30.0,
"max_val": 40.0
},
"max_spawn_limit": 1000, // <20>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EAB0B3>
"output_store": "raw_materials", // <20><><EFBFBD><EFBFBD> <20><>ġ
"physical": {
"position": {
"x": 20,
"y": 10,
"z": 0
},
"dimensions": {
"width": 4,
"depth": 3,
"height": 2
},
"orientation": 0,
"access_points": {
"output": {
"local_position": {
"x": 2,
"y": 0,
"z": 0
}
}
}
}
}
],
"processors": [ // <20>۾<EFBFBD>
{
"name": "main_processor",
"label": "Main Processor",
"type": "combine", // Ÿ<><C5B8> - <20><><EFBFBD><EFBFBD>, (split, transform <20><><EFBFBD><EFBFBD>)
"policy": "priority_based", // <20><><EFBFBD><EFBFBD> <20><>å
"processing_time": 20, // ó<><C3B3> <20>ð<EFBFBD>
"processing_time_distribution": { // ó<><C3B3> <20>ð<EFBFBD> <20><>å (Ȯ<><C8AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
"type": "normal",
"mean": 20,
"std_dev": 2
},
"setup_time": 5, // <20>غ<EFBFBD> <20>ð<EFBFBD>
"setup_time_distribution": { // <20>غ<EFBFBD> <20>ð<EFBFBD><><C8AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
"type": "uniform",
"min": 4,
"max": 6
},
"defect_rate_policy": "normal", // <20>ҷ<EFBFBD><D2B7><EFBFBD><><C8AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
"defect_rate_time": [ 1 ],
"input_stores": [
{
"store_name": "raw_materials",
"required_items": 2
}
],
"output_queue": "buffer_A",
"required_resource": [ "agv_fleet" ], // <20>Ҵ<EFBFBD><D2B4><EFBFBD> <20>ڿ<EFBFBD>
"physical": {
"position": {
"x": 50,
"y": 20,
"z": 0
},
"dimensions": {
"width": 6,
"depth": 4,
"height": 3
},
"orientation": 0,
"access_points": {
"input": {
"local_position": {
"x": -3,
"y": 0,
"z": 0
}
},
"output": {
"local_position": {
"x": 3,
"y": 0,
"z": 0
}
}
}
}
}
],
"sinks": [ // <20><><EFBFBD><EFBFBD>
{
"name": "shipping_dock",
"label": "Shipping Dock",
"input_queues": [
"buffer_A"
],
"physical": {
"position": {
"x": 80,
"y": 10,
"z": 0
},
"dimensions": {
"width": 8,
"depth": 6,
"height": 3
},
"orientation": 0,
"access_points": {
"input": {
"local_position": {
"x": -4,
"y": 0,
"z": 0
}
}
}
}
}
],
"conveyors": [ // <20><><EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD>
{
"name": "main_conveyor", // <20≯<EFBFBD>
"speed": 1.5, // <20>ӵ<EFBFBD>
"length": 20, // <20><><EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD><CCBE><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
"capacity": 15, // <20>
"routing_rules": [ // <20><><EFBFBD>Ǻб<C7BA><D0B1><EFBFBD>
{
"name": "route_to_qc", // <20>б<EFBFBD> <20≯<EFBFBD>
"target_entity": "sample_entity_1", // <20><>Ģ<EFBFBD><C4A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ü
"rules": [ // <20><>Ģ<EFBFBD><C4A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> or <20><><EFBFBD><EFBFBD>
{
"tag": "product_tag_1", // <20><>Ģ<EFBFBD><C4A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ױ<EFBFBD> Ű
"value": "1", // <20>±<EFBFBD><C2B1><EFBFBD> <20><>
"rule": "more_than" // <20><><EFBFBD>ǽ<EFBFBD>
}
],
"output_conveyor": "qc_conveyor" // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD>
},
{
"name": "default_route",
"target_entity": "sample_entity_1",
"rules": [ // <20><>Ģ<EFBFBD><C4A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> or <20><><EFBFBD><EFBFBD>
{
"tag": "<22>ּ<EFBFBD>", // <20><>Ģ<EFBFBD><C4A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ױ<EFBFBD> Ű
"value": "<22>ǿ<EFBFBD>", // <20>±<EFBFBD><C2B1><EFBFBD> <20><>
"rule": "equal" // <20><><EFBFBD>ǽ<EFBFBD>(include, exclude)
}
],
"output_conveyor": "packing_conveyor"
}
],
"wait_rules": [ // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
"name": "inspection_wait", // <20><><EFBFBD><EFBFBD> <20≯<EFBFBD>
"timeout": 300, // Ÿ<>Ӿƿ<D3BE>
"entity_limit": 5, // <20><><EFBFBD><EFBFBD> <20><>ü <20><>
"target_entity": "sample_entity_1", // <20><>Ģ<EFBFBD><C4A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ü
"rules": [ // <20><>Ģ<EFBFBD><C4A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> or <20><><EFBFBD><EFBFBD>
{
"tag": "product_tag_1", // <20><>Ģ<EFBFBD><C4A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ױ<EFBFBD> Ű
"value": "10", // <20>±<EFBFBD><C2B1><EFBFBD> <20><>
"rule": "more_less" // <20><><EFBFBD>ǽ<EFBFBD>
}
]
}
],
"physical": {
"position": {
"x": 50,
"y": 20,
"z": 0
},
"dimensions": {
"width": 6,
"depth": 4,
"height": 3
}
}
}
],
"node_network": {
"nodes": [
{
"id": "node_source_output",
"position": {
"x": 22,
"y": 10,
"z": 0
},
"type": "station",
"connected_component": "material_source",
"connection_type": "output",
"properties": {
"description": "Material source output point"
}
},
{
"id": "node_storage_pickup",
"position": {
"x": 13,
"y": 25,
"z": 0
},
"type": "station",
"connected_component": "raw_materials",
"connection_type": "pickup",
"properties": {
"description": "Raw materials pickup point"
}
},
{
"id": "node_processor_input",
"position": {
"x": 47,
"y": 20,
"z": 0
},
"type": "station",
"connected_component": "main_processor",
"connection_type": "input",
"properties": {
"description": "Main processor input point"
}
},
{
"id": "node_processor_output",
"position": {
"x": 53,
"y": 20,
"z": 0
},
"type": "station",
"connected_component": "main_processor",
"connection_type": "output",
"properties": {
"description": "Main processor output point"
}
},
{
"id": "node_buffer_input",
"position": {
"x": 28.5,
"y": 20,
"z": 0
},
"type": "station",
"connected_component": "buffer_A",
"connection_type": "input",
"properties": {
"description": "Buffer A input point"
}
},
{
"id": "node_buffer_output",
"position": {
"x": 31.5,
"y": 20,
"z": 0
},
"type": "station",
"connected_component": "buffer_A",
"connection_type": "output",
"properties": {
"description": "Buffer A output point"
}
},
{
"id": "node_sink_input",
"position": {
"x": 76,
"y": 10,
"z": 0
},
"type": "station",
"connected_component": "shipping_dock",
"connection_type": "input",
"properties": {
"description": "Shipping dock input point"
}
},
{
"id": "node_finished_delivery",
"position": {
"x": 66,
"y": 25,
"z": 0
},
"type": "station",
"connected_component": "finished_goods",
"connection_type": "delivery",
"properties": {
"description": "Finished goods delivery point"
}
},
{
"id": "central_hub",
"position": {
"x": 40,
"y": 25,
"z": 0
},
"type": "waypoint",
"properties": {
"description": "Central traffic hub"
}
},
{
"id": "agv_parking_zone",
"position": {
"x": 10,
"y": 10,
"z": 0
},
"type": "parking",
"properties": {
"capacity": 2,
"description": "AGV parking area"
}
},
{
"id": "charging_station",
"position": {
"x": 90,
"y": 40,
"z": 0
},
"type": "charging",
"properties": {
"charging_power": 5.0,
"description": "AGV charging station"
}
}
],
"paths": [
{
"from": "node_source_output",
"to": "node_storage_pickup",
"bidirectional": false
},
{
"from": "node_storage_pickup",
"to": "central_hub",
"bidirectional": true
},
{
"from": "central_hub",
"to": "node_processor_input",
"bidirectional": true
},
{
"from": "node_processor_output",
"to": "node_buffer_input",
"bidirectional": false
},
{
"from": "node_buffer_output",
"to": "central_hub",
"bidirectional": true
},
{
"from": "central_hub",
"to": "node_sink_input",
"bidirectional": true
},
{
"from": "central_hub",
"to": "node_finished_delivery",
"bidirectional": true
},
{
"from": "agv_parking_zone",
"to": "central_hub",
"bidirectional": true
},
{
"from": "central_hub",
"to": "charging_station",
"bidirectional": true
}
],
"agv_specs": {
"speed": 2.0,
"acceleration": 1.0,
"deceleration": 1.2,
"max_load": 10.0,
"empty_weight": 50.0,
"battery_capacity": 24.0,
"charging_power": 5.0,
"base_power_consumption": 0.5,
"max_rotation_speed": 90.0,
"rotation_acceleration": 45.0,
"stop_time": 2.0,
"turn_around_time": 3.0
}
},
"groups": {
"production": {
"label": "Production Line",
"components": [
"material_source",
"main_processor"
],
"queues": [
"buffer_A"
]
},
"logistics": {
"label": "Logistics",
"components": [
"shipping_dock"
],
"stores": [
"raw_materials",
"finished_goods"
]
}
}
}