Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FrED factory cooling subassembly Simulation #15

Open
afr2903 opened this issue Dec 3, 2024 · 7 comments
Open

FrED factory cooling subassembly Simulation #15

afr2903 opened this issue Dec 3, 2024 · 7 comments

Comments

@afr2903
Copy link
Member

afr2903 commented Dec 3, 2024

Simulate the following processes for the FrED Cooling subassembly in Unity:

image
image
image

Reference video of Cooling Fan

@afr2903
Copy link
Member Author

afr2903 commented Dec 4, 2024

LucidChart of the whole Factory process

Visual mock-up drawing for the simulation

Cooling Fan subassembly factory general view

image

Cooling subassembly workstation

image
At the end it should go to inv_cooling instead.

Fan subassembly workstation

image
At the end it should go to inv_fan instead.

Cooling Fan subassemblt workstation

image

@AleGonzcamilla
Copy link

AleGonzcamilla commented Dec 4, 2024

Folder with colored .fbx files to use in Unity

image

image

@afr2903
Copy link
Member Author

afr2903 commented Dec 5, 2024

Animationless Simulation

Following the visual mock-up drawings, the simulation was created with the variables and text decided for the process, here is a video demo.

image

The simulation contains the three subassemblies pre-defined: Cooling subassembly, Fan subassembly, Cooling Fan subassembly.

When clicked on the GameObject on the Hierarchy, the modifiable variables appear in the Inspector:

image

In the UI, a counter appears for each subassembly and a text box with feedback on the process correspondent to each station.

The Speed text box accelerates the simulation.

Next steps:

  • Generate and download a .csv file when pressing the Download button, this is to generate training data for the NN.
  • Add demand variables.

@AleGonzcamilla
Copy link

Start 3D layout for the simulation:

image

@afr2903
Copy link
Member Author

afr2903 commented Dec 7, 2024

Operator efficiency variables

In order to increase the realism of the simulation, the previously arbitrary parameter of failure_rate was changed to a generalized ponderated equation, taking into account some variables found in literature review:

image

Only a few variables were chosen, in order to generate a large dataset and train a neural network to find the impact of each variable in the efficiency. The vision is to gather data from a real-world factory and the ponderated equation step would dissapear and be substituted by a neural network

float deltaTime = currentTime - lastTime;
lastTime = currentTime;

// Time-series dependent parameters
float multiplier = 0.0001f * deltaTime;
attentionLevel = Math.Clamp(attentionLevel-multiplier, 0, 10);
cognitiveLoad = Math.Clamp(cognitiveLoad+multiplier, 0, 10);
learningCurve = Math.Clamp(learningCurve-multiplier*5, 0, 10);
stressLevel = Math.Clamp(stressLevel+multiplier, 0, 10);
fatigueLevel = Math.Clamp(fatigueLevel+multiplier, 0, 10);
motivationLevel = Math.Clamp(motivationLevel-multiplier, 0, 10);

// Determine operator efficiency based on operator parameters maximum efficiency is 100% and minimum efficiency is 0%
operatorEfficiency = 60 + 1 * (35-age) + 1 * experienceInYears + 2 * trainingLevel +
    1 * attentionLevel - 1 * cognitiveLoad - 1 * learningCurve - 1 * stressLevel -
    1 * fatigueLevel + 1 * motivationLevel + 1 * ergonomicRating +
    1 * (70-noiseLevel) -
    1 * Math.Abs(20-temperature) - 0.2f * Math.Abs(70-lighting);

operatorEfficiency = Mathf.Clamp(operatorEfficiency, 0, 100);
operatorEfficiencyText.text = operatorEfficiency.ToString();
screwFailRate = 0.08f + (100 - operatorEfficiency) * 0.003f;

@alex-guerreroc
Copy link

Simulation and Layout Integration

With a functional simulation program and a virtual layout for the factory, an integration of all the separate developments was made. First of all, taking the 3D layout as the main stage, the workstation switching algorithm from the ViperScene scene was imported and adapted to the new layout, with the updated workstation meshes and the main UI elements that allowed the switching system to work. For convenience of development, a new prefab for the workstations was made, which can provide scalability for the project's vision. Another Quality of Life feature that was implemented was the use of vectorial and quaternion time-related lerp methods to model the camera movement while switching stations, which smoothed the camera's motion between workstations.

image

After the movement was ready, it was time to implement functionality upon the factory layout. All functional components from the RuntimeCoolingFanSubassembly scene, both GameObjects and UI Canvas elements, were imported into TheFrEDFactory scene, which contains the layout. Some UI elements were rearranged for visual appeal. For the subassembly counters and status texts, a WorldCanvas was created, which allows UI elements to be present in the world, not only on the screen. The reason for this was to turn those texts and counters into floating 3D texts in front of each station, displaying the status of the current jobs and subassembly counts per station.

image

Other small visual changes were made, such as the rotation of all workstations by 90 degrees for visual appeal and symmetry, as well as the change to the background, swapping it from a standard skybox to a solid dark grey color to emphasize on the immersion of the factory.

@afr2903
Copy link
Member Author

afr2903 commented Dec 9, 2024

System prompt SLM:

You are an expert in manufacturing that will provide brief insights on how to improve performance for a industry 5.0 factory. The process is:
1) Cooling subassembly: Add 6 heat inserts to a 3d piece, its crucial not to make mistakes.
2) Fan subassembly: Crimp 2 wires of two fans, if a mistake is made, the one fan is to scrap.
3) Cooling Fan Assembly: 2 screws to each fan crimped to the cooling subassembly, in total 4 screws and if failed should be retried.

You will receive data of the processes: Time, operator information, coginitive and environmental factors, and operator efficiency (0-1)
Based on the data provide a brief analysis and a brief recommendation, up to 100 characters total, for example, if identified low efficiency in operator from cooling, due to increased stress levels and age, but the other two are doing fine:
"Operator from cooling is detected to have low efficiency due to increased stressed levels, while operators from the other stations are being bottlenecked. Given the crucial role of accuracy in cooling, it;s suggested to change the operator of cooling subassembly to cooling fan subassembly for increased performance of the system

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

When branches are created from issues, their pull requests are automatically linked.

3 participants