hey
This commit is contained in:
commit
819835ea67
17 changed files with 8146 additions and 0 deletions
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
.env
|
||||
public/
|
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
[submodule "themes/hugo-flex"]
|
||||
path = themes/hugo-flex
|
||||
url = https://github.com/de-souza/hugo-flex.git
|
6
archetypes/default.md
Normal file
6
archetypes/default.md
Normal file
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
title: "{{ replace .Name "-" " " | title }}"
|
||||
date: {{ .Date }}
|
||||
draft: true
|
||||
---
|
||||
|
21
config.toml
Normal file
21
config.toml
Normal file
|
@ -0,0 +1,21 @@
|
|||
baseURL = "https://lesurpaul.fr/"
|
||||
languageCode = "en-us"
|
||||
title = "Paul Lesur"
|
||||
theme = "xmin"
|
||||
|
||||
[[menu.main]]
|
||||
name = "Home"
|
||||
url = "/"
|
||||
weight = 1
|
||||
[[menu.main]]
|
||||
name = "About"
|
||||
url = "/about/"
|
||||
weight = 2
|
||||
[[menu.main]]
|
||||
name = "Publications"
|
||||
url = "/publications/"
|
||||
weight = 3
|
||||
|
||||
[params]
|
||||
description = ":)"
|
||||
footer = "[Paul Lesur](https://lesurpaul.fr) | [Github](https://github.com/lesurp)"
|
11
content/_index.md
Normal file
11
content/_index.md
Normal file
|
@ -0,0 +1,11 @@
|
|||
---
|
||||
title: Home
|
||||
---
|
||||
|
||||
Hey, I'm Paul Lesur, a software engineer, currently based in Germany.
|
||||
|
||||
Here are some links to my different repositories (on [GitHub](https://github.com/lesurp)),
|
||||
my [LinkedIn profile](https://linkedin.com/in/paul-lesur/),
|
||||
and a link to [my résumé](/Paul_Lesur_resume.pdf) (pdf, of course!).
|
||||
|
||||
You will find the list of my publications [here]({{< ref "/publications" >}})
|
22
content/publications/slamcraft.md
Normal file
22
content/publications/slamcraft.md
Normal file
|
@ -0,0 +1,22 @@
|
|||
---
|
||||
title: SlamCraft
|
||||
author: Rambach, Jason & Lesur, Paul & Pagani, Alain & Stricker, Didier
|
||||
date: '2016-03-27'
|
||||
publications:
|
||||
- slamcraft
|
||||
---
|
||||
|
||||
# SlamCraft: Dense Planar RGB Monocular SLAM
|
||||
|
||||
10.23919/MVA.2019.8757982.
|
||||
|
||||
## Authors
|
||||
|
||||
Rambach, Jason & Lesur, Paul & Pagani, Alain & Stricker, Didier. (2019).
|
||||
|
||||
|
||||
## Abstract
|
||||
|
||||
|
||||
|
||||
Monocular Simultaneous Localization and Mapping (SLAM) approaches have progressed significantly over the last two decades. However, keypoint-based approaches only provide limited structural information in a 3D point cloud which does not fulfil the requirements of applications such as Augmented Reality (AR). SLAM systems that provide dense environment maps are either computationally intensive or require depth information from additional sensors. In this paper, we use a deep neural network that estimates planar regions from RGB input images and fuses its output iteratively with the point cloud map of a SLAM system to create an efficient monocular planar SLAM system. We present qualitative results of the created maps, as well as an evaluation of the tracking accuracy and runtime of our approach.
|
8
deploy.sh
Executable file
8
deploy.sh
Executable file
|
@ -0,0 +1,8 @@
|
|||
#!/bin/bash
|
||||
|
||||
# this should define:
|
||||
# UNAME, HOST, PORT, DEST_DIR
|
||||
source .env
|
||||
|
||||
hugo && \
|
||||
rsync --archive -hh --partial --info=stats1 --info=progress2 --modify-window=1 -e "ssh -p ${PORT}" public/ ${UNAME}@${HOST}:${DEST_DIR}
|
|
@ -0,0 +1 @@
|
|||
body{font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Oxygen-Sans,Ubuntu,Cantarell,helvetica neue,sans-serif;line-height:1.6;display:flex;flex-direction:column;min-height:100vh;margin:0;padding:0}main{flex-grow:1}img{max-width:100%;border-radius:.2rem}pre{overflow-x:auto;border:.1rem solid #d3d3d3;padding:1rem}code{font-family:SFMono-Regular,Consolas,liberation mono,Menlo,Courier,monospace}.Banner{list-style:none;display:flex;flex-flow:row-reverse wrap-reverse;justify-content:space-between;margin:0;padding:0}.Banner-item:nth-child(1){order:5}.Banner-item:nth-child(2){order:4}.Banner-item:nth-child(3){order:3}.Banner-item:nth-child(4){order:2}.Banner-item:nth-child(5){order:1}.Banner-item--title{flex-grow:1}.Banner-link{font-size:1.25rem;color:#fff;padding:.5rem 1rem}.Heading{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline}.Heading-title{margin:1.5rem .5rem 0 0}.Heading-link{color:inherit}.Tags{list-style:none;display:flex;flex-wrap:wrap;justify-content:center;margin:1.5rem 0;padding:0}.Tags-item{border-radius:.2rem;margin:.2rem;padding:0 .3rem}.Tags-link{color:#fff}.Pagination{font-size:1.25rem;color:inherit}.Pagination--right{float:right}.Footer{text-align:center;margin:1rem 0}.u-wrapper{max-width:42rem;margin:auto}.u-padding{padding:0 1rem}.u-background{background:teal}.u-clickable{font-weight:700;text-decoration:none;display:inline-block}
|
|
@ -0,0 +1 @@
|
|||
{"Target":"css/base.min.21688b64210142c045c9a1d930a48fc517f428060c78a3a012d71f971874c5c3.css","MediaType":"text/css","Data":{"Integrity":"sha256-IWiLZCEBQsBFyaHZMKSPxRf0KAYMeKOgEtcflxh0xcM="}}
|
|
@ -0,0 +1,228 @@
|
|||
// import backToTop from './backToTop';
|
||||
// import mobileNavbar from './mobileNavbar';
|
||||
// import toc from './toc';
|
||||
// import headerAnchor from './headerAnchor';
|
||||
// import fnTooltip from './footnoteTooltip';
|
||||
// import highlight from './highlight';
|
||||
|
||||
/**
|
||||
* back to top
|
||||
*/
|
||||
var backToTop = function() {
|
||||
const $backToTop = $('#back-to-top');
|
||||
|
||||
$(window)
|
||||
.scroll(function() {
|
||||
if ($(window)
|
||||
.scrollTop() > 100) {
|
||||
$backToTop.fadeIn(1000);
|
||||
} else {
|
||||
$backToTop.fadeOut(1000);
|
||||
}
|
||||
})
|
||||
|
||||
$backToTop.click(function() {
|
||||
$('body,html')
|
||||
.animate({
|
||||
scrollTop: 0
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* mobile Navbar
|
||||
*/
|
||||
var mobileNavbar = function() {
|
||||
const $mobileNav = $('#mobile-navbar');
|
||||
const $mobileNavIcon = $('.mobile-navbar-icon');
|
||||
const slideout = new Slideout({
|
||||
'panel': document.getElementById('mobile-panel'),
|
||||
'menu': document.getElementById('mobile-menu'),
|
||||
'padding': 180,
|
||||
'tolerance': 70
|
||||
})
|
||||
slideout.disableTouch()
|
||||
|
||||
$mobileNavIcon.click(function () {
|
||||
slideout.toggle()
|
||||
})
|
||||
|
||||
slideout.on('beforeopen', function () {
|
||||
$mobileNav.addClass('fixed-open')
|
||||
$mobileNavIcon.addClass('icon-click').removeClass('icon-out')
|
||||
})
|
||||
|
||||
slideout.on('beforeclose', function () {
|
||||
$mobileNav.removeClass('fixed-open')
|
||||
$mobileNavIcon.addClass('icon-out').removeClass('icon-click')
|
||||
})
|
||||
|
||||
$('#mobile-panel').on('touchend', function () {
|
||||
slideout.isOpen() && $mobileNavIcon.click()
|
||||
})
|
||||
|
||||
$('.mobile-submenu-open').on('click', function () {
|
||||
const $mobileSubmenuList = $('.mobile-submenu-list')
|
||||
const $mobileMenuParent = $('.mobile-menu-parent')
|
||||
|
||||
if ($(this).parent().next().css('display') == "none") {
|
||||
$mobileSubmenuList.slideUp(300)
|
||||
$(this).parent().next('ul').slideDown(300)
|
||||
$(this).parent().addClass('mobile-submenu-show')
|
||||
$(this).parent().parent().siblings().children().removeClass('mobile-submenu-show')
|
||||
} else {
|
||||
$(this).parent().next('ul').slideUp(300)
|
||||
$mobileMenuParent.removeClass('mobile-submenu-show')
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Table of Content fix
|
||||
*/
|
||||
function initToc() {
|
||||
const $toc = $('#post-toc');
|
||||
if ($toc.length && $(window)
|
||||
.width() >= 1080) {
|
||||
$(window)
|
||||
.scroll(function() {
|
||||
if ($(window)
|
||||
.scrollTop() > 100) {
|
||||
$toc.fadeIn(1000);
|
||||
} else {
|
||||
$toc.fadeOut(100);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
var toc = function() {
|
||||
const tocContainer = document.getElementById('post-toc');
|
||||
if (tocContainer !== null) {
|
||||
const toc = document.getElementById('TableOfContents');
|
||||
if (toc === null) {
|
||||
// if global config 'toc = true', but there are no headings
|
||||
tocContainer.parentNode.removeChild(tocContainer);
|
||||
} else {
|
||||
initToc();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Anchor for post content header
|
||||
**/
|
||||
var anchorForId = function (id) {
|
||||
var anchor = document.createElement("a");
|
||||
anchor.className = "header-link";
|
||||
anchor.href = "#" + id;
|
||||
anchor.innerHTML = '<svg viewBox="0 0 16 10" version="1.1" width="24" height="24"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"/></svg>';
|
||||
return anchor;
|
||||
};
|
||||
|
||||
var linkifyAnchors = function (level, containingElement) {
|
||||
var headers = containingElement.getElementsByTagName("h" + level);
|
||||
for (var h = 0; h < headers.length; h++) {
|
||||
var header = headers[h];
|
||||
header.className = "post-content-header";
|
||||
|
||||
if (typeof header.id !== "undefined" && header.id !== "") {
|
||||
// insert header-link before the header
|
||||
header.appendChild(anchorForId(header.id));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var headerAnchor = function() {
|
||||
var contentBlock = document.getElementsByClassName("post-content")[0];
|
||||
if (!contentBlock) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (var level = 1; level <= 4; level++) {
|
||||
linkifyAnchors(level, contentBlock);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* footnote tooltip
|
||||
*/
|
||||
var fnTooltip = function () {
|
||||
$(".footnote-ref").each(function () {
|
||||
var id = $(this).children("a").attr("href").substr(1),
|
||||
footnote = $(document.getElementById(id)).clone(),
|
||||
outer_wrapper = $("<span>", { "class": "fn-content" }),
|
||||
inner_wrapper = $("<span>", { "class": "fn-text" });
|
||||
footnote.find(".footnote-return").remove();
|
||||
$(this).append(outer_wrapper.append(inner_wrapper.html(footnote.html())));
|
||||
});
|
||||
|
||||
// fix tooltip position & width
|
||||
var position = function () {
|
||||
var content = $(".fn-content").removeAttr("style");
|
||||
if ($(window).width() < 640)
|
||||
content.css("width", $(window).width() / 2);
|
||||
else
|
||||
content.css("width", 340); // default value
|
||||
content.each(function () {
|
||||
var width = $(this).children(".fn-text").outerWidth();
|
||||
$(this).css({
|
||||
"width": width,
|
||||
"margin-left": width / -2
|
||||
});
|
||||
});
|
||||
}
|
||||
position();
|
||||
$(window).resize(position());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* highlight
|
||||
*/
|
||||
var highlight = function () {
|
||||
document.querySelectorAll('.chroma>table')
|
||||
.forEach((element) => {
|
||||
const sub = element.querySelector('code[data-lang]');
|
||||
if (sub !== null) {
|
||||
element.setAttribute('data-lang', mapLang(sub.getAttribute('data-lang')));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function mapLang(name) {
|
||||
return {
|
||||
coffeescript: 'CoffeeScript',
|
||||
cpp: 'C++',
|
||||
cs: 'C#',
|
||||
css: 'CSS',
|
||||
html: 'HTML',
|
||||
http: 'HTTP',
|
||||
js: 'JavaScript',
|
||||
json: 'JSON',
|
||||
objectivec: 'Objective-C',
|
||||
php: 'PHP',
|
||||
sql: 'SQL',
|
||||
toml: 'TOML',
|
||||
ts: 'TypeScript',
|
||||
typescript: 'TypeScript',
|
||||
xml: 'XML',
|
||||
yaml: 'YAML',
|
||||
}[name] || name;
|
||||
}
|
||||
|
||||
|
||||
/* main */
|
||||
$(document).ready(function () {
|
||||
backToTop();
|
||||
mobileNavbar();
|
||||
toc();
|
||||
headerAnchor();
|
||||
fnTooltip();
|
||||
});
|
||||
|
||||
highlight();
|
|
@ -0,0 +1 @@
|
|||
{"Target":"js/main.638251f4230630f0335d8c6748e53a96f94b72670920b60c09a56fdc8bece214.js","MediaType":"application/javascript","Data":{"Integrity":"sha256-Y4JR9CMGMPAzXYxnSOU6lvlLcmcJILYMCaVv3Ivs4hQ="}}
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
{"Target":"sass/jane.min.31c4b7729c8d71cc152f8de4203d90bfd8a04f7eab69372de7234ebf55b7701b.css","MediaType":"text/css","Data":{"Integrity":"sha256-McS3cpyNccwVL43kID2Qv9igT36raTct5yNOv1W3cBs="}}
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1 @@
|
|||
{"Target":"css/style.css","MediaType":"text/css","Data":{}}
|
BIN
static/Paul_Lesur_resume.pdf
Normal file
BIN
static/Paul_Lesur_resume.pdf
Normal file
Binary file not shown.
1
themes/xmin
Submodule
1
themes/xmin
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit da0192c7a78b57dfdbb73c0633de131c3253cc4f
|
Loading…
Reference in a new issue