ME4104 Final Oral Presentation
MN26 Development of Technology Enhanced Contents for ME4262 Automation in Manufacturing
Tan Guo Xiang
A0086024L
1. Introduction
2. Literature Review
3. Analysis and Review of Tool Used
4. Implementation Details
5. Conclusion
6. Recommendation of Future Work
Contents
Introduction
Introduction
Literature Review
Analysis and Review of Tools
Implementation Details
Conclusion
Recommendation for Future Study
Increase Mobile Adoption Rate
Mobile Phone Penetration rate from 2003 – 2014 from Infocomm Development Authority of Singapore
Adoption of mobile devices by students to study increase in the near future.
Problem: Non-Responsive Web Content
Problem: Administrative Overhead with Polling System
Polls provide lecturers with a shorter feedback loop during teaching.
However, commercial solutions require each student to be issued with a keypad over the course of the semester.
Problem: Difficulty in Visualizing Concepts
Videos demonstrating the concept clearly are hard to find online and tend to be meant as commercial advertisement.
Image Source: ME4262 Lecture 2 Notes
Literature Review
Introduction
Literature Review
Analysis and Review of Tools
Implementation Details
Conclusion
Recommendation for Future Study
Massive Open Online Courses
- Massive Open Online Courses are courses held online and is open to anyone in the world.
- Students in under developed countries are entitled to high quality education content as their peers in more developed countries.
- Examples are Khan Academy which focuses on primary school education while Coursera focuses on University level.
Massive Open Online Courses
Image Source: https://www.khanacademy.org/
Massive Open Online Courses
Image Source: https://www.khanacademy.org/
HTML5
- HTML is a markup language created 18 years ago which did not cater to dynamic media content.
- HTML5 was standardized in 2014 adding video and audio elements.
- HTML is currently the adopted language of the web browser to display content.
Image Source: https://w3.org/
JavaScript
- JavaScript is a dynamic computing language most commonly used in web browsers.
- Using JavaScript, developers can create dynamic content that responds to user actions.
- Allows asynchronous retrieval of data.
Image Source: http://upload.wikimedia.org/wikipedia/commons/6/6a/JavaScript-logo.png
Responsive Web Design
Image Source: http://blog.froont.com/9-basic-principles-of-responsive-web-design/
Responsive Web Design
Image Source: http://blog.froont.com/9-basic-principles-of-responsive-web-design/
QR Code
- First used in the Japanese automotive industry to keep track of components in the process line.
- QR codes are prominently used for marketing purposes where links to website are stored in the QR code reducing friction for users.
Analysis and Review of Tools
Introduction
Literature Review
Analysis and Review of Tools
Implementation Details
Conclusion
Recommendation for Future Study
Foundation Framework
- Foundation is a open sourced framework developed by ZURB in 2011.
- Aimed at making responsive web design easy to implement for developers.
- Provide default break points for common screen sizes.
Image Source: http://foundation.zurb.com/
Foundation Framework
Image Source: http://foundation.zurb.com/
Ruby on Rails
Image Source: http://rubyonrails.org
- Ruby on Rails is a web application development framework written in the Ruby programming language.
- Allow users to quickly create web applications without worrying about the many layers of the internet.
- Known for its simplicity and ease of use.
Ruby on Rails
SOLIDWORKS Motion Study
- SOLIDWORKS Motion is one of the simulation tools that comes along with SOLIDWORKS.
- It allows users to run motion simulation on their design in an environment with real world parameters and limitations.
- Addition of components such as motors, gravity and contact bodies make it easy for the user to create a simulation for their visualization needs.
Implementation Details
Introduction
Literature Review
Analysis and Review of Tools
Implementation Details
Conclusion
Recommendation for Future Study
Responsive Dynamic Graphs
Responsive Dynamic Graphs
Responsive Dynamic Graphs
Implementation Details of Graphs
1. Including necessary libraries
2. Implementing the layout
3. Implementation of solutions based on the requirements of the question
4. Making graphs dynamic by responding to user input
Including necessary libraries
<script src='../../d3.min.js'></script>
<script src='../../nv.d3/nv.d3.min.js'></script>
<script src='../../jquery-2.1.1.min.js'></script>
<script src='../../foundation-5.3.0/js/foundation.min.js'></script>
<script src='../../foundation-5.3.0/js/vendor/modernizr.js'></script>
<script src='../../jquery-ui-1.11.1/jquery-ui.min.js'></script>
<script src='../../jquery.ui.touch-punch.min.js'></script>
<meta content='width=device-width, initial-scale=1.0' name='viewport'>
<script> Tag
<meta> Tag
Implementing the Layout
Implementing the Layout
Implementing the equations
<script>
jQuery(function($) {
function calculateVariableCostofLabour(labourCost, labourOverhead, productionRate) {
return (labourCost * (100 + labourOverhead) / 100 / productionRate);
}
function calculateUniformAnnualCost(machineCost, maintenanceCost, salvageValue, rateOfReturn, serviceLife) {
var capitalReturnFactor = calculateCapitalReturnFactor(rateOfReturn, serviceLife).toFixed(5);
var sinkingFundFactor = calculatorSinkingFundFactor(rateOfReturn, serviceLife).toFixed(5);
return ((machineCost * capitalReturnFactor) + maintenanceCost - (salvageValue * sinkingFundFactor));
}
function calculateUniformAnnualCostWithMachineOverhead(uniformAnnualCost, machineOverheadRate) {
machineOverheadRate = machineOverheadRate / 100;
return (uniformAnnualCost * (1 + machineOverheadRate));
}
function calculateCapitalReturnFactor(rateOfReturn, serviceLife) {
rateOfReturn = rateOfReturn * 0.01;
return ((rateOfReturn * Math.pow((rateOfReturn + 1), serviceLife)) / (Math.pow((rateOfReturn + 1), serviceLife) - 1));
}
function calculateLabourCostPerUnit(labourRate, productionRate) {
return (labourRate / productionRate);
}
function calculateVariableCost(labourCost, materialCost) {
return (labourCost + materialCost);
}
function calculateVariableCostOvertime(labourCost, materialCost, labourOvertimeRate) {
return ((labourCost * (1 + (labourOvertimeRate / 100))) + materialCost);
}
function calculateElecricityRate(electricityConsumption, powerConsumption, productionRate) {
return (electricityConsumption * powerConsumption / productionRate);
}
function calculateOvertimeCost(cost, variableCostWithOverhead, variableCostOvertimeWithOverhead, productionRate, projectedSales, maximumProductionCapcity) {
var currentSales = productionRate * 8 * 5 * 50;
var salesDifference = projectedSales - currentSales;
projectedSales = (projectedSales >= maximumProductionCapcity) ? maximumProductionCapcity : projectedSales;
if (!drawOvertime || salesDifference < 0) {
var variableCost = variableCostWithOverhead * projectedSales
} else {
var variableCost = (variableCostWithOverhead * currentSales) + (variableCostOvertimeWithOverhead * salesDifference);
}
return variableCost + cost;
}
function calculateRentPerAnnum(monthlyRent, factorySpace) {
return (monthlyRent * 12 * factorySpace);
}
function calculatorSinkingFundFactor(rateOfReturn, serviceLife) {
rateOfReturn = rateOfReturn * 0.01;
return (rateOfReturn/(Math.pow((1 + rateOfReturn), serviceLife) - 1));
}
function calculateRevenue(revenue, numberOfUnits) {
return (revenue * numberOfUnits);
}
function calculateCost(cost, variableCost, number_of_units) {
return Number((cost + (variableCost * number_of_units)).toFixed(2));
}
function roundUp(x){
var y = Math.pow(10, parseInt(x).toString().length - 1);
x = (x / y);
x = Math.ceil(x);
x = x * y;
return x;
}
Drawing the Graphs
var lowerBound = 0;
var upperBound = 0;
var upperBoundMax = 0;
var slider;
var $slider = $('#range-slider');
var drawOvertime = false;
var ProfitBreakEvenGraph = {
_init: function() {
var widget = this;
nv.addGraph(function() {
var chart = nv.models.lineChart()
.margin({left: 80, right: 40}) //Adjust chart margins to give the x-axis some breathing room.
.useInteractiveGuideline(false)
.showLegend(true) //Show the legend, allowing users to turn on/off line series.
.showYAxis(true) //Show the y-axis
.showXAxis(true) //Show the x-axis
;
chart.xAxis //Chart x-axis settings
.axisLabel("Annual Output (units)")
chart.yAxis //Chart y-axis settings
.axisLabel('Cost / Revenue ($)')
/* Done setting the chart up? Time to render it!*/
var myData = widget._generateLineData(false);
d3.select('#chart svg') //Select the <svg> element you want to render the chart in.
.datum(myData) //Populate the <svg> element with chart data...
.call(chart); //Finally, render the chart!
//Update the chart when window resizes.
nv.utils.windowResize(function() { chart.update() });
d3.select('.draw-overtime').on('click', function() {
drawOvertime = !drawOvertime;
if (drawOvertime) {
d3.select(this).text('Remove Overtime');
d3.select(this).attr('class', 'alert button radius tiny draw-overtime');
d3.select('.a-profit-header').text('Method A Profit Based on Projected Sales With Overtime');
d3.select('.b-profit-header').text('Method B Profit Based on Projected Sales With Overtime');
} else {
d3.select(this).text('Draw Overtime');
d3.select(this).attr('class', 'success button radius tiny draw-overtime');
d3.select('.a-profit-header').text('Method A Profit Based on Projected Sales');
d3.select('.b-profit-header').text('Method B Profit Based on Projected Sales');
}
widget._updateChart(chart, false)
});
d3.selectAll('input').each(function() {
d3.select(this).on('input', function() {
widget._updateChart(chart, false);
$rangeInputValue.text(lowerBound + '-' + upperBound);
})
});
$rangeInputValue = $('#range-input-value');
slider = $slider.slider({
range: true,
min: lowerBound,
max: upperBoundMax,
values: [lowerBound, upperBound],
slide: function(event, ui) {
lowerBound = ui.values[0];
upperBound = ui.values[1];
widget._updateChart(chart, true);
$rangeInputValue.text(lowerBound + '-' + upperBound);
}
});
$rangeInputValue.text(lowerBound + '-' + upperBound);
return chart;
});
},
_updateChart: function(chart, isSlider) {
var myData = this._generateLineData(isSlider);
d3.select('#chart svg')
.datum(myData)
.call(chart)
},
Making Graphs Dynamic
Making Graphs Dynamic
Making Graphs Dynamic
d3.selectAll('input').each(function() {
d3.select(this).on('input', function() {
widget._updateChart(chart, false);
$rangeInputValue.text(lowerBound + '-' + upperBound);
})
});
POLLMe - On Demand Web Based Polling Application
Demo
POLLMe - On Demand Web Based Polling Application
Animation for Manufacturing Processes
Animation for Manufacturing Processes
Animation for Manufacturing Processes
Animation for Manufacturing Processes
Implementation Details
Implementation Details
Implementation Details
Implementation Details
Implementation Details
Conclusion
Introduction
Literature Review
Analysis and Review of Tools
Implementation Details
Conclusion
Recommendation for Future Study
- Technology enabled learning comes with many benefits that can help students learn better and it is crucial that educators continue to seek out new opportunities.
- Responsive and Dynamic Break Even Graphs.
- POLLMe - On demand polling web application for lectureres.
- Better visualization with 3D animations.
Conclusion
Recommendation for Future Study
Introduction
Literature Review
Analysis and Review of Tools
Implementation Details
Conclusion
Recommendation for Future Study
- Test out the new content and obtain feedback from students to see if they have benefited from the new content.
- POLLMe can applied to many modules. It would be good that other users can pioneer it and provide feedback based on the usage. The application can then be developed further.
Recommendation for Further Work
Thank You!
Questions?
FYP Final Presentation
By tgxworld
FYP Final Presentation
- 1,768