- One assistant. - One platform. - For Your Good Health. -
- -- AIDEN is everything you need from your physiotherapist. -
- -diff --git a/.gitignore b/.gitignore index d37eb0f..ebfd0ec 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ *.swp .DS_Store node_modules +templates package-lock.json \ No newline at end of file diff --git a/README.md b/README.md index 9161b65..6e7cd3c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ -# Aiden. Your physio assistant. + -### Aiden is a web app utilising **_tensorflow.js_**, browser-based Machine Learning library, to enable accessible physiotherapy for the Visually Impaired and other people as well - talking through exercises by responding to users' postures in real-time. +# Aiden - Your Physio assistant. +#### Aiden is a web app utilising **_tensorflow.js_**, browser-based Machine Learning library, to enable accessible physiotherapy for the Visually Impaired and other people as well - talking through exercises by responding to users' postures in real-time. Aiden makes it easier for users to not only complete but to improve their techniques independently. @@ -15,8 +16,10 @@ Aiden makes it easier for users to not only complete but to improve their techni ### Machine Learning - tensorflow.js Aiden uses a [tensorflow.js](https://www.tensorflow.org/js) (browser-based) model to make predictions on the state of the current user's pose. It has been trained on a dataset of images created by us (~300 images per pose) to predict whether the position is correct, or incorrect - and what makes it so. + We have used Azure Machine Learning Studio, an Azure Machine Learning tool, to train our models in the various physiotherapy poses. Azure Cognitive Services Speech-to-Text API was also used to enable the application to be accessible by the visually impaired. The user can start their exercises via speech in various languages using Azure Translator Speech API remotely and this is more convenient and easier to use for our target audience. + The application utilizes Azure Cognitive Services for text-to-speech. This is useful for the visually impaired as they can hear if they are in the right position as the application will tell them to adjust their posture if incorrect. ### Index.html diff --git a/about/index.html.tmp b/about/index.html.tmp deleted file mode 100644 index af5645e..0000000 Binary files a/about/index.html.tmp and /dev/null differ diff --git a/app.js b/app.js deleted file mode 100644 index a3d0c95..0000000 --- a/app.js +++ /dev/null @@ -1,133 +0,0 @@ -/* ----------------------------------------------- -/* How to use? : Check the GitHub README -/* ----------------------------------------------- */ - -/* To load a config file (particles.json) you need to host this demo (MAMP/WAMP/local)... */ -/* -particlesJS.load('particles-js', 'particles.json', function() { - console.log('particles.js loaded - callback'); -}); -*/ - -/* Otherwise just put the config content (json): */ - -particlesJS('particles-js', - - { - "particles": { - "number": { - "value": 80, - "density": { - "enable": true, - "value_area": 800 - } - }, - "color": { - "value": "#ffffff" - }, - "shape": { - "type": "circle", - "stroke": { - "width": 0, - "color": "#000000" - }, - "polygon": { - "nb_sides": 5 - }, - "image": { - "src": "img/github.svg", - "width": 100, - "height": 100 - } - }, - "opacity": { - "value": 0.5, - "random": false, - "anim": { - "enable": false, - "speed": 1, - "opacity_min": 0.1, - "sync": false - } - }, - "size": { - "value": 5, - "random": true, - "anim": { - "enable": false, - "speed": 40, - "size_min": 0.1, - "sync": false - } - }, - "line_linked": { - "enable": true, - "distance": 150, - "color": "#ffffff", - "opacity": 0.4, - "width": 1 - }, - "move": { - "enable": true, - "speed": 6, - "direction": "none", - "random": false, - "straight": false, - "out_mode": "out", - "attract": { - "enable": false, - "rotateX": 600, - "rotateY": 1200 - } - } - }, - "interactivity": { - "detect_on": "canvas", - "events": { - "onhover": { - "enable": false, - "mode": "repulse" - }, - "onclick": { - "enable": false, - "mode": "push" - }, - "resize": true - }, - "modes": { - "grab": { - "distance": 400, - "line_linked": { - "opacity": 1 - } - }, - "bubble": { - "distance": 400, - "size": 40, - "duration": 2, - "opacity": 8, - "speed": 3 - }, - "repulse": { - "distance": 200 - }, - "push": { - "particles_nb": 4 - }, - "remove": { - "particles_nb": 2 - } - } - }, - "retina_detect": true, - "config_demo": { - "hide_card": false, - "background_color": "#b61924", - "background_image": "", - "background_position": "50% 50%", - "background_repeat": "no-repeat", - "background_size": "cover" - } - } - -); \ No newline at end of file diff --git a/assets/aiden.png b/assets/aiden.png new file mode 100644 index 0000000..20d9723 Binary files /dev/null and b/assets/aiden.png differ diff --git a/client/about/index.html.tmp b/client/about/index.html.tmp deleted file mode 100644 index af5645e..0000000 Binary files a/client/about/index.html.tmp and /dev/null differ diff --git a/client/app.js b/client/app.js deleted file mode 100644 index a3d0c95..0000000 --- a/client/app.js +++ /dev/null @@ -1,133 +0,0 @@ -/* ----------------------------------------------- -/* How to use? : Check the GitHub README -/* ----------------------------------------------- */ - -/* To load a config file (particles.json) you need to host this demo (MAMP/WAMP/local)... */ -/* -particlesJS.load('particles-js', 'particles.json', function() { - console.log('particles.js loaded - callback'); -}); -*/ - -/* Otherwise just put the config content (json): */ - -particlesJS('particles-js', - - { - "particles": { - "number": { - "value": 80, - "density": { - "enable": true, - "value_area": 800 - } - }, - "color": { - "value": "#ffffff" - }, - "shape": { - "type": "circle", - "stroke": { - "width": 0, - "color": "#000000" - }, - "polygon": { - "nb_sides": 5 - }, - "image": { - "src": "img/github.svg", - "width": 100, - "height": 100 - } - }, - "opacity": { - "value": 0.5, - "random": false, - "anim": { - "enable": false, - "speed": 1, - "opacity_min": 0.1, - "sync": false - } - }, - "size": { - "value": 5, - "random": true, - "anim": { - "enable": false, - "speed": 40, - "size_min": 0.1, - "sync": false - } - }, - "line_linked": { - "enable": true, - "distance": 150, - "color": "#ffffff", - "opacity": 0.4, - "width": 1 - }, - "move": { - "enable": true, - "speed": 6, - "direction": "none", - "random": false, - "straight": false, - "out_mode": "out", - "attract": { - "enable": false, - "rotateX": 600, - "rotateY": 1200 - } - } - }, - "interactivity": { - "detect_on": "canvas", - "events": { - "onhover": { - "enable": false, - "mode": "repulse" - }, - "onclick": { - "enable": false, - "mode": "push" - }, - "resize": true - }, - "modes": { - "grab": { - "distance": 400, - "line_linked": { - "opacity": 1 - } - }, - "bubble": { - "distance": 400, - "size": 40, - "duration": 2, - "opacity": 8, - "speed": 3 - }, - "repulse": { - "distance": 200 - }, - "push": { - "particles_nb": 4 - }, - "remove": { - "particles_nb": 2 - } - } - }, - "retina_detect": true, - "config_demo": { - "hide_card": false, - "background_color": "#b61924", - "background_image": "", - "background_position": "50% 50%", - "background_repeat": "no-repeat", - "background_size": "cover" - } - } - -); \ No newline at end of file diff --git a/client/css/style.css b/client/css/style.css index 3fd2bf2..f618d7a 100644 --- a/client/css/style.css +++ b/client/css/style.css @@ -88,11 +88,21 @@ canvas{ #particles-js{ width: 100%; height: 100%; - background-color: #11231f; + background-color: #3d949b; background-image: url(''); background-size: cover; background-position: 50% 50%; background-repeat: no-repeat; } -/* ---- reset ---- */ body{ margin:0; font:normal 75% Arial, Helvetica, sans-serif; } canvas{ display: block; vertical-align: bottom; } /* ---- particles.js container ---- */ #particles-js{ position:absolute; width: 100%; height: 100%; background-color: #273e3a; background-image: url(""); background-repeat: no-repeat; background-size: cover; background-position: 50% 50%; } /* ---- stats.js ---- */ .count-particles{ background: #000022; position: absolute; top: 48px; left: 0; width: 80px; color: #13E8E9; font-size: .8em; text-align: left; text-indent: 4px; line-height: 14px; padding-bottom: 2px; font-family: Helvetica, Arial, sans-serif; font-weight: bold; } .js-count-particles{ font-size: 1.1em; } #stats, .count-particles{ -webkit-user-select: none; margin-top: 5px; margin-left: 5px; } #stats{ border-radius: 3px 3px 0 0; overflow: hidden; } .count-particles{ border-radius: 0 0 3px 3px; } \ No newline at end of file +/* ---- reset ---- */ +/* body{ margin:0; font:normal 75% Arial, Helvetica, sans-serif; } +canvas{ display: block; vertical-align: bottom; } */ +/* ---- particles.js container ---- */ +/* #particles-js{ position:absolute; width: 100%; height: 100%; background-color: #273e3a; background-image: url(""); background-repeat: no-repeat; background-size: cover; background-position: 50% 50%; } */ +/* ---- stats.js ---- */ +/* .count-particles{ background: #000022; position: absolute; top: 48px; left: 0; width: 80px; color: #13E8E9; font-size: .8em; text-align: left; text-indent: 4px; line-height: 14px; padding-bottom: 2px; font-family: Helvetica, Arial, sans-serif; font-weight: bold; } */ +/* .js-count-particles{ font-size: 1.1em; } +#stats, .count-particles{ -webkit-user-select: none; margin-top: 5px; margin-left: 5px; } +#stats{ border-radius: 3px 3px 0 0; overflow: hidden; } +.count-particles{ border-radius: 0 0 3px 3px; } */ \ No newline at end of file diff --git a/client/img/enterprise/netlify-enterprise-edge-animated.svg.tmp b/client/img/enterprise/netlify-enterprise-edge-animated.svg.tmp deleted file mode 100644 index 876aa94..0000000 Binary files a/client/img/enterprise/netlify-enterprise-edge-animated.svg.tmp and /dev/null differ diff --git a/client/img/enterprise/netlify-enterprise-performance-animated.svg.tmp b/client/img/enterprise/netlify-enterprise-performance-animated.svg.tmp deleted file mode 100644 index ab6cbcd..0000000 Binary files a/client/img/enterprise/netlify-enterprise-performance-animated.svg.tmp and /dev/null differ diff --git a/client/img/enterprise/netlify-enterprise-secure-animated.svg.tmp b/client/img/enterprise/netlify-enterprise-secure-animated.svg.tmp deleted file mode 100644 index e6b355a..0000000 Binary files a/client/img/enterprise/netlify-enterprise-secure-animated.svg.tmp and /dev/null differ diff --git a/app2.js b/client/js/app2.js similarity index 100% rename from app2.js rename to client/js/app2.js diff --git a/client/index.js b/client/js/index.js similarity index 100% rename from client/index.js rename to client/js/index.js diff --git a/client/live_stream.html b/client/live_stream.html index 8af9476..e229a9e 100644 --- a/client/live_stream.html +++ b/client/live_stream.html @@ -197,7 +197,7 @@ web.addMessage("Hello, my name is AIDEN. I'll be your physio assistant."); web.processMessages(); - + - +
@@ -20,7 +20,7 @@ - + diff --git a/css/style.css b/css/style.css deleted file mode 100644 index 3fd2bf2..0000000 --- a/css/style.css +++ /dev/null @@ -1,98 +0,0 @@ -/* ============================================================================= - HTML5 CSS Reset Minified - Eric Meyer - ========================================================================== */ - -html,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,abbr,address,cite,code,del,dfn,em,img,ins,kbd,q,samp,small,strong,sub,sup,var,b,i,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,figcaption,figure,footer,header,hgroup,menu,nav,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent} -body{line-height:1} -article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block} -nav ul{list-style:none} -blockquote,q{quotes:none} -blockquote:before,blockquote:after,q:before,q:after{content:none} -a{margin:0;padding:0;font-size:100%;vertical-align:baseline;background:transparent;text-decoration:none} -mark{background-color:#ff9;color:#000;font-style:italic;font-weight:bold} -del{text-decoration:line-through} -abbr[title],dfn[title]{border-bottom:1px dotted;cursor:help} -table{border-collapse:collapse;border-spacing:0} -hr{display:block;height:1px;border:0;border-top:1px solid #ccc;margin:1em 0;padding:0} -input,select{vertical-align:middle} -li{list-style:none} - - -/* ============================================================================= - My CSS - ========================================================================== */ - -/* ---- base ---- */ - -html,body{ - width:100%; - height:100%; - background:#111; -} - -html{ - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} - -body{ - font:normal 75% Arial, Helvetica, sans-serif; -} - -canvas{ - display:block; - vertical-align:bottom; -} - - -/* ---- stats.js ---- */ - -.count-particles{ - background: #000022; - position: absolute; - top: 48px; - left: 0; - width: 80px; - color: #13E8E9; - font-size: .8em; - text-align: left; - text-indent: 4px; - line-height: 14px; - padding-bottom: 2px; - font-family: Helvetica, Arial, sans-serif; - font-weight: bold; -} - -.js-count-particles{ - font-size: 1.1em; -} - -#stats, -.count-particles{ - -webkit-user-select: none; - margin-top: 5px; - margin-left: 5px; -} - -#stats{ - border-radius: 3px 3px 0 0; - overflow: hidden; -} - -.count-particles{ - border-radius: 0 0 3px 3px; -} - - -/* ---- particles.js container ---- */ - -#particles-js{ - width: 100%; - height: 100%; - background-color: #11231f; - background-image: url(''); - background-size: cover; - background-position: 50% 50%; - background-repeat: no-repeat; -} - -/* ---- reset ---- */ body{ margin:0; font:normal 75% Arial, Helvetica, sans-serif; } canvas{ display: block; vertical-align: bottom; } /* ---- particles.js container ---- */ #particles-js{ position:absolute; width: 100%; height: 100%; background-color: #273e3a; background-image: url(""); background-repeat: no-repeat; background-size: cover; background-position: 50% 50%; } /* ---- stats.js ---- */ .count-particles{ background: #000022; position: absolute; top: 48px; left: 0; width: 80px; color: #13E8E9; font-size: .8em; text-align: left; text-indent: 4px; line-height: 14px; padding-bottom: 2px; font-family: Helvetica, Arial, sans-serif; font-weight: bold; } .js-count-particles{ font-size: 1.1em; } #stats, .count-particles{ -webkit-user-select: none; margin-top: 5px; margin-left: 5px; } #stats{ border-radius: 3px 3px 0 0; overflow: hidden; } .count-particles{ border-radius: 0 0 3px 3px; } \ No newline at end of file diff --git a/img/enterprise/netlify-enterprise-edge-animated.svg.tmp b/img/enterprise/netlify-enterprise-edge-animated.svg.tmp deleted file mode 100644 index 876aa94..0000000 Binary files a/img/enterprise/netlify-enterprise-edge-animated.svg.tmp and /dev/null differ diff --git a/img/enterprise/netlify-enterprise-performance-animated.svg.tmp b/img/enterprise/netlify-enterprise-performance-animated.svg.tmp deleted file mode 100644 index ab6cbcd..0000000 Binary files a/img/enterprise/netlify-enterprise-performance-animated.svg.tmp and /dev/null differ diff --git a/img/enterprise/netlify-enterprise-secure-animated.svg.tmp b/img/enterprise/netlify-enterprise-secure-animated.svg.tmp deleted file mode 100644 index e6b355a..0000000 Binary files a/img/enterprise/netlify-enterprise-secure-animated.svg.tmp and /dev/null differ diff --git a/img/global/favicon/apple-touch-icon.png b/img/global/favicon/apple-touch-icon.png deleted file mode 100644 index 7ff4640..0000000 Binary files a/img/global/favicon/apple-touch-icon.png and /dev/null differ diff --git a/img/global/favicon/browserconfig.xml b/img/global/favicon/browserconfig.xml deleted file mode 100644 index cadc027..0000000 --- a/img/global/favicon/browserconfig.xml +++ /dev/null @@ -1,9 +0,0 @@ - -- AIDEN is everything you need from your physiotherapist. -
- -