♻️ refactor: format code

This commit is contained in:
2022-07-07 11:54:43 +02:00
parent 14e5edd35a
commit bfd15205cf
18 changed files with 14772 additions and 5116 deletions
+130
View File
@@ -0,0 +1,130 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# Based on Node.gitignore ( https://github.com/github/gitignore/blob/master/Node.gitignore )
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Snowpack dependency directory (https://snowpack.dev/)
web_modules/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.local
.env.development.local
.env.test
.env.test.local
.env.production
.env.production.local
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# Next.js build output
.next
out
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
.pnp
# misc
.DS_Store
+4388 -1
View File
File diff suppressed because one or more lines are too long
+3778 -3655
View File
File diff suppressed because it is too large Load Diff
+6 -7
View File
@@ -5,11 +5,10 @@
*/ */
/* Loader */ /* Loader */
body.landing.is-preload:before {
display: none;
}
body.landing.is-preload:before { body.landing.is-preload:after {
display: none; display: none;
} }
body.landing.is-preload:after {
display: none;
}
+8 -8
View File
@@ -1,18 +1,18 @@
var acc = document.getElementsByClassName("accordion"); var acc = document.getElementsByClassName('accordion')
var i; var i
for (i = 0; i < acc.length; i++) { for (i = 0; i < acc.length; i++) {
acc[i].addEventListener("click", function() { acc[i].addEventListener('click', function () {
/* Toggle between adding and removing the "active" class, /* Toggle between adding and removing the "active" class,
to highlight the button that controls the panel */ to highlight the button that controls the panel */
this.classList.toggle("active"); this.classList.toggle('active')
/* Toggle between hiding and showing the active panel */ /* Toggle between hiding and showing the active panel */
var panel = this.nextElementSibling; var panel = this.nextElementSibling
if (panel.style.maxHeight) { if (panel.style.maxHeight) {
panel.style.maxHeight = null; panel.style.maxHeight = null
} else { } else {
panel.style.maxHeight = panel.scrollHeight + "px"; panel.style.maxHeight = panel.scrollHeight + 'px'
} }
}); })
} }
+127 -1
View File
@@ -1,2 +1,128 @@
/* breakpoints.js v1.0 | @ajlkn | MIT licensed */ /* breakpoints.js v1.0 | @ajlkn | MIT licensed */
var breakpoints=function(){"use strict";function e(e){t.init(e)}var t={list:null,media:{},events:[],init:function(e){t.list=e,window.addEventListener("resize",t.poll),window.addEventListener("orientationchange",t.poll),window.addEventListener("load",t.poll),window.addEventListener("fullscreenchange",t.poll)},active:function(e){var n,a,s,i,r,d,c;if(!(e in t.media)){if(">="==e.substr(0,2)?(a="gte",n=e.substr(2)):"<="==e.substr(0,2)?(a="lte",n=e.substr(2)):">"==e.substr(0,1)?(a="gt",n=e.substr(1)):"<"==e.substr(0,1)?(a="lt",n=e.substr(1)):"!"==e.substr(0,1)?(a="not",n=e.substr(1)):(a="eq",n=e),n&&n in t.list)if(i=t.list[n],Array.isArray(i)){if(r=parseInt(i[0]),d=parseInt(i[1]),isNaN(r)){if(isNaN(d))return;c=i[1].substr(String(d).length)}else c=i[0].substr(String(r).length);if(isNaN(r))switch(a){case"gte":s="screen";break;case"lte":s="screen and (max-width: "+d+c+")";break;case"gt":s="screen and (min-width: "+(d+1)+c+")";break;case"lt":s="screen and (max-width: -1px)";break;case"not":s="screen and (min-width: "+(d+1)+c+")";break;default:s="screen and (max-width: "+d+c+")"}else if(isNaN(d))switch(a){case"gte":s="screen and (min-width: "+r+c+")";break;case"lte":s="screen";break;case"gt":s="screen and (max-width: -1px)";break;case"lt":s="screen and (max-width: "+(r-1)+c+")";break;case"not":s="screen and (max-width: "+(r-1)+c+")";break;default:s="screen and (min-width: "+r+c+")"}else switch(a){case"gte":s="screen and (min-width: "+r+c+")";break;case"lte":s="screen and (max-width: "+d+c+")";break;case"gt":s="screen and (min-width: "+(d+1)+c+")";break;case"lt":s="screen and (max-width: "+(r-1)+c+")";break;case"not":s="screen and (max-width: "+(r-1)+c+"), screen and (min-width: "+(d+1)+c+")";break;default:s="screen and (min-width: "+r+c+") and (max-width: "+d+c+")"}}else s="("==i.charAt(0)?"screen and "+i:i;t.media[e]=!!s&&s}return t.media[e]!==!1&&window.matchMedia(t.media[e]).matches},on:function(e,n){t.events.push({query:e,handler:n,state:!1}),t.active(e)&&n()},poll:function(){var e,n;for(e=0;e<t.events.length;e++)n=t.events[e],t.active(n.query)?n.state||(n.state=!0,n.handler()):n.state&&(n.state=!1)}};return e._=t,e.on=function(e,n){t.on(e,n)},e.active=function(e){return t.active(e)},e}();!function(e,t){"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?module.exports=t():e.breakpoints=t()}(this,function(){return breakpoints}); var breakpoints = (function () {
'use strict'
function e(e) {
t.init(e)
}
var t = {
list: null,
media: {},
events: [],
init: function (e) {
;(t.list = e),
window.addEventListener('resize', t.poll),
window.addEventListener('orientationchange', t.poll),
window.addEventListener('load', t.poll),
window.addEventListener('fullscreenchange', t.poll)
},
active: function (e) {
var n, a, s, i, r, d, c
if (!(e in t.media)) {
if (
('>=' == e.substr(0, 2)
? ((a = 'gte'), (n = e.substr(2)))
: '<=' == e.substr(0, 2)
? ((a = 'lte'), (n = e.substr(2)))
: '>' == e.substr(0, 1)
? ((a = 'gt'), (n = e.substr(1)))
: '<' == e.substr(0, 1)
? ((a = 'lt'), (n = e.substr(1)))
: '!' == e.substr(0, 1)
? ((a = 'not'), (n = e.substr(1)))
: ((a = 'eq'), (n = e)),
n && n in t.list)
)
if (((i = t.list[n]), Array.isArray(i))) {
if (((r = parseInt(i[0])), (d = parseInt(i[1])), isNaN(r))) {
if (isNaN(d)) return
c = i[1].substr(String(d).length)
} else c = i[0].substr(String(r).length)
if (isNaN(r))
switch (a) {
case 'gte':
s = 'screen'
break
case 'lte':
s = 'screen and (max-width: ' + d + c + ')'
break
case 'gt':
s = 'screen and (min-width: ' + (d + 1) + c + ')'
break
case 'lt':
s = 'screen and (max-width: -1px)'
break
case 'not':
s = 'screen and (min-width: ' + (d + 1) + c + ')'
break
default:
s = 'screen and (max-width: ' + d + c + ')'
}
else if (isNaN(d))
switch (a) {
case 'gte':
s = 'screen and (min-width: ' + r + c + ')'
break
case 'lte':
s = 'screen'
break
case 'gt':
s = 'screen and (max-width: -1px)'
break
case 'lt':
s = 'screen and (max-width: ' + (r - 1) + c + ')'
break
case 'not':
s = 'screen and (max-width: ' + (r - 1) + c + ')'
break
default:
s = 'screen and (min-width: ' + r + c + ')'
}
else
switch (a) {
case 'gte':
s = 'screen and (min-width: ' + r + c + ')'
break
case 'lte':
s = 'screen and (max-width: ' + d + c + ')'
break
case 'gt':
s = 'screen and (min-width: ' + (d + 1) + c + ')'
break
case 'lt':
s = 'screen and (max-width: ' + (r - 1) + c + ')'
break
case 'not':
s = 'screen and (max-width: ' + (r - 1) + c + '), screen and (min-width: ' + (d + 1) + c + ')'
break
default:
s = 'screen and (min-width: ' + r + c + ') and (max-width: ' + d + c + ')'
}
} else s = '(' == i.charAt(0) ? 'screen and ' + i : i
t.media[e] = !!s && s
}
return t.media[e] !== !1 && window.matchMedia(t.media[e]).matches
},
on: function (e, n) {
t.events.push({ query: e, handler: n, state: !1 }), t.active(e) && n()
},
poll: function () {
var e, n
for (e = 0; e < t.events.length; e++) (n = t.events[e]), t.active(n.query) ? n.state || ((n.state = !0), n.handler()) : n.state && (n.state = !1)
},
}
return (
(e._ = t),
(e.on = function (e, n) {
t.on(e, n)
}),
(e.active = function (e) {
return t.active(e)
}),
e
)
})()
!(function (e, t) {
'function' == typeof define && define.amd ? define([], t) : 'object' == typeof exports ? (module.exports = t()) : (e.breakpoints = t())
})(this, function () {
return breakpoints
})
+102 -1
View File
@@ -1,2 +1,103 @@
/* browser.js v1.0 | @ajlkn | MIT licensed */ /* browser.js v1.0 | @ajlkn | MIT licensed */
var browser=function(){"use strict";var e={name:null,version:null,os:null,osVersion:null,touch:null,mobile:null,_canUse:null,canUse:function(n){e._canUse||(e._canUse=document.createElement("div"));var o=e._canUse.style,r=n.charAt(0).toUpperCase()+n.slice(1);return n in o||"Moz"+r in o||"Webkit"+r in o||"O"+r in o||"ms"+r in o},init:function(){var n,o,r,i,t=navigator.userAgent;for(n="other",o=0,r=[["firefox",/Firefox\/([0-9\.]+)/],["bb",/BlackBerry.+Version\/([0-9\.]+)/],["bb",/BB[0-9]+.+Version\/([0-9\.]+)/],["opera",/OPR\/([0-9\.]+)/],["opera",/Opera\/([0-9\.]+)/],["edge",/Edge\/([0-9\.]+)/],["safari",/Version\/([0-9\.]+).+Safari/],["chrome",/Chrome\/([0-9\.]+)/],["ie",/MSIE ([0-9]+)/],["ie",/Trident\/.+rv:([0-9]+)/]],i=0;i<r.length;i++)if(t.match(r[i][1])){n=r[i][0],o=parseFloat(RegExp.$1);break}for(e.name=n,e.version=o,n="other",o=0,r=[["ios",/([0-9_]+) like Mac OS X/,function(e){return e.replace("_",".").replace("_","")}],["ios",/CPU like Mac OS X/,function(e){return 0}],["wp",/Windows Phone ([0-9\.]+)/,null],["android",/Android ([0-9\.]+)/,null],["mac",/Macintosh.+Mac OS X ([0-9_]+)/,function(e){return e.replace("_",".").replace("_","")}],["windows",/Windows NT ([0-9\.]+)/,null],["bb",/BlackBerry.+Version\/([0-9\.]+)/,null],["bb",/BB[0-9]+.+Version\/([0-9\.]+)/,null],["linux",/Linux/,null],["bsd",/BSD/,null],["unix",/X11/,null]],i=0;i<r.length;i++)if(t.match(r[i][1])){n=r[i][0],o=parseFloat(r[i][2]?r[i][2](RegExp.$1):RegExp.$1);break}e.os=n,e.osVersion=o,e.touch="wp"==e.os?navigator.msMaxTouchPoints>0:!!("ontouchstart"in window),e.mobile="wp"==e.os||"android"==e.os||"ios"==e.os||"bb"==e.os}};return e.init(),e}();!function(e,n){"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?module.exports=n():e.browser=n()}(this,function(){return browser}); var browser = (function () {
'use strict'
var e = {
name: null,
version: null,
os: null,
osVersion: null,
touch: null,
mobile: null,
_canUse: null,
canUse: function (n) {
e._canUse || (e._canUse = document.createElement('div'))
var o = e._canUse.style,
r = n.charAt(0).toUpperCase() + n.slice(1)
return n in o || 'Moz' + r in o || 'Webkit' + r in o || 'O' + r in o || 'ms' + r in o
},
init: function () {
var n,
o,
r,
i,
t = navigator.userAgent
for (
n = 'other',
o = 0,
r = [
['firefox', /Firefox\/([0-9\.]+)/],
['bb', /BlackBerry.+Version\/([0-9\.]+)/],
['bb', /BB[0-9]+.+Version\/([0-9\.]+)/],
['opera', /OPR\/([0-9\.]+)/],
['opera', /Opera\/([0-9\.]+)/],
['edge', /Edge\/([0-9\.]+)/],
['safari', /Version\/([0-9\.]+).+Safari/],
['chrome', /Chrome\/([0-9\.]+)/],
['ie', /MSIE ([0-9]+)/],
['ie', /Trident\/.+rv:([0-9]+)/],
],
i = 0;
i < r.length;
i++
)
if (t.match(r[i][1])) {
;(n = r[i][0]), (o = parseFloat(RegExp.$1))
break
}
for (
e.name = n,
e.version = o,
n = 'other',
o = 0,
r = [
[
'ios',
/([0-9_]+) like Mac OS X/,
function (e) {
return e.replace('_', '.').replace('_', '')
},
],
[
'ios',
/CPU like Mac OS X/,
function (e) {
return 0
},
],
['wp', /Windows Phone ([0-9\.]+)/, null],
['android', /Android ([0-9\.]+)/, null],
[
'mac',
/Macintosh.+Mac OS X ([0-9_]+)/,
function (e) {
return e.replace('_', '.').replace('_', '')
},
],
['windows', /Windows NT ([0-9\.]+)/, null],
['bb', /BlackBerry.+Version\/([0-9\.]+)/, null],
['bb', /BB[0-9]+.+Version\/([0-9\.]+)/, null],
['linux', /Linux/, null],
['bsd', /BSD/, null],
['unix', /X11/, null],
],
i = 0;
i < r.length;
i++
)
if (t.match(r[i][1])) {
;(n = r[i][0]), (o = parseFloat(r[i][2] ? r[i][2](RegExp.$1) : RegExp.$1))
break
}
;(e.os = n),
(e.osVersion = o),
(e.touch = 'wp' == e.os ? navigator.msMaxTouchPoints > 0 : !!('ontouchstart' in window)),
(e.mobile = 'wp' == e.os || 'android' == e.os || 'ios' == e.os || 'bb' == e.os)
},
}
return e.init(), e
})()
!(function (e, n) {
'function' == typeof define && define.amd ? define([], n) : 'object' == typeof exports ? (module.exports = n()) : (e.browser = n())
})(this, function () {
return browser
})
+247 -1
View File
File diff suppressed because one or more lines are too long
+4320 -1
View File
File diff suppressed because one or more lines are too long
+116 -1
View File
@@ -1,2 +1,117 @@
/* jquery.scrollex v0.2.1 | (c) @ajlkn | github.com/ajlkn/jquery.scrollex | MIT licensed */ /* jquery.scrollex v0.2.1 | (c) @ajlkn | github.com/ajlkn/jquery.scrollex | MIT licensed */
!function(t){function e(t,e,n){return"string"==typeof t&&("%"==t.slice(-1)?t=parseInt(t.substring(0,t.length-1))/100*e:"vh"==t.slice(-2)?t=parseInt(t.substring(0,t.length-2))/100*n:"px"==t.slice(-2)&&(t=parseInt(t.substring(0,t.length-2)))),t}var n=t(window),i=1,o={};n.on("scroll",function(){var e=n.scrollTop();t.map(o,function(t){window.clearTimeout(t.timeoutId),t.timeoutId=window.setTimeout(function(){t.handler(e)},t.options.delay)})}).on("load",function(){n.trigger("scroll")}),jQuery.fn.scrollex=function(l){var s=t(this);if(0==this.length)return s;if(this.length>1){for(var r=0;r<this.length;r++)t(this[r]).scrollex(l);return s}if(s.data("_scrollexId"))return s;var a,u,h,c,p;switch(a=i++,u=jQuery.extend({top:0,bottom:0,delay:0,mode:"default",enter:null,leave:null,initialize:null,terminate:null,scroll:null},l),u.mode){case"top":h=function(t,e,n,i,o){return t>=i&&o>=t};break;case"bottom":h=function(t,e,n,i,o){return n>=i&&o>=n};break;case"middle":h=function(t,e,n,i,o){return e>=i&&o>=e};break;case"top-only":h=function(t,e,n,i,o){return i>=t&&n>=i};break;case"bottom-only":h=function(t,e,n,i,o){return n>=o&&o>=t};break;default:case"default":h=function(t,e,n,i,o){return n>=i&&o>=t}}return c=function(t){var i,o,l,s,r,a,u=this.state,h=!1,c=this.$element.offset();i=n.height(),o=t+i/2,l=t+i,s=this.$element.outerHeight(),r=c.top+e(this.options.top,s,i),a=c.top+s-e(this.options.bottom,s,i),h=this.test(t,o,l,r,a),h!=u&&(this.state=h,h?this.options.enter&&this.options.enter.apply(this.element):this.options.leave&&this.options.leave.apply(this.element)),this.options.scroll&&this.options.scroll.apply(this.element,[(o-r)/(a-r)])},p={id:a,options:u,test:h,handler:c,state:null,element:this,$element:s,timeoutId:null},o[a]=p,s.data("_scrollexId",p.id),p.options.initialize&&p.options.initialize.apply(this),s},jQuery.fn.unscrollex=function(){var e=t(this);if(0==this.length)return e;if(this.length>1){for(var n=0;n<this.length;n++)t(this[n]).unscrollex();return e}var i,l;return(i=e.data("_scrollexId"))?(l=o[i],window.clearTimeout(l.timeoutId),delete o[i],e.removeData("_scrollexId"),l.options.terminate&&l.options.terminate.apply(this),e):e}}(jQuery); !(function (t) {
function e(t, e, n) {
return (
'string' == typeof t &&
('%' == t.slice(-1)
? (t = (parseInt(t.substring(0, t.length - 1)) / 100) * e)
: 'vh' == t.slice(-2)
? (t = (parseInt(t.substring(0, t.length - 2)) / 100) * n)
: 'px' == t.slice(-2) && (t = parseInt(t.substring(0, t.length - 2)))),
t
)
}
var n = t(window),
i = 1,
o = {}
n
.on('scroll', function () {
var e = n.scrollTop()
t.map(o, function (t) {
window.clearTimeout(t.timeoutId),
(t.timeoutId = window.setTimeout(function () {
t.handler(e)
}, t.options.delay))
})
})
.on('load', function () {
n.trigger('scroll')
}),
(jQuery.fn.scrollex = function (l) {
var s = t(this)
if (0 == this.length) return s
if (this.length > 1) {
for (var r = 0; r < this.length; r++) t(this[r]).scrollex(l)
return s
}
if (s.data('_scrollexId')) return s
var a, u, h, c, p
switch (
((a = i++),
(u = jQuery.extend({ top: 0, bottom: 0, delay: 0, mode: 'default', enter: null, leave: null, initialize: null, terminate: null, scroll: null }, l)),
u.mode)
) {
case 'top':
h = function (t, e, n, i, o) {
return t >= i && o >= t
}
break
case 'bottom':
h = function (t, e, n, i, o) {
return n >= i && o >= n
}
break
case 'middle':
h = function (t, e, n, i, o) {
return e >= i && o >= e
}
break
case 'top-only':
h = function (t, e, n, i, o) {
return i >= t && n >= i
}
break
case 'bottom-only':
h = function (t, e, n, i, o) {
return n >= o && o >= t
}
break
default:
case 'default':
h = function (t, e, n, i, o) {
return n >= i && o >= t
}
}
return (
(c = function (t) {
var i,
o,
l,
s,
r,
a,
u = this.state,
h = !1,
c = this.$element.offset()
;(i = n.height()),
(o = t + i / 2),
(l = t + i),
(s = this.$element.outerHeight()),
(r = c.top + e(this.options.top, s, i)),
(a = c.top + s - e(this.options.bottom, s, i)),
(h = this.test(t, o, l, r, a)),
h != u &&
((this.state = h),
h ? this.options.enter && this.options.enter.apply(this.element) : this.options.leave && this.options.leave.apply(this.element)),
this.options.scroll && this.options.scroll.apply(this.element, [(o - r) / (a - r)])
}),
(p = { id: a, options: u, test: h, handler: c, state: null, element: this, $element: s, timeoutId: null }),
(o[a] = p),
s.data('_scrollexId', p.id),
p.options.initialize && p.options.initialize.apply(this),
s
)
}),
(jQuery.fn.unscrollex = function () {
var e = t(this)
if (0 == this.length) return e
if (this.length > 1) {
for (var n = 0; n < this.length; n++) t(this[n]).unscrollex()
return e
}
var i, l
return (i = e.data('_scrollexId'))
? ((l = o[i]), window.clearTimeout(l.timeoutId), delete o[i], e.removeData('_scrollexId'), l.options.terminate && l.options.terminate.apply(this), e)
: e
})
})(jQuery)
+42 -1
View File
@@ -1,2 +1,43 @@
/* jquery.scrolly v1.0.0-dev | (c) @ajlkn | MIT licensed */ /* jquery.scrolly v1.0.0-dev | (c) @ajlkn | MIT licensed */
(function(e){function u(s,o){var u,a,f;if((u=e(s))[t]==0)return n;a=u[i]()[r];switch(o.anchor){case"middle":f=a-(e(window).height()-u.outerHeight())/2;break;default:case r:f=Math.max(a,0)}return typeof o[i]=="function"?f-=o[i]():f-=o[i],f}var t="length",n=null,r="top",i="offset",s="click.scrolly",o=e(window);e.fn.scrolly=function(i){var o,a,f,l,c=e(this);if(this[t]==0)return c;if(this[t]>1){for(o=0;o<this[t];o++)e(this[o]).scrolly(i);return c}l=n,f=c.attr("href");if(f.charAt(0)!="#"||f[t]<2)return c;a=jQuery.extend({anchor:r,easing:"swing",offset:0,parent:e("body,html"),pollOnce:!1,speed:1e3},i),a.pollOnce&&(l=u(f,a)),c.off(s).on(s,function(e){var t=l!==n?l:u(f,a);t!==n&&(e.preventDefault(),a.parent.stop().animate({scrollTop:t},a.speed,a.easing))})}})(jQuery); ;(function (e) {
function u(s, o) {
var u, a, f
if ((u = e(s))[t] == 0) return n
a = u[i]()[r]
switch (o.anchor) {
case 'middle':
f = a - (e(window).height() - u.outerHeight()) / 2
break
default:
case r:
f = Math.max(a, 0)
}
return typeof o[i] == 'function' ? (f -= o[i]()) : (f -= o[i]), f
}
var t = 'length',
n = null,
r = 'top',
i = 'offset',
s = 'click.scrolly',
o = e(window)
e.fn.scrolly = function (i) {
var o,
a,
f,
l,
c = e(this)
if (this[t] == 0) return c
if (this[t] > 1) {
for (o = 0; o < this[t]; o++) e(this[o]).scrolly(i)
return c
}
;(l = n), (f = c.attr('href'))
if (f.charAt(0) != '#' || f[t] < 2) return c
;(a = jQuery.extend({ anchor: r, easing: 'swing', offset: 0, parent: e('body,html'), pollOnce: !1, speed: 1e3 }, i)),
a.pollOnce && (l = u(f, a)),
c.off(s).on(s, function (e) {
var t = l !== n ? l : u(f, a)
t !== n && (e.preventDefault(), a.parent.stop().animate({ scrollTop: t }, a.speed, a.easing))
})
}
})(jQuery)
+197 -244
View File
@@ -4,247 +4,200 @@
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
*/ */
(function($) { ;(function ($) {
var $window = $(window),
var $window = $(window), $body = $('body')
$body = $('body');
// Breakpoints.
// Breakpoints. breakpoints({
breakpoints({ xlarge: ['1281px', '1680px'],
xlarge: [ '1281px', '1680px' ], large: ['981px', '1280px'],
large: [ '981px', '1280px' ], medium: ['737px', '980px'],
medium: [ '737px', '980px' ], small: ['481px', '736px'],
small: [ '481px', '736px' ], xsmall: [null, '480px'],
xsmall: [ null, '480px' ] })
});
// Play initial animations on page load.
// Play initial animations on page load. $window.on('load', function () {
$window.on('load', function() { window.setTimeout(function () {
window.setTimeout(function() { $body.removeClass('is-preload')
$body.removeClass('is-preload'); }, 100)
}, 100); })
});
// Touch mode.
// Touch mode. if (browser.mobile) $body.addClass('is-touch')
if (browser.mobile)
$body.addClass('is-touch'); // Scrolly links.
$('.scrolly').scrolly({
// Scrolly links. speed: 2000,
$('.scrolly').scrolly({ })
speed: 2000
}); // Dropdowns.
$('#nav > ul').dropotron({
// Dropdowns. alignment: 'right',
$('#nav > ul').dropotron({ hideDelay: 350,
alignment: 'right', })
hideDelay: 350
}); // Nav.
// Nav. // Title Bar.
$('<div id="titleBar">' + '<a href="#navPanel" class="toggle"></a>' + '<span class="title">' + $('#logo').html() + '</span>' + '</div>').appendTo($body)
// Title Bar.
$( // Panel.
'<div id="titleBar">' + $('<div id="navPanel">' + '<nav>' + $('#nav').navList() + '</nav>' + '</div>')
'<a href="#navPanel" class="toggle"></a>' + .appendTo($body)
'<span class="title">' + $('#logo').html() + '</span>' + .panel({
'</div>' delay: 500,
) hideOnClick: true,
.appendTo($body); hideOnSwipe: true,
resetScroll: true,
// Panel. resetForms: true,
$( side: 'left',
'<div id="navPanel">' + target: $body,
'<nav>' + visibleClass: 'navPanel-visible',
$('#nav').navList() + })
'</nav>' +
'</div>' // Parallax.
) // Disabled on IE (choppy scrolling) and mobile platforms (poor performance).
.appendTo($body) if (browser.name == 'ie' || browser.mobile) {
.panel({ $.fn._parallax = function () {
delay: 500, return $(this)
hideOnClick: true, }
hideOnSwipe: true, } else {
resetScroll: true, $.fn._parallax = function () {
resetForms: true, $(this).each(function () {
side: 'left', var $this = $(this),
target: $body, on,
visibleClass: 'navPanel-visible' off
});
on = function () {
// Parallax. $this.css('background-position', 'center 0px')
// Disabled on IE (choppy scrolling) and mobile platforms (poor performance).
if (browser.name == 'ie' $window.on('scroll._parallax', function () {
|| browser.mobile) { var pos = parseInt($window.scrollTop()) - parseInt($this.position().top)
$.fn._parallax = function() { $this.css('background-position', 'center ' + pos * -0.15 + 'px')
})
return $(this); }
}; off = function () {
$this.css('background-position', '')
}
else { $window.off('scroll._parallax')
}
$.fn._parallax = function() {
breakpoints.on('<=medium', off)
$(this).each(function() { breakpoints.on('>medium', on)
})
var $this = $(this),
on, off; return $(this)
}
on = function() {
$window.on('load resize', function () {
$this $window.trigger('scroll')
.css('background-position', 'center 0px'); })
}
$window
.on('scroll._parallax', function() { // Spotlights.
var $spotlights = $('.spotlight')
var pos = parseInt($window.scrollTop()) - parseInt($this.position().top);
$spotlights._parallax().each(function () {
$this.css('background-position', 'center ' + (pos * -0.15) + 'px'); var $this = $(this),
on,
}); off
}; on = function () {
var top, bottom, mode
off = function() {
// Use main <img>'s src as this spotlight's background.
$this $this.css('background-image', 'url("' + $this.find('.image.main > img').attr('src') + '")')
.css('background-position', '');
// Side-specific scrollex tweaks.
$window if ($this.hasClass('top')) {
.off('scroll._parallax'); mode = 'top'
top = '-20%'
}; bottom = 0
} else if ($this.hasClass('bottom')) {
breakpoints.on('<=medium', off); mode = 'bottom-only'
breakpoints.on('>medium', on); top = 0
bottom = '20%'
}); } else {
mode = 'middle'
return $(this); top = 0
bottom = 0
}; }
$window // Add scrollex.
.on('load resize', function() { $this.scrollex({
$window.trigger('scroll'); mode: mode,
}); top: top,
bottom: bottom,
} initialize: function (t) {
$this.addClass('inactive')
// Spotlights. },
var $spotlights = $('.spotlight'); terminate: function (t) {
$this.removeClass('inactive')
$spotlights },
._parallax() enter: function (t) {
.each(function() { $this.removeClass('inactive')
},
var $this = $(this),
on, off; // Uncomment the line below to "rewind" when this spotlight scrolls out of view.
on = function() { //leave: function(t) { $this.addClass('inactive'); },
})
var top, bottom, mode; }
// Use main <img>'s src as this spotlight's background. off = function () {
$this.css('background-image', 'url("' + $this.find('.image.main > img').attr('src') + '")'); // Clear spotlight's background.
$this.css('background-image', '')
// Side-specific scrollex tweaks.
if ($this.hasClass('top')) { // Remove scrollex.
$this.unscrollex()
mode = 'top'; }
top = '-20%';
bottom = 0; breakpoints.on('<=medium', off)
breakpoints.on('>medium', on)
} })
else if ($this.hasClass('bottom')) {
// Wrappers.
mode = 'bottom-only'; var $wrappers = $('.wrapper')
top = 0;
bottom = '20%'; $wrappers.each(function () {
var $this = $(this),
} on,
else { off
mode = 'middle'; on = function () {
top = 0; $this.scrollex({
bottom = 0; top: 250,
bottom: 0,
} initialize: function (t) {
$this.addClass('inactive')
// Add scrollex. },
$this.scrollex({ terminate: function (t) {
mode: mode, $this.removeClass('inactive')
top: top, },
bottom: bottom, enter: function (t) {
initialize: function(t) { $this.addClass('inactive'); }, $this.removeClass('inactive')
terminate: function(t) { $this.removeClass('inactive'); }, },
enter: function(t) { $this.removeClass('inactive'); },
// Uncomment the line below to "rewind" when this wrapper scrolls out of view.
// Uncomment the line below to "rewind" when this spotlight scrolls out of view.
//leave: function(t) { $this.addClass('inactive'); },
//leave: function(t) { $this.addClass('inactive'); }, })
}
});
off = function () {
}; $this.unscrollex()
}
off = function() {
breakpoints.on('<=medium', off)
// Clear spotlight's background. breakpoints.on('>medium', on)
$this.css('background-image', ''); })
// Remove scrollex. // Banner.
$this.unscrollex(); var $banner = $('#banner')
}; $banner._parallax()
})(jQuery)
breakpoints.on('<=medium', off);
breakpoints.on('>medium', on);
});
// Wrappers.
var $wrappers = $('.wrapper');
$wrappers
.each(function() {
var $this = $(this),
on, off;
on = function() {
$this.scrollex({
top: 250,
bottom: 0,
initialize: function(t) { $this.addClass('inactive'); },
terminate: function(t) { $this.removeClass('inactive'); },
enter: function(t) { $this.removeClass('inactive'); },
// Uncomment the line below to "rewind" when this wrapper scrolls out of view.
//leave: function(t) { $this.addClass('inactive'); },
});
};
off = function() {
$this.unscrollex();
};
breakpoints.on('<=medium', off);
breakpoints.on('>medium', on);
});
// Banner.
var $banner = $('#banner');
$banner
._parallax();
})(jQuery);
+440 -565
View File
File diff suppressed because it is too large Load Diff
+30 -21
View File
@@ -12,25 +12,32 @@
<div id="page-wrapper"> <div id="page-wrapper">
<!-- Header --> <!-- Header -->
<header id="header"> <header id="header">
<h1 id="logo"><a href="index.html">Michele Tartari</a></h1> <h1 id="logo"><a href="index.html">Michele Tartari</a></h1>
<nav id="nav"> <nav id="nav">
<ul> <ul>
<li><a href="index.html">Home</a></li> <li>
<li> <a href="index.html">Home</a></li>
<a href="projects.html">Projects</a> <li>
<ul> <a href="projects.html">Projects</a>
<li><a href="projects.html#robotics">Robotics</a></li> <ul>
<li><a href="projects.html#engineering">Engineering</a></li> <li>
<li><a href="projects.html#hobbies">Hobbies</a></li> <a href="projects.html#robotics">Robotics</a></li>
<!-- <li><a href="projects.html#other">Others</a></li> --> <li>
</ul> <a href="projects.html#engineering">Engineering</a></li>
</li> <li>
<li><a href="curriculum.html">Curriculim</a></li> <a href="projects.html#hobbies">Hobbies</a></li>
<li><a href="contacts.html" class="button primary">Contact me</a></li> <!-- <li>
</ul> <a href="projects.html#other">Others</a></li> -->
</nav> </ul>
</header> </li>
<li>
<a href="curriculum.html">Curriculim</a></li>
<li>
<a href="contacts.html" class="button primary">Contact me</a></li>
</ul>
</nav>
</header>
<!-- Main --> <!-- Main -->
<div id="main" class="wrapper style1"> <div id="main" class="wrapper style1">
@@ -42,7 +49,8 @@
<section> <section>
<h3>Feel free to contact me using any of the following:</h3> <h3>Feel free to contact me using any of the following:</h3>
<ul style="list-style: none;"> <ul style="list-style: none;">
<li><a target="_blank" rel="noopener noreferrer" style="color: #ccc;" class="icon solid alt fa-envelope" href="mailto:michele.tartari@live.com"> <li>
<a target="_blank" rel="noopener noreferrer" style="color: #ccc;" class="icon solid alt fa-envelope" href="mailto:michele.tartari@live.com">
<span class="label">Email</span> <span class="label">Email</span>
&nbsp;&nbsp;michele.tartari@live.com &nbsp;&nbsp;michele.tartari@live.com
</a> </a>
@@ -53,7 +61,8 @@
&nbsp;&nbsp; m-tartari &nbsp;&nbsp; m-tartari
</a> </a>
</li> </li>
<li><a target="_blank" rel="noopener noreferrer" style="color: #ccc;" class="icon brands alt fa-github" href="https://github.com/m-tartari"> <li>
<a target="_blank" rel="noopener noreferrer" style="color: #ccc;" class="icon brands alt fa-github" href="https://github.com/m-tartari">
<span class="label">GitHub</span> <span class="label">GitHub</span>
&nbsp;&nbsp; m-tartari &nbsp;&nbsp; m-tartari
</a> </a>
+249 -165
View File
@@ -1,160 +1,228 @@
<!DOCTYPE HTML> <!DOCTYPE html>
<!-- <!--
Based on Landed by HTML5 UP @ajlkn Based on Landed by HTML5 UP @ajlkn
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
--> -->
<html> <html>
<head> <head>
<title>Michele Tartari</title> <title>Michele Tartari</title>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" /> <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<link rel="stylesheet" href="assets/css/main.css" /> <link rel="stylesheet" href="assets/css/main.css" />
<link rel="icon" type="image/png" href="images/robot.png"> <link rel="icon" type="image/png" href="images/robot.png" />
<noscript><link rel="stylesheet" href="assets/css/noscript.css" /></noscript> <noscript><link rel="stylesheet" href="assets/css/noscript.css" /></noscript>
</head> </head>
<body class="is-preload landing"> <body class="is-preload landing">
<div id="page-wrapper"> <div id="page-wrapper">
<!-- Header -->
<header id="header">
<h1 id="logo"><a href="index.html">Michele Tartari</a></h1>
<nav id="nav">
<ul>
<li><a href="index.html">Home</a></li>
<li>
<a href="projects.html">Projects</a>
<ul>
<li><a href="projects.html#robotics">Robotics</a></li>
<li><a href="projects.html#engineering">Engineering</a></li>
<li><a href="projects.html#hobbies">Hobbies</a></li>
<!-- <li><a href="projects.html#other">Others</a></li> -->
</ul>
</li>
<li><a href="curriculum.html">Curriculim</a></li>
<li><a href="contacts.html" class="button primary">Contact me</a></li>
</ul>
</nav>
</header>
<!-- Header --> <!-- Banner -->
<header id="header"> <section id="banner">
<h1 id="logo"><a href="index.html">Michele Tartari</a></h1> <!-- Background photo by by Denys Nevozhai on Unsplash -->
<nav id="nav"> <div class="content">
<ul> <header>
<li><a href="index.html">Home</a></li> <!-- <h2>Michele Tartari</h2>
<li>
<a href="projects.html">Projects</a>
<ul>
<li><a href="projects.html#robotics">Robotics</a></li>
<li><a href="projects.html#engineering">Engineering</a></li>
<li><a href="projects.html#hobbies">Hobbies</a></li>
<!-- <li><a href="projects.html#other">Others</a></li> -->
</ul>
</li>
<li><a href="curriculum.html">Curriculim</a></li>
<li><a href="contacts.html" class="button primary">Contact me</a></li>
</ul>
</nav>
</header>
<!-- Banner -->
<section id="banner">
<!-- Background photo by by Denys Nevozhai on Unsplash -->
<div class="content">
<header>
<!-- <h2>Michele Tartari</h2>
<h3>Robotics Engineer</h3>--> <h3>Robotics Engineer</h3>-->
<h2>Robotics Engineer</h2> <h2>Robotics Engineer</h2>
<p>See some of my works below. Send a message to get in touch.</p> <p>See some of my works below. Send a message to get in touch.</p>
<ul class="icons"> <ul class="icons">
<li><a target="_blank" rel="noopener noreferrer" href="https://www.linkedin.com/in/m-tartari/" class="icon brands alt fa-linkedin-in"><span class="label">LinkedIn</span></a></li> <li>
<li><a target="_blank" rel="noopener noreferrer" href="https://github.com/m-tartari" class="icon brands alt fa-github"><span class="label">GitHub</span></a></li> <a target="_blank" rel="noopener noreferrer" href="https://www.linkedin.com/in/m-tartari/" class="icon brands alt fa-linkedin-in"
<li><a target="_blank" rel="noopener noreferrer" href="mailto:michele.tartari@live.com" class="icon solid alt fa-envelope"><span class="label">Email</span></a></li> ><span class="label">LinkedIn</span></a
</ul> >
</header> </li>
<span class="image"><img src="images/me.jpg" alt="" /></span> <li>
</div> <a target="_blank" rel="noopener noreferrer" href="https://github.com/m-tartari" class="icon brands alt fa-github"
<a href="#one" class="goto-next scrolly">Next</a> ><span class="label">GitHub</span></a
</section> >
</li>
<li>
<a target="_blank" rel="noopener noreferrer" href="mailto:michele.tartari@live.com" class="icon solid alt fa-envelope"
><span class="label">Email</span></a
>
</li>
</ul>
</header>
<span class="image"><img src="images/me.jpg" alt="" /></span>
</div>
<a href="#one" class="goto-next scrolly">Next</a>
</section>
<!-- One --> <!-- One -->
<section id="one" class="spotlight style1 bottom"> <section id="one" class="spotlight style1 bottom">
<span class="image fit main"><img src="images/thesis.jpg" alt="" /></span> <span class="image fit main"><img src="images/thesis.jpg" alt="" /></span>
<div class="content"> <div class="content">
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-4 col-12-medium"> <div class="col-4 col-12-medium">
<header> <header>
<h2>Voice Controlled Mobile Robot for Indoor Applications</h2> <h2>Voice Controlled Mobile Robot for Indoor Applications</h2>
<p> <p>
<i class="icon"><a target="_blank" rel="noopener noreferrer" href="https://drive.google.com/drive/folders/1Y7TJJN8z1llCkSTnpVHMELD3PqsX8VF9?usp=sharing" class="icon alt far fa-file-pdf"><span class="label">Slideshow</span></a></i> <i class="icon"
<i class="fa-stack"> ><a
<i class="fa icon brands alt fa-github fa-stack-1x"></i> target="_blank"
<i class="fa alt fa-slash fa-stack-1x "></i> rel="noopener noreferrer"
</i> href="https://drive.google.com/drive/folders/1Y7TJJN8z1llCkSTnpVHMELD3PqsX8VF9?usp=sharing"
Master Thesis</p> class="icon alt far fa-file-pdf"
</header> ><span class="label">Slideshow</span></a
</div> ></i
<div class="col-8 col-12-medium"> >
<p>This thesis proposes a design for a small mobile robot controlled by voice. Firstly a preliminary analysis of the state of art of human-robot interaction has been conducted. <i class="fa-stack">
Then, an analysis of the equipment selected took place, and, later, appropriate methodologies for voice recognition and user detection have been evaluated for this specific case. <i class="fa icon brands alt fa-github fa-stack-1x"></i>
Finally, an overview of the complete software architecture of the system was given with three possible structures and their comparison. <i class="fa alt fa-slash fa-stack-1x"></i>
The results obtained show both the feasibility of using low power boards and some of their limitations. </i>
<em>(research publication available <a target="_blank" rel="noopener noreferrer" href="https://doi.org/10.1007/978-3-030-58380-4_7"><em>here</em></a>).</em> Master Thesis
</p> </p>
</div> </header>
</div> </div>
</div> <div class="col-8 col-12-medium">
</div> <p>
<a href="#two" class="goto-next scrolly">Next</a> This thesis proposes a design for a small mobile robot controlled by voice. Firstly a preliminary analysis of the state of art of human-robot
</section> interaction has been conducted. Then, an analysis of the equipment selected took place, and, later, appropriate methodologies for voice
recognition and user detection have been evaluated for this specific case. Finally, an overview of the complete software architecture of the
system was given with three possible structures and their comparison. The results obtained show both the feasibility of using low power boards
and some of their limitations.
<em
>(research publication available
<a target="_blank" rel="noopener noreferrer" href="https://doi.org/10.1007/978-3-030-58380-4_7"><em>here</em></a
>).</em
>
</p>
</div>
</div>
</div>
</div>
<a href="#two" class="goto-next scrolly">Next</a>
</section>
<!-- Two --> <!-- Two -->
<section id="two" class="spotlight style2 right"> <section id="two" class="spotlight style2 right">
<span class="image fit main"><img src="images/recharge_car.png" alt="" /></span> <span class="image fit main"><img src="images/recharge_car.png" alt="" /></span>
<div class="content"> <div class="content">
<header> <header>
<h2>Recharging Electric Cars with a Mobile Robot</h2> <h2>Recharging Electric Cars with a Mobile Robot</h2>
<p> <p>
<i class="icon"><a target="_blank" rel="noopener noreferrer" href="https://drive.google.com/file/d/1wBfvAzy9N8uChNxNj9Kd_hcvI0Qq3uQj/view?usp=sharing" class="icon alt far fa-file-pdf"><span class="label">Slideshow</span></a></i> <i class="icon"
<i class="fa-stack"> ><a
<i class="fa icon brands alt fa-github fa-stack-1x"></i> target="_blank"
<i class="fa alt fa-slash fa-stack-1x "></i> rel="noopener noreferrer"
</i> href="https://drive.google.com/file/d/1wBfvAzy9N8uChNxNj9Kd_hcvI0Qq3uQj/view?usp=sharing"
</p> class="icon alt far fa-file-pdf"
</header> ><span class="label">Slideshow</span></a
<p> ></i
The aim of this project was to prove the possibility to design an autonomous mobile robot whose task was to recharge electric cars in a parking lot. This was done by the means of a simulation, using the Gazebo simulator and a ROS based software architecture to control both the cars and the mobile robot. >
We also simulated a world with a gas station and a small parking lot, consisting of four parking spots, to give an idea of the possible environment in which the robot could be used. <i class="fa-stack">
</p> <i class="fa icon brands alt fa-github fa-stack-1x"></i>
<!-- <ul class="actions"> <i class="fa alt fa-slash fa-stack-1x"></i>
</i>
</p>
</header>
<p>
The aim of this project was to prove the possibility to design an autonomous mobile robot whose task was to recharge electric cars in a parking lot.
This was done by the means of a simulation, using the Gazebo simulator and a ROS based software architecture to control both the cars and the mobile
robot. We also simulated a world with a gas station and a small parking lot, consisting of four parking spots, to give an idea of the possible
environment in which the robot could be used.
</p>
<!-- <ul class="actions">
<li><a href="#" class="button">Learn More</a></li> <li><a href="#" class="button">Learn More</a></li>
</ul> --> </ul> -->
</div> </div>
<a href="#three" class="goto-next scrolly">Next</a> <a href="#three" class="goto-next scrolly">Next</a>
</section> </section>
<!-- Three --> <!-- Three -->
<section id="three" class="spotlight style3 left"> <section id="three" class="spotlight style3 left">
<span class="image fit main bottom"><img src="images/self_loc.jpg" alt="" /></span> <span class="image fit main bottom"><img src="images/self_loc.jpg" alt="" /></span>
<div class="content"> <div class="content">
<header> <header>
<h2>Mobile Robot Self-Localization</h2> <h2>Mobile Robot Self-Localization</h2>
<p> <p>
<i class="icon"><a target="_blank" rel="noopener noreferrer" href="https://drive.google.com/file/d/1BgPj-fgtYDDEsFHmDk2fGVm7DCPFWEeN/view?usp=sharing" class="icon alt far fa-file-pdf"><span class="label">Slideshow</span></a></i> <i class="icon"
&nbsp;&nbsp; ><a
<i class="icon"><a target="_blank" rel="noopener noreferrer" href="https://github.com/m-tartari/ekf_matlab" class="icon brands alt fa-github"><span class="label">GitHub</span></a></i> target="_blank"
</p> rel="noopener noreferrer"
</header> href="https://drive.google.com/file/d/1BgPj-fgtYDDEsFHmDk2fGVm7DCPFWEeN/view?usp=sharing"
<p> class="icon alt far fa-file-pdf"
For this project we worked with the data retrieved from a differential drive robot for its localization in a certain area by the means of the Extended Kalman filter (EKF). ><span class="label">Slideshow</span></a
A first step included the development of a Kalman Filter for the self-localization. This has been then improved by implenting an Extended Kalman Filter that allowed to reduce. ></i
Finally a comparison in performance of the two has been done. >
</p> &nbsp;&nbsp;
</div> <i class="icon"
<a href="#four" class="goto-next scrolly">Next</a> ><a target="_blank" rel="noopener noreferrer" href="https://github.com/m-tartari/ekf_matlab" class="icon brands alt fa-github"
</section> ><span class="label">GitHub</span></a
></i
>
</p>
</header>
<p>
For this project we worked with the data retrieved from a differential drive robot for its localization in a certain area by the means of the
Extended Kalman filter (EKF). A first step included the development of a Kalman Filter for the self-localization. This has been then improved by
implenting an Extended Kalman Filter that allowed to reduce. Finally a comparison in performance of the two has been done.
</p>
</div>
<a href="#four" class="goto-next scrolly">Next</a>
</section>
<!-- Four --> <!-- Four -->
<section id="four" class="spotlight style2 right"> <section id="four" class="spotlight style2 right">
<span class="image fit main"><img src="images/PVTOL.jpg" alt="" /></span> <span class="image fit main"><img src="images/PVTOL.jpg" alt="" /></span>
<div class="content"> <div class="content">
<header> <header>
<h2>Control of a Nonlinear System (PVTOL aircraft)</h2> <h2>Control of a Nonlinear System (PVTOL aircraft)</h2>
<p> <p>
<i class="icon"><a target="_blank" rel="noopener noreferrer" href="https://drive.google.com/file/d/1TE3TWkXZjVq8OuBkLl497c_MQSs3MiLQ/view?usp=sharing" class="icon alt far fa-file-pdf"><span class="label">Slideshow</span></a></i> <i class="icon"
&nbsp;&nbsp; ><a
<i class="icon"><a target="_blank" rel="noopener noreferrer" href="https://github.com/m-tartari/modelling_and_control_of_manipulators" class="icon brands alt fa-github"><span class="label">GitHub</span></a></i> target="_blank"
</p> rel="noopener noreferrer"
</header> href="https://drive.google.com/file/d/1TE3TWkXZjVq8OuBkLl497c_MQSs3MiLQ/view?usp=sharing"
<p>The aim of this project was to implement a control law for a nonlinear system (based on the model of a PVTOL aircraft), using the proper approach depending on the range of settings given in the four subsequent tasks. This shows the various theories and which is to be preferred over to the others, according to the situation to deal with.</p> class="icon alt far fa-file-pdf"
<!-- <ul class="actions"> ><span class="label">Slideshow</span></a
></i
>
&nbsp;&nbsp;
<i class="icon"
><a
target="_blank"
rel="noopener noreferrer"
href="https://github.com/m-tartari/modelling_and_control_of_manipulators"
class="icon brands alt fa-github"
><span class="label">GitHub</span></a
></i
>
</p>
</header>
<p>
The aim of this project was to implement a control law for a nonlinear system (based on the model of a PVTOL aircraft), using the proper approach
depending on the range of settings given in the four subsequent tasks. This shows the various theories and which is to be preferred over to the
others, according to the situation to deal with.
</p>
<!-- <ul class="actions">
<li><a href="#" class="button">Learn More</a></li> <li><a href="#" class="button">Learn More</a></li>
</ul> --> </ul> -->
</div> </div>
</section> </section>
<!-- <!--
<section id="four" class="wrapper style1 special fade-up"> <section id="four" class="wrapper style1 special fade-up">
<div class="container"> <div class="container">
<header class="major"> <header class="major">
@@ -203,7 +271,7 @@
</div> </div>
</section> --> </section> -->
<!-- Five - -> <!-- Five - ->
<section id="five" class="wrapper style2 special fade"> <section id="five" class="wrapper style2 special fade">
<div class="container"> <div class="container">
<header> <header>
@@ -219,29 +287,45 @@
</div> </div>
</section> --> </section> -->
<!-- Footer --> <!-- Footer -->
<footer id="footer"> <footer id="footer">
<ul class="icons"> <ul class="icons">
<li><a target="_blank" rel="noopener noreferrer" href="https://www.linkedin.com/in/m-tartari/" class="icon brands alt fa-linkedin-in"><span class="label">LinkedIn</span></a></li> <li>
<li><a target="_blank" rel="noopener noreferrer" href="https://github.com/m-tartari" class="icon brands alt fa-github"><span class="label">GitHub</span></a></li> <a target="_blank" rel="noopener noreferrer" href="https://www.linkedin.com/in/m-tartari/" class="icon brands alt fa-linkedin-in"
<li><a target="_blank" rel="noopener noreferrer" href="mailto:michele.tartari@live.com" class="icon solid alt fa-envelope"><span class="label">Email</span></a></li> ><span class="label">LinkedIn</span></a
</ul> >
<ul class="copyright"> </li>
<li>&copy; 2020-<script>document.write( new Date().getFullYear() );</script> Michele Tartari. All rights reserved.</li> <li>
</ul> <a target="_blank" rel="noopener noreferrer" href="https://github.com/m-tartari" class="icon brands alt fa-github"
</footer> ><span class="label">GitHub</span></a
>
</li>
<li>
<a target="_blank" rel="noopener noreferrer" href="mailto:michele.tartari@live.com" class="icon solid alt fa-envelope"
><span class="label">Email</span></a
>
</li>
</ul>
<ul class="copyright">
<li>
&copy; 2020-
<script>
document.write(new Date().getFullYear());
</script>
Michele Tartari. All rights reserved.
</li>
</ul>
</footer>
</div>
</div> <!-- Scripts -->
<script src="assets/js/jquery.min.js"></script>
<!-- Scripts --> <script src="assets/js/jquery.scrolly.min.js"></script>
<script src="assets/js/jquery.min.js"></script> <script src="assets/js/jquery.dropotron.min.js"></script>
<script src="assets/js/jquery.scrolly.min.js"></script> <script src="assets/js/jquery.scrollex.min.js"></script>
<script src="assets/js/jquery.dropotron.min.js"></script> <script src="assets/js/browser.min.js"></script>
<script src="assets/js/jquery.scrollex.min.js"></script> <script src="assets/js/breakpoints.min.js"></script>
<script src="assets/js/browser.min.js"></script> <script src="assets/js/util.js"></script>
<script src="assets/js/breakpoints.min.js"></script> <script src="assets/js/main.js"></script>
<script src="assets/js/util.js"></script> </body>
<script src="assets/js/main.js"></script>
</body>
</html> </html>
+415 -267
View File
@@ -1,293 +1,441 @@
<!DOCTYPE HTML> <!DOCTYPE html>
<html> <html>
<head> <head>
<title>Michele Tartari - Projects</title> <title>Michele Tartari - Projects</title>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" /> <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<link rel="stylesheet" href="assets/css/main.css" /> <link rel="stylesheet" href="assets/css/main.css" />
<link rel="icon" type="image/png" href="images/robot.png"> <link rel="icon" type="image/png" href="images/robot.png" />
<noscript><link rel="stylesheet" href="assets/css/noscript.css" /></noscript> <noscript><link rel="stylesheet" href="assets/css/noscript.css" /></noscript>
</head> </head>
<body class="is-preload"> <body class="is-preload">
<div id="page-wrapper"> <div id="page-wrapper">
<!-- Header -->
<header id="header">
<h1 id="logo"><a href="index.html">Michele Tartari</a></h1>
<nav id="nav">
<ul>
<li><a href="index.html">Home</a></li>
<li>
<a href="projects.html">Projects</a>
<ul>
<li><a href="projects.html#robotics">Robotics</a></li>
<li><a href="projects.html#engineering">Engineering</a></li>
<li><a href="projects.html#hobbies">Hobbies</a></li>
<!-- <li><a href="projects.html#other">Others</a></li> -->
</ul>
</li>
<li><a href="curriculum.html">Curriculim</a></li>
<li><a href="contacts.html" class="button primary">Contact me</a></li>
</ul>
</nav>
</header>
<!-- Header --> <!-- Main -->
<header id="header"> <div id="main" class="wrapper style1">
<h1 id="logo"><a href="index.html">Michele Tartari</a></h1> <div class="container">
<nav id="nav"> <header class="major">
<ul> <h2>Projects</h2>
<li><a href="index.html">Home</a></li> <!--
<li>
<a href="projects.html">Projects</a>
<ul>
<li><a href="projects.html#robotics">Robotics</a></li>
<li><a href="projects.html#engineering">Engineering</a></li>
<li><a href="projects.html#hobbies">Hobbies</a></li>
<!-- <li><a href="projects.html#other">Others</a></li> -->
</ul>
</li>
<li><a href="curriculum.html">Curriculim</a></li>
<li><a href="contacts.html" class="button primary">Contact me</a></li>
</ul>
</nav>
</header>
<!-- Main -->
<div id="main" class="wrapper style1">
<div class="container">
<header class="major">
<h2>Projects</h2> <!--
<p>Ipsum dolor feugiat aliquam tempus sed magna lorem consequat accumsan</p> --> <p>Ipsum dolor feugiat aliquam tempus sed magna lorem consequat accumsan</p> -->
</header> </header>
<!-- Content --> <!-- Content -->
<section id="robotics"> <section id="robotics">
<h2 style="color: #e44c65;">Robotics</h2> <h2 style="color: #e44c65">Robotics</h2>
<p style="margin-top: -20px;">Here there is a collection of all the projects that are strictly related to the design, development and functioning of robots:</p> <p style="margin-top: -20px">
Here there is a collection of all the projects that are strictly related to the design, development and functioning of robots:
</p>
<button class="accordion"><b>Voice Controlled Mobile Robot for Indoor Applications</b></button> <button class="accordion">
<div class="panel"> <b>Voice Controlled Mobile Robot for Indoor Applications</b>
<i class="icon"><a target="_blank" rel="noopener noreferrer" href="https://drive.google.com/drive/folders/1Y7TJJN8z1llCkSTnpVHMELD3PqsX8VF9?usp=sharing" class="icon alt far fa-file-pdf"><span class="label">Slideshow</span></a></i> </button>
<i class="fa-stack"> <div class="panel">
<i class="fa icon brands alt fa-github fa-stack-1x"></i> <i class="icon"
<i class="fa alt fa-slash fa-stack-1x "></i> ><a
</i> target="_blank"
Master Thesis rel="noopener noreferrer"
<p>This thesis proposes a design from scratch for a small mobile robot controlled by voice using ROS. href="https://drive.google.com/drive/folders/1Y7TJJN8z1llCkSTnpVHMELD3PqsX8VF9?usp=sharing"
The results obtained show both the feasibility of using low power boards and some of their limitations. class="icon alt far fa-file-pdf"
(Research publication in preparation) ><span class="label">Slideshow</span></a
</p> ></i
</div> >
<i class="fa-stack">
<i class="fa icon brands alt fa-github fa-stack-1x"></i>
<i class="fa alt fa-slash fa-stack-1x"></i>
</i>
Master Thesis
<p>
This thesis proposes a design from scratch for a small mobile robot controlled by voice using ROS. The results obtained show both the
feasibility of using low power boards and some of their limitations. (Research publication in preparation)
</p>
</div>
<!-- Recharge Electric Car --> <!-- Recharge Electric Car -->
<button class="accordion"><b> Recharging Electric Cars with a Mobile Robot </b></button> <button class="accordion"><b> Recharging Electric Cars with a Mobile Robot </b></button>
<div class="panel"> <div class="panel">
<i class="icon"><a target="_blank" rel="noopener noreferrer" href="https://drive.google.com/file/d/1wBfvAzy9N8uChNxNj9Kd_hcvI0Qq3uQj/view?usp=sharing" class="icon alt far fa-file-pdf"><span class="label">Slideshow</span></a></i> <i class="icon"
<i class="fa-stack"> ><a
<i class="fa icon brands alt fa-github fa-stack-1x"></i> target="_blank"
<i class="fa alt fa-slash fa-stack-1x "></i> rel="noopener noreferrer"
</i> href="https://drive.google.com/file/d/1wBfvAzy9N8uChNxNj9Kd_hcvI0Qq3uQj/view?usp=sharing"
<p> class="icon alt far fa-file-pdf"
The aim of this project was to prove the possibility to design an autonomous mobile robot whose task was to recharge electric cars in a parking lot. ><span class="label">Slideshow</span></a
This was done in simulation, using the Gazebo and ROS. ></i
</p> >
</div> <i class="fa-stack">
<i class="fa icon brands alt fa-github fa-stack-1x"></i>
<i class="fa alt fa-slash fa-stack-1x"></i>
</i>
<p>
The aim of this project was to prove the possibility to design an autonomous mobile robot whose task was to recharge electric cars in a parking
lot. This was done in simulation, using the Gazebo and ROS.
</p>
</div>
<!-- EKF Matlab --> <!-- EKF Matlab -->
<button class="accordion"><b> <button class="accordion"><b> Mobile Robot Self-Localization </b></button>
Mobile Robot Self-Localization <div class="panel">
</b></button> <i class="icon"
<div class="panel"> ><a
<i class="icon"><a target="_blank" rel="noopener noreferrer" href="https://drive.google.com/file/d/1BgPj-fgtYDDEsFHmDk2fGVm7DCPFWEeN/view?usp=sharing" class="icon alt far fa-file-pdf"><span class="label">Slideshow</span></a></i> target="_blank"
&nbsp;&nbsp; rel="noopener noreferrer"
<i class="icon"><a target="_blank" rel="noopener noreferrer" href="https://github.com/m-tartari/ekf_matlab" class="icon brands alt fa-github"><span class="label">GitHub</span></a></i> href="https://drive.google.com/file/d/1BgPj-fgtYDDEsFHmDk2fGVm7DCPFWEeN/view?usp=sharing"
<p> class="icon alt far fa-file-pdf"
For this project we worked using Matlab on data retrieved from a differential drive robot for its localization in a certain area by the means of the Extended Kalman filter (EKF). ><span class="label">Slideshow</span></a
</p> ></i
</div> >
&nbsp;&nbsp;
<i class="icon"
><a target="_blank" rel="noopener noreferrer" href="https://github.com/m-tartari/ekf_matlab" class="icon brands alt fa-github"
><span class="label">GitHub</span></a
></i
>
<p>
For this project we worked using Matlab on data retrieved from a differential drive robot for its localization in a certain area by the means of
the Extended Kalman filter (EKF).
</p>
</div>
<!-- Biorobotics --> <!-- Biorobotics -->
<button class="accordion"><b> Onychophora-Inspired Firefighting Robot</b></button> <button class="accordion"><b> Onychophora-Inspired Firefighting Robot</b></button>
<div class="panel"> <div class="panel">
<i class="icon"><a target="_blank" rel="noopener noreferrer" href="https://drive.google.com/open?id=1a_ZvgaQjzvedeo296zrDpdvNL_VJDWTX" class="icon alt far fa-file-pdf"><span class="label">Slideshow</span></a></i> <i class="icon"
&nbsp;&nbsp; ><a
<i class="icon"><a target="_blank" rel="noopener noreferrer" href="https://github.com/m-tartari/firebot" class="icon brands alt fa-github"><span class="label">GitHub</span></a></i> target="_blank"
<p> rel="noopener noreferrer"
This project proposes a conceptual design for a firefighting robot suitable for indoor environments by taking inspiration from the biological world. href="https://drive.google.com/open?id=1a_ZvgaQjzvedeo296zrDpdvNL_VJDWTX"
</p> class="icon alt far fa-file-pdf"
</div> ><span class="label">Slideshow</span></a
></i
>
&nbsp;&nbsp;
<i class="icon"
><a target="_blank" rel="noopener noreferrer" href="https://github.com/m-tartari/firebot" class="icon brands alt fa-github"
><span class="label">GitHub</span></a
></i
>
<p>
This project proposes a conceptual design for a firefighting robot suitable for indoor environments by taking inspiration from the biological
world.
</p>
</div>
<!-- DESRO --> <!-- DESRO -->
<button class="accordion"><b> 3RRR Planar Parallel Manipulator </b></button> <button class="accordion"><b> 3RRR Planar Parallel Manipulator </b></button>
<div class="panel"> <div class="panel">
<i class="icon"><a target="_blank" rel="noopener noreferrer" href="https://drive.google.com/open?id=11lCJM3EjVsua379BKD5NcEDHQLL4jdQn" class="icon alt far fa-file-pdf"><span class="label">Slideshow</span></a></i> <i class="icon"
&nbsp;&nbsp; ><a
<i class="icon"><a target="_blank" rel="noopener noreferrer" href="https://github.com/m-tartari/3RRR_planar_parallel_manipulator" class="icon brands alt fa-github"><span class="label">GitHub</span></a></i> target="_blank"
<p> rel="noopener noreferrer"
This project concerns the design and optimization of a 3RRR planar parallel manipulator using MATLAB and CATIA href="https://drive.google.com/open?id=11lCJM3EjVsua379BKD5NcEDHQLL4jdQn"
</p> class="icon alt far fa-file-pdf"
</div> ><span class="label">Slideshow</span></a
></i
>
&nbsp;&nbsp;
<i class="icon"
><a
target="_blank"
rel="noopener noreferrer"
href="https://github.com/m-tartari/3RRR_planar_parallel_manipulator"
class="icon brands alt fa-github"
><span class="label">GitHub</span></a
></i
>
<p>This project concerns the design and optimization of a 3RRR planar parallel manipulator using MATLAB and CATIA</p>
</div>
<!-- OPTEC --> <!-- OPTEC -->
<button class="accordion"><b> Point-to-Point Trajectory Optimization </b></button> <button class="accordion"><b> Point-to-Point Trajectory Optimization </b></button>
<div class="panel"> <div class="panel">
<i class="icon"><a target="_blank" rel="noopener noreferrer" href="https://drive.google.com/open?id=11m7r7fLda_jpDEZ-9qAWvnfRN2kLkhlA" class="icon alt far fa-file-pdf"><span class="label">Slideshow</span></a></i> <i class="icon"
&nbsp;&nbsp; ><a
<i class="icon"><a target="_blank" rel="noopener noreferrer" href="https://github.com/m-tartari/simple_trajectory_optimization" class="icon brands alt fa-github"><span class="label">GitHub</span></a></i> target="_blank"
<p> rel="noopener noreferrer"
For this project we worked to find the optimal trajectory for a simple model of a robot performing point-to-point navigation in a room with some obstacles using MATLAB. href="https://drive.google.com/open?id=11m7r7fLda_jpDEZ-9qAWvnfRN2kLkhlA"
</p> class="icon alt far fa-file-pdf"
</div> ><span class="label">Slideshow</span></a
></i
>
&nbsp;&nbsp;
<i class="icon"
><a
target="_blank"
rel="noopener noreferrer"
href="https://github.com/m-tartari/simple_trajectory_optimization"
class="icon brands alt fa-github"
><span class="label">GitHub</span></a
></i
>
<p>
For this project we worked to find the optimal trajectory for a simple model of a robot performing point-to-point navigation in a room with some
obstacles using MATLAB.
</p>
</div>
<!-- SOFAR --> <!-- SOFAR -->
<button class="accordion"><b> Simple Swarm </b></button> <button class="accordion"><b> Simple Swarm </b></button>
<div class="panel"> <div class="panel">
<i class="icon"><a target="_blank" rel="noopener noreferrer" href="https://github.com/m-tartari/simple_swarm" class="icon brands alt fa-github"><span class="label">GitHub</span></a></i> <i class="icon"
&nbsp;&nbsp; ><a target="_blank" rel="noopener noreferrer" href="https://github.com/m-tartari/simple_swarm" class="icon brands alt fa-github"
<p> ><span class="label">GitHub</span></a
Simple simulation and visualization of swarms of differential drive robots following a leader. Developed using C++ and ROS. ></i
</p> >
</div> &nbsp;&nbsp;
<p>Simple simulation and visualization of swarms of differential drive robots following a leader. Developed using C++ and ROS.</p>
</div>
<!-- ARPRO-IRP --> <!-- ARPRO-IRP -->
<button class="accordion"><b> Industrial Robot Programming </b></button> <button class="accordion"><b> Industrial Robot Programming </b></button>
<div class="panel"> <div class="panel">
<i class="icon"><a target="_blank" rel="noopener noreferrer" href="https://github.com/m-tartari/industrial_robot_programming" class="icon brands alt fa-github"><span class="label">GitHub</span></a></i> <i class="icon"
<p> ><a target="_blank" rel="noopener noreferrer" href="https://github.com/m-tartari/industrial_robot_programming" class="icon brands alt fa-github"
Industrial Robot Programming using VAL II and V+ tested on a PUMA and a RX90 robots. ><span class="label">GitHub</span></a
</p> ></i
</div> >
<p>Industrial Robot Programming using VAL II and V+ tested on a PUMA and a RX90 robots.</p>
</div>
<!-- MOCOM --> <!-- MOCOM -->
<button class="accordion"><b> Modelling and Control of Manipulators </b></button> <button class="accordion"><b> Modelling and Control of Manipulators </b></button>
<div class="panel"> <div class="panel">
<i class="icon"><a target="_blank" rel="noopener noreferrer" href="https://github.com/m-tartari/modelling_and_control_of_manipulators" class="icon brands alt fa-github"><span class="label">GitHub</span></a></i> <i class="icon"
<p> ><a
This contains several projects regarding modelling and control of various manipulators using MATLAB, Simulink and ADAMS. target="_blank"
</p> rel="noopener noreferrer"
</div> href="https://github.com/m-tartari/modelling_and_control_of_manipulators"
class="icon brands alt fa-github"
><span class="label">GitHub</span></a
></i
>
<p>This contains several projects regarding modelling and control of various manipulators using MATLAB, Simulink and ADAMS.</p>
</div>
</section>
<hr />
</section> <!-- Engineering Projects -->
<hr /> <section id="engineering">
<h2 style="color: #e44c65">Engineering</h2>
<p style="margin-top: -20px">Here there is a collection of all the projects that are related to all the other fields of engineering:</p>
<!-- Tongji Theis -->
<button class="accordion">
<b> Solar Panel Fault Detection Method Based on Infrared Image Processing </b>
</button>
<div class="panel">
<i class="icon"
><a
target="_blank"
rel="noopener noreferrer"
href="https://drive.google.com/file/d/0B1z42QMR-0UtYzBYSVhRV3ZPWk0/view?usp=sharing"
class="icon alt far fa-file-pdf"
><span class="label">Slideshow</span></a
></i
>
<i class="fa-stack">
<i class="fa icon brands alt fa-github fa-stack-1x"></i>
<i class="fa alt fa-slash fa-stack-1x"></i>
</i>
Bachelor Thesis
<p>My Chinese bachelor thesis that proposes a method to detect malfunctioning solar panels by processing thermal images using MATLAB.</p>
</div>
<!-- Engineering Projects --> <!-- Unibo Thesis -->
<section id="engineering"> <button class="accordion">
<h2 style="color: #e44c65;">Engineering</h2> <b> Design of a Testing Machine for Flexure Hinges </b>
<p style="margin-top: -20px;">Here there is a collection of all the projects that are related to all the other fields of engineering:</p> </button>
<div class="panel">
<i class="icon"
><a
target="_blank"
rel="noopener noreferrer"
href="https://drive.google.com/file/d/0B1z42QMR-0UtSkxRVzJPTk1IX0k/view?usp=sharing"
class="icon alt far fa-file-pdf"
><span class="label">Slideshow</span></a
></i
>
<i class="fa-stack">
<i class="fa icon brands alt fa-github fa-stack-1x"></i>
<i class="fa alt fa-slash fa-stack-1x"></i>
</i>
Bachelor Thesis
<p>My Italian bachelor thesis that proposes a design from scratch of a machine for the empirical characterization of flexure hinges.</p>
</div>
<!-- Tongji Theis --> <!-- NOLCO -->
<button class="accordion"> <button class="accordion"><b> Control of a Nonlinear System </b></button>
<b> <div class="panel">
Solar Panel Fault Detection Method Based on Infrared Image Processing <i class="icon"
</b> ><a
</button> target="_blank"
<div class="panel"> rel="noopener noreferrer"
<i class="icon"><a target="_blank" rel="noopener noreferrer" href="https://drive.google.com/file/d/0B1z42QMR-0UtYzBYSVhRV3ZPWk0/view?usp=sharing" class="icon alt far fa-file-pdf"><span class="label">Slideshow</span></a></i> href="https://drive.google.com/file/d/1TE3TWkXZjVq8OuBkLl497c_MQSs3MiLQ/view?usp=sharing"
<i class="fa-stack"> class="icon alt far fa-file-pdf"
<i class="fa icon brands alt fa-github fa-stack-1x"></i> ><span class="label">Slideshow</span></a
<i class="fa alt fa-slash fa-stack-1x "></i> ></i
</i> >
Bachelor Thesis &nbsp;&nbsp;
<p> <i class="icon"
My Chinese bachelor thesis that proposes a method to detect malfunctioning solar panels by processing thermal images using MATLAB. ><a
</p> target="_blank"
</div> rel="noopener noreferrer"
href="https://github.com/m-tartari/modelling_and_control_of_manipulators"
class="icon brands alt fa-github"
><span class="label">GitHub</span></a
></i
>
<p>The aim of this project was to implement control laws for a nonlinear system (based on the model of a PVTOL aircraft).</p>
</div>
<!-- Unibo Thesis --> <!-- Multi-body -->
<button class="accordion"> <button class="accordion"><b> Multi-Body System’s Kinematic Analysis </b></button>
<b> <div class="panel">
Design of a Testing Machine for Flexure Hinges <i class="icon"
</b> ><a
</button> target="_blank"
<div class="panel"> rel="noopener noreferrer"
<i class="icon"><a target="_blank" rel="noopener noreferrer" href="https://drive.google.com/file/d/0B1z42QMR-0UtSkxRVzJPTk1IX0k/view?usp=sharing" class="icon alt far fa-file-pdf"><span class="label">Slideshow</span></a></i> href="https://drive.google.com/file/d/15yrDU2blkb34Jy2GXkCIe4qNmDRmp31w/view?usp=sharing"
<i class="fa-stack"> class="icon alt far fa-file-pdf"
<i class="fa icon brands alt fa-github fa-stack-1x"></i> ><span class="label">Slideshow</span></a
<i class="fa alt fa-slash fa-stack-1x "></i> ></i
</i> >
Bachelor Thesis &nbsp;&nbsp;
<p> <i class="icon"
My Italian bachelor thesis that proposes a design from scratch of a machine for the empirical characterization of flexure hinges. ><a target="_blank" rel="noopener noreferrer" href="https://github.com/m-tartari/multi-body-kinematics" class="icon brands alt fa-github"
</p> ><span class="label">GitHub</span></a
</div> ></i
>
<p>
For this project the kinematic analysis has been performed upon agiven mechanism using MATLAB. It has been then validated by comparing it to the
ADAMS model of the same mechanism.
</p>
</div>
<!-- NOLCO --> <!-- SIPRO -->
<button class="accordion"><b> Control of a Nonlinear System </b></button> <button class="accordion"><b> Signal Processing </b></button>
<div class="panel"> <div class="panel">
<i class="icon"><a target="_blank" rel="noopener noreferrer" href="https://drive.google.com/file/d/1TE3TWkXZjVq8OuBkLl497c_MQSs3MiLQ/view?usp=sharing" class="icon alt far fa-file-pdf"><span class="label">Slideshow</span></a></i> <i class="icon"
&nbsp;&nbsp; ><a target="_blank" rel="noopener noreferrer" href="https://github.com/m-tartari/signal_processing" class="icon brands alt fa-github"
<i class="icon"><a target="_blank" rel="noopener noreferrer" href="https://github.com/m-tartari/modelling_and_control_of_manipulators" class="icon brands alt fa-github"><span class="label">GitHub</span></a></i> ><span class="label">GitHub</span></a
<p> ></i
The aim of this project was to implement control laws for a nonlinear system (based on the model of a PVTOL aircraft). >
</p> &nbsp;&nbsp;
</div> <p>Several Signal processing projects developed using MATLAB.</p>
</div>
<!-- Multi-body --> <!-- RETSY -->
<button class="accordion"><b> Multi-Body System’s Kinematic Analysis </b></button> <button class="accordion"><b> Real Time Systems </b></button>
<div class="panel"> <div class="panel">
<i class="icon"><a target="_blank" rel="noopener noreferrer" href="https://drive.google.com/file/d/15yrDU2blkb34Jy2GXkCIe4qNmDRmp31w/view?usp=sharing" class="icon alt far fa-file-pdf"><span class="label">Slideshow</span></a></i> <i class="icon"
&nbsp;&nbsp; ><a target="_blank" rel="noopener noreferrer" href="https://github.com/m-tartari/real_time_systems" class="icon brands alt fa-github"
<i class="icon"><a target="_blank" rel="noopener noreferrer" href="https://github.com/m-tartari/multi-body-kinematics" class="icon brands alt fa-github"><span class="label">GitHub</span></a></i> ><span class="label">GitHub</span></a
<p> ></i
For this project the kinematic analysis has been performed upon agiven mechanism using MATLAB. >
It has been then validated by comparing it to the ADAMS model of the same mechanism. &nbsp;&nbsp;
</p> <p>Several real-time systems' projects developed using C++ and OIL, and run using Trampoline RTOS on a Teensy board.</p>
</div> </div>
</section>
<hr />
<!-- SIPRO --> <!-- Hobbies -->
<button class="accordion"><b> Signal Processing </b></button> <section id="hobbies">
<div class="panel"> <h2 style="color: #e44c65">Hobbies</h2>
<i class="icon"><a target="_blank" rel="noopener noreferrer" href="https://github.com/m-tartari/signal_processing" class="icon brands alt fa-github"><span class="label">GitHub</span></a></i> <p style="margin-top: -20px">Here there is a collection of projects related to things I do for fun:</p>
&nbsp;&nbsp;
<p>
Several Signal processing projects developed using MATLAB.
</p>
</div>
<!-- RETSY --> <!-- Medieval Furniture -->
<button class="accordion"><b> Real Time Systems </b></button> <button class="accordion"><b>Medieval Furniture</b></button>
<div class="panel"> <div class="panel">
<i class="icon"><a target="_blank" rel="noopener noreferrer" href="https://github.com/m-tartari/real_time_systems" class="icon brands alt fa-github"><span class="label">GitHub</span></a></i> <i class="icon"
&nbsp;&nbsp; ><a target="_blank" rel="noopener noreferrer" href="https://github.com/m-tartari/medieval_furniture" class="icon brands alt fa-github"
<p> ><span class="label">GitHub</span></a
Several real-time systems' projects developed using C++ and OIL, and run using Trampoline RTOS on a Teensy board. ></i
</p> >
</div> <p>
</section> A collection of pdf and CAD models to create late XIV century furniture and medieval camp equipment. These objects are being realized by
<hr /> <a target="_blank" rel="noopener noreferrer" href="http://www.compagniadarmedelsantoluca.it/">Compagnia d'Arme del Santo Luca</a>.
</p>
</div>
<!-- Pinterest -->
<button class="accordion"><b>Pinterest Pinner</b></button>
<div class="panel">
<i class="icon"
><a target="_blank" rel="noopener noreferrer" href="https://github.com/m-tartari/pinterest_pinner" class="icon brands alt fa-github"
><span class="label">GitHub</span></a
></i
>
<p>
Publishes all photos from a
<a target="_blank" rel="noopener noreferrer" href="http://www.compagniadarmedelsantoluca.it/">selected website</a>
into a target Pinterest board using Python3 and the Pinterest API.
</p>
</div>
</section>
<hr />
</div>
</div>
<!-- Hobbies --> <!-- Footer -->
<section id="hobbies"> <footer id="footer">
<h2 style="color: #e44c65;">Hobbies</h2> <ul class="icons">
<p style="margin-top: -20px;">Here there is a collection of projects related to things I do for fun:</p> <li>
<a target="_blank" rel="noopener noreferrer" href="https://www.linkedin.com/in/m-tartari/" class="icon brands alt fa-linkedin-in"
><span class="label">LinkedIn</span></a
>
</li>
<li>
<a target="_blank" rel="noopener noreferrer" href="https://github.com/m-tartari" class="icon brands alt fa-github"
><span class="label">GitHub</span></a
>
</li>
<li>
<a target="_blank" rel="noopener noreferrer" href="mailto:michele.tartari@live.com" class="icon solid alt fa-envelope"
><span class="label">Email</span></a
>
</li>
</ul>
<ul class="copyright">
<li>
&copy; 2020-
<script>
document.write(new Date().getFullYear());
</script>
Michele Tartari. All rights reserved.
</li>
</ul>
</footer>
</div>
<!-- Medieval Furniture --> <!-- Scripts -->
<button class="accordion"><b>Medieval Furniture</b></button> <script src="assets/js/accordion.js"></script>
<div class="panel"> <script src="assets/js/jquery.min.js"></script>
<i class="icon"><a target="_blank" rel="noopener noreferrer" href="https://github.com/m-tartari/medieval_furniture" class="icon brands alt fa-github"><span class="label">GitHub</span></a></i> <script src="assets/js/jquery.scrolly.min.js"></script>
<p> <script src="assets/js/jquery.dropotron.min.js"></script>
A collection of pdf and CAD models to create late XIV century furniture and medieval camp equipment. These objects are being realized by <a target="_blank" rel="noopener noreferrer" href="http://www.compagniadarmedelsantoluca.it/">Compagnia d'Arme del Santo Luca</a>. <script src="assets/js/jquery.scrollex.min.js"></script>
</p> <script src="assets/js/browser.min.js"></script>
</div> <script src="assets/js/breakpoints.min.js"></script>
<script src="assets/js/util.js"></script>
<!-- Pinterest --> <script src="assets/js/main.js"></script>
<button class="accordion"><b>Pinterest Pinner</b></button> </body>
<div class="panel">
<i class="icon"><a target="_blank" rel="noopener noreferrer" href="https://github.com/m-tartari/pinterest_pinner" class="icon brands alt fa-github"><span class="label">GitHub</span></a></i>
<p>
Publishes all photos from a <a target="_blank" rel="noopener noreferrer" href="http://www.compagniadarmedelsantoluca.it/">selected website</a> into a target Pinterest board using Python3 and the Pinterest API.
</p>
</div>
</section>
<hr />
</div>
</div>
<!-- Footer -->
<footer id="footer">
<ul class="icons">
<li><a target="_blank" rel="noopener noreferrer" href="https://www.linkedin.com/in/m-tartari/" class="icon brands alt fa-linkedin-in"><span class="label">LinkedIn</span></a></li>
<li><a target="_blank" rel="noopener noreferrer" href="https://github.com/m-tartari" class="icon brands alt fa-github"><span class="label">GitHub</span></a></li>
<li><a target="_blank" rel="noopener noreferrer" href="mailto:michele.tartari@live.com" class="icon solid alt fa-envelope"><span class="label">Email</span></a></li>
</ul>
<ul class="copyright">
<li>&copy; 2020-<script>document.write( new Date().getFullYear() );</script> Michele Tartari. All rights reserved.</li>
</ul>
</footer>
</div>
<!-- Scripts -->
<script src="assets/js/accordion.js"></script>
<script src="assets/js/jquery.min.js"></script>
<script src="assets/js/jquery.scrolly.min.js"></script>
<script src="assets/js/jquery.dropotron.min.js"></script>
<script src="assets/js/jquery.scrollex.min.js"></script>
<script src="assets/js/browser.min.js"></script>
<script src="assets/js/breakpoints.min.js"></script>
<script src="assets/js/util.js"></script>
<script src="assets/js/main.js"></script>
</body>
</html> </html>
+121 -121
View File
@@ -1,162 +1,162 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<style> <style>
body { body {
display: flex; display: flex;
margin: 0; margin: 0;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
height: 100vh; height: 100vh;
background-color: #7681B3; background-color: #7681b3;
} }
.presentational-container { .presentational-container {
padding: 20px; padding: 20px;
box-shadow: 2px 2px 10px 5px; box-shadow: 2px 2px 10px 5px;
background-color: #fff; background-color: #fff;
} }
table { table {
background: none; background: none;
margin: 0; margin: 0;
padding: 10px 10px 0; padding: 10px 10px 0;
border-width: 3px 0 0 0; border-width: 3px 0 0 0;
border-style: solid; border-style: solid;
border-color: #232C9F; border-color: #232c9f;
} }
tr.outer-row td.headshot-cell { tr.outer-row td.headshot-cell {
padding: 0 12px 0 0; padding: 0 12px 0 0;
} }
td.headshot-cell a { td.headshot-cell a {
text-decoration: none; text-decoration: none;
} }
td.headshot-cell img { td.headshot-cell img {
vertical-align: middle; vertical-align: middle;
width:120px; width: 120px;
border-radius: 100%; border-radius: 100%;
} }
td.description-cell { td.description-cell {
padding: 0 0 0 12px; padding: 0 0 0 12px;
} }
td.description-cell > table { td.description-cell > table {
background: none; background: none;
border: 0px; border: 0px;
margin: 0; margin: 0;
padding: 0; padding: 0;
} }
td.full-name { td.full-name {
font-weight: bold; font-weight: bold;
color: #232C9F; color: #232c9f;
font-size: 18px; font-size: 18px;
font-family: Arial, Helvetica, sans-serif; font-family: Arial, Helvetica, sans-serif;
} }
td.title { td.title {
padding-bottom: 10px; padding-bottom: 10px;
color: #333333; color: #333333;
font-size: 14px; font-size: 14px;
font-family: Arial, Helvetica, sans-serif; font-family: Arial, Helvetica, sans-serif;
} }
td.website { td.website {
padding-bottom: 10px; padding-bottom: 10px;
vertical-align: top; vertical-align: top;
color: #333333; color: #333333;
font-size: 14px; font-size: 14px;
font-family: Arial, Helvetica, sans-serif; font-family: Arial, Helvetica, sans-serif;
} }
td.website a { td.website a {
color: #4BAFDB; color: #4bafdb;
text-decoration: none; text-decoration: none;
font-weight: normal; font-weight: normal;
font-size: 14px; font-size: 14px;
} }
td.social-icons { td.social-icons {
padding-top: 5px; padding-top: 5px;
} }
td.social-icons ul { td.social-icons ul {
list-style: none; list-style: none;
padding: 0; padding: 0;
margin: 0; margin: 0;
height: 25px; height: 25px;
} }
td.social-icons li { td.social-icons li {
display: inline-block; display: inline-block;
} }
td.social-icons a { td.social-icons a {
text-decoration: none; text-decoration: none;
} }
td.social-icons img { td.social-icons img {
width: 25px; width: 25px;
height: 25px; height: 25px;
} }
</style> </style>
</head> </head>
<body> <body>
<div> <div>
<table role="presentation"> <table role="presentation">
<tbody> <tbody>
<tr class="outer-row"> <tr class="outer-row">
<td class="headshot-cell"> <td class="headshot-cell">
<a href="http://www.m-tartari.eu"> <a href="http://www.m-tartari.eu">
<img src="https://drive.google.com/uc?id=1Y6t65qoE8s6CUPcfVQii6RZgAl1YmALD" name="preview-image-url" alt="Photo"/> <img src="https://drive.google.com/uc?id=1Y6t65qoE8s6CUPcfVQii6RZgAl1YmALD" name="preview-image-url" alt="Photo" />
</a> </a>
</td> </td>
<td class="description-cell"> <td class="description-cell">
<table role="presentation"> <table role="presentation">
<tbody> <tbody>
<tr> <tr>
<td colspan="2" class="full-name">Michele Tartari</td> <td colspan="2" class="full-name">Michele Tartari</td>
</tr> </tr>
<tr> <tr>
<td colspan="2" class="title">Robotics Engineer</td> <td colspan="2" class="title">Robotics Engineer</td>
</tr> </tr>
<tr> <tr>
<td valign="top" class="website"> <td valign="top" class="website">
<a href="http://www.m-tartari.eu">www.m-tartari.eu</a> <a href="http://www.m-tartari.eu">www.m-tartari.eu</a>
</td> </td>
</tr> </tr>
<tr> <tr>
<!-- Social Icons found here: https://www.flaticon.com/packs/social-media-color --> <!-- Social Icons found here: https://www.flaticon.com/packs/social-media-color -->
<td colspan="2" class="social-icons"> <td colspan="2" class="social-icons">
<ul> <ul>
<li> <li>
<a href="http://www.m-tartari.eu"> <a href="http://www.m-tartari.eu">
<img src="https://drive.google.com/uc?id=1KCLt13X7Jn-vTmcpCBjDJssYsKb29tRT" alt="Website"/> <img src="https://drive.google.com/uc?id=1KCLt13X7Jn-vTmcpCBjDJssYsKb29tRT" alt="Website" />
</a> </a>
</li> </li>
<li> <li>
<a href="https://github.com/m-tartari"> <a href="https://github.com/m-tartari">
<img src="https://drive.google.com/uc?id=1KferYVq2PXqGLZWEy6HlEYEaCKKZ8KiR" alt="Github"/> <img src="https://drive.google.com/uc?id=1KferYVq2PXqGLZWEy6HlEYEaCKKZ8KiR" alt="Github" />
</a> </a>
</li> </li>
<li> <li>
<a href="https://www.linkedin.com/in/m-tartari/"> <a href="https://www.linkedin.com/in/m-tartari/">
<img src="https://drive.google.com/uc?id=1V9nFk0LaUXXNhPb-FnmP0M30ubXrjyAo" alt="LinkedIn"/> <img src="https://drive.google.com/uc?id=1V9nFk0LaUXXNhPb-FnmP0M30ubXrjyAo" alt="LinkedIn" />
</a> </a>
</li> </li>
</ul> </ul>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
</body> </body>
</html>