Use online CSS and JS
This commit is contained in:
1 parent
ef78808a52
commit
54ab59a00c
15 files changed
+783
-2300
No files matched your search
-184
@@ -1,184 +0,0 @@
|
||||
.org-bold { /* bold */ font-weight: bold; }
|
||||
.org-bold-italic { /* bold-italic */ font-weight: bold; font-style: italic; }
|
||||
.org-buffer-menu-buffer { /* buffer-menu-buffer */ font-weight: bold; }
|
||||
.org-builtin { /* font-lock-builtin-face */ color: #7a378b; }
|
||||
.org-button { /* button */ text-decoration: underline; }
|
||||
.org-calendar-today { /* calendar-today */ text-decoration: underline; }
|
||||
.org-change-log-acknowledgement { /* change-log-acknowledgement */ color: #b22222; }
|
||||
.org-change-log-conditionals { /* change-log-conditionals */ color: #a0522d; }
|
||||
.org-change-log-date { /* change-log-date */ color: #8b2252; }
|
||||
.org-change-log-email { /* change-log-email */ color: #a0522d; }
|
||||
.org-change-log-file { /* change-log-file */ color: #0000ff; }
|
||||
.org-change-log-function { /* change-log-function */ color: #a0522d; }
|
||||
.org-change-log-list { /* change-log-list */ color: #a020f0; }
|
||||
.org-change-log-name { /* change-log-name */ color: #008b8b; }
|
||||
.org-comint-highlight-input { /* comint-highlight-input */ font-weight: bold; }
|
||||
.org-comint-highlight-prompt { /* comint-highlight-prompt */ color: #00008b; }
|
||||
.org-comment { /* font-lock-comment-face */ color: #999988; font-style: italic; }
|
||||
.org-comment-delimiter { /* font-lock-comment-delimiter-face */ color: #999988; font-style: italic; }
|
||||
.org-completions-annotations { /* completions-annotations */ font-style: italic; }
|
||||
.org-completions-common-part { /* completions-common-part */ color: #000000; background-color: #ffffff; }
|
||||
.org-completions-first-difference { /* completions-first-difference */ font-weight: bold; }
|
||||
.org-constant { /* font-lock-constant-face */ color: #008b8b; }
|
||||
.org-diary { /* diary */ color: #ff0000; }
|
||||
.org-diff-context { /* diff-context */ color: #7f7f7f; }
|
||||
.org-diff-file-header { /* diff-file-header */ background-color: #b3b3b3; font-weight: bold; }
|
||||
.org-diff-function { /* diff-function */ background-color: #cccccc; }
|
||||
.org-diff-header { /* diff-header */ background-color: #cccccc; }
|
||||
.org-diff-hunk-header { /* diff-hunk-header */ background-color: #cccccc; }
|
||||
.org-diff-index { /* diff-index */ background-color: #b3b3b3; font-weight: bold; }
|
||||
.org-diff-nonexistent { /* diff-nonexistent */ background-color: #b3b3b3; font-weight: bold; }
|
||||
.org-diff-refine-change { /* diff-refine-change */ background-color: #d9d9d9; }
|
||||
.org-dired-directory { /* dired-directory */ color: #0000ff; }
|
||||
.org-dired-flagged { /* dired-flagged */ color: #ff0000; font-weight: bold; }
|
||||
.org-dired-header { /* dired-header */ color: #228b22; }
|
||||
.org-dired-ignored { /* dired-ignored */ color: #7f7f7f; }
|
||||
.org-dired-mark { /* dired-mark */ color: #008b8b; }
|
||||
.org-dired-marked { /* dired-marked */ color: #ff0000; font-weight: bold; }
|
||||
.org-dired-perm-write { /* dired-perm-write */ color: #b22222; }
|
||||
.org-dired-symlink { /* dired-symlink */ color: #a020f0; }
|
||||
.org-dired-warning { /* dired-warning */ color: #ff0000; font-weight: bold; }
|
||||
.org-doc { /* font-lock-doc-face */ color: #8b2252; }
|
||||
.org-escape-glyph { /* escape-glyph */ color: #a52a2a; }
|
||||
.org-file-name-shadow { /* file-name-shadow */ color: #7f7f7f; }
|
||||
.org-flyspell-duplicate { /* flyspell-duplicate */ color: #cdad00; font-weight: bold; text-decoration: underline; }
|
||||
.org-flyspell-incorrect { /* flyspell-incorrect */ color: #ff4500; font-weight: bold; text-decoration: underline; }
|
||||
.org-fringe { /* fringe */ background-color: #f2f2f2; }
|
||||
.org-function-name { /* font-lock-function-name-face */ color: teal; }
|
||||
.org-header-line { /* header-line */ color: #333333; background-color: #e5e5e5; }
|
||||
.org-help-argument-name { /* help-argument-name */ font-style: italic; }
|
||||
.org-highlight { /* highlight */ background-color: #b4eeb4; }
|
||||
.org-holiday { /* holiday */ background-color: #ffc0cb; }
|
||||
.org-isearch { /* isearch */ color: #b0e2ff; background-color: #cd00cd; }
|
||||
.org-isearch-fail { /* isearch-fail */ background-color: #ffc1c1; }
|
||||
.org-italic { /* italic */ font-style: italic; }
|
||||
.org-keyword { /* font-lock-keyword-face */ color: #0086b3; }
|
||||
.org-lazy-highlight { /* lazy-highlight */ background-color: #afeeee; }
|
||||
.org-link { /* link */ color: #0000ff; text-decoration: underline; }
|
||||
.org-link-visited { /* link-visited */ color: #8b008b; text-decoration: underline; }
|
||||
.org-log-edit-header { /* log-edit-header */ color: #a020f0; }
|
||||
.org-log-edit-summary { /* log-edit-summary */ color: #0000ff; }
|
||||
.org-log-edit-unknown-header { /* log-edit-unknown-header */ color: #b22222; }
|
||||
.org-match { /* match */ background-color: #ffff00; }
|
||||
.org-next-error { /* next-error */ background-color: #eedc82; }
|
||||
.org-nobreak-space { /* nobreak-space */ color: #a52a2a; text-decoration: underline; }
|
||||
.org-org-archived { /* org-archived */ color: #7f7f7f; }
|
||||
.org-org-block { /* org-block */ color: #7f7f7f; }
|
||||
.org-org-block-begin-line { /* org-block-begin-line */ color: #b22222; }
|
||||
.org-org-block-end-line { /* org-block-end-line */ color: #b22222; }
|
||||
.org-org-checkbox { /* org-checkbox */ font-weight: bold; }
|
||||
.org-org-checkbox-statistics-done { /* org-checkbox-statistics-done */ color: #228b22; font-weight: bold; }
|
||||
.org-org-checkbox-statistics-todo { /* org-checkbox-statistics-todo */ color: #ff0000; font-weight: bold; }
|
||||
.org-org-clock-overlay { /* org-clock-overlay */ background-color: #ffff00; }
|
||||
.org-org-code { /* org-code */ color: #7f7f7f; }
|
||||
.org-org-column { /* org-column */ background-color: #e5e5e5; }
|
||||
.org-org-column-title { /* org-column-title */ background-color: #e5e5e5; font-weight: bold; text-decoration: underline; }
|
||||
.org-org-date { /* org-date */ color: #a020f0; text-decoration: underline; }
|
||||
.org-org-document-info { /* org-document-info */ color: #191970; }
|
||||
.org-org-document-info-keyword { /* org-document-info-keyword */ color: #7f7f7f; }
|
||||
.org-org-document-title { /* org-document-title */ color: #191970; font-size: 144%; font-weight: bold; }
|
||||
.org-org-done { /* org-done */ color: #228b22; font-weight: bold; }
|
||||
.org-org-drawer { /* org-drawer */ color: #0000ff; }
|
||||
.org-org-ellipsis { /* org-ellipsis */ color: #b8860b; text-decoration: underline; }
|
||||
.org-org-footnote { /* org-footnote */ color: #a020f0; text-decoration: underline; }
|
||||
.org-org-formula { /* org-formula */ color: #b22222; }
|
||||
.org-org-headline-done { /* org-headline-done */ color: #bc8f8f; }
|
||||
.org-org-hide { /* org-hide */ color: #ffffff; }
|
||||
.org-org-latex-and-export-specials { /* org-latex-and-export-specials */ color: #8b4513; }
|
||||
.org-org-level-1 { /* org-level-1 */ color: #0000ff; }
|
||||
.org-org-level-2 { /* org-level-2 */ color: #a0522d; }
|
||||
.org-org-level-3 { /* org-level-3 */ color: #a020f0; }
|
||||
.org-org-level-4 { /* org-level-4 */ color: #b22222; }
|
||||
.org-org-level-5 { /* org-level-5 */ color: #228b22; }
|
||||
.org-org-level-6 { /* org-level-6 */ color: #008b8b; }
|
||||
.org-org-level-7 { /* org-level-7 */ color: #7a378b; }
|
||||
.org-org-level-8 { /* org-level-8 */ color: #8b2252; }
|
||||
.org-org-link { /* org-link */ color: #0000ff; text-decoration: underline; }
|
||||
.org-org-meta-line { /* org-meta-line */ color: #b22222; }
|
||||
.org-org-mode-line-clock { /* org-mode-line-clock */ color: #000000; background-color: #bfbfbf; }
|
||||
.org-org-mode-line-clock-overrun { /* org-mode-line-clock-overrun */ color: #000000; background-color: #ff0000; }
|
||||
.org-org-quote { /* org-quote */ color: #7f7f7f; }
|
||||
.org-org-scheduled { /* org-scheduled */ color: #006400; }
|
||||
.org-org-scheduled-previously { /* org-scheduled-previously */ color: #b22222; }
|
||||
.org-org-scheduled-today { /* org-scheduled-today */ color: #006400; }
|
||||
.org-org-sexp-date { /* org-sexp-date */ color: #a020f0; }
|
||||
.org-org-special-keyword { /* org-special-keyword */ color: #a020f0; }
|
||||
.org-org-table { /* org-table */ color: #0000ff; }
|
||||
.org-org-tag { /* org-tag */ font-weight: bold; }
|
||||
.org-org-target { /* org-target */ text-decoration: underline; }
|
||||
.org-org-time-grid { /* org-time-grid */ color: #b8860b; }
|
||||
.org-org-todo { /* org-todo */ color: #ff0000; font-weight: bold; }
|
||||
.org-org-upcoming-deadline { /* org-upcoming-deadline */ color: #b22222; }
|
||||
.org-org-verbatim { /* org-verbatim */ color: #7f7f7f; }
|
||||
.org-org-verse { /* org-verse */ color: #7f7f7f; }
|
||||
.org-org-warning { /* org-warning */ color: #ff0000; font-weight: bold; }
|
||||
.org-outline-1 { /* outline-1 */ color: #0000ff; }
|
||||
.org-outline-2 { /* outline-2 */ color: #a0522d; }
|
||||
.org-outline-3 { /* outline-3 */ color: #a020f0; }
|
||||
.org-outline-4 { /* outline-4 */ color: #b22222; }
|
||||
.org-outline-5 { /* outline-5 */ color: #228b22; }
|
||||
.org-outline-6 { /* outline-6 */ color: #008b8b; }
|
||||
.org-outline-7 { /* outline-7 */ color: #7a378b; }
|
||||
.org-outline-8 { /* outline-8 */ color: #8b2252; }
|
||||
.org-preprocessor { /* font-lock-preprocessor-face */ color: #7a378b; }
|
||||
.org-query-replace { /* query-replace */ color: #b0e2ff; background-color: #cd00cd; }
|
||||
.org-regexp-grouping-backslash { /* font-lock-regexp-grouping-backslash */ font-weight: bold; }
|
||||
.org-regexp-grouping-construct { /* font-lock-regexp-grouping-construct */ font-weight: bold; }
|
||||
.org-region { /* region */ background-color: #eedc82; }
|
||||
.org-secondary-selection { /* secondary-selection */ background-color: #ffff00; }
|
||||
.org-shadow { /* shadow */ color: #7f7f7f; }
|
||||
.org-show-paren-match { /* show-paren-match */ background-color: #40e0d0; }
|
||||
.org-show-paren-mismatch { /* show-paren-mismatch */ color: #ffffff; background-color: #a020f0; }
|
||||
.org-string { /* font-lock-string-face */ color: #dd1144; }
|
||||
.org-tool-bar { /* tool-bar */ color: #000000; background-color: #bfbfbf; }
|
||||
.org-tooltip { /* tooltip */ color: #000000; background-color: #ffffe0; }
|
||||
.org-trailing-whitespace { /* trailing-whitespace */ background-color: #ff0000; }
|
||||
.org-type { /* font-lock-type-face */ color: #228b22; }
|
||||
.org-underline { /* underline */ text-decoration: underline; }
|
||||
.org-variable-name { /* font-lock-variable-name-face */ color: teal; }
|
||||
.org-warning { /* font-lock-warning-face */ color: #ff0000; font-weight: bold; }
|
||||
.org-widget-button { /* widget-button */ font-weight: bold; }
|
||||
.org-widget-button-pressed { /* widget-button-pressed */ color: #ff0000; }
|
||||
.org-widget-documentation { /* widget-documentation */ color: #006400; }
|
||||
.org-widget-field { /* widget-field */ background-color: #d9d9d9; }
|
||||
.org-widget-inactive { /* widget-inactive */ color: #7f7f7f; }
|
||||
.org-widget-single-line-field { /* widget-single-line-field */ background-color: #d9d9d9; }
|
||||
|
||||
|
||||
pre {background-color:#FFFFFF;}
|
||||
pre span.org-builtin {color:#006FE0;font-weight:bold;}
|
||||
pre span.org-string {color:#008000;}
|
||||
pre span.org-doc {color:#008000;}
|
||||
pre span.org-keyword {color:#0000FF;}
|
||||
pre span.org-variable-name {color:#BA36A5;}
|
||||
pre span.org-function-name {color:#006699;}
|
||||
pre span.org-type {color:#6434A3;}
|
||||
pre span.org-preprocessor {color:#808080;font-weight:bold;}
|
||||
pre span.org-constant {color:#D0372D;}
|
||||
pre span.org-comment-delimiter {color:#8D8D84;}
|
||||
pre span.org-comment {color:#8D8D84;font-style:italic}
|
||||
pre span.org-outshine-level-1 {color:#8D8D84;font-style:italic}
|
||||
pre span.org-outshine-level-2 {color:#8D8D84;font-style:italic}
|
||||
pre span.org-outshine-level-3 {color:#8D8D84;font-style:italic}
|
||||
pre span.org-outshine-level-4 {color:#8D8D84;font-style:italic}
|
||||
pre span.org-outshine-level-5 {color:#8D8D84;font-style:italic}
|
||||
pre span.org-outshine-level-6 {color:#8D8D84;font-style:italic}
|
||||
pre span.org-outshine-level-7 {color:#8D8D84;font-style:italic}
|
||||
pre span.org-outshine-level-8 {color:#8D8D84;font-style:italic}
|
||||
pre span.org-outshine-level-9 {color:#8D8D84;font-style:italic}
|
||||
pre span.org-rainbow-delimiters-depth-1 {color:#707183;}
|
||||
pre span.org-rainbow-delimiters-depth-2 {color:#7388d6;}
|
||||
pre span.org-rainbow-delimiters-depth-3 {color:#909183;}
|
||||
pre span.org-rainbow-delimiters-depth-4 {color:#709870;}
|
||||
pre span.org-rainbow-delimiters-depth-5 {color:#907373;}
|
||||
pre span.org-rainbow-delimiters-depth-6 {color:#6276ba;}
|
||||
pre span.org-rainbow-delimiters-depth-7 {color:#858580;}
|
||||
pre span.org-rainbow-delimiters-depth-8 {color:#80a880;}
|
||||
pre span.org-rainbow-delimiters-depth-9 {color:#887070;}
|
||||
pre span.org-sh-quoted-exec {color:#FF1493;}
|
||||
pre span.org-diff-added {color:#008000;}
|
||||
pre span.org-diff-changed {color:#0000FF;}
|
||||
pre span.org-diff-header {color:#800000;}
|
||||
pre span.org-diff-hunk-header {color:#990099;}
|
||||
pre span.org-diff-none {color:#545454;}
|
||||
pre span.org-diff-removed {color:#A60000;}
|
||||
-1134
File diff suppressed because it is too large.
Load diff
+15
-19
@@ -3,17 +3,13 @@
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<!-- 2020-10-05 lun. 18:15 -->
|
||||
<!-- 2020-11-12 jeu. 10:41 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Robust and Optimal Sensor Fusion</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Thomas Dehaeze" />
|
||||
<link rel="stylesheet" type="text/css" href="css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="css/readtheorg.css"/>
|
||||
<script src="js/jquery.min.js"></script>
|
||||
<script src="js/bootstrap.min.js"></script>
|
||||
<script src="js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="js/readtheorg.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
@@ -31,27 +27,27 @@
|
||||
</p>
|
||||
</blockquote>
|
||||
|
||||
<div id="outline-container-orgf5cebab" class="outline-2">
|
||||
<h2 id="orgf5cebab">Paper (<a href="paper/paper.pdf">link</a>)</h2>
|
||||
<div class="outline-text-2" id="text-orgf5cebab">
|
||||
<div id="outline-container-orgbc87854" class="outline-2">
|
||||
<h2 id="orgbc87854">Paper (<a href="paper/paper.pdf">link</a>)</h2>
|
||||
<div class="outline-text-2" id="text-orgbc87854">
|
||||
<p>
|
||||
The paper has been created <a href="https://orgmode.org/">Org Mode</a> (generating <a href="https://www.latex-project.org/">LaTeX</a> code) under <a href="https://www.gnu.org/software/emacs/">Emacs</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orga3b4ff3" class="outline-2">
|
||||
<h2 id="orga3b4ff3">Matlab Scripts (<a href="matlab/index.html">link</a>)</h2>
|
||||
<div class="outline-text-2" id="text-orga3b4ff3">
|
||||
<div id="outline-container-orgcdc5736" class="outline-2">
|
||||
<h2 id="orgcdc5736">Matlab Scripts (<a href="matlab/index.html">link</a>)</h2>
|
||||
<div class="outline-text-2" id="text-orgcdc5736">
|
||||
<p>
|
||||
All the <a href="https://fr.mathworks.com/">Matlab</a> code that was used for the paper are accessible so that all the results are reproducible.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgfc34d9c" class="outline-2">
|
||||
<h2 id="orgfc34d9c">Tikz Figures (<a href="tikz/index.html">link</a>)</h2>
|
||||
<div class="outline-text-2" id="text-orgfc34d9c">
|
||||
<div id="outline-container-orge2a1477" class="outline-2">
|
||||
<h2 id="orge2a1477">Tikz Figures (<a href="tikz/index.html">link</a>)</h2>
|
||||
<div class="outline-text-2" id="text-orge2a1477">
|
||||
<p>
|
||||
All the figures for the paper have been generated using <a href="https://sourceforge.net/projects/pgf/">TikZ</a>.
|
||||
</p>
|
||||
@@ -59,9 +55,9 @@ All the figures for the paper have been generated using <a href="https://sourcef
|
||||
</div>
|
||||
|
||||
|
||||
<div id="outline-container-orge0bb111" class="outline-2">
|
||||
<h2 id="orge0bb111">Cite this paper</h2>
|
||||
<div class="outline-text-2" id="text-orge0bb111">
|
||||
<div id="outline-container-org9317a8a" class="outline-2">
|
||||
<h2 id="org9317a8a">Cite this paper</h2>
|
||||
<div class="outline-text-2" id="text-org9317a8a">
|
||||
<p>
|
||||
To cite this paper use the following bibtex code.
|
||||
</p>
|
||||
|
||||
@@ -3,17 +3,13 @@
|
||||
#+SUBTITLE: Dehaeze Thomas and Collette Christophe
|
||||
|
||||
#+HTML_LINK_HOME: ../index.html
|
||||
#+HTML_LINK_UP: ../index.html
|
||||
#+HTML_LINK_UP: ../index.html
|
||||
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
#+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
|
||||
#+OPTIONS: toc:nil
|
||||
#+OPTIONS: html-postamble:nil
|
||||
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="css/htmlize.css"/>
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="css/readtheorg.css"/>
|
||||
#+HTML_HEAD: <script src="js/jquery.min.js"></script>
|
||||
#+HTML_HEAD: <script src="js/bootstrap.min.js"></script>
|
||||
#+HTML_HEAD: <script src="js/jquery.stickytableheaders.min.js"></script>
|
||||
#+HTML_HEAD: <script src="js/readtheorg.js"></script>
|
||||
:END:
|
||||
|
||||
#+begin_quote
|
||||
|
||||
Vendored
-7
@@ -1,7 +0,0 @@
|
||||
/*!
|
||||
* Bootstrap v3.3.4 (http://getbootstrap.com)
|
||||
* Copyright 2011-2015 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
*/
|
||||
if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.4",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.4",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active"));a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.4",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parLine truncated
|
||||
var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.4",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=a(document.body).height();"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
|
||||
Vendored
-4
@@ -1,4 +0,0 @@
|
||||
/*! jQuery v2.1.3 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
|
||||
!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.3",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=hb(),z=hb(),A=hb(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),Line truncated
|
||||
},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=L.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=["Top","Right","Bottom","Left"],S=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement("div")),c=l.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join(".Line truncated
|
||||
},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Zb={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$b[b]||n.find.attr;$b[b]=function(a,b,d){var e,f;return d||(f=$b[b],$b[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$b[b]=f),e}});var _b=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_b.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ac=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ac," ").indexOf(b)>=0)return!0;return!1}});var bc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||Line truncated
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
!function(a,b){"use strict";function c(c,g){var h=this;h.$el=a(c),h.el=c,h.id=e++,h.$window=a(b),h.$document=a(document),h.$el.bind("destroyed",a.proxy(h.teardown,h)),h.$clonedHeader=null,h.$originalHeader=null,h.isSticky=!1,h.hasBeenSticky=!1,h.leftOffset=null,h.topOffset=null,h.init=function(){h.$el.each(function(){var b=a(this);b.css("padding",0),h.$originalHeader=a("thead:first",this),h.$clonedHeader=h.$originalHeader.clone(),b.trigger("clonedHeader."+d,[h.$clonedHeader]),h.$clonedHeader.addClass("tableFloatingHeader"),h.$clonedHeader.css("display","none"),h.$originalHeader.addClass("tableFloatingHeaderOriginal"),h.$originalHeader.after(h.$clonedHeader),h.$printStyle=a('<style type="text/css" media="print">.tableFloatingHeader{display:none !important;}.tableFloatingHeaderOriginal{position:static !important;}</style>'),a("head").append(h.$printStyle)}),h.setOptions(g),h.updateWidth(),h.toggleHeaders(),h.bind()},h.destroy=function(){h.$el.unbind("destroyed",h.teardown),h.teardown()},h.teardown=function(){h.isSticky&&h.$originalHeader.css("position","static"),a.removeData(h.el,"plugin_"+d),h.unbind(),h.$clonedHeader.remove(),h.$originalHeader.removeClass("tableFloatingHeaderOriginal"),h.$originalHeader.css("visibility","visible"),h.$printStyle.remove(),h.el=null,h.$el=null},h.bind=function(){h.$scrollableArea.on("scroll."+d,h.toggleHeaders),h.isWindowScrolling||(h.$window.on("scroll."+d+h.id,h.setPositionValues),h.$window.on("resize."+d+h.id,h.toggleHeaders)),h.$scrollableArea.on("resize."+d,h.toggleHeaders),h.$scrollableArea.on("resize."+d,h.updateWidth)},h.unbind=function(){h.$scrollableArea.off("."+d,h.toggleHeaders),h.isWindowScrolling||(h.$window.off("."+d+h.id,h.setPositionValues),h.$window.off("."+d+h.id,h.toggleHeaders)),h.$scrollableArea.off("."+d,h.updateWidth)},h.toggleHeaders=function(){h.$el&&h.$el.each(function(){var b,c=a(this),d=h.isWindowScrolling?isNaN(h.options.fixedOffset)?h.options.fixedOffset.outerHeight():h.options.fixedOffset:h.$scrollableArea.offset().top+(isNaN(h.options.fixedOffset)?0:h.options.fixedOffset),e=c.offset(),f=h.$scrollableArea.scrollTop()+d,g=h.$scrollableArea.scrollLeft(),i=h.isWindowScrolling?f>e.top:d>e.top,j=(h.isWindowScrolling?f:0)<e.top+c.height()-h.$clonedHeader.height()-(h.isWindowScrolling?0:d);i&&j?(b=e.left-g+h.options.leftOffset,h.$originalHeader.css({position:"fixed","margin-top":h.options.marginTop,left:b,"z-index":3}),h.leftOffset=b,h.topOffset=d,h.$clonedHeader.css("display",""),h.isSticky||(h.isSticky=!0,h.updateWidth()),h.setPositionValues()):h.isSticky&&(h.$originalHeader.css("position","static"),h.$clonedHeader.css("display","none"),h.isSticky=!1,h.resetWidth(a("td,th",h.$clonedHeader),a("td,th",h.$originalHeader)))})},h.setPositionValues=function(){var a=h.$window.scrollTop(),b=h.$window.scrollLeft();!h.isSticky||0>a||a+h.$window.height()>h.$document.height()||0>b||b+h.$window.width()>h.$document.width()||h.$originalHeader.css({top:h.topOffset-(h.isWindowScrolling?0:a),left:h.leftOffset-(h.isWindowScrolling?0:b)})},h.updateWidth=function(){if(h.isSticky){h.$originalHeaderCells||(h.$originalHeaderCells=a("th,td",h.$originalHeader)),h.$clonedHeaderCells||(h.$clonedHeaderCells=a("th,td",h.$clonedHeader));var b=h.getWidth(h.$clonedHeaderCells);h.setWidth(b,h.$clonedHeaderCells,h.$originalHeaderCells),h.$originalHeader.css("width",h.$clonedHeader.width())}},h.getWidth=function(c){var d=[];return c.each(function(c){var e,f=a(this);if("border-box"===f.css("box-sizing"))e=f[0].getBoundingClientRect().width;else{var g=a("th",h.$originalHeader);if("collapse"===g.css("border-collapse"))if(b.getComputedStyle)e=parseFloat(b.getComputedStyle(this,null).width);else{var i=parseFloat(f.css("padding-left")),j=parseFloat(f.css("padding-right")),k=parseFloat(f.css("border-width"));e=f.outerWidth()-i-j-k}else e=f.width()}d[c]=e}),d},h.setWidth=function(a,b,c){b.each(function(b){var d=a[b];c.eq(b).css({"min-width":d,"max-width":d})})},h.resetWidth=function(b,c){b.each(function(b){var d=a(this);c.eq(b).css({"min-width":d.css("min-width"),"max-width":d.css("max-width")})})},h.setOptions=function(c){h.options=a.extend({},f,c),h.$scrollableArea=a(h.options.scrollableArea),h.isWindowScrolling=h.$scrollableArea[0]===b},h.updateOptions=function(a){h.setOptions(a),h.unbind(),h.bind(),h.updateWidth(),h.toggleHeaders()},h.init()}var d="stickyTableHeaders",e=0,f={fixedOffset:0,leftOffset:0,marginTop:0,scrollableArea:b};a.fn[d]=function(b){return this.each(function(){var e=a.data(this,"plugin_"+d);e?"string"==typeof b?e[b].apply(e):e.updateOptions(b):"destroy"!==b&&a.data(this,"plugin_"+d,new c(this,b))})}}(jQuery,window);
|
||||
@@ -1,85 +0,0 @@
|
||||
$(function() {
|
||||
$('.note').before("<p class='admonition-title note'>Note</p>");
|
||||
$('.seealso').before("<p class='admonition-title seealso'>See also</p>");
|
||||
$('.warning').before("<p class='admonition-title warning'>Warning</p>");
|
||||
$('.caution').before("<p class='admonition-title caution'>Caution</p>");
|
||||
$('.attention').before("<p class='admonition-title attention'>Attention</p>");
|
||||
$('.tip').before("<p class='admonition-title tip'>Tip</p>");
|
||||
$('.important').before("<p class='admonition-title important'>Important</p>");
|
||||
$('.hint').before("<p class='admonition-title hint'>Hint</p>");
|
||||
$('.error').before("<p class='admonition-title error'>Error</p>");
|
||||
$('.danger').before("<p class='admonition-title danger'>Danger</p>");
|
||||
});
|
||||
|
||||
$( document ).ready(function() {
|
||||
|
||||
// Shift nav in mobile when clicking the menu.
|
||||
$(document).on('click', "[data-toggle='wy-nav-top']", function() {
|
||||
$("[data-toggle='wy-nav-shift']").toggleClass("shift");
|
||||
$("[data-toggle='rst-versions']").toggleClass("shift");
|
||||
});
|
||||
// Close menu when you click a link.
|
||||
$(document).on('click', ".wy-menu-vertical .current ul li a", function() {
|
||||
$("[data-toggle='wy-nav-shift']").removeClass("shift");
|
||||
$("[data-toggle='rst-versions']").toggleClass("shift");
|
||||
});
|
||||
$(document).on('click', "[data-toggle='rst-current-version']", function() {
|
||||
$("[data-toggle='rst-versions']").toggleClass("shift-up");
|
||||
});
|
||||
// Make tables responsive
|
||||
$("table.docutils:not(.field-list)").wrap("<div class='wy-table-responsive'></div>");
|
||||
});
|
||||
|
||||
$( document ).ready(function() {
|
||||
$('#text-table-of-contents ul').first().addClass('nav');
|
||||
// ScrollSpy also requires that we use
|
||||
// a Bootstrap nav component.
|
||||
$('body').scrollspy({target: '#text-table-of-contents'});
|
||||
|
||||
// add sticky table headers
|
||||
$('table').stickyTableHeaders();
|
||||
|
||||
// set the height of tableOfContents
|
||||
var $postamble = $('#postamble');
|
||||
var $tableOfContents = $('#table-of-contents');
|
||||
$tableOfContents.css({paddingBottom: $postamble.outerHeight()});
|
||||
|
||||
// add TOC button
|
||||
var toggleSidebar = $('<div id="toggle-sidebar"><a href="#table-of-contents"><h2>Table of Contents</h2></a></div>');
|
||||
$('#content').prepend(toggleSidebar);
|
||||
|
||||
// add close button when sidebar showed in mobile screen
|
||||
var closeBtn = $('<a class="close-sidebar" href="#">Close</a>');
|
||||
var tocTitle = $('#table-of-contents').find('h2');
|
||||
tocTitle.append(closeBtn);
|
||||
});
|
||||
|
||||
window.SphinxRtdTheme = (function (jquery) {
|
||||
var stickyNav = (function () {
|
||||
var navBar,
|
||||
win,
|
||||
stickyNavCssClass = 'stickynav',
|
||||
applyStickNav = function () {
|
||||
if (navBar.height() <= win.height()) {
|
||||
navBar.addClass(stickyNavCssClass);
|
||||
} else {
|
||||
navBar.removeClass(stickyNavCssClass);
|
||||
}
|
||||
},
|
||||
enable = function () {
|
||||
applyStickNav();
|
||||
win.on('resize', applyStickNav);
|
||||
},
|
||||
init = function () {
|
||||
navBar = jquery('nav.wy-nav-side:first');
|
||||
win = jquery(window);
|
||||
};
|
||||
jquery(init);
|
||||
return {
|
||||
enable : enable
|
||||
};
|
||||
}());
|
||||
return {
|
||||
StickyNav : stickyNav
|
||||
};
|
||||
}($));
|
||||
@@ -1,2 +0,0 @@
|
||||
MathJax.Extension["TeX/siunitx"]={version:"0.1.0"},MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){!function(){var a,b,c,d,e,f,g,h;a=function(){var a={},b=MathJax.InputJax.TeX,c=a.ValidationError=MathJax.Object.Subclass({Init:function(a,b,c,d){this._errormsg='ValidationError: Error validating "'+b+'" of "'+a.constructor+'" (a "'+c+'") to "'+d+'": ';for(var e=4;e<arguments.length;++e)this._errormsg+=arguments[e].toString();console.log(this._errormsg)},toString:function(){return this._errormsg}}),d=a.ValidationBase=MathJax.Object.Subclass({PropertyDescriptor:function(a,b){var c=this;return{get:function(){return c.Get(this,b)},set:function(a){c.Set(this,b,a)}}},Get:function(a,b){var c=a._values[b];return void 0!==c?c:this._default},Set:function(a,b,c){a._values[b]=this.Validate(a,b,c)},Validate:function(a,b,c){return c}}),e=a.Choice=d.Subclass({Init:function(){this._default=arguments[0];for(var a={},b=0;b<arguments.length;b++)a[arguments[b]]=!0;this._choices=a},Validate:function(a,b,d){if(!this._choices.hasOwnProperty(d))throw c(a,b,this,d,'must be one of ["'+Object.getOwnPropertyNames(this._choices).join('", "')+'"]');return d}}),f=(a.SwitchChoice=e.Subclass({Init:function(){this._switchchoice=arguments[1],e.prototype.Init.apply(this,arguments)},Validate:function(a,b,c){return void 0===c&&(c=this._switchchoice),e.prototype.Validate.call(this,a,b,c)}}),a.Integer=d.Subclass({Init:function(a){void 0===a&&(a=0),this._default=a},Validate:function(a,b,d){if(d=parseInt(d),!Number.isInteger(d))throw c(a,b,this,d,"must be an integer");return d}}),a.Literal=d.Subclass({Init:function(a){this._default=a},Validate:function(a,b,c){return c}}));a.TeXParsedLiteral=f.Subclass({Init:function(a){this._default=a},Get:function(a,c){return val=arguments.callee.SUPER.Get.call(this,a,c),b.Parse("\\text{"+val+"}").mml()}}),a.Math=f.Subclass({}),a.Length=d.Subclass({Init:function(a){this._default=a},Validate:function(a,b,c){return c}}),a.Macro=d.Subclass({Init:function(a){this._default=a},Validate:function(a,b,c){return c}}),a.Switch=d.Subclass({Init:function(a){void 0===a&&(a=!1),this._default=a},Validate:function(a,b,d){if(void 0===d&&(d=!0),("string"==typeof d||d instanceof String)&&(d=d.toLowerCase(),"true"==d?d=!0:"false"==d&&(d=!1)),d!==!0&&d!==!1)throw c(a,b,this,d,"must be a boolean");return d}}),a.ConfigData=MathJax.Object.Subclass({Init:function(a){this._values={},void 0!=a&&this.SetMany(a)},Set:function(a,b){if(void 0===this._options[a])throw TypeError(this.constructor+' has no attribute named "'+a+'"');this[a]=b},SetMany:function(a){for(var b in a)this.Set(b,a[b])},Derived:function(a){var b=this.constructor();return b._values.__proto__=this._values.__proto__,void 0!=a&&b.SetMany(a),b},listSettings:function(a,b){void 0===b&&(b=",\n");var c=[];for(var d in this._options)a&&!this._values.hasOwnProperty(d)||c.push(d+" = "+this[d]);return c.join(b)}},{Define:function(a){var b=this.Subclass({_options:a});b.ParseOptions=this.ParseOptions;for(var c in a)Object.defineProperty(b.prototype,c,a[c].PropertyDescriptor(b,c));return b},ParseOptions:function(a){var c={};if(a=a.trim(),!a)return this(c);for(var d=a.split(","),e=0,f=d.length;e<f;++e){var g=d[e].split("="),h=g[0].trim();if(h||b.Error('Empty key in "'+a+'"'),g.length<2)c[h]=void 0;else{for(var i=g.slice(1).join("="),j=0,k=-1;;){for(;;){var l=k+1,m=i.indexOf("{",l),n=i.indexOf("}",l);if(k=n>=0&&(n<m||m==-1)?n:m,k<0)break;k>0&&"\\"==i[k-1]||("}"==i[k]?(j--,j<0&&b.Error('Too many closing braces in "'+a+'"')):j++)}if(!j)break;k=i.length,e++,e>=f&&b.Error('Not enough closing braces in "'+a+'"'),i+=","+d[e]}i=i.trim(),"{"==i[0]&&"}"==i[i.length-1]&&(i=i.slice(1,-1)),c[h]=i}}return this(c)}});return a}(),b=function(a){var b=a.ConfigData,c=a.Switch,d=a.SwitchChoice,e=a.Choice,f=a.Literal,g=a.Macro,h=a.Integer,i=a.Math,j=a.TeXParsedLiteral,k=b.Define({"detect-display-math":c(),"detect-family":c(),"detect-inline-family":e("text","math"),"detect-inline-weight":e("text","math"),"detect-mode":c(),"detect-shape":c(),"detect-weight":c(),color:f(""),"math-rm":g("\\mathrm"),"math-sf":g("\\mathsf"),"math-tt":g("\\mathtt"),mode:e("math","text"),"text-rm":g("\\rmfamily"),"text-sf":g("\\sffamily"),"text-tt":g("\\ttfamily"),"unit-color":f(""),"unit-math-rm":g("\\mathrm"),"unit-math-sf":g("\\mathsf"),"unit-math-tt":g("\\mathtt"),"unit-mode":e("math","text"),"unit-text-rm":g("\\rmfamily"),"unit-text-sf":g("\\sffamily"),"unit-text-tt":g("\\ttfamily"),"number-color":f(""),"number-math-rm":g("\\mathrm"),"number-math-sf":g("\\mathsf"),"number-math-tt":g("\\mathtt"),"number-mode":e("math","text"),"number-text-rm":g("\\rmfamily"),"number-text-sf":g("\\sffamily"),"number-text-tt":g("\\ttfamily"),"input-close-uncertainty":f(")"),"input-comparators":f("<=>\\approx\\ge\\geq\\gg\\le\\leq\\ll\\sim"),"input-complex-roots":f("ij"),"input-decimal-markers":f(",."),"input-digits":f("0123456789"),"input-exponent-markers":f("dDeE"),"input-ignore":f(""),"input-open-uncertainty":f("("),"input-protect-tokens":Line truncated
|
||||
this.Push(h(e,c,this.stack.env).mml())}};return e.Definitions.Add({macros:{sisetup:"SIunitx",si:"SIunitx",SI:"SIunitx",SIlist:"SIunitx",SIrange:"SIunitx",num:"SIunitx",ang:"SIunitx",numlist:"SIunitx",numrange:"SIunitx"}},null,!0),e.Parse.Augment({SIunitx:function(a){j[a.slice(1)].call(this,a)}}),MathJax.Hub.Startup.signal.Post("TeX siunitx Ready"),j}(b,c,d,g)}()}),MathJax.Ajax.loadComplete("[Contrib]/siunitx/siunitx.js");
|
||||
+190
-195
@@ -3,18 +3,13 @@
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<!-- 2020-10-05 lun. 15:08 -->
|
||||
<!-- 2020-11-12 jeu. 10:42 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Robust and Optimal Sensor Fusion - Matlab Computation</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Thomas Dehaeze" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="../css/readtheorg.css"/>
|
||||
<script src="../js/jquery.min.js"></script>
|
||||
<script src="../js/bootstrap.min.js"></script>
|
||||
<script src="../js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="../js/readtheorg.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://cdn.rawgit.com/dreampulse/computer-modern-web-font/master/fonts.css">
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
<script>MathJax = {
|
||||
tex: {
|
||||
tags: 'ams',
|
||||
@@ -26,59 +21,59 @@
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
<a accesskey="h" href="../index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
<a accesskey="H" href="../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">Robust and Optimal Sensor Fusion - Matlab Computation</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#org0a492b7">1. Sensor Description</a>
|
||||
<li><a href="#orgb558a2f">1. Sensor Description</a>
|
||||
<ul>
|
||||
<li><a href="#org9575585">1.1. Sensor Dynamics</a></li>
|
||||
<li><a href="#orgec8c81d">1.2. Sensor Model Uncertainty</a></li>
|
||||
<li><a href="#org81d9a34">1.3. Sensor Noise</a></li>
|
||||
<li><a href="#org4e23f6c">1.4. Save Model</a></li>
|
||||
<li><a href="#org2e756d8">1.1. Sensor Dynamics</a></li>
|
||||
<li><a href="#orgf266a4b">1.2. Sensor Model Uncertainty</a></li>
|
||||
<li><a href="#orgb768f02">1.3. Sensor Noise</a></li>
|
||||
<li><a href="#org426c21e">1.4. Save Model</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org2cab1a2">2. Introduction to Sensor Fusion</a>
|
||||
<li><a href="#orgce0ac83">2. Introduction to Sensor Fusion</a>
|
||||
<ul>
|
||||
<li><a href="#org0cbc92d">2.1. Sensor Fusion Architecture</a></li>
|
||||
<li><a href="#orge9e0bd4">2.2. Super Sensor Noise</a></li>
|
||||
<li><a href="#orgefb4347">2.3. Super Sensor Dynamical Uncertainty</a></li>
|
||||
<li><a href="#orgbb36114">2.1. Sensor Fusion Architecture</a></li>
|
||||
<li><a href="#org3a4f4b8">2.2. Super Sensor Noise</a></li>
|
||||
<li><a href="#org3f0594e">2.3. Super Sensor Dynamical Uncertainty</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org5896b60">3. Optimal Super Sensor Noise: \(\mathcal{H}_2\) Synthesis</a>
|
||||
<li><a href="#org096192f">3. Optimal Super Sensor Noise: \(\mathcal{H}_2\) Synthesis</a>
|
||||
<ul>
|
||||
<li><a href="#orgf5a8a84">3.1. \(\mathcal{H}_2\) Synthesis</a></li>
|
||||
<li><a href="#org72159df">3.2. Super Sensor Noise</a></li>
|
||||
<li><a href="#org8ffba19">3.3. Discrepancy between sensor dynamics and model</a></li>
|
||||
<li><a href="#org9188eae">3.1. \(\mathcal{H}_2\) Synthesis</a></li>
|
||||
<li><a href="#org6d6d909">3.2. Super Sensor Noise</a></li>
|
||||
<li><a href="#org850d99e">3.3. Discrepancy between sensor dynamics and model</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org26ea7b1">4. Robust Sensor Fusion: \(\mathcal{H}_\infty\) Synthesis</a>
|
||||
<li><a href="#org6d1270a">4. Robust Sensor Fusion: \(\mathcal{H}_\infty\) Synthesis</a>
|
||||
<ul>
|
||||
<li><a href="#org8dfd9d2">4.1. Weighting Function used to bound the super sensor uncertainty</a></li>
|
||||
<li><a href="#org7422ade">4.2. \(\mathcal{H}_\infty\) Synthesis</a></li>
|
||||
<li><a href="#orga0267c6">4.3. Super sensor uncertainty</a></li>
|
||||
<li><a href="#org979fede">4.4. Super sensor noise</a></li>
|
||||
<li><a href="#orgda33992">4.5. Conclusion</a></li>
|
||||
<li><a href="#orgc5a0221">4.1. Weighting Function used to bound the super sensor uncertainty</a></li>
|
||||
<li><a href="#org334f826">4.2. \(\mathcal{H}_\infty\) Synthesis</a></li>
|
||||
<li><a href="#org211e432">4.3. Super sensor uncertainty</a></li>
|
||||
<li><a href="#org7672e0e">4.4. Super sensor noise</a></li>
|
||||
<li><a href="#orgdcb47cf">4.5. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org15afe90">5. Optimal and Robust Sensor Fusion: Mixed \(\mathcal{H}_2/\mathcal{H}_\infty\) Synthesis</a>
|
||||
<li><a href="#org49a7cc2">5. Optimal and Robust Sensor Fusion: Mixed \(\mathcal{H}_2/\mathcal{H}_\infty\) Synthesis</a>
|
||||
<ul>
|
||||
<li><a href="#org0f81a91">5.1. Mixed \(\mathcal{H}_2\) / \(\mathcal{H}_\infty\) Synthesis</a></li>
|
||||
<li><a href="#org417aabd">5.2. Obtained Super Sensor’s noise</a></li>
|
||||
<li><a href="#org2dce888">5.3. Obtained Super Sensor’s Uncertainty</a></li>
|
||||
<li><a href="#org47da78c">5.4. Conclusion</a></li>
|
||||
<li><a href="#org7ed8ed7">5.1. Mixed \(\mathcal{H}_2\) / \(\mathcal{H}_\infty\) Synthesis</a></li>
|
||||
<li><a href="#orgfb839cf">5.2. Obtained Super Sensor’s noise</a></li>
|
||||
<li><a href="#orgb8596ac">5.3. Obtained Super Sensor’s Uncertainty</a></li>
|
||||
<li><a href="#orgfcfa8a2">5.4. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org0afe5ef">6. Matlab Functions</a>
|
||||
<li><a href="#orgf267700">6. Matlab Functions</a>
|
||||
<ul>
|
||||
<li><a href="#orge81e522">6.1. <code>createWeight</code></a></li>
|
||||
<li><a href="#org37ec2b4">6.2. <code>plotMagUncertainty</code></a></li>
|
||||
<li><a href="#org9f73572">6.3. <code>plotPhaseUncertainty</code></a></li>
|
||||
<li><a href="#org005db82">6.1. <code>createWeight</code></a></li>
|
||||
<li><a href="#org816b32a">6.2. <code>plotMagUncertainty</code></a></li>
|
||||
<li><a href="#orgddb3773">6.3. <code>plotPhaseUncertainty</code></a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -89,27 +84,27 @@
|
||||
This document is arranged as follows:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>Section <a href="#orgee25d07">1</a>: the sensors are described (dynamics, uncertainty, noise)</li>
|
||||
<li>Section <a href="#orga64daad">2</a>: the sensor fusion architecture is described and the super sensor noise and dynamical uncertainty are derived</li>
|
||||
<li>Section <a href="#orgdd6b9ce">3</a>: the \(\mathcal{H}_2\) synthesis is used to design complementary filters such that the RMS value of the super sensor’s noise is minimized</li>
|
||||
<li>Section <a href="#org5d93f37">4</a>: the \(\mathcal{H}_\infty\) synthesis is used to design complementary filters such that the super sensor’s uncertainty is bonded to acceptable values</li>
|
||||
<li>Section <a href="#org9f98c16">5</a>: the mixed \(\mathcal{H}_2/\mathcal{H}_\infty\) synthesis is used to both limit the super sensor’s uncertainty and to lower the RMS value of the super sensor’s noise</li>
|
||||
<li>Section <a href="#orgf41dc8d">6</a>: Matlab functions used for the analysis are described</li>
|
||||
<li>Section <a href="#org3cd5225">1</a>: the sensors are described (dynamics, uncertainty, noise)</li>
|
||||
<li>Section <a href="#orge87db28">2</a>: the sensor fusion architecture is described and the super sensor noise and dynamical uncertainty are derived</li>
|
||||
<li>Section <a href="#orgbaf748a">3</a>: the \(\mathcal{H}_2\) synthesis is used to design complementary filters such that the RMS value of the super sensor’s noise is minimized</li>
|
||||
<li>Section <a href="#orgea66128">4</a>: the \(\mathcal{H}_\infty\) synthesis is used to design complementary filters such that the super sensor’s uncertainty is bonded to acceptable values</li>
|
||||
<li>Section <a href="#org2aeafb3">5</a>: the mixed \(\mathcal{H}_2/\mathcal{H}_\infty\) synthesis is used to both limit the super sensor’s uncertainty and to lower the RMS value of the super sensor’s noise</li>
|
||||
<li>Section <a href="#org50a28ec">6</a>: Matlab functions used for the analysis are described</li>
|
||||
</ul>
|
||||
|
||||
<div id="outline-container-org0a492b7" class="outline-2">
|
||||
<h2 id="org0a492b7"><span class="section-number-2">1</span> Sensor Description</h2>
|
||||
<div id="outline-container-orgb558a2f" class="outline-2">
|
||||
<h2 id="orgb558a2f"><span class="section-number-2">1</span> Sensor Description</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
<a id="orgee25d07"></a>
|
||||
<a id="org3cd5225"></a>
|
||||
</p>
|
||||
<p>
|
||||
In Figure <a href="#org35e2340">1</a> is shown a schematic of a sensor model that is used in the following study.
|
||||
In Figure <a href="#orgd79f98f">1</a> is shown a schematic of a sensor model that is used in the following study.
|
||||
In this example, the measured quantity \(x\) is the velocity of an object.
|
||||
</p>
|
||||
|
||||
<table id="org2fe6194" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<caption class="t-above"><span class="table-number">Table 1:</span> Description of signals in Figure <a href="#org35e2340">1</a></caption>
|
||||
<table id="org5aafbb9" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<caption class="t-above"><span class="table-number">Table 1:</span> Description of signals in Figure <a href="#orgd79f98f">1</a></caption>
|
||||
|
||||
<colgroup>
|
||||
<col class="org-left" />
|
||||
@@ -176,8 +171,8 @@ In this example, the measured quantity \(x\) is the velocity of an object.
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table id="org281ecb3" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<caption class="t-above"><span class="table-number">Table 2:</span> Description of Systems in Figure <a href="#org35e2340">1</a></caption>
|
||||
<table id="org3780b2b" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<caption class="t-above"><span class="table-number">Table 2:</span> Description of Systems in Figure <a href="#orgd79f98f">1</a></caption>
|
||||
|
||||
<colgroup>
|
||||
<col class="org-left" />
|
||||
@@ -221,18 +216,18 @@ In this example, the measured quantity \(x\) is the velocity of an object.
|
||||
</table>
|
||||
|
||||
|
||||
<div id="org35e2340" class="figure">
|
||||
<div id="orgd79f98f" class="figure">
|
||||
<p><img src="figs-paper/sensor_model_noise_uncertainty.png" alt="sensor_model_noise_uncertainty.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Sensor Model</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org9575585" class="outline-3">
|
||||
<h3 id="org9575585"><span class="section-number-3">1.1</span> Sensor Dynamics</h3>
|
||||
<div id="outline-container-org2e756d8" class="outline-3">
|
||||
<h3 id="org2e756d8"><span class="section-number-3">1.1</span> Sensor Dynamics</h3>
|
||||
<div class="outline-text-3" id="text-1-1">
|
||||
<p>
|
||||
<a id="org52415aa"></a>
|
||||
<a id="org01c4832"></a>
|
||||
Let’s consider two sensors measuring the velocity of an object.
|
||||
</p>
|
||||
|
||||
@@ -263,14 +258,14 @@ G2 = g_pos<span class="org-type">/</span>s<span class="org-type">/</span>(1 <spa
|
||||
|
||||
<p>
|
||||
These nominal dynamics are also taken as the model of the sensor dynamics.
|
||||
The true sensor dynamics has some uncertainty associated to it and described in section <a href="#orgf04439d">1.2</a>.
|
||||
The true sensor dynamics has some uncertainty associated to it and described in section <a href="#org3943238">1.2</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Both sensor dynamics in \([\frac{V}{m/s}]\) are shown in Figure <a href="#org2d1ef0b">2</a>.
|
||||
Both sensor dynamics in \([\frac{V}{m/s}]\) are shown in Figure <a href="#org355b3fc">2</a>.
|
||||
</p>
|
||||
|
||||
<div id="org2d1ef0b" class="figure">
|
||||
<div id="org355b3fc" class="figure">
|
||||
<p><img src="figs/sensors_nominal_dynamics.png" alt="sensors_nominal_dynamics.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>Sensor nominal dynamics from the velocity of the object to the output voltage</p>
|
||||
@@ -278,12 +273,12 @@ Both sensor dynamics in \([\frac{V}{m/s}]\) are shown in Figure <a href="#org2d1
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgec8c81d" class="outline-3">
|
||||
<h3 id="orgec8c81d"><span class="section-number-3">1.2</span> Sensor Model Uncertainty</h3>
|
||||
<div id="outline-container-orgf266a4b" class="outline-3">
|
||||
<h3 id="orgf266a4b"><span class="section-number-3">1.2</span> Sensor Model Uncertainty</h3>
|
||||
<div class="outline-text-3" id="text-1-2">
|
||||
<p>
|
||||
<a id="orgf04439d"></a>
|
||||
The uncertainty on the sensor dynamics is described by multiplicative uncertainty (Figure <a href="#org35e2340">1</a>).
|
||||
<a id="org3943238"></a>
|
||||
The uncertainty on the sensor dynamics is described by multiplicative uncertainty (Figure <a href="#orgd79f98f">1</a>).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@@ -295,10 +290,10 @@ The true sensor dynamics \(G_i(s)\) is then described by \eqref{eq:sensor_dynami
|
||||
\end{equation}
|
||||
|
||||
<p>
|
||||
The weights \(W_i(s)\) representing the dynamical uncertainty are defined below and their magnitude is shown in Figure <a href="#org557e062">3</a>.
|
||||
The weights \(W_i(s)\) representing the dynamical uncertainty are defined below and their magnitude is shown in Figure <a href="#org2530a6e">3</a>.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">W1 = createWeight(<span class="org-string">'n'</span>, 2, <span class="org-string">'w0'</span>, 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>3, <span class="org-string">'G0'</span>, 2, <span class="org-string">'G1'</span>, 0.1, <span class="org-string">'Gc'</span>, 1) <span class="org-type">*</span> ...
|
||||
<pre class="src src-matlab">W1 = createWeight(<span class="org-string">'n'</span>, 2, <span class="org-string">'w0'</span>, 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>3, <span class="org-string">'G0'</span>, 2, <span class="org-string">'G1'</span>, 0.1, <span class="org-string">'Gc'</span>, 1) <span class="org-type">*</span> ...
|
||||
createWeight(<span class="org-string">'n'</span>, 2, <span class="org-string">'w0'</span>, 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>1e3, <span class="org-string">'G0'</span>, 1, <span class="org-string">'G1'</span>, 4<span class="org-type">/</span>0.1, <span class="org-string">'Gc'</span>, 1<span class="org-type">/</span>0.1);
|
||||
|
||||
W2 = createWeight(<span class="org-string">'n'</span>, 2, <span class="org-string">'w0'</span>, 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>1e2, <span class="org-string">'G0'</span>, 0.05, <span class="org-string">'G1'</span>, 4, <span class="org-string">'Gc'</span>, 1);
|
||||
@@ -306,18 +301,18 @@ W2 = createWeight(<span class="org-string">'n'</span>, 2, <span class="org-strin
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The bode plot of the sensors nominal dynamics as well as their defined dynamical spread are shown in Figure <a href="#orgc218675">4</a>.
|
||||
The bode plot of the sensors nominal dynamics as well as their defined dynamical spread are shown in Figure <a href="#org415740c">4</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org557e062" class="figure">
|
||||
<div id="org2530a6e" class="figure">
|
||||
<p><img src="figs/sensors_uncertainty_weights.png" alt="sensors_uncertainty_weights.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>Magnitude of the multiplicative uncertainty weights \(|W_i(j\omega)|\)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgc218675" class="figure">
|
||||
<div id="org415740c" class="figure">
|
||||
<p><img src="figs/sensors_nominal_dynamics_and_uncertainty.png" alt="sensors_nominal_dynamics_and_uncertainty.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 4: </span>Nominal Sensor Dynamics \(\hat{G}_i\) (solid lines) as well as the spread of the dynamical uncertainty (background color)</p>
|
||||
@@ -325,12 +320,12 @@ The bode plot of the sensors nominal dynamics as well as their defined dynamical
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org81d9a34" class="outline-3">
|
||||
<h3 id="org81d9a34"><span class="section-number-3">1.3</span> Sensor Noise</h3>
|
||||
<div id="outline-container-orgb768f02" class="outline-3">
|
||||
<h3 id="orgb768f02"><span class="section-number-3">1.3</span> Sensor Noise</h3>
|
||||
<div class="outline-text-3" id="text-1-3">
|
||||
<p>
|
||||
<a id="org71b587e"></a>
|
||||
The noise of the sensors \(n_i\) are modelled by shaping a white noise with unitary PSD \(\tilde{n}_i\) \eqref{eq:unitary_noise_psd} with a LTI transfer function \(N_i(s)\) (Figure <a href="#org35e2340">1</a>).
|
||||
<a id="orgfd557c8"></a>
|
||||
The noise of the sensors \(n_i\) are modelled by shaping a white noise with unitary PSD \(\tilde{n}_i\) \eqref{eq:unitary_noise_psd} with a LTI transfer function \(N_i(s)\) (Figure <a href="#orgd79f98f">1</a>).
|
||||
</p>
|
||||
\begin{equation}
|
||||
\Phi_{\tilde{n}_i}(\omega) = 1 \label{eq:unitary_noise_psd}
|
||||
@@ -344,7 +339,7 @@ The Power Spectral Density of the sensor noise \(\Phi_{n_i}(\omega)\) is then co
|
||||
\end{equation}
|
||||
|
||||
<p>
|
||||
The weights \(N_1\) and \(N_2\) representing the amplitude spectral density of the sensor noises are defined below and shown in Figure <a href="#org51f9788">5</a>.
|
||||
The weights \(N_1\) and \(N_2\) representing the amplitude spectral density of the sensor noises are defined below and shown in Figure <a href="#org5e2cd13">5</a>.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">omegac = 0.15<span class="org-type">*</span>2<span class="org-type">*</span><span class="org-constant">pi</span>; G0 = 1e<span class="org-type">-</span>1; Ginf = 1e<span class="org-type">-</span>6;
|
||||
@@ -356,7 +351,7 @@ N2 = (Ginf<span class="org-type">*</span>s<span class="org-type">/</span>omegac
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org51f9788" class="figure">
|
||||
<div id="org5e2cd13" class="figure">
|
||||
<p><img src="figs/sensors_noise.png" alt="sensors_noise.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 5: </span>Amplitude spectral density of the sensors \(\sqrt{\Phi_{n_i}(\omega)} = |N_i(j\omega)|\)</p>
|
||||
@@ -364,8 +359,8 @@ N2 = (Ginf<span class="org-type">*</span>s<span class="org-type">/</span>omegac
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org4e23f6c" class="outline-3">
|
||||
<h3 id="org4e23f6c"><span class="section-number-3">1.4</span> Save Model</h3>
|
||||
<div id="outline-container-org426c21e" class="outline-3">
|
||||
<h3 id="org426c21e"><span class="section-number-3">1.4</span> Save Model</h3>
|
||||
<div class="outline-text-3" id="text-1-4">
|
||||
<p>
|
||||
All the dynamical systems representing the sensors are saved for further use.
|
||||
@@ -379,27 +374,27 @@ All the dynamical systems representing the sensors are saved for further use.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org2cab1a2" class="outline-2">
|
||||
<h2 id="org2cab1a2"><span class="section-number-2">2</span> Introduction to Sensor Fusion</h2>
|
||||
<div id="outline-container-orgce0ac83" class="outline-2">
|
||||
<h2 id="orgce0ac83"><span class="section-number-2">2</span> Introduction to Sensor Fusion</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<p>
|
||||
<a id="orga64daad"></a>
|
||||
<a id="orge87db28"></a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org0cbc92d" class="outline-3">
|
||||
<h3 id="org0cbc92d"><span class="section-number-3">2.1</span> Sensor Fusion Architecture</h3>
|
||||
<div id="outline-container-orgbb36114" class="outline-3">
|
||||
<h3 id="orgbb36114"><span class="section-number-3">2.1</span> Sensor Fusion Architecture</h3>
|
||||
<div class="outline-text-3" id="text-2-1">
|
||||
<p>
|
||||
<a id="org31e00a0"></a>
|
||||
<a id="org80d2a51"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The two sensors presented in Section <a href="#orgee25d07">1</a> are now merged together using complementary filters \(H_1(s)\) and \(H_2(s)\) to form a super sensor (Figure <a href="#org48a16fd">6</a>).
|
||||
The two sensors presented in Section <a href="#org3cd5225">1</a> are now merged together using complementary filters \(H_1(s)\) and \(H_2(s)\) to form a super sensor (Figure <a href="#orgffed4ec">6</a>).
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org48a16fd" class="figure">
|
||||
<div id="orgffed4ec" class="figure">
|
||||
<p><img src="figs-paper/sensor_fusion_noise_arch.png" alt="sensor_fusion_noise_arch.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 6: </span>Sensor Fusion Architecture</p>
|
||||
@@ -423,11 +418,11 @@ The super sensor estimate \(\hat{x}\) is given by \eqref{eq:super_sensor_estimat
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge9e0bd4" class="outline-3">
|
||||
<h3 id="orge9e0bd4"><span class="section-number-3">2.2</span> Super Sensor Noise</h3>
|
||||
<div id="outline-container-org3a4f4b8" class="outline-3">
|
||||
<h3 id="org3a4f4b8"><span class="section-number-3">2.2</span> Super Sensor Noise</h3>
|
||||
<div class="outline-text-3" id="text-2-2">
|
||||
<p>
|
||||
<a id="orgff055a3"></a>
|
||||
<a id="org3e73362"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@@ -458,15 +453,15 @@ And the Root Mean Square (RMS) value of the super sensor noise \(\sigma_n\) is g
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgefb4347" class="outline-3">
|
||||
<h3 id="orgefb4347"><span class="section-number-3">2.3</span> Super Sensor Dynamical Uncertainty</h3>
|
||||
<div id="outline-container-org3f0594e" class="outline-3">
|
||||
<h3 id="org3f0594e"><span class="section-number-3">2.3</span> Super Sensor Dynamical Uncertainty</h3>
|
||||
<div class="outline-text-3" id="text-2-3">
|
||||
<p>
|
||||
<a id="org859b213"></a>
|
||||
<a id="orgd73f82f"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
If we consider some dynamical uncertainty (the true system dynamics \(G_i\) not being perfectly equal to our model \(\hat{G}_i\)) that we model by the use of multiplicative uncertainty (Figure <a href="#org54538d7">7</a>), the super sensor dynamics is then equals to:
|
||||
If we consider some dynamical uncertainty (the true system dynamics \(G_i\) not being perfectly equal to our model \(\hat{G}_i\)) that we model by the use of multiplicative uncertainty (Figure <a href="#org05e7617">7</a>), the super sensor dynamics is then equals to:
|
||||
</p>
|
||||
|
||||
\begin{equation}
|
||||
@@ -478,18 +473,18 @@ If we consider some dynamical uncertainty (the true system dynamics \(G_i\) not
|
||||
\end{equation}
|
||||
|
||||
|
||||
<div id="org54538d7" class="figure">
|
||||
<div id="org05e7617" class="figure">
|
||||
<p><img src="figs-paper/sensor_model_uncertainty.png" alt="sensor_model_uncertainty.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 7: </span>Sensor Model including Dynamical Uncertainty</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The uncertainty set of the transfer function from \(\hat{x}\) to \(x\) at frequency \(\omega\) is bounded in the complex plane by a circle centered on 1 and with a radius equal to \(|W_1(j\omega) H_1(j\omega)| + |W_2(j\omega) H_2(j\omega)|\) as shown in Figure <a href="#orgb11ef23">8</a>.
|
||||
The uncertainty set of the transfer function from \(\hat{x}\) to \(x\) at frequency \(\omega\) is bounded in the complex plane by a circle centered on 1 and with a radius equal to \(|W_1(j\omega) H_1(j\omega)| + |W_2(j\omega) H_2(j\omega)|\) as shown in Figure <a href="#org1ff6ff8">8</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgb11ef23" class="figure">
|
||||
<div id="org1ff6ff8" class="figure">
|
||||
<p><img src="figs-paper/uncertainty_set_super_sensor.png" alt="uncertainty_set_super_sensor.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 8: </span>Super Sensor model uncertainty displayed in the complex plane</p>
|
||||
@@ -498,11 +493,11 @@ The uncertainty set of the transfer function from \(\hat{x}\) to \(x\) at freque
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org5896b60" class="outline-2">
|
||||
<h2 id="org5896b60"><span class="section-number-2">3</span> Optimal Super Sensor Noise: \(\mathcal{H}_2\) Synthesis</h2>
|
||||
<div id="outline-container-org096192f" class="outline-2">
|
||||
<h2 id="org096192f"><span class="section-number-2">3</span> Optimal Super Sensor Noise: \(\mathcal{H}_2\) Synthesis</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<p>
|
||||
<a id="orgdd6b9ce"></a>
|
||||
<a id="orgbaf748a"></a>
|
||||
</p>
|
||||
<p>
|
||||
In this section, the complementary filters \(H_1(s)\) and \(H_2(s)\) are designed in order to minimize the RMS value of super sensor noise \(\sigma_n\).
|
||||
@@ -520,23 +515,23 @@ The RMS value of the super sensor noise is (neglecting the model uncertainty):
|
||||
|
||||
<p>
|
||||
The goal is to design \(H_1(s)\) and \(H_2(s)\) such that \(H_1(s) + H_2(s) = 1\) (complementary property) and such that \(\left\| \begin{matrix} H_1 N_1 \\ H_2 N_2 \end{matrix} \right\|_2\) is minimized (minimized RMS value of the super sensor noise).
|
||||
This is done using the \(\mathcal{H}_2\) synthesis in Section <a href="#org5bc9386">3.1</a>.
|
||||
This is done using the \(\mathcal{H}_2\) synthesis in Section <a href="#orgf1e20ae">3.1</a>.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgf5a8a84" class="outline-3">
|
||||
<h3 id="orgf5a8a84"><span class="section-number-3">3.1</span> \(\mathcal{H}_2\) Synthesis</h3>
|
||||
<div id="outline-container-org9188eae" class="outline-3">
|
||||
<h3 id="org9188eae"><span class="section-number-3">3.1</span> \(\mathcal{H}_2\) Synthesis</h3>
|
||||
<div class="outline-text-3" id="text-3-1">
|
||||
<p>
|
||||
<a id="org5bc9386"></a>
|
||||
<a id="orgf1e20ae"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Consider the generalized plant \(P_{\mathcal{H}_2}\) shown in Figure <a href="#orgd218886">9</a> and described by Equation \eqref{eq:H2_generalized_plant}.
|
||||
Consider the generalized plant \(P_{\mathcal{H}_2}\) shown in Figure <a href="#org95769ad">9</a> and described by Equation \eqref{eq:H2_generalized_plant}.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgd218886" class="figure">
|
||||
<div id="org95769ad" class="figure">
|
||||
<p><img src="figs-paper/h_two_optimal_fusion.png" alt="h_two_optimal_fusion.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 9: </span>Architecture used for \(\mathcal{H}_\infty\) synthesis of complementary filters</p>
|
||||
@@ -592,10 +587,10 @@ Finally, \(H_1(s)\) is defined as follows
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The obtained complementary filters are shown in Figure <a href="#org8c7ba6b">10</a>.
|
||||
The obtained complementary filters are shown in Figure <a href="#org02514a9">10</a>.
|
||||
</p>
|
||||
|
||||
<div id="org8c7ba6b" class="figure">
|
||||
<div id="org02514a9" class="figure">
|
||||
<p><img src="figs/htwo_comp_filters.png" alt="htwo_comp_filters.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 10: </span>Obtained complementary filters using the \(\mathcal{H}_2\) Synthesis</p>
|
||||
@@ -603,11 +598,11 @@ The obtained complementary filters are shown in Figure <a href="#org8c7ba6b">10<
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org72159df" class="outline-3">
|
||||
<h3 id="org72159df"><span class="section-number-3">3.2</span> Super Sensor Noise</h3>
|
||||
<div id="outline-container-org6d6d909" class="outline-3">
|
||||
<h3 id="org6d6d909"><span class="section-number-3">3.2</span> Super Sensor Noise</h3>
|
||||
<div class="outline-text-3" id="text-3-2">
|
||||
<p>
|
||||
<a id="orgc7cc0a8"></a>
|
||||
<a id="org497847a"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@@ -622,13 +617,13 @@ PSD_H2 = abs(squeeze(freqresp(N1<span class="org-type">*</span>H1, freqs, <span
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The obtained ASD are shown in Figure <a href="#orge481bcd">11</a>.
|
||||
The obtained ASD are shown in Figure <a href="#orgd3690df">11</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The RMS value of the individual sensors and of the super sensor are listed in Table <a href="#org3918d27">3</a>.
|
||||
The RMS value of the individual sensors and of the super sensor are listed in Table <a href="#org04c5321">3</a>.
|
||||
</p>
|
||||
<table id="org3918d27" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<table id="org04c5321" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<caption class="t-above"><span class="table-number">Table 3:</span> RMS value of the individual sensor noise and of the super sensor using the \(\mathcal{H}_2\) Synthesis</caption>
|
||||
|
||||
<colgroup>
|
||||
@@ -661,7 +656,7 @@ The RMS value of the individual sensors and of the super sensor are listed in Ta
|
||||
</table>
|
||||
|
||||
|
||||
<div id="orge481bcd" class="figure">
|
||||
<div id="orgd3690df" class="figure">
|
||||
<p><img src="figs/psd_sensors_htwo_synthesis.png" alt="psd_sensors_htwo_synthesis.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 11: </span>Power Spectral Density of the estimated \(\hat{x}\) using the two sensors alone and using the optimally fused signal</p>
|
||||
@@ -670,19 +665,19 @@ The RMS value of the individual sensors and of the super sensor are listed in Ta
|
||||
<p>
|
||||
A time domain simulation is now performed.
|
||||
The measured velocity \(x\) is set to be a sweep sine with an amplitude of \(0.1\ [m/s]\).
|
||||
The velocity estimates from the two sensors and from the super sensors are shown in Figure <a href="#org9c2a7e4">12</a>.
|
||||
The resulting noises are displayed in Figure <a href="#org4cc42bf">13</a>.
|
||||
The velocity estimates from the two sensors and from the super sensors are shown in Figure <a href="#orgf112864">12</a>.
|
||||
The resulting noises are displayed in Figure <a href="#org1ab022b">13</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org9c2a7e4" class="figure">
|
||||
<div id="orgf112864" class="figure">
|
||||
<p><img src="figs/super_sensor_time_domain_h2.png" alt="super_sensor_time_domain_h2.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 12: </span>Noise of individual sensors and noise of the super sensor</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org4cc42bf" class="figure">
|
||||
<div id="org1ab022b" class="figure">
|
||||
<p><img src="figs/sensor_noise_H2_time_domain.png" alt="sensor_noise_H2_time_domain.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 13: </span>Noise of the two sensors \(n_1, n_2\) and noise of the super sensor \(n\)</p>
|
||||
@@ -690,15 +685,15 @@ The resulting noises are displayed in Figure <a href="#org4cc42bf">13</a>.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8ffba19" class="outline-3">
|
||||
<h3 id="org8ffba19"><span class="section-number-3">3.3</span> Discrepancy between sensor dynamics and model</h3>
|
||||
<div id="outline-container-org850d99e" class="outline-3">
|
||||
<h3 id="org850d99e"><span class="section-number-3">3.3</span> Discrepancy between sensor dynamics and model</h3>
|
||||
<div class="outline-text-3" id="text-3-3">
|
||||
<p>
|
||||
If we consider sensor dynamical uncertainty as explained in Section <a href="#orgf04439d">1.2</a>, we can compute what would be the super sensor dynamical uncertainty when using the complementary filters obtained using the \(\mathcal{H}_2\) Synthesis.
|
||||
If we consider sensor dynamical uncertainty as explained in Section <a href="#org3943238">1.2</a>, we can compute what would be the super sensor dynamical uncertainty when using the complementary filters obtained using the \(\mathcal{H}_2\) Synthesis.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The super sensor dynamical uncertainty is shown in Figure <a href="#org865879b">14</a>.
|
||||
The super sensor dynamical uncertainty is shown in Figure <a href="#org35f4dc2">14</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@@ -706,7 +701,7 @@ It is shown that the phase uncertainty is not bounded between 100Hz and 200Hz.
|
||||
As a result the super sensor signal can not be used for feedback applications about 100Hz.
|
||||
</p>
|
||||
|
||||
<div id="org865879b" class="figure">
|
||||
<div id="org35f4dc2" class="figure">
|
||||
<p><img src="figs/super_sensor_dynamical_uncertainty_H2.png" alt="super_sensor_dynamical_uncertainty_H2.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 14: </span>Super sensor dynamical uncertainty when using the \(\mathcal{H}_2\) Synthesis</p>
|
||||
@@ -715,11 +710,11 @@ As a result the super sensor signal can not be used for feedback applications ab
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org26ea7b1" class="outline-2">
|
||||
<h2 id="org26ea7b1"><span class="section-number-2">4</span> Robust Sensor Fusion: \(\mathcal{H}_\infty\) Synthesis</h2>
|
||||
<div id="outline-container-org6d1270a" class="outline-2">
|
||||
<h2 id="org6d1270a"><span class="section-number-2">4</span> Robust Sensor Fusion: \(\mathcal{H}_\infty\) Synthesis</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
<p>
|
||||
<a id="org5d93f37"></a>
|
||||
<a id="orgea66128"></a>
|
||||
</p>
|
||||
<p>
|
||||
We initially considered perfectly known sensor dynamics so that it can be perfectly inverted.
|
||||
@@ -727,18 +722,18 @@ We initially considered perfectly known sensor dynamics so that it can be perfec
|
||||
|
||||
<p>
|
||||
We now take into account the fact that the sensor dynamics is only partially known.
|
||||
To do so, we model the uncertainty that we have on the sensor dynamics by multiplicative input uncertainty as shown in Figure <a href="#org2b71ca6">15</a>.
|
||||
To do so, we model the uncertainty that we have on the sensor dynamics by multiplicative input uncertainty as shown in Figure <a href="#org3a26ad3">15</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org2b71ca6" class="figure">
|
||||
<div id="org3a26ad3" class="figure">
|
||||
<p><img src="figs-paper/sensor_fusion_arch_uncertainty.png" alt="sensor_fusion_arch_uncertainty.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 15: </span>Sensor fusion architecture with sensor dynamics uncertainty</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
As explained in Section <a href="#orgf04439d">1.2</a>, at each frequency \(\omega\), the dynamical uncertainty of the super sensor can be represented in the complex plane by a circle with a radius equals to \(|H_1(j\omega) W_1(j\omega)| + |H_2(j\omega) W_2(j\omega)|\) and centered on 1.
|
||||
As explained in Section <a href="#org3943238">1.2</a>, at each frequency \(\omega\), the dynamical uncertainty of the super sensor can be represented in the complex plane by a circle with a radius equals to \(|H_1(j\omega) W_1(j\omega)| + |H_2(j\omega) W_2(j\omega)|\) and centered on 1.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@@ -760,7 +755,7 @@ In order to specify a wanted upper bound on the dynamical uncertainty, a weight
|
||||
\end{align}
|
||||
|
||||
<p>
|
||||
The choice of \(W_u\) is presented in Section <a href="#orgefed264">4.1</a>.
|
||||
The choice of \(W_u\) is presented in Section <a href="#org5b00e7a">4.1</a>.
|
||||
</p>
|
||||
|
||||
|
||||
@@ -778,15 +773,15 @@ The objective is to design \(H_1(s)\) and \(H_2(s)\) such that \(H_1(s) + H_2(s)
|
||||
</p>
|
||||
|
||||
<p>
|
||||
This is done using the \(\mathcal{H}_\infty\) synthesis in Section <a href="#org2c990ce">4.2</a>.
|
||||
This is done using the \(\mathcal{H}_\infty\) synthesis in Section <a href="#org7bd80be">4.2</a>.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8dfd9d2" class="outline-3">
|
||||
<h3 id="org8dfd9d2"><span class="section-number-3">4.1</span> Weighting Function used to bound the super sensor uncertainty</h3>
|
||||
<div id="outline-container-orgc5a0221" class="outline-3">
|
||||
<h3 id="orgc5a0221"><span class="section-number-3">4.1</span> Weighting Function used to bound the super sensor uncertainty</h3>
|
||||
<div class="outline-text-3" id="text-4-1">
|
||||
<p>
|
||||
<a id="orgefed264"></a>
|
||||
<a id="org5b00e7a"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@@ -799,7 +794,7 @@ This is done using the \(\mathcal{H}_\infty\) synthesis in Section <a href="#org
|
||||
\end{align}
|
||||
|
||||
<p>
|
||||
The uncertainty bounds of the two individual sensor as well as the wanted maximum uncertainty bounds of the super sensor are shown in Figure <a href="#orgdffee80">16</a>.
|
||||
The uncertainty bounds of the two individual sensor as well as the wanted maximum uncertainty bounds of the super sensor are shown in Figure <a href="#orge13d408">16</a>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
@@ -810,7 +805,7 @@ Wu = createWeight(<span class="org-string">'n'</span>, 2, <span class="org-strin
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgdffee80" class="figure">
|
||||
<div id="orge13d408" class="figure">
|
||||
<p><img src="figs/weight_uncertainty_bounds_Wu.png" alt="weight_uncertainty_bounds_Wu.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 16: </span>Uncertainty region of the two sensors as well as the wanted maximum uncertainty of the super sensor (dashed lines)</p>
|
||||
@@ -818,19 +813,19 @@ Wu = createWeight(<span class="org-string">'n'</span>, 2, <span class="org-strin
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org7422ade" class="outline-3">
|
||||
<h3 id="org7422ade"><span class="section-number-3">4.2</span> \(\mathcal{H}_\infty\) Synthesis</h3>
|
||||
<div id="outline-container-org334f826" class="outline-3">
|
||||
<h3 id="org334f826"><span class="section-number-3">4.2</span> \(\mathcal{H}_\infty\) Synthesis</h3>
|
||||
<div class="outline-text-3" id="text-4-2">
|
||||
<p>
|
||||
<a id="org2c990ce"></a>
|
||||
<a id="org7bd80be"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The generalized plant \(P_{\mathcal{H}_\infty}\) used for the \(\mathcal{H}_\infty\) Synthesis of the complementary filters is shown in Figure <a href="#org59777f5">17</a> and is described by Equation \eqref{eq:Hinf_generalized_plant}.
|
||||
The generalized plant \(P_{\mathcal{H}_\infty}\) used for the \(\mathcal{H}_\infty\) Synthesis of the complementary filters is shown in Figure <a href="#org461ce6a">17</a> and is described by Equation \eqref{eq:Hinf_generalized_plant}.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org59777f5" class="figure">
|
||||
<div id="org461ce6a" class="figure">
|
||||
<p><img src="figs-paper/h_infinity_robust_fusion.png" alt="h_infinity_robust_fusion.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 17: </span>Architecture used for \(\mathcal{H}_\infty\) synthesis of complementary filters</p>
|
||||
@@ -866,7 +861,7 @@ And the \(\mathcal{H}_\infty\) synthesis is performed using the <code>hinfsyn</c
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<pre class="example">
|
||||
<pre class="example" id="orge32bb33">
|
||||
Test bounds: 0.7071 <= gamma <= 1.291
|
||||
|
||||
gamma X>=0 Y>=0 rho(XY)<1 p/f
|
||||
@@ -897,11 +892,11 @@ The \(\mathcal{H}_\infty\) is successful as the \(\mathcal{H}_\infty\) norm of t
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The obtained complementary filters as well as the wanted upper bounds are shown in Figure <a href="#orga1806e3">18</a>.
|
||||
The obtained complementary filters as well as the wanted upper bounds are shown in Figure <a href="#org938a541">18</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orga1806e3" class="figure">
|
||||
<div id="org938a541" class="figure">
|
||||
<p><img src="figs/hinf_comp_filters.png" alt="hinf_comp_filters.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 18: </span>Obtained complementary filters using the \(\mathcal{H}_\infty\) Synthesis</p>
|
||||
@@ -909,11 +904,11 @@ The obtained complementary filters as well as the wanted upper bounds are shown
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orga0267c6" class="outline-3">
|
||||
<h3 id="orga0267c6"><span class="section-number-3">4.3</span> Super sensor uncertainty</h3>
|
||||
<div id="outline-container-org211e432" class="outline-3">
|
||||
<h3 id="org211e432"><span class="section-number-3">4.3</span> Super sensor uncertainty</h3>
|
||||
<div class="outline-text-3" id="text-4-3">
|
||||
<p>
|
||||
The super sensor dynamical uncertainty is displayed in Figure <a href="#orge75f5ef">19</a>.
|
||||
The super sensor dynamical uncertainty is displayed in Figure <a href="#org52cdb78">19</a>.
|
||||
It is confirmed that the super sensor dynamical uncertainty is less than the maximum allowed uncertainty defined by the norm of \(W_u(s)\).
|
||||
</p>
|
||||
|
||||
@@ -922,7 +917,7 @@ The \(\mathcal{H}_\infty\) synthesis thus allows to design filters such that the
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orge75f5ef" class="figure">
|
||||
<div id="org52cdb78" class="figure">
|
||||
<p><img src="figs/super_sensor_dynamical_uncertainty_Hinf.png" alt="super_sensor_dynamical_uncertainty_Hinf.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 19: </span>Super sensor dynamical uncertainty (solid curve) when using the \(\mathcal{H}_\infty\) Synthesis</p>
|
||||
@@ -930,12 +925,12 @@ The \(\mathcal{H}_\infty\) synthesis thus allows to design filters such that the
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org979fede" class="outline-3">
|
||||
<h3 id="org979fede"><span class="section-number-3">4.4</span> Super sensor noise</h3>
|
||||
<div id="outline-container-org7672e0e" class="outline-3">
|
||||
<h3 id="org7672e0e"><span class="section-number-3">4.4</span> Super sensor noise</h3>
|
||||
<div class="outline-text-3" id="text-4-4">
|
||||
<p>
|
||||
We now compute the obtain Power Spectral Density of the super sensor’s noise.
|
||||
The Amplitude Spectral Densities are shown in Figure <a href="#org5aac73f">20</a>.
|
||||
The Amplitude Spectral Densities are shown in Figure <a href="#org06b08df">20</a>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
@@ -947,18 +942,18 @@ PSD_Hinf = abs(squeeze(freqresp(N1<span class="org-type">*</span>H1, freqs, <spa
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The obtained RMS of the super sensor noise in the \(\mathcal{H}_2\) and \(\mathcal{H}_\infty\) case are shown in Table <a href="#org3e08452">4</a>.
|
||||
The obtained RMS of the super sensor noise in the \(\mathcal{H}_2\) and \(\mathcal{H}_\infty\) case are shown in Table <a href="#org3cf92ce">4</a>.
|
||||
As expected, the super sensor obtained from the \(\mathcal{H}_\infty\) synthesis is much noisier than the super sensor obtained from the \(\mathcal{H}_2\) synthesis.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org5aac73f" class="figure">
|
||||
<div id="org06b08df" class="figure">
|
||||
<p><img src="figs/psd_sensors_hinf_synthesis.png" alt="psd_sensors_hinf_synthesis.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 20: </span>Power Spectral Density of the estimated \(\hat{x}\) using the two sensors alone and using the</p>
|
||||
<p><span class="figure-number">Figure 20: </span>Power Spectral Density of the estimated \(\hat{x}\) using the two sensors alone and using the \(\mathcal{H}_\infty\) synthesis</p>
|
||||
</div>
|
||||
|
||||
<table id="org3e08452" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<table id="org3cf92ce" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<caption class="t-above"><span class="table-number">Table 4:</span> Comparison of the obtained RMS noise of the super sensor</caption>
|
||||
|
||||
<colgroup>
|
||||
@@ -987,8 +982,8 @@ As expected, the super sensor obtained from the \(\mathcal{H}_\infty\) synthesis
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgda33992" class="outline-3">
|
||||
<h3 id="orgda33992"><span class="section-number-3">4.5</span> Conclusion</h3>
|
||||
<div id="outline-container-orgdcb47cf" class="outline-3">
|
||||
<h3 id="orgdcb47cf"><span class="section-number-3">4.5</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-4-5">
|
||||
<p>
|
||||
Using the \(\mathcal{H}_\infty\) synthesis, the dynamical uncertainty of the super sensor can be bounded to acceptable values.
|
||||
@@ -1001,22 +996,22 @@ However, the RMS of the super sensor noise is not optimized as it was the case w
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org15afe90" class="outline-2">
|
||||
<h2 id="org15afe90"><span class="section-number-2">5</span> Optimal and Robust Sensor Fusion: Mixed \(\mathcal{H}_2/\mathcal{H}_\infty\) Synthesis</h2>
|
||||
<div id="outline-container-org49a7cc2" class="outline-2">
|
||||
<h2 id="org49a7cc2"><span class="section-number-2">5</span> Optimal and Robust Sensor Fusion: Mixed \(\mathcal{H}_2/\mathcal{H}_\infty\) Synthesis</h2>
|
||||
<div class="outline-text-2" id="text-5">
|
||||
<p>
|
||||
<a id="org9f98c16"></a>
|
||||
<a id="org2aeafb3"></a>
|
||||
</p>
|
||||
<p>
|
||||
The (optima) \(\mathcal{H}_2\) synthesis and the (robust) \(\mathcal{H}_\infty\) synthesis are now combined to form an Optimal and Robust synthesis of complementary filters for sensor fusion.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The sensor fusion architecture is shown in Figure <a href="#org3cc874e">21</a> (\(\hat{G}_i\) are omitted for space reasons).
|
||||
The sensor fusion architecture is shown in Figure <a href="#orgd633d12">21</a> (\(\hat{G}_i\) are omitted for space reasons).
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org3cc874e" class="figure">
|
||||
<div id="orgd633d12" class="figure">
|
||||
<p><img src="figs-paper/sensor_fusion_arch_full.png" alt="sensor_fusion_arch_full.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 21: </span>Sensor fusion architecture with sensor dynamics uncertainty</p>
|
||||
@@ -1031,18 +1026,18 @@ The goal is to design complementary filters such that:
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
To do so, we can use the Mixed \(\mathcal{H}_2/\mathcal{H}_\infty\) Synthesis presented in Section <a href="#orgbbc8594">5.1</a>.
|
||||
To do so, we can use the Mixed \(\mathcal{H}_2/\mathcal{H}_\infty\) Synthesis presented in Section <a href="#org669093b">5.1</a>.
|
||||
</p>
|
||||
</div>
|
||||
<div id="outline-container-org0f81a91" class="outline-3">
|
||||
<h3 id="org0f81a91"><span class="section-number-3">5.1</span> Mixed \(\mathcal{H}_2\) / \(\mathcal{H}_\infty\) Synthesis</h3>
|
||||
<div id="outline-container-org7ed8ed7" class="outline-3">
|
||||
<h3 id="org7ed8ed7"><span class="section-number-3">5.1</span> Mixed \(\mathcal{H}_2\) / \(\mathcal{H}_\infty\) Synthesis</h3>
|
||||
<div class="outline-text-3" id="text-5-1">
|
||||
<p>
|
||||
<a id="orgbbc8594"></a>
|
||||
<a id="org669093b"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The synthesis architecture that is used here is shown in Figure <a href="#orga971cdb">22</a>.
|
||||
The synthesis architecture that is used here is shown in Figure <a href="#orgc870005">22</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@@ -1054,7 +1049,7 @@ The filter \(H_2(s)\) is synthesized such that it:
|
||||
</ul>
|
||||
|
||||
|
||||
<div id="orga971cdb" class="figure">
|
||||
<div id="orgc870005" class="figure">
|
||||
<p><img src="figs-paper/mixed_h2_hinf_synthesis.png" alt="mixed_h2_hinf_synthesis.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 22: </span>Mixed \(\mathcal{H}_2/\mathcal{H}_\infty\) Synthesis</p>
|
||||
@@ -1098,11 +1093,11 @@ And the mixed \(\mathcal{H}_2/\mathcal{H}_\infty\) synthesis is performed.
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The obtained complementary filters are shown in Figure <a href="#org30e8a3f">23</a>.
|
||||
The obtained complementary filters are shown in Figure <a href="#orgf37f308">23</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org30e8a3f" class="figure">
|
||||
<div id="orgf37f308" class="figure">
|
||||
<p><img src="figs/htwo_hinf_comp_filters.png" alt="htwo_hinf_comp_filters.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 23: </span>Obtained complementary filters after mixed \(\mathcal{H}_2/\mathcal{H}_\infty\) synthesis</p>
|
||||
@@ -1110,19 +1105,19 @@ The obtained complementary filters are shown in Figure <a href="#org30e8a3f">23<
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org417aabd" class="outline-3">
|
||||
<h3 id="org417aabd"><span class="section-number-3">5.2</span> Obtained Super Sensor’s noise</h3>
|
||||
<div id="outline-container-orgfb839cf" class="outline-3">
|
||||
<h3 id="orgfb839cf"><span class="section-number-3">5.2</span> Obtained Super Sensor’s noise</h3>
|
||||
<div class="outline-text-3" id="text-5-2">
|
||||
<p>
|
||||
The Amplitude Spectral Density of the super sensor’s noise is shown in Figure <a href="#orgfdfbf76">24</a>.
|
||||
The Amplitude Spectral Density of the super sensor’s noise is shown in Figure <a href="#orgb3c92e4">24</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
A time domain simulation is shown in Figure <a href="#orgdf5905f">25</a>.
|
||||
A time domain simulation is shown in Figure <a href="#org4a0db9b">25</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The RMS values of the super sensor noise for the presented three synthesis are listed in Table <a href="#org3b7df55">5</a>.
|
||||
The RMS values of the super sensor noise for the presented three synthesis are listed in Table <a href="#org3b10edf">5</a>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
@@ -1134,20 +1129,20 @@ PSD_H2Hinf = abs(squeeze(freqresp(N1<span class="org-type">*</span>H1, freqs, <s
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgfdfbf76" class="figure">
|
||||
<div id="orgb3c92e4" class="figure">
|
||||
<p><img src="figs/psd_sensors_htwo_hinf_synthesis.png" alt="psd_sensors_htwo_hinf_synthesis.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 24: </span>Power Spectral Density of the Super Sensor obtained with the mixed \(\mathcal{H}_2/\mathcal{H}_\infty\) synthesis</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgdf5905f" class="figure">
|
||||
<div id="org4a0db9b" class="figure">
|
||||
<p><img src="figs/super_sensor_time_domain_h2_hinf.png" alt="super_sensor_time_domain_h2_hinf.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 25: </span>Noise of individual sensors and noise of the super sensor</p>
|
||||
</div>
|
||||
|
||||
<table id="org3b7df55" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<table id="org3b10edf" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<caption class="t-above"><span class="table-number">Table 5:</span> Comparison of the obtained RMS noise of the super sensor</caption>
|
||||
|
||||
<colgroup>
|
||||
@@ -1181,15 +1176,15 @@ PSD_H2Hinf = abs(squeeze(freqresp(N1<span class="org-type">*</span>H1, freqs, <s
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org2dce888" class="outline-3">
|
||||
<h3 id="org2dce888"><span class="section-number-3">5.3</span> Obtained Super Sensor’s Uncertainty</h3>
|
||||
<div id="outline-container-orgb8596ac" class="outline-3">
|
||||
<h3 id="orgb8596ac"><span class="section-number-3">5.3</span> Obtained Super Sensor’s Uncertainty</h3>
|
||||
<div class="outline-text-3" id="text-5-3">
|
||||
<p>
|
||||
The uncertainty on the super sensor’s dynamics is shown in Figure <a href="#orgb2d28c5">26</a>.
|
||||
The uncertainty on the super sensor’s dynamics is shown in Figure <a href="#org11fe014">26</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgb2d28c5" class="figure">
|
||||
<div id="org11fe014" class="figure">
|
||||
<p><img src="figs/super_sensor_dynamical_uncertainty_Htwo_Hinf.png" alt="super_sensor_dynamical_uncertainty_Htwo_Hinf.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 26: </span>Super sensor dynamical uncertainty (solid curve) when using the mixed \(\mathcal{H}_2/\mathcal{H}_\infty\) Synthesis</p>
|
||||
@@ -1197,8 +1192,8 @@ The uncertainty on the super sensor’s dynamics is shown in Figure <a href=
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org47da78c" class="outline-3">
|
||||
<h3 id="org47da78c"><span class="section-number-3">5.4</span> Conclusion</h3>
|
||||
<div id="outline-container-orgfcfa8a2" class="outline-3">
|
||||
<h3 id="orgfcfa8a2"><span class="section-number-3">5.4</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-5-4">
|
||||
<p>
|
||||
The mixed \(\mathcal{H}_2/\mathcal{H}_\infty\) synthesis of the complementary filters allows to:
|
||||
@@ -1211,18 +1206,18 @@ The mixed \(\mathcal{H}_2/\mathcal{H}_\infty\) synthesis of the complementary fi
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org0afe5ef" class="outline-2">
|
||||
<h2 id="org0afe5ef"><span class="section-number-2">6</span> Matlab Functions</h2>
|
||||
<div id="outline-container-orgf267700" class="outline-2">
|
||||
<h2 id="orgf267700"><span class="section-number-2">6</span> Matlab Functions</h2>
|
||||
<div class="outline-text-2" id="text-6">
|
||||
<p>
|
||||
<a id="orgf41dc8d"></a>
|
||||
<a id="org50a28ec"></a>
|
||||
</p>
|
||||
</div>
|
||||
<div id="outline-container-orge81e522" class="outline-3">
|
||||
<h3 id="orge81e522"><span class="section-number-3">6.1</span> <code>createWeight</code></h3>
|
||||
<div id="outline-container-org005db82" class="outline-3">
|
||||
<h3 id="org005db82"><span class="section-number-3">6.1</span> <code>createWeight</code></h3>
|
||||
<div class="outline-text-3" id="text-6-1">
|
||||
<p>
|
||||
<a id="org89bad6d"></a>
|
||||
<a id="orgb602691"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@@ -1274,11 +1269,11 @@ This Matlab function is accessible <a href="src/createWeight.m">here</a>.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org37ec2b4" class="outline-3">
|
||||
<h3 id="org37ec2b4"><span class="section-number-3">6.2</span> <code>plotMagUncertainty</code></h3>
|
||||
<div id="outline-container-org816b32a" class="outline-3">
|
||||
<h3 id="org816b32a"><span class="section-number-3">6.2</span> <code>plotMagUncertainty</code></h3>
|
||||
<div class="outline-text-3" id="text-6-2">
|
||||
<p>
|
||||
<a id="org8739875"></a>
|
||||
<a id="org2963b0d"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@@ -1329,11 +1324,11 @@ p.FaceAlpha = args.opacity;
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org9f73572" class="outline-3">
|
||||
<h3 id="org9f73572"><span class="section-number-3">6.3</span> <code>plotPhaseUncertainty</code></h3>
|
||||
<div id="outline-container-orgddb3773" class="outline-3">
|
||||
<h3 id="orgddb3773"><span class="section-number-3">6.3</span> <code>plotPhaseUncertainty</code></h3>
|
||||
<div class="outline-text-3" id="text-6-3">
|
||||
<p>
|
||||
<a id="org49e21eb"></a>
|
||||
<a id="org8d340da"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@@ -1397,7 +1392,7 @@ p.FaceAlpha = args.opacity;
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Thomas Dehaeze</p>
|
||||
<p class="date">Created: 2020-10-05 lun. 15:08</p>
|
||||
<p class="date">Created: 2020-11-12 jeu. 10:42</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+7
-13
@@ -1,19 +1,14 @@
|
||||
#+TITLE: Robust and Optimal Sensor Fusion - Matlab Computation
|
||||
:DRAWER:
|
||||
#+HTML_LINK_HOME: ./index.html
|
||||
#+HTML_LINK_UP: ./index.html
|
||||
#+HTML_LINK_HOME: ../index.html
|
||||
#+HTML_LINK_UP: ../index.html
|
||||
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
#+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
|
||||
#+BIND: org-latex-image-default-option "scale=1"
|
||||
#+BIND: org-latex-image-default-width ""
|
||||
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../css/htmlize.css"/>
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../css/readtheorg.css"/>
|
||||
#+HTML_HEAD: <script src="../js/jquery.min.js"></script>
|
||||
#+HTML_HEAD: <script src="../js/bootstrap.min.js"></script>
|
||||
#+HTML_HEAD: <script src="../js/jquery.stickytableheaders.min.js"></script>
|
||||
#+HTML_HEAD: <script src="../js/readtheorg.js"></script>
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://cdn.rawgit.com/dreampulse/computer-modern-web-font/master/fonts.css">
|
||||
|
||||
#+STARTUP: overview
|
||||
#+OPTIONS: toc:2
|
||||
|
||||
@@ -1155,12 +1150,11 @@ The obtained complementary filters are shown in Figure [[fig:htwo_hinf_comp_filt
|
||||
plot(freqs, abs(squeeze(freqresp(H2, freqs, 'Hz'))), '-', 'DisplayName', '$H_2$');
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Magnitude');
|
||||
set(gca, 'XTickLabel',[]);
|
||||
ylabel('Magnitude'); set(gca, 'XTickLabel',[]);
|
||||
ylim([1e-3, 2]);
|
||||
legend('location', 'southeast', 'FontSize', 8);
|
||||
|
||||
% Magnitude
|
||||
% Phase
|
||||
ax2 = nexttile;
|
||||
hold on;
|
||||
plot(freqs, 180/pi*phase(squeeze(freqresp(H1, freqs, 'Hz'))), '-');
|
||||
|
||||
+149
-368
@@ -3,310 +3,80 @@
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<!-- 2019-08-01 jeu. 17:46 -->
|
||||
<!-- 2020-11-12 jeu. 10:41 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>LaTeX Configuration for Tikz Figures</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Thomas Dehaeze" />
|
||||
<style type="text/css">
|
||||
<!--/*--><![CDATA[/*><!--*/
|
||||
.title { text-align: center;
|
||||
margin-bottom: .2em; }
|
||||
.subtitle { text-align: center;
|
||||
font-size: medium;
|
||||
font-weight: bold;
|
||||
margin-top:0; }
|
||||
.todo { font-family: monospace; color: red; }
|
||||
.done { font-family: monospace; color: green; }
|
||||
.priority { font-family: monospace; color: orange; }
|
||||
.tag { background-color: #eee; font-family: monospace;
|
||||
padding: 2px; font-size: 80%; font-weight: normal; }
|
||||
.timestamp { color: #bebebe; }
|
||||
.timestamp-kwd { color: #5f9ea0; }
|
||||
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
|
||||
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
|
||||
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
|
||||
.underline { text-decoration: underline; }
|
||||
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
|
||||
p.verse { margin-left: 3%; }
|
||||
pre {
|
||||
border: 1px solid #ccc;
|
||||
box-shadow: 3px 3px 3px #eee;
|
||||
padding: 8pt;
|
||||
font-family: monospace;
|
||||
overflow: auto;
|
||||
margin: 1.2em;
|
||||
}
|
||||
pre.src {
|
||||
position: relative;
|
||||
overflow: visible;
|
||||
padding-top: 1.2em;
|
||||
}
|
||||
pre.src:before {
|
||||
display: none;
|
||||
position: absolute;
|
||||
background-color: white;
|
||||
top: -10px;
|
||||
right: 10px;
|
||||
padding: 3px;
|
||||
border: 1px solid black;
|
||||
}
|
||||
pre.src:hover:before { display: inline;}
|
||||
/* Languages per Org manual */
|
||||
pre.src-asymptote:before { content: 'Asymptote'; }
|
||||
pre.src-awk:before { content: 'Awk'; }
|
||||
pre.src-C:before { content: 'C'; }
|
||||
/* pre.src-C++ doesn't work in CSS */
|
||||
pre.src-clojure:before { content: 'Clojure'; }
|
||||
pre.src-css:before { content: 'CSS'; }
|
||||
pre.src-D:before { content: 'D'; }
|
||||
pre.src-ditaa:before { content: 'ditaa'; }
|
||||
pre.src-dot:before { content: 'Graphviz'; }
|
||||
pre.src-calc:before { content: 'Emacs Calc'; }
|
||||
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
|
||||
pre.src-fortran:before { content: 'Fortran'; }
|
||||
pre.src-gnuplot:before { content: 'gnuplot'; }
|
||||
pre.src-haskell:before { content: 'Haskell'; }
|
||||
pre.src-hledger:before { content: 'hledger'; }
|
||||
pre.src-java:before { content: 'Java'; }
|
||||
pre.src-js:before { content: 'Javascript'; }
|
||||
pre.src-latex:before { content: 'LaTeX'; }
|
||||
pre.src-ledger:before { content: 'Ledger'; }
|
||||
pre.src-lisp:before { content: 'Lisp'; }
|
||||
pre.src-lilypond:before { content: 'Lilypond'; }
|
||||
pre.src-lua:before { content: 'Lua'; }
|
||||
pre.src-matlab:before { content: 'MATLAB'; }
|
||||
pre.src-mscgen:before { content: 'Mscgen'; }
|
||||
pre.src-ocaml:before { content: 'Objective Caml'; }
|
||||
pre.src-octave:before { content: 'Octave'; }
|
||||
pre.src-org:before { content: 'Org mode'; }
|
||||
pre.src-oz:before { content: 'OZ'; }
|
||||
pre.src-plantuml:before { content: 'Plantuml'; }
|
||||
pre.src-processing:before { content: 'Processing.js'; }
|
||||
pre.src-python:before { content: 'Python'; }
|
||||
pre.src-R:before { content: 'R'; }
|
||||
pre.src-ruby:before { content: 'Ruby'; }
|
||||
pre.src-sass:before { content: 'Sass'; }
|
||||
pre.src-scheme:before { content: 'Scheme'; }
|
||||
pre.src-screen:before { content: 'Gnu Screen'; }
|
||||
pre.src-sed:before { content: 'Sed'; }
|
||||
pre.src-sh:before { content: 'shell'; }
|
||||
pre.src-sql:before { content: 'SQL'; }
|
||||
pre.src-sqlite:before { content: 'SQLite'; }
|
||||
/* additional languages in org.el's org-babel-load-languages alist */
|
||||
pre.src-forth:before { content: 'Forth'; }
|
||||
pre.src-io:before { content: 'IO'; }
|
||||
pre.src-J:before { content: 'J'; }
|
||||
pre.src-makefile:before { content: 'Makefile'; }
|
||||
pre.src-maxima:before { content: 'Maxima'; }
|
||||
pre.src-perl:before { content: 'Perl'; }
|
||||
pre.src-picolisp:before { content: 'Pico Lisp'; }
|
||||
pre.src-scala:before { content: 'Scala'; }
|
||||
pre.src-shell:before { content: 'Shell Script'; }
|
||||
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
|
||||
/* additional language identifiers per "defun org-babel-execute"
|
||||
in ob-*.el */
|
||||
pre.src-cpp:before { content: 'C++'; }
|
||||
pre.src-abc:before { content: 'ABC'; }
|
||||
pre.src-coq:before { content: 'Coq'; }
|
||||
pre.src-groovy:before { content: 'Groovy'; }
|
||||
/* additional language identifiers from org-babel-shell-names in
|
||||
ob-shell.el: ob-shell is the only babel language using a lambda to put
|
||||
the execution function name together. */
|
||||
pre.src-bash:before { content: 'bash'; }
|
||||
pre.src-csh:before { content: 'csh'; }
|
||||
pre.src-ash:before { content: 'ash'; }
|
||||
pre.src-dash:before { content: 'dash'; }
|
||||
pre.src-ksh:before { content: 'ksh'; }
|
||||
pre.src-mksh:before { content: 'mksh'; }
|
||||
pre.src-posh:before { content: 'posh'; }
|
||||
/* Additional Emacs modes also supported by the LaTeX listings package */
|
||||
pre.src-ada:before { content: 'Ada'; }
|
||||
pre.src-asm:before { content: 'Assembler'; }
|
||||
pre.src-caml:before { content: 'Caml'; }
|
||||
pre.src-delphi:before { content: 'Delphi'; }
|
||||
pre.src-html:before { content: 'HTML'; }
|
||||
pre.src-idl:before { content: 'IDL'; }
|
||||
pre.src-mercury:before { content: 'Mercury'; }
|
||||
pre.src-metapost:before { content: 'MetaPost'; }
|
||||
pre.src-modula-2:before { content: 'Modula-2'; }
|
||||
pre.src-pascal:before { content: 'Pascal'; }
|
||||
pre.src-ps:before { content: 'PostScript'; }
|
||||
pre.src-prolog:before { content: 'Prolog'; }
|
||||
pre.src-simula:before { content: 'Simula'; }
|
||||
pre.src-tcl:before { content: 'tcl'; }
|
||||
pre.src-tex:before { content: 'TeX'; }
|
||||
pre.src-plain-tex:before { content: 'Plain TeX'; }
|
||||
pre.src-verilog:before { content: 'Verilog'; }
|
||||
pre.src-vhdl:before { content: 'VHDL'; }
|
||||
pre.src-xml:before { content: 'XML'; }
|
||||
pre.src-nxml:before { content: 'XML'; }
|
||||
/* add a generic configuration mode; LaTeX export needs an additional
|
||||
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
|
||||
pre.src-conf:before { content: 'Configuration File'; }
|
||||
|
||||
table { border-collapse:collapse; }
|
||||
caption.t-above { caption-side: top; }
|
||||
caption.t-bottom { caption-side: bottom; }
|
||||
td, th { vertical-align:top; }
|
||||
th.org-right { text-align: center; }
|
||||
th.org-left { text-align: center; }
|
||||
th.org-center { text-align: center; }
|
||||
td.org-right { text-align: right; }
|
||||
td.org-left { text-align: left; }
|
||||
td.org-center { text-align: center; }
|
||||
dt { font-weight: bold; }
|
||||
.footpara { display: inline; }
|
||||
.footdef { margin-bottom: 1em; }
|
||||
.figure { padding: 1em; }
|
||||
.figure p { text-align: center; }
|
||||
.equation-container {
|
||||
display: table;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
}
|
||||
.equation {
|
||||
vertical-align: middle;
|
||||
}
|
||||
.equation-label {
|
||||
display: table-cell;
|
||||
text-align: right;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.inlinetask {
|
||||
padding: 10px;
|
||||
border: 2px solid gray;
|
||||
margin: 10px;
|
||||
background: #ffffcc;
|
||||
}
|
||||
#org-div-home-and-up
|
||||
{ text-align: right; font-size: 70%; white-space: nowrap; }
|
||||
textarea { overflow-x: auto; }
|
||||
.linenr { font-size: smaller }
|
||||
.code-highlighted { background-color: #ffff00; }
|
||||
.org-info-js_info-navigation { border-style: none; }
|
||||
#org-info-js_console-label
|
||||
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
|
||||
.org-info-js_search-highlight
|
||||
{ background-color: #ffff00; color: #000000; font-weight: bold; }
|
||||
.org-svg { width: 90%; }
|
||||
/*]]>*/-->
|
||||
</style>
|
||||
<link rel="stylesheet" type="text/css" href="../css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="../css/readtheorg.css"/>
|
||||
<script src="../js/jquery.min.js"></script>
|
||||
<script src="../js/bootstrap.min.js"></script>
|
||||
<script src="../js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="../js/readtheorg.js"></script>
|
||||
<script type="text/javascript">
|
||||
/*
|
||||
@licstart The following is the entire license notice for the
|
||||
JavaScript code in this tag.
|
||||
|
||||
Copyright (C) 2012-2019 Free Software Foundation, Inc.
|
||||
|
||||
The JavaScript code in this tag is free software: you can
|
||||
redistribute it and/or modify it under the terms of the GNU
|
||||
General Public License (GNU GPL) as published by the Free Software
|
||||
Foundation, either version 3 of the License, or (at your option)
|
||||
any later version. The code is distributed WITHOUT ANY WARRANTY;
|
||||
without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
|
||||
|
||||
As additional permission under GNU GPL version 3 section 7, you
|
||||
may distribute non-source (e.g., minimized or compacted) forms of
|
||||
that code without the copy of the GNU GPL normally required by
|
||||
section 4, provided you include this license notice and a URL
|
||||
through which recipients can access the Corresponding Source.
|
||||
|
||||
|
||||
@licend The above is the entire license notice
|
||||
for the JavaScript code in this tag.
|
||||
*/
|
||||
<!--/*--><![CDATA[/*><!--*/
|
||||
function CodeHighlightOn(elem, id)
|
||||
{
|
||||
var target = document.getElementById(id);
|
||||
if(null != target) {
|
||||
elem.cacheClassElem = elem.className;
|
||||
elem.cacheClassTarget = target.className;
|
||||
target.className = "code-highlighted";
|
||||
elem.className = "code-highlighted";
|
||||
}
|
||||
}
|
||||
function CodeHighlightOff(elem, id)
|
||||
{
|
||||
var target = document.getElementById(id);
|
||||
if(elem.cacheClassElem)
|
||||
elem.className = elem.cacheClassElem;
|
||||
if(elem.cacheClassTarget)
|
||||
target.className = elem.cacheClassTarget;
|
||||
}
|
||||
/*]]>*///-->
|
||||
</script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="content">
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="../index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">LaTeX Configuration for Tikz Figures</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#org485d2f8">1. Packages</a></li>
|
||||
<li><a href="#org8222280">2. Tikz related packages</a></li>
|
||||
<li><a href="#org983f090">3. Tikz Libraries</a></li>
|
||||
<li><a href="#org382b6c8">4. PGF Plot libraries and config</a></li>
|
||||
<li><a href="#orgabed042">5. Setup size of figures</a></li>
|
||||
<li><a href="#org7ec52e4">6. Setup Arrows style</a></li>
|
||||
<li><a href="#orgadcf4fa">7. Colors</a></li>
|
||||
<li><a href="#orgf8644bb">8. Control</a>
|
||||
<li><a href="#org563923f">1. Packages</a></li>
|
||||
<li><a href="#orgbba2842">2. Tikz related packages</a></li>
|
||||
<li><a href="#org78bd760">3. Tikz Libraries</a></li>
|
||||
<li><a href="#orga2a8c2c">4. PGF Plot libraries and config</a></li>
|
||||
<li><a href="#orgb16e8c1">5. Setup size of figures</a></li>
|
||||
<li><a href="#org7a055a0">6. Setup Arrows style</a></li>
|
||||
<li><a href="#org337891d">7. Colors</a></li>
|
||||
<li><a href="#org9fba3bd">8. Control</a>
|
||||
<ul>
|
||||
<li><a href="#orgb58c271">8.1. Blocks</a></li>
|
||||
<li><a href="#org30e8430">8.2. <span class="todo TODO">TODO</span> Branches</a></li>
|
||||
<li><a href="#org53c66b2">8.3. <span class="todo TODO">TODO</span> Hand Writen Style</a></li>
|
||||
<li><a href="#orgbe652e9">8.4. DAC</a></li>
|
||||
<li><a href="#orgbc82de4">8.5. ADC</a></li>
|
||||
<li><a href="#org340b1a4">8.6. <span class="todo TODO">TODO</span> Gain</a></li>
|
||||
<li><a href="#org275aed0">8.7. Add / Substract / Divide / Multiply block</a></li>
|
||||
<li><a href="#orgad61177">8.1. Blocks</a></li>
|
||||
<li><a href="#org747abfd">8.2. Branches</a></li>
|
||||
<li><a href="#org9eb0276">8.3. Hand Writen Style</a></li>
|
||||
<li><a href="#org68d7293">8.4. DAC</a></li>
|
||||
<li><a href="#org703d0a7">8.5. ADC</a></li>
|
||||
<li><a href="#org525abad">8.6. Gain</a></li>
|
||||
<li><a href="#orgab3fd46">8.7. Add / Substract / Divide / Multiply block</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orga0bb999">9. Plots</a>
|
||||
<li><a href="#org6dddda4">9. Plots</a>
|
||||
<ul>
|
||||
<li><a href="#org335716c">9.1. Grid</a></li>
|
||||
<li><a href="#org63e134b">9.2. Lines</a></li>
|
||||
<li><a href="#org14023c7">9.3. Ticks</a></li>
|
||||
<li><a href="#org97ff77a">9.4. Size</a></li>
|
||||
<li><a href="#orgbd0ce9a">9.5. Label</a></li>
|
||||
<li><a href="#org7c80336">9.6. Legend</a></li>
|
||||
<li><a href="#org882899e">9.7. Upper and Lower bounds</a></li>
|
||||
<li><a href="#org028ac81">9.8. Pole</a></li>
|
||||
<li><a href="#org2d51358">9.9. Zero</a></li>
|
||||
<li><a href="#org5f52280">9.1. Grid</a></li>
|
||||
<li><a href="#org59e26cb">9.2. Lines</a></li>
|
||||
<li><a href="#orgbc1d944">9.3. Ticks</a></li>
|
||||
<li><a href="#org0b17a46">9.4. Size</a></li>
|
||||
<li><a href="#orge253709">9.5. Label</a></li>
|
||||
<li><a href="#org0136e6e">9.6. Legend</a></li>
|
||||
<li><a href="#org6c9488e">9.7. Upper and Lower bounds</a></li>
|
||||
<li><a href="#org68481dd">9.8. Pole</a></li>
|
||||
<li><a href="#org4b90ce8">9.9. Zero</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org152b1b6">10. Mechanical</a>
|
||||
<li><a href="#orgddaa691">10. Mechanical</a>
|
||||
<ul>
|
||||
<li><a href="#orga9075d9">10.1. Spring</a></li>
|
||||
<li><a href="#orgc290c7c">10.2. Coil</a></li>
|
||||
<li><a href="#org642ecab">10.3. Damper</a></li>
|
||||
<li><a href="#org7603957">10.4. Actuator</a></li>
|
||||
<li><a href="#orgdcbbf5e">10.5. Ground</a></li>
|
||||
<li><a href="#org24c87d5">10.6. Force Sensor</a></li>
|
||||
<li><a href="#org85aab6a">10.7. Inertial Sensor</a></li>
|
||||
<li><a href="#orgf07d1e3">10.8. Axis Rotator</a></li>
|
||||
<li><a href="#org091ff6f">10.9. Cross</a></li>
|
||||
<li><a href="#orgf570b65">10.10. Piezoelectric actuator</a></li>
|
||||
<li><a href="#org816eebe">10.11. Voice coil</a></li>
|
||||
<li><a href="#orga04ed0c">10.1. Spring</a></li>
|
||||
<li><a href="#org5037f72">10.2. Coil</a></li>
|
||||
<li><a href="#org16357a8">10.3. Damper</a></li>
|
||||
<li><a href="#orgd56dea9">10.4. Actuator</a></li>
|
||||
<li><a href="#org39bd1d0">10.5. Ground</a></li>
|
||||
<li><a href="#org5225a31">10.6. Force Sensor</a></li>
|
||||
<li><a href="#org6c262c1">10.7. Inertial Sensor</a></li>
|
||||
<li><a href="#org4071fb1">10.8. Axis Rotator</a></li>
|
||||
<li><a href="#org66470c0">10.9. Cross</a></li>
|
||||
<li><a href="#org6eb8134">10.10. Piezoelectric actuator</a></li>
|
||||
<li><a href="#org6b9bc4d">10.11. Voice coil</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgb095cdb">11. Optics</a></li>
|
||||
<li><a href="#org06358e3">12. Misc</a></li>
|
||||
<li><a href="#org69d7a0b">11. Optics</a></li>
|
||||
<li><a href="#org0283a14">12. Misc</a></li>
|
||||
<li><a href="#org6860135">13. More Defaults specific to this paper</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org485d2f8" class="outline-2">
|
||||
<h2 id="org485d2f8"><span class="section-number-2">1</span> Packages</h2>
|
||||
<div id="outline-container-org563923f" class="outline-2">
|
||||
<h2 id="org563923f"><span class="section-number-2">1</span> Packages</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate"><span class="org-keyword">\usepackage</span></span>[<span class="org-variable-name">utf8</span>]{<span class="org-function-name">inputenc</span>}
|
||||
@@ -352,8 +122,8 @@ for the JavaScript code in this tag.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8222280" class="outline-2">
|
||||
<h2 id="org8222280"><span class="section-number-2">2</span> Tikz related packages</h2>
|
||||
<div id="outline-container-orgbba2842" class="outline-2">
|
||||
<h2 id="orgbba2842"><span class="section-number-2">2</span> Tikz related packages</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate"><span class="org-keyword">\usepackage</span></span>{<span class="org-function-name">tikz</span>} <span class="org-comment">% Tikz</span>
|
||||
@@ -367,8 +137,8 @@ for the JavaScript code in this tag.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org983f090" class="outline-2">
|
||||
<h2 id="org983f090"><span class="section-number-2">3</span> Tikz Libraries</h2>
|
||||
<div id="outline-container-org78bd760" class="outline-2">
|
||||
<h2 id="org78bd760"><span class="section-number-2">3</span> Tikz Libraries</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate">\usetikzlibrary</span>{arrows} <span class="org-comment">% Arrow tip library</span>
|
||||
@@ -395,8 +165,8 @@ for the JavaScript code in this tag.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org382b6c8" class="outline-2">
|
||||
<h2 id="org382b6c8"><span class="section-number-2">4</span> PGF Plot libraries and config</h2>
|
||||
<div id="outline-container-orga2a8c2c" class="outline-2">
|
||||
<h2 id="orga2a8c2c"><span class="section-number-2">4</span> PGF Plot libraries and config</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate">\usepgfplotslibrary</span>{patchplots}
|
||||
@@ -409,8 +179,8 @@ for the JavaScript code in this tag.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgabed042" class="outline-2">
|
||||
<h2 id="orgabed042"><span class="section-number-2">5</span> Setup size of figures</h2>
|
||||
<div id="outline-container-orgb16e8c1" class="outline-2">
|
||||
<h2 id="orgb16e8c1"><span class="section-number-2">5</span> Setup size of figures</h2>
|
||||
<div class="outline-text-2" id="text-5">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate"><span class="org-keyword">\newlength</span></span>{<span class="org-font-latex-sedate"><span class="org-function-name">\fheight</span></span>}
|
||||
@@ -423,8 +193,8 @@ for the JavaScript code in this tag.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org7ec52e4" class="outline-2">
|
||||
<h2 id="org7ec52e4"><span class="section-number-2">6</span> Setup Arrows style</h2>
|
||||
<div id="outline-container-org7a055a0" class="outline-2">
|
||||
<h2 id="org7a055a0"><span class="section-number-2">6</span> Setup Arrows style</h2>
|
||||
<div class="outline-text-2" id="text-6">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate">\tikzset</span>{>=Stealth}
|
||||
@@ -435,8 +205,8 @@ for the JavaScript code in this tag.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgadcf4fa" class="outline-2">
|
||||
<h2 id="orgadcf4fa"><span class="section-number-2">7</span> Colors</h2>
|
||||
<div id="outline-container-org337891d" class="outline-2">
|
||||
<h2 id="org337891d"><span class="section-number-2">7</span> Colors</h2>
|
||||
<div class="outline-text-2" id="text-7">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate"><span class="org-keyword">\usepackage</span></span>{<span class="org-function-name">xcolor</span>}<span class="org-comment">% Color extension</span>
|
||||
@@ -458,12 +228,12 @@ for the JavaScript code in this tag.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgf8644bb" class="outline-2">
|
||||
<h2 id="orgf8644bb"><span class="section-number-2">8</span> Control</h2>
|
||||
<div id="outline-container-org9fba3bd" class="outline-2">
|
||||
<h2 id="org9fba3bd"><span class="section-number-2">8</span> Control</h2>
|
||||
<div class="outline-text-2" id="text-8">
|
||||
</div>
|
||||
<div id="outline-container-orgb58c271" class="outline-3">
|
||||
<h3 id="orgb58c271"><span class="section-number-3">8.1</span> Blocks</h3>
|
||||
<div id="outline-container-orgad61177" class="outline-3">
|
||||
<h3 id="orgad61177"><span class="section-number-3">8.1</span> Blocks</h3>
|
||||
<div class="outline-text-3" id="text-8-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate">\tikzset</span>{<span class="org-comment">%</span>
|
||||
@@ -480,8 +250,8 @@ for the JavaScript code in this tag.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org30e8430" class="outline-3">
|
||||
<h3 id="org30e8430"><span class="section-number-3">8.2</span> <span class="todo TODO">TODO</span> Branches</h3>
|
||||
<div id="outline-container-org747abfd" class="outline-3">
|
||||
<h3 id="org747abfd"><span class="section-number-3">8.2</span> Branches</h3>
|
||||
<div class="outline-text-3" id="text-8-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate">\tikzstyle</span>{branch}=[fill,shape=circle,minimum size=4pt,inner sep=0pt]
|
||||
@@ -492,8 +262,8 @@ for the JavaScript code in this tag.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org53c66b2" class="outline-3">
|
||||
<h3 id="org53c66b2"><span class="section-number-3">8.3</span> <span class="todo TODO">TODO</span> Hand Writen Style</h3>
|
||||
<div id="outline-container-org9eb0276" class="outline-3">
|
||||
<h3 id="org9eb0276"><span class="section-number-3">8.3</span> Hand Writen Style</h3>
|
||||
<div class="outline-text-3" id="text-8-3">
|
||||
<p>
|
||||
Usefull for schematic plots
|
||||
@@ -505,8 +275,8 @@ Usefull for schematic plots
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgbe652e9" class="outline-3">
|
||||
<h3 id="orgbe652e9"><span class="section-number-3">8.4</span> DAC</h3>
|
||||
<div id="outline-container-org68d7293" class="outline-3">
|
||||
<h3 id="org68d7293"><span class="section-number-3">8.4</span> DAC</h3>
|
||||
<div class="outline-text-3" id="text-8-4">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate">\tikzset</span>{<span class="org-comment">%</span>
|
||||
@@ -520,8 +290,8 @@ Usefull for schematic plots
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgbc82de4" class="outline-3">
|
||||
<h3 id="orgbc82de4"><span class="section-number-3">8.5</span> ADC</h3>
|
||||
<div id="outline-container-org703d0a7" class="outline-3">
|
||||
<h3 id="org703d0a7"><span class="section-number-3">8.5</span> ADC</h3>
|
||||
<div class="outline-text-3" id="text-8-5">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate">\tikzset</span>{<span class="org-comment">%</span>
|
||||
@@ -536,8 +306,8 @@ Usefull for schematic plots
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org340b1a4" class="outline-3">
|
||||
<h3 id="org340b1a4"><span class="section-number-3">8.6</span> <span class="todo TODO">TODO</span> Gain</h3>
|
||||
<div id="outline-container-org525abad" class="outline-3">
|
||||
<h3 id="org525abad"><span class="section-number-3">8.6</span> Gain</h3>
|
||||
<div class="outline-text-3" id="text-8-6">
|
||||
<p>
|
||||
Maybe use <code>isosceles</code> instead of regular polygon?
|
||||
@@ -578,8 +348,8 @@ Maybe use <code>isosceles</code> instead of regular polygon?
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org275aed0" class="outline-3">
|
||||
<h3 id="org275aed0"><span class="section-number-3">8.7</span> Add / Substract / Divide / Multiply block</h3>
|
||||
<div id="outline-container-orgab3fd46" class="outline-3">
|
||||
<h3 id="orgab3fd46"><span class="section-number-3">8.7</span> Add / Substract / Divide / Multiply block</h3>
|
||||
<div class="outline-text-3" id="text-8-7">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate">\tikzset</span>{<span class="org-comment">% Add block with Circled operations</span>
|
||||
@@ -591,7 +361,7 @@ Maybe use <code>isosceles</code> instead of regular polygon?
|
||||
inner sep = 0pt,
|
||||
minimum size = 2em,
|
||||
execute at begin node={<span class="org-font-latex-sedate"><span class="org-keyword">\LARGE</span></span><span class="org-type"> </span><span class="org-type"><span class="org-font-latex-math">$#1$</span></span>},
|
||||
append after command={<span class="org-font-latex-sedate">\pgfextra</span>{<span class="org-font-latex-sedate">\let\mainnode=\tikzlastnode</span>}
|
||||
append after command={<span class="org-font-latex-sedate">\pgfextra</span>{<span class="org-font-latex-sedate">\let\mainnode</span>=<span class="org-font-latex-sedate">\tikzlastnode</span>}
|
||||
<span class="org-font-latex-sedate">\ifx</span>#2<span class="org-font-latex-sedate">\empty\else</span>
|
||||
node[draw, circle, outer sep=6pt, inner sep=0pt, above left] at (<span class="org-font-latex-sedate">\mainnode</span>.west) {<span class="org-font-latex-math">$#2$</span>}<span class="org-comment">%</span>
|
||||
<span class="org-font-latex-sedate">\fi</span>
|
||||
@@ -621,7 +391,7 @@ Maybe use <code>isosceles</code> instead of regular polygon?
|
||||
inner sep = 0pt,
|
||||
minimum size = 2em,
|
||||
execute at begin node={<span class="org-font-latex-sedate"><span class="org-keyword">\LARGE</span></span><span class="org-type"> </span><span class="org-type"><span class="org-font-latex-math">$#1$</span></span>},
|
||||
append after command={<span class="org-font-latex-sedate">\pgfextra</span>{<span class="org-font-latex-sedate">\let\mainnode=\tikzlastnode</span>}
|
||||
append after command={<span class="org-font-latex-sedate">\pgfextra</span>{<span class="org-font-latex-sedate">\let\mainnode</span>=<span class="org-font-latex-sedate">\tikzlastnode</span>}
|
||||
<span class="org-font-latex-sedate">\ifx</span>#2<span class="org-font-latex-sedate">\empty\else</span>
|
||||
node[outer sep=2pt, inner sep=0pt, above left] at (<span class="org-font-latex-sedate">\mainnode</span>.west) {<span class="org-font-latex-math">$#2$</span>}<span class="org-comment">%</span>
|
||||
<span class="org-font-latex-sedate">\fi</span>
|
||||
@@ -644,12 +414,12 @@ Maybe use <code>isosceles</code> instead of regular polygon?
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orga0bb999" class="outline-2">
|
||||
<h2 id="orga0bb999"><span class="section-number-2">9</span> Plots</h2>
|
||||
<div id="outline-container-org6dddda4" class="outline-2">
|
||||
<h2 id="org6dddda4"><span class="section-number-2">9</span> Plots</h2>
|
||||
<div class="outline-text-2" id="text-9">
|
||||
</div>
|
||||
<div id="outline-container-org335716c" class="outline-3">
|
||||
<h3 id="org335716c"><span class="section-number-3">9.1</span> Grid</h3>
|
||||
<div id="outline-container-org5f52280" class="outline-3">
|
||||
<h3 id="org5f52280"><span class="section-number-3">9.1</span> Grid</h3>
|
||||
<div class="outline-text-3" id="text-9-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate">\pgfplotsset</span>{grid style={black}}
|
||||
@@ -662,8 +432,8 @@ Maybe use <code>isosceles</code> instead of regular polygon?
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org63e134b" class="outline-3">
|
||||
<h3 id="org63e134b"><span class="section-number-3">9.2</span> Lines</h3>
|
||||
<div id="outline-container-org59e26cb" class="outline-3">
|
||||
<h3 id="org59e26cb"><span class="section-number-3">9.2</span> Lines</h3>
|
||||
<div class="outline-text-3" id="text-9-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate">\pgfplotsset</span>{separate axis lines=false} <span class="org-comment">% draw axis as rectangle and not as 4 lines</span>
|
||||
@@ -677,8 +447,8 @@ Maybe use <code>isosceles</code> instead of regular polygon?
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org14023c7" class="outline-3">
|
||||
<h3 id="org14023c7"><span class="section-number-3">9.3</span> Ticks</h3>
|
||||
<div id="outline-container-orgbc1d944" class="outline-3">
|
||||
<h3 id="orgbc1d944"><span class="section-number-3">9.3</span> Ticks</h3>
|
||||
<div class="outline-text-3" id="text-9-3">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate">\pgfplotsset</span>{every y tick label/.append style={font=<span class="org-font-latex-sedate">\color</span>{black}}}
|
||||
@@ -690,8 +460,8 @@ Maybe use <code>isosceles</code> instead of regular polygon?
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org97ff77a" class="outline-3">
|
||||
<h3 id="org97ff77a"><span class="section-number-3">9.4</span> Size</h3>
|
||||
<div id="outline-container-org0b17a46" class="outline-3">
|
||||
<h3 id="org0b17a46"><span class="section-number-3">9.4</span> Size</h3>
|
||||
<div class="outline-text-3" id="text-9-4">
|
||||
<p>
|
||||
If <code>scale only axis=false</code> (the default), pgfplots will try to produce the desired width including labels, titles and ticks.
|
||||
@@ -703,8 +473,8 @@ If <code>scale only axis=false</code> (the default), pgfplots will try to produc
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgbd0ce9a" class="outline-3">
|
||||
<h3 id="orgbd0ce9a"><span class="section-number-3">9.5</span> Label</h3>
|
||||
<div id="outline-container-orge253709" class="outline-3">
|
||||
<h3 id="orge253709"><span class="section-number-3">9.5</span> Label</h3>
|
||||
<div class="outline-text-3" id="text-9-5">
|
||||
<p>
|
||||
Used to align all of ylabel of one figure.
|
||||
@@ -716,8 +486,8 @@ Used to align all of ylabel of one figure.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org7c80336" class="outline-3">
|
||||
<h3 id="org7c80336"><span class="section-number-3">9.6</span> Legend</h3>
|
||||
<div id="outline-container-org0136e6e" class="outline-3">
|
||||
<h3 id="org0136e6e"><span class="section-number-3">9.6</span> Legend</h3>
|
||||
<div class="outline-text-3" id="text-9-6">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-comment-delimiter">% </span><span class="org-comment">https://tex.stackexchange.com/questions/54794/using-a-pgfplots-style-legend-in-a-plain-old-tikzpicture#54834</span>
|
||||
@@ -754,8 +524,8 @@ Used to align all of ylabel of one figure.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org882899e" class="outline-3">
|
||||
<h3 id="org882899e"><span class="section-number-3">9.7</span> Upper and Lower bounds</h3>
|
||||
<div id="outline-container-org6c9488e" class="outline-3">
|
||||
<h3 id="org6c9488e"><span class="section-number-3">9.7</span> Upper and Lower bounds</h3>
|
||||
<div class="outline-text-3" id="text-9-7">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate">\tikzstyle</span>{upperbound}=[line cap=round, postaction={decorate,draw,decoration={border, segment length=0.2cm, amplitude=0.3cm, angle=60}}]
|
||||
@@ -783,8 +553,8 @@ And we add the corresdonding
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org028ac81" class="outline-3">
|
||||
<h3 id="org028ac81"><span class="section-number-3">9.8</span> Pole</h3>
|
||||
<div id="outline-container-org68481dd" class="outline-3">
|
||||
<h3 id="org68481dd"><span class="section-number-3">9.8</span> Pole</h3>
|
||||
<div class="outline-text-3" id="text-9-8">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate">\tikzset</span>{<span class="org-comment">%</span>
|
||||
@@ -803,8 +573,8 @@ And we add the corresdonding
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org2d51358" class="outline-3">
|
||||
<h3 id="org2d51358"><span class="section-number-3">9.9</span> Zero</h3>
|
||||
<div id="outline-container-org4b90ce8" class="outline-3">
|
||||
<h3 id="org4b90ce8"><span class="section-number-3">9.9</span> Zero</h3>
|
||||
<div class="outline-text-3" id="text-9-9">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate">\tikzset</span>{<span class="org-comment">%</span>
|
||||
@@ -824,12 +594,12 @@ And we add the corresdonding
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org152b1b6" class="outline-2">
|
||||
<h2 id="org152b1b6"><span class="section-number-2">10</span> Mechanical</h2>
|
||||
<div id="outline-container-orgddaa691" class="outline-2">
|
||||
<h2 id="orgddaa691"><span class="section-number-2">10</span> Mechanical</h2>
|
||||
<div class="outline-text-2" id="text-10">
|
||||
</div>
|
||||
<div id="outline-container-orga9075d9" class="outline-3">
|
||||
<h3 id="orga9075d9"><span class="section-number-3">10.1</span> Spring</h3>
|
||||
<div id="outline-container-orga04ed0c" class="outline-3">
|
||||
<h3 id="orga04ed0c"><span class="section-number-3">10.1</span> Spring</h3>
|
||||
<div class="outline-text-3" id="text-10-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate">\tikzset</span>{<span class="org-comment">%</span>
|
||||
@@ -850,8 +620,8 @@ And we add the corresdonding
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgc290c7c" class="outline-3">
|
||||
<h3 id="orgc290c7c"><span class="section-number-3">10.2</span> Coil</h3>
|
||||
<div id="outline-container-org5037f72" class="outline-3">
|
||||
<h3 id="org5037f72"><span class="section-number-3">10.2</span> Coil</h3>
|
||||
<div class="outline-text-3" id="text-10-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate">\tikzset</span>{<span class="org-comment">%</span>
|
||||
@@ -872,8 +642,8 @@ And we add the corresdonding
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org642ecab" class="outline-3">
|
||||
<h3 id="org642ecab"><span class="section-number-3">10.3</span> Damper</h3>
|
||||
<div id="outline-container-org16357a8" class="outline-3">
|
||||
<h3 id="org16357a8"><span class="section-number-3">10.3</span> Damper</h3>
|
||||
<div class="outline-text-3" id="text-10-3">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate">\tikzset</span>{<span class="org-comment">%</span>
|
||||
@@ -900,8 +670,8 @@ And we add the corresdonding
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org7603957" class="outline-3">
|
||||
<h3 id="org7603957"><span class="section-number-3">10.4</span> Actuator</h3>
|
||||
<div id="outline-container-orgd56dea9" class="outline-3">
|
||||
<h3 id="orgd56dea9"><span class="section-number-3">10.4</span> Actuator</h3>
|
||||
<div class="outline-text-3" id="text-10-4">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate">\tikzset</span>{<span class="org-comment">%</span>
|
||||
@@ -931,8 +701,8 @@ And we add the corresdonding
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgdcbbf5e" class="outline-3">
|
||||
<h3 id="orgdcbbf5e"><span class="section-number-3">10.5</span> Ground</h3>
|
||||
<div id="outline-container-org39bd1d0" class="outline-3">
|
||||
<h3 id="org39bd1d0"><span class="section-number-3">10.5</span> Ground</h3>
|
||||
<div class="outline-text-3" id="text-10-5">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate">\tikzset</span>{<span class="org-comment">%</span>
|
||||
@@ -954,8 +724,8 @@ And we add the corresdonding
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org24c87d5" class="outline-3">
|
||||
<h3 id="org24c87d5"><span class="section-number-3">10.6</span> Force Sensor</h3>
|
||||
<div id="outline-container-org5225a31" class="outline-3">
|
||||
<h3 id="org5225a31"><span class="section-number-3">10.6</span> Force Sensor</h3>
|
||||
<div class="outline-text-3" id="text-10-6">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate">\tikzset</span>{<span class="org-comment">%</span>
|
||||
@@ -984,8 +754,8 @@ And we add the corresdonding
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org85aab6a" class="outline-3">
|
||||
<h3 id="org85aab6a"><span class="section-number-3">10.7</span> Inertial Sensor</h3>
|
||||
<div id="outline-container-org6c262c1" class="outline-3">
|
||||
<h3 id="org6c262c1"><span class="section-number-3">10.7</span> Inertial Sensor</h3>
|
||||
<div class="outline-text-3" id="text-10-7">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate">\tikzset</span>{<span class="org-comment">%</span>
|
||||
@@ -1013,8 +783,8 @@ And we add the corresdonding
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgf07d1e3" class="outline-3">
|
||||
<h3 id="orgf07d1e3"><span class="section-number-3">10.8</span> Axis Rotator</h3>
|
||||
<div id="outline-container-org4071fb1" class="outline-3">
|
||||
<h3 id="org4071fb1"><span class="section-number-3">10.8</span> Axis Rotator</h3>
|
||||
<div class="outline-text-3" id="text-10-8">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate"><span class="org-keyword">\newcommand</span></span>{<span class="org-font-latex-sedate"><span class="org-function-name">\AxisRotator</span></span>}[<span class="org-variable-name">1</span>][<span class="org-variable-name">rotate=0</span>]{<span class="org-function-name"><span class="org-comment">%</span></span>
|
||||
@@ -1025,8 +795,8 @@ And we add the corresdonding
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org091ff6f" class="outline-3">
|
||||
<h3 id="org091ff6f"><span class="section-number-3">10.9</span> Cross</h3>
|
||||
<div id="outline-container-org66470c0" class="outline-3">
|
||||
<h3 id="org66470c0"><span class="section-number-3">10.9</span> Cross</h3>
|
||||
<div class="outline-text-3" id="text-10-9">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate">\tikzstyle</span>{cross}=[path picture={
|
||||
@@ -1039,8 +809,8 @@ And we add the corresdonding
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgf570b65" class="outline-3">
|
||||
<h3 id="orgf570b65"><span class="section-number-3">10.10</span> Piezoelectric actuator</h3>
|
||||
<div id="outline-container-org6eb8134" class="outline-3">
|
||||
<h3 id="org6eb8134"><span class="section-number-3">10.10</span> Piezoelectric actuator</h3>
|
||||
<div class="outline-text-3" id="text-10-10">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate">\tikzset</span>{<span class="org-comment">%</span>
|
||||
@@ -1057,7 +827,7 @@ And we add the corresdonding
|
||||
black,
|
||||
}]
|
||||
<span class="org-font-latex-sedate">\foreach</span> <span class="org-font-latex-sedate">\i</span> in {1,...,#3}{
|
||||
(<span class="org-font-latex-math">${</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\i/</span></span><span class="org-font-latex-math">(1+#3)}*(</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\tikzlastnode</span></span><span class="org-font-latex-math">.north west)+{(1+#3-</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\i</span></span><span class="org-font-latex-math">)/(1+#3)}*(</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\tikzlastnode</span></span><span class="org-font-latex-math">.south west)+0.1*(#1,0)$</span>) edge (<span class="org-font-latex-math">${</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\i/</span></span><span class="org-font-latex-math">(1+#3)}*(</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\tikzlastnode</span></span><span class="org-font-latex-math">.north east)+{(1+#3-</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\i</span></span><span class="org-font-latex-math">)/(1+#3)}*(</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\tikzlastnode</span></span><span class="org-font-latex-math">.south east)-0.1*(#1,0)$</span>)
|
||||
(<span class="org-font-latex-math">${</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\i</span></span><span class="org-font-latex-math">/(1+#3)}*(</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\tikzlastnode</span></span><span class="org-font-latex-math">.north west)+{(1+#3-</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\i</span></span><span class="org-font-latex-math">)/(1+#3)}*(</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\tikzlastnode</span></span><span class="org-font-latex-math">.south west)+0.1*(#1,0)$</span>) edge (<span class="org-font-latex-math">${</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\i</span></span><span class="org-font-latex-math">/(1+#3)}*(</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\tikzlastnode</span></span><span class="org-font-latex-math">.north east)+{(1+#3-</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\i</span></span><span class="org-font-latex-math">)/(1+#3)}*(</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\tikzlastnode</span></span><span class="org-font-latex-math">.south east)-0.1*(#1,0)$</span>)
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -1068,8 +838,8 @@ And we add the corresdonding
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org816eebe" class="outline-3">
|
||||
<h3 id="org816eebe"><span class="section-number-3">10.11</span> Voice coil</h3>
|
||||
<div id="outline-container-org6b9bc4d" class="outline-3">
|
||||
<h3 id="org6b9bc4d"><span class="section-number-3">10.11</span> Voice coil</h3>
|
||||
<div class="outline-text-3" id="text-10-11">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate">\def\voicecoil</span>#1#2#3{
|
||||
@@ -1080,7 +850,7 @@ And we add the corresdonding
|
||||
<span class="org-font-latex-sedate">\def\voicecoilh</span>{#2} <span class="org-comment">% Total Height</span>
|
||||
|
||||
<span class="org-font-latex-sedate">\def\magnetw</span>{<span class="org-font-latex-sedate">\voicecoilw</span>} <span class="org-comment">% Width of the magnet</span>
|
||||
<span class="org-font-latex-sedate">\def\magneth</span>{<span class="org-font-latex-sedate">\voicecoilh/1</span>.4} <span class="org-comment">% Height of the magnet</span>
|
||||
<span class="org-font-latex-sedate">\def\magneth</span>{<span class="org-font-latex-sedate">\voicecoilh</span>/1.4} <span class="org-comment">% Height of the magnet</span>
|
||||
|
||||
<span class="org-font-latex-sedate">\def\magnetwb</span>{0.15*<span class="org-font-latex-sedate">\magnetw</span>} <span class="org-comment">% Width of the borders of the magnet</span>
|
||||
<span class="org-font-latex-sedate">\def\magnetmw</span>{0.15*<span class="org-font-latex-sedate">\magnetw</span>} <span class="org-comment">% Width of the middle part of the magnet</span>
|
||||
@@ -1095,26 +865,26 @@ And we add the corresdonding
|
||||
<span class="org-comment">% ======================</span>
|
||||
<span class="org-comment">% Magnet</span>
|
||||
<span class="org-comment">% ======================</span>
|
||||
<span class="org-font-latex-sedate">\draw</span>[fill=white] (0, 0) -| ++(0.5*<span class="org-font-latex-sedate">\magnetw</span>, <span class="org-font-latex-sedate">\magneth</span>) -| ++(-0.5*<span class="org-font-latex-sedate">\magnetw+0</span>.5*<span class="org-font-latex-sedate">\magnetwg</span>, -<span class="org-font-latex-sedate">\magnethg</span>) -| (0.5*<span class="org-font-latex-sedate">\magnetw-\magnetwb</span>, <span class="org-font-latex-sedate">\magnethl</span>) -| (-0.5*<span class="org-font-latex-sedate">\magnetw+\magnetwb</span>, <span class="org-font-latex-sedate">\magneth-\magnethg</span>) -| (-0.5*<span class="org-font-latex-sedate">\magnetwg</span>, <span class="org-font-latex-sedate">\magneth</span>) -| (-0.5*<span class="org-font-latex-sedate">\magnetw</span>, 0) -- (cycle);
|
||||
<span class="org-font-latex-sedate">\draw</span>[fill=white] (0, 0) -| ++(0.5*<span class="org-font-latex-sedate">\magnetw</span>, <span class="org-font-latex-sedate">\magneth</span>) -| ++(-0.5*<span class="org-font-latex-sedate">\magnetw</span>+0.5*<span class="org-font-latex-sedate">\magnetwg</span>, -<span class="org-font-latex-sedate">\magnethg</span>) -| (0.5*<span class="org-font-latex-sedate">\magnetw</span>-<span class="org-font-latex-sedate">\magnetwb</span>, <span class="org-font-latex-sedate">\magnethl</span>) -| (-0.5*<span class="org-font-latex-sedate">\magnetw</span>+<span class="org-font-latex-sedate">\magnetwb</span>, <span class="org-font-latex-sedate">\magneth</span>-<span class="org-font-latex-sedate">\magnethg</span>) -| (-0.5*<span class="org-font-latex-sedate">\magnetwg</span>, <span class="org-font-latex-sedate">\magneth</span>) -| (-0.5*<span class="org-font-latex-sedate">\magnetw</span>, 0) -- (cycle);
|
||||
<span class="org-font-latex-sedate"><span class="org-keyword">\begin</span></span>{<span class="org-function-name">scope</span>}[shift={(0, <span class="org-font-latex-sedate">\magnethl</span>)}]
|
||||
<span class="org-font-latex-sedate">\draw</span>[fill=red] (-0.5*<span class="org-font-latex-sedate">\magnetmw</span>, 0) rectangle (0.5*<span class="org-font-latex-sedate">\magnetmw</span>, <span class="org-font-latex-sedate">\magnetmh</span>);
|
||||
<span class="org-font-latex-sedate">\draw</span>[fill=blue] (-0.5*<span class="org-font-latex-sedate">\magnetmw</span>, <span class="org-font-latex-sedate">\magnetmh</span>) rectangle (0.5*<span class="org-font-latex-sedate">\magnetmw</span>, 2*<span class="org-font-latex-sedate">\magnetmh</span>);
|
||||
<span class="org-comment">% Top conductive Magnet</span>
|
||||
<span class="org-font-latex-sedate">\draw</span>[fill=white] (-0.5*<span class="org-font-latex-sedate">\magnetmw</span>, 2*<span class="org-font-latex-sedate">\magnetmh</span>) -| (0.5*<span class="org-font-latex-sedate">\magnetmw</span>, -<span class="org-font-latex-sedate">\magnethl+\magneth-\magnethg</span>) -| ++(0.1, <span class="org-font-latex-sedate">\magnethg</span>) -| ++(-0.2-<span class="org-font-latex-sedate">\magnetmw</span>, -<span class="org-font-latex-sedate">\magnethg</span>) -| (-0.5*<span class="org-font-latex-sedate">\magnetmw</span>, <span class="org-font-latex-sedate">\magnetmh</span>);
|
||||
<span class="org-font-latex-sedate">\draw</span>[fill=white] (-0.5*<span class="org-font-latex-sedate">\magnetmw</span>, 2*<span class="org-font-latex-sedate">\magnetmh</span>) -| (0.5*<span class="org-font-latex-sedate">\magnetmw</span>, -<span class="org-font-latex-sedate">\magnethl</span>+<span class="org-font-latex-sedate">\magneth</span>-<span class="org-font-latex-sedate">\magnethg</span>) -| ++(0.1, <span class="org-font-latex-sedate">\magnethg</span>) -| ++(-0.2-<span class="org-font-latex-sedate">\magnetmw</span>, -<span class="org-font-latex-sedate">\magnethg</span>) -| (-0.5*<span class="org-font-latex-sedate">\magnetmw</span>, <span class="org-font-latex-sedate">\magnetmh</span>);
|
||||
<span class="org-font-latex-sedate"><span class="org-keyword">\end</span></span>{<span class="org-function-name">scope</span>}
|
||||
<span class="org-comment">% ======================</span>
|
||||
|
||||
<span class="org-comment">% ======================</span>
|
||||
<span class="org-comment">% Coil</span>
|
||||
<span class="org-comment">% ======================</span>
|
||||
<span class="org-font-latex-sedate">\pgfmathsetmacro</span>{<span class="org-font-latex-sedate">\coilwidth</span>}{0.5*0.5*<span class="org-font-latex-sedate">\magnetmw+0</span>.5*0.1+0.25*<span class="org-font-latex-sedate">\magnetwg</span>}<span class="org-comment">%</span>
|
||||
<span class="org-font-latex-sedate">\pgfmathsetmacro</span>{<span class="org-font-latex-sedate">\coilwidth</span>}{0.5*0.5*<span class="org-font-latex-sedate">\magnetmw</span>+0.5*0.1+0.25*<span class="org-font-latex-sedate">\magnetwg</span>}<span class="org-comment">%</span>
|
||||
<span class="org-font-latex-sedate">\draw</span>[] ( <span class="org-font-latex-sedate">\coilwidth</span>, 0.5*<span class="org-font-latex-sedate">\magneth</span>) -- ++(0, 0.7*<span class="org-font-latex-sedate">\magneth</span>);
|
||||
<span class="org-font-latex-sedate">\draw</span>[] (-<span class="org-font-latex-sedate">\coilwidth</span>, 0.5*<span class="org-font-latex-sedate">\magneth</span>) -- ++(0, 0.7*<span class="org-font-latex-sedate">\magneth</span>);
|
||||
<span class="org-comment">% Point on the coil</span>
|
||||
<span class="org-font-latex-sedate">\foreach</span> <span class="org-font-latex-sedate">\x</span> in {0,1,...,9}
|
||||
{
|
||||
<span class="org-font-latex-sedate">\node</span>[circle,inner sep=0.6pt,fill] at ( <span class="org-font-latex-sedate">\coilwidth</span>, <span class="org-font-latex-sedate">\x*0</span>.7*<span class="org-font-latex-sedate">\magneth/10+0</span>.5*<span class="org-font-latex-sedate">\magneth</span>);
|
||||
<span class="org-font-latex-sedate">\node</span>[circle,inner sep=0.6pt,fill] at (-<span class="org-font-latex-sedate">\coilwidth</span>, <span class="org-font-latex-sedate">\x*0</span>.7*<span class="org-font-latex-sedate">\magneth/10+0</span>.5*<span class="org-font-latex-sedate">\magneth</span>);
|
||||
<span class="org-font-latex-sedate">\node</span>[circle,inner sep=0.6pt,fill] at ( <span class="org-font-latex-sedate">\coilwidth</span>, <span class="org-font-latex-sedate">\x</span>*0.7*<span class="org-font-latex-sedate">\magneth</span>/10+0.5*<span class="org-font-latex-sedate">\magneth</span>);
|
||||
<span class="org-font-latex-sedate">\node</span>[circle,inner sep=0.6pt,fill] at (-<span class="org-font-latex-sedate">\coilwidth</span>, <span class="org-font-latex-sedate">\x</span>*0.7*<span class="org-font-latex-sedate">\magneth</span>/10+0.5*<span class="org-font-latex-sedate">\magneth</span>);
|
||||
}
|
||||
<span class="org-font-latex-sedate">\draw</span>[fill=white] (-0.5*<span class="org-font-latex-sedate">\magnetw</span>, 1.2*<span class="org-font-latex-sedate">\magneth</span>) rectangle ++(<span class="org-font-latex-sedate">\magnetw</span>, <span class="org-font-latex-sedate">\magnethg</span>);
|
||||
<span class="org-comment">% ======================</span>
|
||||
@@ -1123,7 +893,7 @@ And we add the corresdonding
|
||||
<span class="org-comment">% Coordinates</span>
|
||||
<span class="org-comment">% ======================</span>
|
||||
<span class="org-comment">% Force</span>
|
||||
<span class="org-font-latex-sedate">\coordinate</span>[] (vc_force) at (0, <span class="org-font-latex-sedate">\magneth-0</span>.5*<span class="org-font-latex-sedate">\magnethg</span>);
|
||||
<span class="org-font-latex-sedate">\coordinate</span>[] (vc_force) at (0, <span class="org-font-latex-sedate">\magneth</span>-0.5*<span class="org-font-latex-sedate">\magnethg</span>);
|
||||
<span class="org-comment">% Coil</span>
|
||||
<span class="org-font-latex-sedate">\coordinate</span>[] (vc_coil) at (0, <span class="org-font-latex-sedate">\voicecoilh</span>);
|
||||
<span class="org-comment">% Magnet</span>
|
||||
@@ -1140,8 +910,8 @@ And we add the corresdonding
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgb095cdb" class="outline-2">
|
||||
<h2 id="orgb095cdb"><span class="section-number-2">11</span> Optics</h2>
|
||||
<div id="outline-container-org69d7a0b" class="outline-2">
|
||||
<h2 id="org69d7a0b"><span class="section-number-2">11</span> Optics</h2>
|
||||
<div class="outline-text-2" id="text-11">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate">\tikzset</span>{<span class="org-comment">%</span>
|
||||
@@ -1169,8 +939,8 @@ And we add the corresdonding
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org06358e3" class="outline-2">
|
||||
<h2 id="org06358e3"><span class="section-number-2">12</span> Misc</h2>
|
||||
<div id="outline-container-org0283a14" class="outline-2">
|
||||
<h2 id="org0283a14"><span class="section-number-2">12</span> Misc</h2>
|
||||
<div class="outline-text-2" id="text-12">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate">\tikzset</span>{<span class="org-comment">%</span>
|
||||
@@ -1186,11 +956,22 @@ And we add the corresdonding
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org6860135" class="outline-2">
|
||||
<h2 id="org6860135"><span class="section-number-2">13</span> More Defaults specific to this paper</h2>
|
||||
<div class="outline-text-2" id="text-13">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate">\tikzset</span>{block/.default={0.8cm}{0.6cm}}
|
||||
<span class="org-font-latex-sedate">\tikzset</span>{addb/.append style={scale=0.7}}
|
||||
<span class="org-font-latex-sedate">\tikzset</span>{node distance=0.6}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Thomas Dehaeze</p>
|
||||
<p class="date">Created: 2019-08-01 jeu. 17:46</p>
|
||||
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
|
||||
<p class="date">Created: 2020-11-12 jeu. 10:41</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+5
-6
@@ -1,11 +1,10 @@
|
||||
#+TITLE: LaTeX Configuration for Tikz Figures
|
||||
:DRAWER:
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../css/htmlize.css"/>
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../css/readtheorg.css"/>
|
||||
#+HTML_HEAD: <script src="../js/jquery.min.js"></script>
|
||||
#+HTML_HEAD: <script src="../js/bootstrap.min.js"></script>
|
||||
#+HTML_HEAD: <script src="../js/jquery.stickytableheaders.min.js"></script>
|
||||
#+HTML_HEAD: <script src="../js/readtheorg.js"></script>
|
||||
#+HTML_LINK_HOME: ../index.html
|
||||
#+HTML_LINK_UP: ../index.html
|
||||
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
#+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
|
||||
#+PROPERTY: header-args:latex+ :tangle config.tex
|
||||
#+PROPERTY: header-args:latex+ :exports code
|
||||
|
||||
+410
-267
@@ -3,17 +3,13 @@
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<!-- 2020-08-17 lun. 17:49 -->
|
||||
<!-- 2020-11-12 jeu. 10:42 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Robust and Optimal Sensor Fusion - Tikz Figures</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Thomas Dehaeze" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="../css/readtheorg.css"/>
|
||||
<script src="../js/jquery.min.js"></script>
|
||||
<script src="../js/bootstrap.min.js"></script>
|
||||
<script src="../js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="../js/readtheorg.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
<script>MathJax = {
|
||||
tex: {
|
||||
tags: 'ams',
|
||||
@@ -34,13 +30,16 @@
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#org4e2a932">1. Sensor Fusion Architecture</a></li>
|
||||
<li><a href="#org1353381">2. Architecture used for \(\mathcal{H}_2\) synthesis of complementary filters</a></li>
|
||||
<li><a href="#org1189340">3. Sensor fusion architecture with sensor dynamics uncertainty</a></li>
|
||||
<li><a href="#org635364c">4. Uncertainty set of the super sensor dynamics</a></li>
|
||||
<li><a href="#org8471952">5. Architecture used for \(\mathcal{H}_\infty\) synthesis of complementary filters</a></li>
|
||||
<li><a href="#orgd2abe63">6. Sensor fusion architecture with sensor dynamics uncertainty and noise</a></li>
|
||||
<li><a href="#org25fbe7c">7. Mixed H2/H-Infinity Synthesis</a></li>
|
||||
<li><a href="#orgde691cc">1. Sensor Model - Noise</a></li>
|
||||
<li><a href="#org3e09ccd">2. Sensor Fusion Architecture</a></li>
|
||||
<li><a href="#org98e222d">3. Architecture used for \(\mathcal{H}_2\) synthesis of complementary filters</a></li>
|
||||
<li><a href="#org7b2be36">4. Sensor Model - Uncertainty</a></li>
|
||||
<li><a href="#org201b812">5. Sensor fusion architecture with sensor dynamics uncertainty</a></li>
|
||||
<li><a href="#org295dc2a">6. Uncertainty set of the super sensor dynamics</a></li>
|
||||
<li><a href="#orgff8ec60">7. Architecture used for \(\mathcal{H}_\infty\) synthesis of complementary filters</a></li>
|
||||
<li><a href="#org77a9624">8. Sensor Model - Noise and Uncertainty</a></li>
|
||||
<li><a href="#org194f17b">9. Sensor fusion architecture with sensor dynamics uncertainty and noise</a></li>
|
||||
<li><a href="#org92adb06">10. Mixed H2/H-Infinity Synthesis</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@@ -48,360 +47,504 @@
|
||||
Configuration file is accessible <a href="config.html">here</a>.
|
||||
</p>
|
||||
|
||||
<div id="outline-container-org4e2a932" class="outline-2">
|
||||
<h2 id="org4e2a932"><span class="section-number-2">1</span> Sensor Fusion Architecture</h2>
|
||||
<div id="outline-container-orgde691cc" class="outline-2">
|
||||
<h2 id="orgde691cc"><span class="section-number-2">1</span> Sensor Model - Noise</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex">\begin{tikzpicture}
|
||||
\node[branch] (x) at (0, 0);
|
||||
\node[block, above right=1.0 and 0.5 of x](G1){$G_1(s)$};
|
||||
\node[block, below right=1.0 and 0.5 of x](G2){$G_2(s)$};
|
||||
\node[addb, right=0.4 of G1](add1){};
|
||||
\node[addb, right=0.4 of G2](add2){};
|
||||
\node[block, right=1.1 of add1](H1){$H_1(s)$};
|
||||
\node[block, right=1.1 of add2](H2){$H_2(s)$};
|
||||
\node[block, above=0.5 of add1](N1){$N_1(s)$};
|
||||
\node[block, above=0.5 of add2](N2){$N_2(s)$};
|
||||
\node[addb, right=4.8 of x](add){};
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate"><span class="org-keyword">\begin</span></span>{<span class="org-function-name">tikzpicture</span>}
|
||||
<span class="org-font-latex-sedate">\node</span>[addb](add1){};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, right=0.5 of add1](G1){<span class="org-font-latex-math">$G</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">i$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, right=0.8 of G1](Ginv1){<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\hat</span></span><span class="org-font-latex-math">{G}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">i</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">^</span></span><span class="org-font-latex-math">{-1}$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, above=0.5 of add1](N1){<span class="org-font-latex-math">$N</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">i$</span>};
|
||||
|
||||
\draw[] ($(x)+(-0.7, 0)$) node[above right]{$x$} -- (x.center);
|
||||
\draw[->] (x.center) |- (G1.west);
|
||||
\draw[->] (x.center) |- (G2.west);
|
||||
\draw[->] (G1.east) -- (add1.west);
|
||||
\draw[->] (G2.east) -- (add2.west);
|
||||
\draw[->] (N1.south) -- (add1.north)node[above right]{$n_1$};
|
||||
\draw[->] (N2.south) -- (add2.north)node[above right]{$n_2$};
|
||||
\draw[<-] (N1.north) -- ++(0, 0.6)node[below right](n1){$\tilde{n}_1$};
|
||||
\draw[<-] (N2.north) -- ++(0, 0.6)node[below right](n2){$\tilde{n}_2$};
|
||||
\draw[->] (add1.east) -- (H1.west)node[above left]{$\hat{x}_1$};
|
||||
\draw[->] (add2.east) -- (H2.west)node[above left]{$\hat{x}_2$};
|
||||
\draw[->] (H1) -| (add.north);
|
||||
\draw[->] (H2) -| (add.south);
|
||||
\draw[->] (add.east) -- ++(0.7, 0) node[above left]{$\hat{x}$};
|
||||
<span class="org-font-latex-sedate">\draw</span>[<-] (add1.west) -- ++(-1.0, 0) node[above right]{<span class="org-font-latex-math">$x$</span>};
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (add1.east) -- (G1.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (N1.south) -- (add1.north)node[above left]{<span class="org-font-latex-math">$n</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">i$</span>};
|
||||
<span class="org-font-latex-sedate">\draw</span>[<-] (N1.north)node[above left](n1){<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\tilde</span></span><span class="org-font-latex-math">{n}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">i$</span>} -- ++(0, 0.4);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (G1.east) -- (Ginv1.west)node[above left]{<span class="org-font-latex-math">$v</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">i$</span>};
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (Ginv1.east) -- ++(0.7, 0) node[above left]{<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\hat</span></span><span class="org-font-latex-math">{x}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">i$</span>};
|
||||
|
||||
\begin{scope}[on background layer]
|
||||
\node[fit={($(G2.south-|x)+(-0.2, -0.3)$) ($(n1.north east-|add.east)+(0.2, 0.3)$)}, fill=black!10!white, draw, dashed, inner sep=0pt] (supersensor) {};
|
||||
\node[below left] at (supersensor.north east) {Super Sensor};
|
||||
|
||||
\node[fit={($(G1.south west)+(-0.3, -0.1)$) ($(n1.north east)+(0.1, 0.1)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor1) {};
|
||||
\node[below right] at (sensor1.north west) {Sensor 1};
|
||||
\node[fit={($(G2.south west)+(-0.3, -0.1)$) ($(n2.north east)+(0.1, 0.1)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor2) {};
|
||||
\node[below right] at (sensor2.north west) {Sensor 2};
|
||||
\end{scope}
|
||||
\end{tikzpicture}
|
||||
<span class="org-font-latex-sedate"><span class="org-keyword">\begin</span></span>{<span class="org-function-name">scope</span>}[on background layer]
|
||||
<span class="org-font-latex-sedate">\node</span>[fit={(<span class="org-font-latex-math">$(G1.south east)+(0.15, -0.15)$</span>) (<span class="org-font-latex-math">$(n1.north west)$</span>)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor1) {};
|
||||
<span class="org-font-latex-sedate">\node</span>[below left, align=right] at (sensor1.north east) {Sensor};
|
||||
<span class="org-font-latex-sedate"><span class="org-keyword">\end</span></span>{<span class="org-function-name">scope</span>}
|
||||
<span class="org-font-latex-sedate"><span class="org-keyword">\end</span></span>{<span class="org-function-name">tikzpicture</span>}
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orge2c7af4" class="figure">
|
||||
<p><img src="figs/sensor_fusion_noise_arch.png" alt="sensor_fusion_noise_arch.png" />
|
||||
<div id="org540adfc" class="figure">
|
||||
<p><img src="figs/sensor_model_noise.png" alt="sensor_model_noise.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Sensor Fusion Architecture (<a href="./figs/sensor_fusion_noise_arch.png">png</a>, <a href="./figs/sensor_fusion_noise_arch.pdf">pdf</a>).</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Sensor Model (<a href="./figs/sensor_model_noise.png">png</a>, <a href="./figs/sensor_model_noise.pdf">pdf</a>).</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org1353381" class="outline-2">
|
||||
<h2 id="org1353381"><span class="section-number-2">2</span> Architecture used for \(\mathcal{H}_2\) synthesis of complementary filters</h2>
|
||||
<div id="outline-container-org3e09ccd" class="outline-2">
|
||||
<h2 id="org3e09ccd"><span class="section-number-2">2</span> Sensor Fusion Architecture</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex">\begin{tikzpicture}
|
||||
\node[block={4.0cm}{2.5cm}, fill=black!20!white, dashed] (P) {};
|
||||
\node[above] at (P.north) {$P(s)$};
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate"><span class="org-keyword">\begin</span></span>{<span class="org-function-name">tikzpicture</span>}
|
||||
<span class="org-font-latex-sedate">\node</span>[branch] (x) at (0, 0);
|
||||
<span class="org-font-latex-sedate">\node</span>[addb, above right=1.05 and 0.6 of x](add1){};
|
||||
<span class="org-font-latex-sedate">\node</span>[addb, below right=1.05 and 0.6 of x](add2){};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, right=0.4 of add1](G1){<span class="org-font-latex-math">$G</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">1$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, right=0.4 of add2](G2){<span class="org-font-latex-math">$G</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, right=0.7 of G1](Ginv1){<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\hat</span></span><span class="org-font-latex-math">{G}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">1</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">^</span></span><span class="org-font-latex-math">{-1}$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, right=0.7 of G2](Ginv2){<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\hat</span></span><span class="org-font-latex-math">{G}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">^</span></span><span class="org-font-latex-math">{-1}$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, right=0.6 of Ginv1](H1){<span class="org-font-latex-math">$H</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">1$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, right=0.6 of Ginv2](H2){<span class="org-font-latex-math">$H</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, above=0.5 of add1](N1){<span class="org-font-latex-math">$N</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">1$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, above=0.5 of add2](N2){<span class="org-font-latex-math">$N</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[addb, right=5.3 of x](add){};
|
||||
|
||||
\coordinate[] (inputw) at ($(P.south west)!0.75!(P.north west) + (-0.7, 0)$);
|
||||
\coordinate[] (inputu) at ($(P.south west)!0.35!(P.north west) + (-0.7, 0)$);
|
||||
<span class="org-font-latex-sedate">\draw</span>[] (<span class="org-font-latex-math">$(x)+(-0.7, 0)$</span>) node[above right]{<span class="org-font-latex-math">$x$</span>} -- (x.center);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (x.center) |- (add1.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (x.center) |- (add2.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (add1.east) -- (G1.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (add2.east) -- (G2.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (N1.south) -- (add1.north)node[above left]{<span class="org-font-latex-math">$n</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">1$</span>};
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (N2.south) -- (add2.north)node[above left]{<span class="org-font-latex-math">$n</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2$</span>};
|
||||
<span class="org-font-latex-sedate">\draw</span>[<-] (N1.north)node[above left](n1){<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\tilde</span></span><span class="org-font-latex-math">{n}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">1$</span>} -- ++(0, 0.4);
|
||||
<span class="org-font-latex-sedate">\draw</span>[<-] (N2.north)node[above left](n2){<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\tilde</span></span><span class="org-font-latex-math">{n}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2$</span>} -- ++(0, 0.4);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (G1.east) -- (Ginv1.west)node[above left]{<span class="org-font-latex-math">$v</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">1$</span>};
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (G2.east) -- (Ginv2.west)node[above left]{<span class="org-font-latex-math">$v</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2$</span>};
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (Ginv1.east) -- (H1.west)node[above left]{<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\hat</span></span><span class="org-font-latex-math">{x}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">1$</span>};
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (Ginv2.east) -- (H2.west)node[above left]{<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\hat</span></span><span class="org-font-latex-math">{x}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2$</span>};
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (H1) -| (add.north);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (H2) -| (add.south);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (add.east) -- ++(0.7, 0) node[above left]{<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\hat</span></span><span class="org-font-latex-math">{x}$</span>};
|
||||
|
||||
\coordinate[] (output1) at ($(P.south east)!0.75!(P.north east) + ( 0.7, 0)$);
|
||||
\coordinate[] (output2) at ($(P.south east)!0.35!(P.north east) + ( 0.7, 0)$);
|
||||
\coordinate[] (outputv) at ($(P.south east)!0.1!(P.north east) + ( 0.7, 0)$);
|
||||
<span class="org-font-latex-sedate"><span class="org-keyword">\begin</span></span>{<span class="org-function-name">scope</span>}[on background layer]
|
||||
<span class="org-font-latex-sedate">\node</span>[fit={(<span class="org-font-latex-math">$(G2.south-|x)+(-0.2, -0.3)$</span>) (<span class="org-font-latex-math">$(n1.north east-|add.east)+(0.2, 0.2)$</span>)}, fill=black!10!white, draw, dashed, inner sep=0pt] (supersensor) {};
|
||||
<span class="org-font-latex-sedate">\node</span>[below left] at (supersensor.north east) {Super Sensor};
|
||||
|
||||
\node[block, left=1.4 of output1] (N1){$N_1(s)$};
|
||||
\node[block, left=1.4 of output2] (N2){$N_2(s)$};
|
||||
\node[addb={+}{}{}{}{-}, left=of N1] (sub) {};
|
||||
<span class="org-font-latex-sedate">\node</span>[fit={(<span class="org-font-latex-math">$(G1.south east)+(0.15, -0.15)$</span>) (<span class="org-font-latex-math">$(n1.north west)$</span>)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor1) {};
|
||||
<span class="org-font-latex-sedate">\node</span>[below left] at (sensor1.north east) {Sensor 1};
|
||||
|
||||
\node[block, below=0.3 of P] (H2) {$H_2(s)$};
|
||||
|
||||
\draw[->] (inputw) node[above right]{$w$} -- (sub.west);
|
||||
\draw[->] (H2.west) -| ($(inputu)+(0.35, 0)$) node[above]{$u$} -- (N2.west);
|
||||
\draw[->] (inputu-|sub) node[branch]{} -- (sub.south);
|
||||
\draw[->] (sub.east) -- (N1.west);
|
||||
\draw[->] ($(sub.west)+(-0.6, 0)$) node[branch]{} |- ($(outputv)+(-0.35, 0)$) node[above]{$v$} |- (H2.east);
|
||||
\draw[->] (N1.east) -- (output1)node[above left]{$z_1$};
|
||||
\draw[->] (N2.east) -- (output2)node[above left]{$z_2$};
|
||||
\end{tikzpicture}
|
||||
<span class="org-font-latex-sedate">\node</span>[fit={(<span class="org-font-latex-math">$(G2.south east)+(0.15, -0.15)$</span>) (<span class="org-font-latex-math">$(n2.north west)$</span>)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor2) {};
|
||||
<span class="org-font-latex-sedate">\node</span>[below left] at (sensor2.north east) {Sensor 2};
|
||||
<span class="org-font-latex-sedate"><span class="org-keyword">\end</span></span>{<span class="org-function-name">scope</span>}
|
||||
<span class="org-font-latex-sedate"><span class="org-keyword">\end</span></span>{<span class="org-function-name">tikzpicture</span>}
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org8ddefad" class="figure">
|
||||
<p><img src="figs/h_two_optimal_fusion.png" alt="h_two_optimal_fusion.png" />
|
||||
<div id="org896d2c3" class="figure">
|
||||
<p><img src="figs/sensor_fusion_noise_arch.png" alt="sensor_fusion_noise_arch.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>Architecture used for \(\mathcal{H}_\infty\) synthesis of complementary filters (<a href="./figs/h_two_optimal_fusion.png">png</a>, <a href="./figs/h_two_optimal_fusion.pdf">pdf</a>).</p>
|
||||
<p><span class="figure-number">Figure 2: </span>Sensor Fusion Architecture (<a href="./figs/sensor_fusion_noise_arch.png">png</a>, <a href="./figs/sensor_fusion_noise_arch.pdf">pdf</a>).</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org1189340" class="outline-2">
|
||||
<h2 id="org1189340"><span class="section-number-2">3</span> Sensor fusion architecture with sensor dynamics uncertainty</h2>
|
||||
<div id="outline-container-org98e222d" class="outline-2">
|
||||
<h2 id="org98e222d"><span class="section-number-2">3</span> Architecture used for \(\mathcal{H}_2\) synthesis of complementary filters</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex">\begin{tikzpicture}
|
||||
\node[branch] (x) at (0, 0);
|
||||
\node[addb, above right=0.8 and 4 of x](add1){};
|
||||
\node[addb, below right=0.8 and 4 of x](add2){};
|
||||
\node[block, above left=0.2 and 0.1 of add1](delta1){$\Delta_1(s)$};
|
||||
\node[block, above left=0.2 and 0.1 of add2](delta2){$\Delta_2(s)$};
|
||||
\node[block, left=0.5 of delta1](W1){$w_1(s)$};
|
||||
\node[block, left=0.5 of delta2](W2){$w_2(s)$};
|
||||
\node[block, right=0.5 of add1](H1){$H_1(s)$};
|
||||
\node[block, right=0.5 of add2](H2){$H_2(s)$};
|
||||
\node[addb, right=6 of x](add){};
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate"><span class="org-keyword">\begin</span></span>{<span class="org-function-name">tikzpicture</span>}
|
||||
<span class="org-font-latex-sedate">\node</span>[block={3.5cm}{2.5cm}, fill=black!20!white, dashed] (P) {};
|
||||
<span class="org-font-latex-sedate">\node</span>[above] at (P.north) {<span class="org-font-latex-math">$P</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">{</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\mathcal</span></span><span class="org-font-latex-math">{H}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2}$</span>};
|
||||
|
||||
\draw[] ($(x)+(-0.7, 0)$) node[above right]{$x$} -- (x.center);
|
||||
\draw[->] (x.center) |- (add1.west);
|
||||
\draw[->] (x.center) |- (add2.west);
|
||||
\draw[->] ($(add1-|W1.west)+(-0.5, 0)$)node[branch](S1){} |- (W1.west);
|
||||
\draw[->] ($(add2-|W2.west)+(-0.5, 0)$)node[branch](S1){} |- (W2.west);
|
||||
\draw[->] (W1.east) -- (delta1.west);
|
||||
\draw[->] (W2.east) -- (delta2.west);
|
||||
\draw[->] (delta1.east) -| (add1.north);
|
||||
\draw[->] (delta2.east) -| (add2.north);
|
||||
\draw[->] (add1.east) -- (H1.west);
|
||||
\draw[->] (add2.east) -- (H2.west);
|
||||
\draw[->] (H1.east) -| (add.north);
|
||||
\draw[->] (H2.east) -| (add.south);
|
||||
\draw[->] (add.east) -- ++(0.7, 0) node[above left]{$\hat{x}$};
|
||||
<span class="org-font-latex-sedate">\coordinate</span>[] (inputw) at (<span class="org-font-latex-math">$(P.south west)!0.8!(P.north west) + (-0.7, 0)$</span>);
|
||||
<span class="org-font-latex-sedate">\coordinate</span>[] (inputu) at (<span class="org-font-latex-math">$(P.south west)!0.5!(P.north west) + (-0.7, 0)$</span>);
|
||||
|
||||
\begin{scope}[on background layer]
|
||||
\node[fit={($(H2.south-|x)+(-0.2, -0.3)$) ($(delta1.north east-|add.east)+(0.2, 0.4)$)}, fill=black!10!white, draw, dashed, inner sep=0pt] (supersensor) {};
|
||||
\node[below left] at (supersensor.north east) {Super Sensor};
|
||||
<span class="org-font-latex-sedate">\coordinate</span>[] (output1) at (<span class="org-font-latex-math">$(P.south east)!0.8!(P.north east) + ( 0.7, 0)$</span>);
|
||||
<span class="org-font-latex-sedate">\coordinate</span>[] (output2) at (<span class="org-font-latex-math">$(P.south east)!0.5!(P.north east) + ( 0.7, 0)$</span>);
|
||||
<span class="org-font-latex-sedate">\coordinate</span>[] (outputv) at (<span class="org-font-latex-math">$(P.south east)!0.2!(P.north east) + ( 0.7, 0)$</span>);
|
||||
|
||||
\node[block, fit={($(W1.north-|S1)+(-0.2, 0.2)$) ($(add1.south east)+(0.2, -0.3)$)}, fill=black!20!white, dashed, inner sep=0pt] (sensor1) {};
|
||||
\node[above right] at (sensor1.south west) {Sensor 1};
|
||||
\node[block, fit={($(W2.north-|S1)+(-0.2, 0.2)$) ($(add2.south east)+(0.2, -0.3)$)}, fill=black!20!white, dashed, inner sep=0pt] (sensor2) {};
|
||||
\node[above right] at (sensor2.south west) {Sensor 2};
|
||||
\end{scope}
|
||||
\end{tikzpicture}
|
||||
<span class="org-font-latex-sedate">\node</span>[block, left=0.9 of output1] (N1){<span class="org-font-latex-math">$N</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">1$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, left=0.9 of output2] (N2){<span class="org-font-latex-math">$N</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[addb={+}{}{}{}{-}, left=of N1] (sub) {};
|
||||
|
||||
<span class="org-font-latex-sedate">\node</span>[block, below=0.3 of P] (H2) {<span class="org-font-latex-math">$H</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2$</span>};
|
||||
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (inputw) node[above right]{<span class="org-font-latex-math">$w$</span>} -- (sub.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (H2.west) -| (<span class="org-font-latex-math">$(inputu)+(0.35, 0)$</span>) node[above]{<span class="org-font-latex-math">$u$</span>} -- (N2.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (inputu-|sub) node[branch]{} -- (sub.south);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (sub.east) -- (N1.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (<span class="org-font-latex-math">$(sub.west)+(-0.6, 0)$</span>) node[branch]{} |- (<span class="org-font-latex-math">$(outputv)+(-0.35, 0)$</span>) node[above]{<span class="org-font-latex-math">$v$</span>} |- (H2.east);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (N1.east) -- (output1)node[above left]{<span class="org-font-latex-math">$z</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">1$</span>};
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (N2.east) -- (output2)node[above left]{<span class="org-font-latex-math">$z</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2$</span>};
|
||||
<span class="org-font-latex-sedate"><span class="org-keyword">\end</span></span>{<span class="org-function-name">tikzpicture</span>}
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org6316ce9" class="figure">
|
||||
<p><img src="figs/sensor_fusion_arch_uncertainty.png" alt="sensor_fusion_arch_uncertainty.png" />
|
||||
<div id="orgc47567c" class="figure">
|
||||
<p><img src="figs/h_two_optimal_fusion.png" alt="h_two_optimal_fusion.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>Sensor fusion architecture with sensor dynamics uncertainty (<a href="./figs/sensor_fusion_arch_uncertainty.png">png</a>, <a href="./figs/sensor_fusion_arch_uncertainty.pdf">pdf</a>).</p>
|
||||
<p><span class="figure-number">Figure 3: </span>Architecture used for \(\mathcal{H}_\infty\) synthesis of complementary filters (<a href="./figs/h_two_optimal_fusion.png">png</a>, <a href="./figs/h_two_optimal_fusion.pdf">pdf</a>).</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org635364c" class="outline-2">
|
||||
<h2 id="org635364c"><span class="section-number-2">4</span> Uncertainty set of the super sensor dynamics</h2>
|
||||
<div id="outline-container-org7b2be36" class="outline-2">
|
||||
<h2 id="org7b2be36"><span class="section-number-2">4</span> Sensor Model - Uncertainty</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex">\begin{tikzpicture}
|
||||
\begin{scope}[shift={(4, 0)}]
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate"><span class="org-keyword">\begin</span></span>{<span class="org-function-name">tikzpicture</span>}
|
||||
<span class="org-font-latex-sedate">\node</span>[branch](b1){};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, above right=0.3 and 0.25 of b1](W1){<span class="org-font-latex-math">$W</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">i$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, right=0.3 of W1](delta1){<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\Delta</span></span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">i$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[addb, right=0.3 of b1-|delta1](add1){};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, right=0.3 of add1](G1){<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\hat</span></span><span class="org-font-latex-math">{G}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">i$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, right=0.7 of G1](Ginv1){<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\hat</span></span><span class="org-font-latex-math">{G}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">i</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">^</span></span><span class="org-font-latex-math">{-1}$</span>};
|
||||
|
||||
% Uncertainty Circle
|
||||
\node[draw, circle, fill=black!20!white, minimum size=3.6cm] (c) at (0, 0) {};
|
||||
\path[draw, dotted] (0, 0) circle [radius=1.0];
|
||||
\path[draw, dashed] (135:1.0) circle [radius=0.8];
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (<span class="org-font-latex-math">$(g1)+(-0.6,0)$</span>) node[above right]{<span class="org-font-latex-math">$x$</span>} -- (add1.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (g1) |- (W1.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (W1.east) -- (delta1.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (delta1.east) -| (add1.north);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (add1.east) -- (G1.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (G1.east) -- (Ginv1.west)node[above left]{<span class="org-font-latex-math">$v</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">i$</span>};
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (Ginv1.east) -- ++(0.7, 0) node[above left]{<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\hat</span></span><span class="org-font-latex-math">{x}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">i$</span>};
|
||||
|
||||
% Center of Circle
|
||||
\node[below] at (0, 0){$1$};
|
||||
|
||||
\draw[<->, dashed] (0, 0) node[branch]{} -- coordinate[midway](r1) ++(45:1.0);
|
||||
\draw[<->, dashed] (135:1.0)node[branch]{} -- coordinate[midway](r2) ++(90:0.8);
|
||||
|
||||
\node[] (l1) at (2, 1.5) {$|w_1 H_1|$};
|
||||
\draw[->, dashed, out=-90, in=0] (l1.south) to (r1);
|
||||
|
||||
\node[] (l2) at (-2.5, 1.5) {$|w_2 H_2|$};
|
||||
\draw[->, dashed, out=0, in=-180] (l2.east) to (r2);
|
||||
|
||||
\draw[<->, dashed] (0, 0) -- coordinate[near end](r3) ++(200:1.8);
|
||||
\node[] (l3) at (-2.5, -1.5) {$|w_1 H_1| + |w_2 H_2|$};
|
||||
\draw[->, dashed, out=90, in=-90] (l3.north) to (r3);
|
||||
\end{scope}
|
||||
|
||||
% Real and Imaginary Axis
|
||||
\draw[->] (-0.5, 0) -- (7.0, 0) node[below left]{Re};
|
||||
\draw[->] (0, -1.7) -- (0, 1.7) node[below left]{Im};
|
||||
|
||||
\draw[dashed] (0, 0) -- (tangent cs:node=c,point={(0, 0)},solution=2);
|
||||
\draw[dashed] (1, 0) arc (0:28:1) node[midway, right]{$\Delta \phi$};
|
||||
\end{tikzpicture}
|
||||
<span class="org-font-latex-sedate"><span class="org-keyword">\begin</span></span>{<span class="org-function-name">scope</span>}[on background layer]
|
||||
<span class="org-font-latex-sedate">\node</span>[block, fit={(<span class="org-font-latex-math">$(b1|-W1.north) + (-0.15, 0.15)$</span>) (<span class="org-font-latex-math">$(G1.south east)+(0.15, -0.15)$</span>)}, fill=black!20!white, dashed, inner sep=0pt] (sensor1) {};
|
||||
<span class="org-font-latex-sedate">\node</span>[below left] at (sensor1.north east) {Sensor};
|
||||
<span class="org-font-latex-sedate"><span class="org-keyword">\end</span></span>{<span class="org-function-name">scope</span>}
|
||||
<span class="org-font-latex-sedate"><span class="org-keyword">\end</span></span>{<span class="org-function-name">tikzpicture</span>}
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgdf90733" class="figure">
|
||||
<p><img src="figs/uncertainty_set_super_sensor.png" alt="uncertainty_set_super_sensor.png" />
|
||||
<div id="org3c8c032" class="figure">
|
||||
<p><img src="figs/sensor_model_uncertainty.png" alt="sensor_model_uncertainty.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 4: </span>Uncertainty region of the super sensor dynamics in the complex plane (solid circle), of the sensor 1 (dotted circle) and of the sensor 2 (dashed circle) (<a href="./figs/uncertainty_set_super_sensor.png">png</a>, <a href="./figs/uncertainty_set_super_sensor.pdf">pdf</a>).</p>
|
||||
<p><span class="figure-number">Figure 4: </span>Sensor Model including dynamical uncertainty (<a href="./figs/sensor_model_uncertainty.png">png</a>, <a href="./figs/sensor_model_uncertainty.pdf">pdf</a>).</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8471952" class="outline-2">
|
||||
<h2 id="org8471952"><span class="section-number-2">5</span> Architecture used for \(\mathcal{H}_\infty\) synthesis of complementary filters</h2>
|
||||
<div id="outline-container-org201b812" class="outline-2">
|
||||
<h2 id="org201b812"><span class="section-number-2">5</span> Sensor fusion architecture with sensor dynamics uncertainty</h2>
|
||||
<div class="outline-text-2" id="text-5">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex">\begin{tikzpicture}
|
||||
\node[block={4.0cm}{2.5cm}, fill=black!20!white, dashed] (P) {};
|
||||
\node[above] at (P.north) {$P(s)$};
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate"><span class="org-keyword">\begin</span></span>{<span class="org-function-name">tikzpicture</span>}
|
||||
<span class="org-font-latex-sedate">\node</span>[branch] (x) at (0, 0);
|
||||
<span class="org-font-latex-sedate">\node</span>[branch, above right=0.8 and 0.2 of x](b1){};
|
||||
<span class="org-font-latex-sedate">\node</span>[branch, below right=0.8 and 0.2 of x](b2){};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, above right=0.3 and 0.25 of b1](W1){<span class="org-font-latex-math">$W</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">1$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, above right=0.3 and 0.25 of b2](W2){<span class="org-font-latex-math">$W</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, right=0.3 of W1](delta1){<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\Delta</span></span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">1$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, right=0.3 of W2](delta2){<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\Delta</span></span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[addb, right=0.3 of b1-|delta1](add1){};
|
||||
<span class="org-font-latex-sedate">\node</span>[addb, right=0.3 of b2-|delta2](add2){};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, right=0.3 of add1](G1){<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\hat</span></span><span class="org-font-latex-math">{G}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">1$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, right=0.3 of add2](G2){<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\hat</span></span><span class="org-font-latex-math">{G}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, right=0.7 of G1](Ginv1){<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\hat</span></span><span class="org-font-latex-math">{G}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">1</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">^</span></span><span class="org-font-latex-math">{-1}$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, right=0.7 of G2](Ginv2){<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\hat</span></span><span class="org-font-latex-math">{G}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">^</span></span><span class="org-font-latex-math">{-1}$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, right=0.35 of Ginv1](H1){<span class="org-font-latex-math">$H</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">1$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, right=0.35 of Ginv2](H2){<span class="org-font-latex-math">$H</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[addb, right=6.8 of x](add){};
|
||||
|
||||
\coordinate[] (inputw) at ($(P.south west)!0.75!(P.north west) + (-0.7, 0)$);
|
||||
\coordinate[] (inputu) at ($(P.south west)!0.35!(P.north west) + (-0.7, 0)$);
|
||||
<span class="org-font-latex-sedate">\draw</span>[] (<span class="org-font-latex-math">$(x)+(-0.7, 0)$</span>) node[above right]{<span class="org-font-latex-math">$x$</span>} -- (x.center);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (x.center) |- (add1.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (x.center) |- (add2.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (add1.east) -- (G1.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (add2.east) -- (G2.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (b1) |- (W1.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (b2) |- (W2.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (W1.east) -- (delta1.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (W2.east) -- (delta2.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (delta1.east) -| (add1.north);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (delta2.east) -| (add2.north);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (G1.east) -- (Ginv1.west)node[above left]{<span class="org-font-latex-math">$v</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">1$</span>};
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (G2.east) -- (Ginv2.west)node[above left]{<span class="org-font-latex-math">$v</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2$</span>};
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (Ginv1.east) -- (H1.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (Ginv2.east) -- (H2.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (H1.east) -| (add.north);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (H2.east) -| (add.south);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (add.east) -- ++(0.7, 0) node[above left]{<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\hat</span></span><span class="org-font-latex-math">{x}$</span>};
|
||||
|
||||
\coordinate[] (output1) at ($(P.south east)!0.75!(P.north east) + ( 0.7, 0)$);
|
||||
\coordinate[] (output2) at ($(P.south east)!0.35!(P.north east) + ( 0.7, 0)$);
|
||||
\coordinate[] (outputv) at ($(P.south east)!0.1!(P.north east) + ( 0.7, 0)$);
|
||||
<span class="org-font-latex-sedate"><span class="org-keyword">\begin</span></span>{<span class="org-function-name">scope</span>}[on background layer]
|
||||
<span class="org-font-latex-sedate">\node</span>[fit={(<span class="org-font-latex-math">$(H2.south-|x)+(-0.2, -0.3)$</span>) (<span class="org-font-latex-math">$(delta1.north east-|add.east)+(0.2, 0.3)$</span>)}, fill=black!10!white, draw, dashed, inner sep=0pt] (supersensor) {};
|
||||
<span class="org-font-latex-sedate">\node</span>[below left] at (supersensor.north east) {Super Sensor};
|
||||
|
||||
\node[block, left=1.4 of output1] (W1){$W_1(s)$};
|
||||
\node[block, left=1.4 of output2] (W2){$W_2(s)$};
|
||||
\node[addb={+}{}{}{}{-}, left=of W1] (sub) {};
|
||||
|
||||
\node[block, below=0.3 of P] (H2) {$H_2(s)$};
|
||||
|
||||
\draw[->] (inputw) node[above right]{$w$} -- (sub.west);
|
||||
\draw[->] (H2.west) -| ($(inputu)+(0.35, 0)$) node[above]{$u$} -- (W2.west);
|
||||
\draw[->] (inputu-|sub) node[branch]{} -- (sub.south);
|
||||
\draw[->] (sub.east) -- (W1.west);
|
||||
\draw[->] ($(sub.west)+(-0.6, 0)$) node[branch]{} |- ($(outputv)+(-0.35, 0)$) node[above]{$v$} |- (H2.east);
|
||||
\draw[->] (W1.east) -- (output1)node[above left]{$z_1$};
|
||||
\draw[->] (W2.east) -- (output2)node[above left]{$z_2$};
|
||||
\end{tikzpicture}
|
||||
<span class="org-font-latex-sedate">\node</span>[block, fit={(<span class="org-font-latex-math">$(b1|-W1.north) + (-0.15, 0.15)$</span>) (<span class="org-font-latex-math">$(G1.south east)+(0.15, -0.15)$</span>)}, fill=black!20!white, dashed, inner sep=0pt] (sensor1) {};
|
||||
<span class="org-font-latex-sedate">\node</span>[below left] at (sensor1.north east) {Sensor 1};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, fit={(<span class="org-font-latex-math">$(b2|-W2.north) + (-0.15, 0.15)$</span>) (<span class="org-font-latex-math">$(G2.south east)+(0.15, -0.15)$</span>)}, fill=black!20!white, dashed, inner sep=0pt] (sensor2) {};
|
||||
<span class="org-font-latex-sedate">\node</span>[below left] at (sensor2.north east) {Sensor 2};
|
||||
<span class="org-font-latex-sedate"><span class="org-keyword">\end</span></span>{<span class="org-function-name">scope</span>}
|
||||
<span class="org-font-latex-sedate"><span class="org-keyword">\end</span></span>{<span class="org-function-name">tikzpicture</span>}
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgc7070d9" class="figure">
|
||||
<p><img src="figs/h_infinity_robust_fusion.png" alt="h_infinity_robust_fusion.png" />
|
||||
<div id="org4ef6676" class="figure">
|
||||
<p><img src="figs/sensor_fusion_arch_uncertainty.png" alt="sensor_fusion_arch_uncertainty.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 5: </span>Architecture used for \(\mathcal{H}_\infty\) synthesis of complementary filters (<a href="./figs/h_infinity_robust_fusion.png">png</a>, <a href="./figs/h_infinity_robust_fusion.pdf">pdf</a>).</p>
|
||||
<p><span class="figure-number">Figure 5: </span>Sensor fusion architecture with sensor dynamics uncertainty (<a href="./figs/sensor_fusion_arch_uncertainty.png">png</a>, <a href="./figs/sensor_fusion_arch_uncertainty.pdf">pdf</a>).</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd2abe63" class="outline-2">
|
||||
<h2 id="orgd2abe63"><span class="section-number-2">6</span> Sensor fusion architecture with sensor dynamics uncertainty and noise</h2>
|
||||
<div id="outline-container-org295dc2a" class="outline-2">
|
||||
<h2 id="org295dc2a"><span class="section-number-2">6</span> Uncertainty set of the super sensor dynamics</h2>
|
||||
<div class="outline-text-2" id="text-6">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex">\begin{tikzpicture}
|
||||
\node[branch] (x) at (0, 0);
|
||||
\node[addb, above right=1.2 and 3.7 of x](add1){};
|
||||
\node[addb, below right=1.2 and 3.7 of x](add2){};
|
||||
\node[block, above left=0.2 and 0.1 of add1](delta1){$\Delta_1(s)$};
|
||||
\node[block, above left=0.2 and 0.1 of add2](delta2){$\Delta_2(s)$};
|
||||
\node[block, left=0.5 of delta1](W1){$w_1(s)$};
|
||||
\node[block, left=0.5 of delta2](W2){$w_2(s)$};
|
||||
\node[addb, right=0.5 of add1](addn1){};
|
||||
\node[addb, right=0.5 of add2](addn2){};
|
||||
\node[block, above=0.5 of addn1](N1) {$N_1(s)$};
|
||||
\node[block, above=0.5 of addn2](N2) {$N_2(s)$};
|
||||
\node[block, right=1.2 of addn1](H1){$H_1(s)$};
|
||||
\node[block, right=1.2 of addn2](H2){$H_2(s)$};
|
||||
\node[addb, right=7.5 of x](add){};
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate"><span class="org-keyword">\begin</span></span>{<span class="org-function-name">tikzpicture</span>}
|
||||
<span class="org-font-latex-sedate"><span class="org-keyword">\begin</span></span>{<span class="org-function-name">scope</span>}[shift={(4, 0)}]
|
||||
|
||||
\draw[] ($(x)+(-0.7, 0)$) node[above right]{$x$} -- (x.center);
|
||||
\draw[->] (x.center) |- (add1.west);
|
||||
\draw[->] (x.center) |- (add2.west);
|
||||
\draw[->] ($(add1-|W1.west)+(-0.5, 0)$)node[branch](S1){} |- (W1.west);
|
||||
\draw[->] ($(add2-|W2.west)+(-0.5, 0)$)node[branch](S2){} |- (W2.west);
|
||||
\draw[->] (W1.east) -- (delta1.west);
|
||||
\draw[->] (W2.east) -- (delta2.west);
|
||||
\draw[->] (delta1.east) -| (add1.north);
|
||||
\draw[->] (delta2.east) -| (add2.north);
|
||||
\draw[->] (add1.east) -- (addn1.west);
|
||||
\draw[->] (add2.east) -- (addn2.west);
|
||||
\draw[->] (addn1.east) -- (H1.west)node[above left]{$\hat{x}_1$};
|
||||
\draw[->] (addn2.east) -- (H2.west)node[above left]{$\hat{x}_2$};
|
||||
\draw[->] ($(N1.north)+(0,0.7)$) node[below right](n1){$\tilde{n}_1$} -- (N1.north);
|
||||
\draw[->] ($(N2.north)+(0,0.7)$) node[below right](n2){$\tilde{n}_2$} -- (N2.north);
|
||||
\draw[->] (N1.south) -- (addn1.north)node[above right]{$n_1$};
|
||||
\draw[->] (N2.south) -- (addn2.north)node[above right]{$n_2$};
|
||||
\draw[->] (H1.east) -| (add.north);
|
||||
\draw[->] (H2.east) -| (add.south);
|
||||
\draw[->] (add.east) -- ++(0.7, 0) node[above left]{$\hat{x}$};
|
||||
<span class="org-comment">% Uncertainty Circle</span>
|
||||
<span class="org-font-latex-sedate">\node</span>[draw, circle, fill=black!20!white, minimum size=3.6cm] (c) at (0, 0) {};
|
||||
<span class="org-font-latex-sedate">\path</span>[draw, dotted] (0, 0) circle [radius=1.0];
|
||||
<span class="org-font-latex-sedate">\path</span>[draw, dashed] (135:1.0) circle [radius=0.8];
|
||||
|
||||
\begin{scope}[on background layer]
|
||||
\node[fit={($(add2.south-|x)+(-0.2, -0.4)$) ($(n1.north-|add.east)+(0.2, 0.3)$)}, fill=black!10!white, draw, dashed, inner sep=0pt] (supersensor) {};
|
||||
\node[below left] at (supersensor.north east) {Super Sensor};
|
||||
\node[block, fit={($(S1|-add1.south)+(-0.2, -0.2)$) ($(n1.north-|N1.east)+(0.2, 0.1)$)}, fill=black!20!white, dashed, inner sep=0pt] (sensor1) {};
|
||||
\node[below right] at (sensor1.north west) {Sensor 1};
|
||||
\node[block, fit={($(S2|-add2.south)+(-0.2, -0.2)$) ($(n2.north-|N2.east)+(0.2, 0.1)$)}, fill=black!20!white, dashed, inner sep=0pt] (sensor2) {};
|
||||
\node[below right] at (sensor2.north west) {Sensor 2};
|
||||
\end{scope}
|
||||
\end{tikzpicture}
|
||||
<span class="org-comment">% Center of Circle</span>
|
||||
<span class="org-font-latex-sedate">\node</span>[below] at (0, 0){<span class="org-font-latex-math">$1$</span>};
|
||||
|
||||
<span class="org-font-latex-sedate">\draw</span>[<->, dashed] (0, 0) node[branch]{} -- coordinate[midway](r1) ++(45:1.0);
|
||||
<span class="org-font-latex-sedate">\draw</span>[<->, dashed] (135:1.0)node[branch]{} -- coordinate[midway](r2) ++(90:0.8);
|
||||
|
||||
<span class="org-font-latex-sedate">\node</span>[] (l1) at (2, 1.5) {<span class="org-font-latex-math">$|W</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">1 H</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">1|$</span>};
|
||||
<span class="org-font-latex-sedate">\draw</span>[->, dashed, out=-90, in=0] (l1.south) to (r1);
|
||||
|
||||
<span class="org-font-latex-sedate">\node</span>[] (l2) at (-2.5, 1.5) {<span class="org-font-latex-math">$|W</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2 H</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2|$</span>};
|
||||
<span class="org-font-latex-sedate">\draw</span>[->, dashed, out=0, in=-180] (l2.east) to (r2);
|
||||
|
||||
<span class="org-font-latex-sedate">\draw</span>[<->, dashed] (0, 0) -- coordinate[near end](r3) ++(200:1.8);
|
||||
<span class="org-font-latex-sedate">\node</span>[] (l3) at (-2.5, -1.5) {<span class="org-font-latex-math">$|W</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">1 H</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">1| + |W</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2 H</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2|$</span>};
|
||||
<span class="org-font-latex-sedate">\draw</span>[->, dashed, out=90, in=-90] (l3.north) to (r3);
|
||||
<span class="org-font-latex-sedate"><span class="org-keyword">\end</span></span>{<span class="org-function-name">scope</span>}
|
||||
|
||||
<span class="org-comment">% Real and Imaginary Axis</span>
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (-0.5, 0) -- (7.0, 0) node[below left]{Re};
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (0, -1.7) -- (0, 1.7) node[below left]{Im};
|
||||
|
||||
<span class="org-font-latex-sedate">\draw</span>[dashed] (0, 0) -- (tangent cs:node=c,point={(0, 0)},solution=2);
|
||||
<span class="org-font-latex-sedate">\draw</span>[dashed] (1, 0) arc (0:28:1) node[midway, right]{<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\Delta</span></span><span class="org-font-latex-math"> </span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\phi</span></span><span class="org-font-latex-math">$</span>};
|
||||
<span class="org-font-latex-sedate"><span class="org-keyword">\end</span></span>{<span class="org-function-name">tikzpicture</span>}
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org2a7478b" class="figure">
|
||||
<p><img src="figs/sensor_fusion_arch_full.png" alt="sensor_fusion_arch_full.png" />
|
||||
<div id="orgb4e2baf" class="figure">
|
||||
<p><img src="figs/uncertainty_set_super_sensor.png" alt="uncertainty_set_super_sensor.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 6: </span>Sensor fusion architecture with sensor dynamics uncertainty (<a href="./figs/sensor_fusion_arch_full.png">png</a>, <a href="./figs/sensor_fusion_arch_full.pdf">pdf</a>).</p>
|
||||
<p><span class="figure-number">Figure 6: </span>Uncertainty region of the super sensor dynamics in the complex plane (solid circle), of the sensor 1 (dotted circle) and of the sensor 2 (dashed circle) (<a href="./figs/uncertainty_set_super_sensor.png">png</a>, <a href="./figs/uncertainty_set_super_sensor.pdf">pdf</a>).</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org25fbe7c" class="outline-2">
|
||||
<h2 id="org25fbe7c"><span class="section-number-2">7</span> Mixed H2/H-Infinity Synthesis</h2>
|
||||
<div id="outline-container-orgff8ec60" class="outline-2">
|
||||
<h2 id="orgff8ec60"><span class="section-number-2">7</span> Architecture used for \(\mathcal{H}_\infty\) synthesis of complementary filters</h2>
|
||||
<div class="outline-text-2" id="text-7">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex">\begin{tikzpicture}
|
||||
\node[block={5.0cm}{5.0cm}, fill=black!20!white, dashed] (P) {};
|
||||
\node[above] at (P.north) {$P(s)$};
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate"><span class="org-keyword">\begin</span></span>{<span class="org-function-name">tikzpicture</span>}
|
||||
<span class="org-font-latex-sedate">\node</span>[block={4.2cm}{2.5cm}, fill=black!20!white, dashed] (P) {};
|
||||
<span class="org-font-latex-sedate">\node</span>[above] at (P.north) {<span class="org-font-latex-math">$P</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">{</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\mathcal</span></span><span class="org-font-latex-math">{H}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\infty</span></span><span class="org-font-latex-math">}$</span>};
|
||||
|
||||
\coordinate[] (inputw) at ($(P.south west)!0.85!(P.north west) + (-0.7, 0)$);
|
||||
\coordinate[] (inputu) at ($(P.south west)!0.35!(P.north west) + (-0.7, 0)$);
|
||||
<span class="org-font-latex-sedate">\coordinate</span>[] (inputw) at (<span class="org-font-latex-math">$(P.south west)!0.8!(P.north west) + (-0.7, 0)$</span>);
|
||||
<span class="org-font-latex-sedate">\coordinate</span>[] (inputu) at (<span class="org-font-latex-math">$(P.south west)!0.5!(P.north west) + (-0.7, 0)$</span>);
|
||||
|
||||
\coordinate[] (output1) at ($(P.south east)!0.85!(P.north east) + ( 0.7, 0)$);
|
||||
\coordinate[] (output2) at ($(P.south east)!0.7!(P.north east) + ( 0.7, 0)$);
|
||||
\coordinate[] (output3) at ($(P.south east)!0.5!(P.north east) + ( 0.7, 0)$);
|
||||
\coordinate[] (output4) at ($(P.south east)!0.35!(P.north east) + ( 0.7, 0)$);
|
||||
\coordinate[] (outputv) at ($(P.south east)!0.15!(P.north east) + ( 0.7, 0)$);
|
||||
<span class="org-font-latex-sedate">\coordinate</span>[] (output1) at (<span class="org-font-latex-math">$(P.south east)!0.8!(P.north east) + ( 0.7, 0)$</span>);
|
||||
<span class="org-font-latex-sedate">\coordinate</span>[] (output2) at (<span class="org-font-latex-math">$(P.south east)!0.5!(P.north east) + ( 0.7, 0)$</span>);
|
||||
<span class="org-font-latex-sedate">\coordinate</span>[] (outputv) at (<span class="org-font-latex-math">$(P.south east)!0.2!(P.north east) + ( 0.7, 0)$</span>);
|
||||
|
||||
\node[block, left=1.4 of output1] (W1){$W_1(s)$};
|
||||
\node[block, left=1.4 of output2] (W2){$W_2(s)$};
|
||||
\node[addb={+}{}{}{}{-}, left=1.6 of W1] (sub1) {};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, left=0.9 of output1] (W1){<span class="org-font-latex-math">$W</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">1$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, left=0.9 of output2] (W2){<span class="org-font-latex-math">$W</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, left=0.4 of W1] (Wu1){<span class="org-font-latex-math">$W</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">u$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, left=0.4 of W2] (Wu2){<span class="org-font-latex-math">$W</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">u$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[addb={+}{}{}{}{-}, left=of Wu1] (sub) {};
|
||||
|
||||
\node[block, left=1.4 of output3] (N1){$N_1(s)$};
|
||||
\node[block, left=1.4 of output4] (N2){$N_2(s)$};
|
||||
\node[addb={+}{}{}{}{-}, left=1 of N1] (sub2) {};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, below=0.3 of P] (H2) {<span class="org-font-latex-math">$H</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2$</span>};
|
||||
|
||||
\node[block, below=0.3 of P] (H2) {$H_2(s)$};
|
||||
|
||||
\draw[->] (inputw) node[above right]{$w$} -- (sub1.west);
|
||||
\draw[->] (H2.west) -| ($(inputu)+(0.35, 0)$) node[above]{$u$} -- (N2.west);
|
||||
\draw[->] (inputu-|sub1) node[branch]{} -- (sub1.south);
|
||||
\draw[->] (inputu-|sub2) node[branch]{} -- (sub2.south);
|
||||
\draw[->] (sub1|-W2) node[branch]{} -- (W2.west);
|
||||
\draw[->] (sub1.east) -- (W1.west);
|
||||
\draw[->] (sub2.east) -- (N1.west);
|
||||
\draw[->] ($(sub1.west)+(-0.6, 0)$) node[branch](w_branch){} |- ($(outputv)+(-0.35, 0)$) node[above]{$v$} |- (H2.east);
|
||||
\draw[->] (w_branch|-sub2) node[branch]{} -- (sub2.west);
|
||||
\draw[->] (W1.east) -- (output1)node[above left]{$z_1$};
|
||||
\draw[->] (W2.east) -- (output2)node[above left]{$z_2$};
|
||||
\draw[->] (N1.east) -- (output3)node[above left]{$z_3$};
|
||||
\draw[->] (N2.east) -- (output4)node[above left]{$z_4$};
|
||||
\end{tikzpicture}
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (inputw) node[above right]{<span class="org-font-latex-math">$w$</span>} -- (sub.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (H2.west) -| (<span class="org-font-latex-math">$(inputu)+(0.35, 0)$</span>) node[above]{<span class="org-font-latex-math">$u$</span>} -- (Wu2.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (inputu-|sub) node[branch]{} -- (sub.south);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (sub.east) -- (Wu1.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (<span class="org-font-latex-math">$(sub.west)+(-0.6, 0)$</span>) node[branch]{} |- (<span class="org-font-latex-math">$(outputv)+(-0.35, 0)$</span>) node[above]{<span class="org-font-latex-math">$v$</span>} |- (H2.east);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (Wu1.east) -- (W1.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (Wu2.east) -- (W2.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (W1.east) -- (output1)node[above left]{<span class="org-font-latex-math">$z</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">1$</span>};
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (W2.east) -- (output2)node[above left]{<span class="org-font-latex-math">$z</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2$</span>};
|
||||
<span class="org-font-latex-sedate"><span class="org-keyword">\end</span></span>{<span class="org-function-name">tikzpicture</span>}
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org855c0bc" class="figure">
|
||||
<div id="orgcfbd978" class="figure">
|
||||
<p><img src="figs/h_infinity_robust_fusion.png" alt="h_infinity_robust_fusion.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 7: </span>Architecture used for \(\mathcal{H}_\infty\) synthesis of complementary filters (<a href="./figs/h_infinity_robust_fusion.png">png</a>, <a href="./figs/h_infinity_robust_fusion.pdf">pdf</a>).</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org77a9624" class="outline-2">
|
||||
<h2 id="org77a9624"><span class="section-number-2">8</span> Sensor Model - Noise and Uncertainty</h2>
|
||||
<div class="outline-text-2" id="text-8">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate"><span class="org-keyword">\begin</span></span>{<span class="org-function-name">tikzpicture</span>}
|
||||
<span class="org-font-latex-sedate">\node</span>[addb](add1){};
|
||||
|
||||
<span class="org-font-latex-sedate">\node</span>[block, above=0.5 of add1](N1){<span class="org-font-latex-math">$N</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">i$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[branch, right=0.4 of add1](b1){};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, above right=0.3 and 0.25 of b1](W1){<span class="org-font-latex-math">$W</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">i$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, right=0.3 of W1](delta1){<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\Delta</span></span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">i$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[addb, right=0.3 of b1-|delta1](addu){};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, right=0.3 of addu](G1){<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\hat</span></span><span class="org-font-latex-math">{G}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">i$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, right=0.7 of G1](Ginv1){<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\hat</span></span><span class="org-font-latex-math">{G}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">i</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">^</span></span><span class="org-font-latex-math">{-1}$</span>};
|
||||
|
||||
<span class="org-font-latex-sedate">\draw</span>[<-] (add1.west) -- ++(-1.0, 0) node[above right]{<span class="org-font-latex-math">$x$</span>};
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (add1.east) -- (addu.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (b1) |- (W1.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (W1.east) -- (delta1.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (delta1.east) -| (addu.north);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (addu.east) -- (G1.west);
|
||||
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (N1.south) -- (add1.north)node[above left]{<span class="org-font-latex-math">$n</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">i$</span>};
|
||||
<span class="org-font-latex-sedate">\draw</span>[<-] (N1.north)node[above left](n1){<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\tilde</span></span><span class="org-font-latex-math">{n}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">i$</span>} -- ++(0, 0.4);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (G1.east) -- (Ginv1.west)node[above left]{<span class="org-font-latex-math">$v</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">i$</span>};
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (Ginv1.east) -- ++(0.7, 0) node[above left]{<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\hat</span></span><span class="org-font-latex-math">{x}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">i$</span>};
|
||||
|
||||
<span class="org-font-latex-sedate"><span class="org-keyword">\begin</span></span>{<span class="org-function-name">scope</span>}[on background layer]
|
||||
<span class="org-font-latex-sedate">\node</span>[fit={(<span class="org-font-latex-math">$(G1.south east)+(0.15, -0.15)$</span>) (<span class="org-font-latex-math">$(n1.north west)$</span>)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor1) {};
|
||||
<span class="org-font-latex-sedate">\node</span>[below left, align=right] at (sensor1.north east) {Sensor};
|
||||
<span class="org-font-latex-sedate"><span class="org-keyword">\end</span></span>{<span class="org-function-name">scope</span>}
|
||||
<span class="org-font-latex-sedate"><span class="org-keyword">\end</span></span>{<span class="org-function-name">tikzpicture</span>}
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org121d2ed" class="figure">
|
||||
<p><img src="figs/sensor_model_noise_uncertainty.png" alt="sensor_model_noise_uncertainty.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 8: </span>Sensor Model (<a href="./figs/sensor_model_noise_uncertainty.png">png</a>, <a href="./figs/sensor_model_noise_uncertainty.pdf">pdf</a>).</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org194f17b" class="outline-2">
|
||||
<h2 id="org194f17b"><span class="section-number-2">9</span> Sensor fusion architecture with sensor dynamics uncertainty and noise</h2>
|
||||
<div class="outline-text-2" id="text-9">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate"><span class="org-keyword">\begin</span></span>{<span class="org-function-name">tikzpicture</span>}
|
||||
<span class="org-font-latex-sedate">\node</span>[branch] (x) at (0, 0);
|
||||
<span class="org-font-latex-sedate">\node</span>[addb, above right=1.0 and 0.6 of x](addn1){};
|
||||
<span class="org-font-latex-sedate">\node</span>[addb, below right=1.0 and 0.6 of x](addn2){};
|
||||
<span class="org-font-latex-sedate">\node</span>[addb, right=2.6 of addn1](add1){};
|
||||
<span class="org-font-latex-sedate">\node</span>[addb, right=2.6 of addn2](add2){};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, above left=0.2 and 0 of add1](delta1){<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\Delta</span></span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">1$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, above left=0.2 and 0 of add2](delta2){<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\Delta</span></span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, left=0.4 of delta1](W1){<span class="org-font-latex-math">$W</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">1$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, left=0.4 of delta2](W2){<span class="org-font-latex-math">$W</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, above=0.5 of addn1](N1) {<span class="org-font-latex-math">$N</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">1$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, above=0.5 of addn2](N2) {<span class="org-font-latex-math">$N</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, right=0.7 of add1](H1){<span class="org-font-latex-math">$H</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">1$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, right=0.7 of add2](H2){<span class="org-font-latex-math">$H</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[addb, right=5.8 of x](add){};
|
||||
|
||||
<span class="org-font-latex-sedate">\draw</span>[] (<span class="org-font-latex-math">$(x)+(-0.7, 0)$</span>) node[above right]{<span class="org-font-latex-math">$x$</span>} -- (x.center);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (x.center) |- (addn1.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (x.center) |- (addn2.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (<span class="org-font-latex-math">$(addn1-|W1.west)+(-0.3, 0)$</span>)node[branch](S1){} |- (W1.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (<span class="org-font-latex-math">$(addn2-|W2.west)+(-0.3, 0)$</span>)node[branch](S2){} |- (W2.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (W1.east) -- (delta1.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (W2.east) -- (delta2.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (delta1.east) -| (add1.north);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (delta2.east) -| (add2.north);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (addn1.east) -- (add1.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (addn2.east) -- (add2.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (add1.east) -- (H1.west)node[above left]{<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\hat</span></span><span class="org-font-latex-math">{x}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">1$</span>};
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (add2.east) -- (H2.west)node[above left]{<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\hat</span></span><span class="org-font-latex-math">{x}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2$</span>};
|
||||
<span class="org-font-latex-sedate">\draw</span>[<-] (N1.north)node[above left](n1){<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\tilde</span></span><span class="org-font-latex-math">{n}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">1$</span>} -- ++(0, 0.4);
|
||||
<span class="org-font-latex-sedate">\draw</span>[<-] (N2.north)node[above left](n2){<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\tilde</span></span><span class="org-font-latex-math">{n}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2$</span>} -- ++(0, 0.4);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (N1.south) -- (addn1.north)node[above left]{<span class="org-font-latex-math">$n</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">1$</span>};
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (N2.south) -- (addn2.north)node[above left]{<span class="org-font-latex-math">$n</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2$</span>};
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (H1.east) -| (add.north);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (H2.east) -| (add.south);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (add.east) -- ++(0.7, 0) node[above left]{<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\hat</span></span><span class="org-font-latex-math">{x}$</span>};
|
||||
|
||||
<span class="org-font-latex-sedate"><span class="org-keyword">\begin</span></span>{<span class="org-function-name">scope</span>}[on background layer]
|
||||
<span class="org-font-latex-sedate">\node</span>[fit={(<span class="org-font-latex-math">$(H2.south-|x)+(-0.2, -0.3)$</span>) (<span class="org-font-latex-math">$(n1.north east-|add.east)+(0.2, 0.3)$</span>)}, fill=black!10!white, draw, dashed, inner sep=0pt] (supersensor) {};
|
||||
<span class="org-font-latex-sedate">\node</span>[below left] at (supersensor.north east) {Super Sensor};
|
||||
|
||||
<span class="org-font-latex-sedate">\node</span>[fit={(n1.north west) (<span class="org-font-latex-math">$(add1.south -| add1.east) + (0.1, -0.1)$</span>)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor1) {};
|
||||
<span class="org-font-latex-sedate">\node</span>[below left] at (sensor1.north east) {Sensor 1};
|
||||
|
||||
<span class="org-font-latex-sedate">\node</span>[fit={(n2.north west) (<span class="org-font-latex-math">$(add2.south -| add2.east) + (0.1, -0.1)$</span>)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor2) {};
|
||||
<span class="org-font-latex-sedate">\node</span>[below left] at (sensor2.north east) {Sensor 2};
|
||||
<span class="org-font-latex-sedate"><span class="org-keyword">\end</span></span>{<span class="org-function-name">scope</span>}
|
||||
<span class="org-font-latex-sedate"><span class="org-keyword">\end</span></span>{<span class="org-function-name">tikzpicture</span>}
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org257652d" class="figure">
|
||||
<p><img src="figs/sensor_fusion_arch_full.png" alt="sensor_fusion_arch_full.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 9: </span>Sensor fusion architecture with sensor dynamics uncertainty (<a href="./figs/sensor_fusion_arch_full.png">png</a>, <a href="./figs/sensor_fusion_arch_full.pdf">pdf</a>).</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org92adb06" class="outline-2">
|
||||
<h2 id="org92adb06"><span class="section-number-2">10</span> Mixed H2/H-Infinity Synthesis</h2>
|
||||
<div class="outline-text-2" id="text-10">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-latex"><span class="org-font-latex-sedate"><span class="org-keyword">\begin</span></span>{<span class="org-function-name">tikzpicture</span>}
|
||||
<span class="org-font-latex-sedate">\node</span>[block={4.2cm}{4.0cm}, fill=black!20!white, dashed] (P) {};
|
||||
<span class="org-font-latex-sedate">\node</span>[above] at (P.north) {<span class="org-font-latex-math">$P</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">{</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\mathcal</span></span><span class="org-font-latex-math">{H}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2/</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\mathcal</span></span><span class="org-font-latex-math">{H}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\infty</span></span><span class="org-font-latex-math">}$</span>};
|
||||
|
||||
<span class="org-font-latex-sedate">\coordinate</span>[] (inputw) at (<span class="org-font-latex-math">$(P.south west)!0.85!(P.north west) + (-0.7, 0)$</span>);
|
||||
<span class="org-font-latex-sedate">\coordinate</span>[] (inputu) at (<span class="org-font-latex-math">$(P.south west)!0.25!(P.north west) + (-0.7, 0)$</span>);
|
||||
|
||||
<span class="org-font-latex-sedate">\coordinate</span>[] (output1) at (<span class="org-font-latex-math">$(P.south east)!0.85!(P.north east) + ( 0.7, 0)$</span>);
|
||||
<span class="org-font-latex-sedate">\coordinate</span>[] (output2) at (<span class="org-font-latex-math">$(P.south east)!0.65!(P.north east) + ( 0.7, 0)$</span>);
|
||||
<span class="org-font-latex-sedate">\coordinate</span>[] (output3) at (<span class="org-font-latex-math">$(P.south east)!0.45!(P.north east) + ( 0.7, 0)$</span>);
|
||||
<span class="org-font-latex-sedate">\coordinate</span>[] (output4) at (<span class="org-font-latex-math">$(P.south east)!0.25!(P.north east) + ( 0.7, 0)$</span>);
|
||||
<span class="org-font-latex-sedate">\coordinate</span>[] (outputv) at (<span class="org-font-latex-math">$(P.south east)!0.10!(P.north east) + ( 0.7, 0)$</span>);
|
||||
|
||||
<span class="org-font-latex-sedate">\node</span>[block, left=1.0 of output1] (W1){<span class="org-font-latex-math">$W</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">1$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, left=1.0 of output2] (W2){<span class="org-font-latex-math">$W</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, left=0.4 of W1] (Wu1){<span class="org-font-latex-math">$W</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">u$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, left=0.4 of W2] (Wu2){<span class="org-font-latex-math">$W</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">u$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[addb={+}{}{}{}{-}, left=0.4 of Wu1] (sub1) {};
|
||||
|
||||
<span class="org-font-latex-sedate">\node</span>[block, left=1.0 of output3] (N1){<span class="org-font-latex-math">$N</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">1$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[block, left=1.0 of output4] (N2){<span class="org-font-latex-math">$N</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2$</span>};
|
||||
<span class="org-font-latex-sedate">\node</span>[addb={+}{}{}{}{-}, left=0.6 of N1] (sub2) {};
|
||||
|
||||
<span class="org-font-latex-sedate">\node</span>[block, below=0.3 of P] (H2) {<span class="org-font-latex-math">$H</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">2$</span>};
|
||||
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (inputw) node[above right]{<span class="org-font-latex-math">$w$</span>} -- (sub1.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (H2.west) -| (<span class="org-font-latex-math">$(inputu)+(0.35, 0)$</span>) node[above]{<span class="org-font-latex-math">$u$</span>} -- (N2.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (inputu-|sub1) node[branch]{} -- (sub1.south);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (inputu-|sub2) node[branch]{} -- (sub2.south);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (sub1|-W2) node[branch]{} -- (Wu2.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (sub1.east) -- (Wu1.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (sub2.east) -- (N1.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (<span class="org-font-latex-math">$(sub1.west)+(-0.6, 0)$</span>) node[branch](w_branch){} |- (<span class="org-font-latex-math">$(outputv)+(-0.35, 0)$</span>) node[above]{<span class="org-font-latex-math">$v$</span>} |- (H2.east);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (w_branch|-sub2) node[branch]{} -- (sub2.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (Wu1.east) -- (W1.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (Wu2.east) -- (W2.west);
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (W1.east) -- (output1)node[above left](z1){<span class="org-font-latex-math">$z_1$</span>};
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (W2.east) -- (output2)node[above left](z2){<span class="org-font-latex-math">$z_2$</span>};
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (N1.east) -- (output3)node[above left](z3){<span class="org-font-latex-math">$z_3$</span>};
|
||||
<span class="org-font-latex-sedate">\draw</span>[->] (N2.east) -- (output4)node[above left](z4){<span class="org-font-latex-math">$z_4$</span>};
|
||||
|
||||
|
||||
<span class="org-font-latex-sedate">\draw</span> [decoration={brace, raise=5pt}, decorate] (z1.north east) -- node[right=6pt]{<span class="org-font-latex-math">$z_{</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\mathcal</span></span><span class="org-font-latex-math">{H}_</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\infty</span></span><span class="org-font-latex-math">}$</span>} (z2.south east);
|
||||
<span class="org-font-latex-sedate">\draw</span> [decoration={brace, raise=5pt}, decorate] (z3.north east) -- node[right=6pt]{<span class="org-font-latex-math">$z_{</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\mathcal</span></span><span class="org-font-latex-math">{H}_2}$</span>} (z4.south east);
|
||||
<span class="org-font-latex-sedate"><span class="org-keyword">\end</span></span>{<span class="org-function-name">tikzpicture</span>}
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org7166204" class="figure">
|
||||
<p><img src="figs/mixed_h2_hinf_synthesis.png" alt="mixed_h2_hinf_synthesis.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 7: </span>Mixed H2/H-Infinity Synthesis (<a href="./figs/mixed_h2_hinf_synthesis.png">png</a>, <a href="./figs/mixed_h2_hinf_synthesis.pdf">pdf</a>).</p>
|
||||
<p><span class="figure-number">Figure 10: </span>Mixed H2/H-Infinity Synthesis (<a href="./figs/mixed_h2_hinf_synthesis.png">png</a>, <a href="./figs/mixed_h2_hinf_synthesis.pdf">pdf</a>).</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Thomas Dehaeze</p>
|
||||
<p class="date">Created: 2020-08-17 lun. 17:49</p>
|
||||
<p class="date">Created: 2020-11-12 jeu. 10:42</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+3
-7
@@ -1,14 +1,10 @@
|
||||
#+TITLE: Robust and Optimal Sensor Fusion - Tikz Figures
|
||||
:DRAWER:
|
||||
#+HTML_LINK_HOME: ../index.html
|
||||
#+HTML_LINK_UP: ../index.html
|
||||
#+HTML_LINK_UP: ../index.html
|
||||
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../css/htmlize.css"/>
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../css/readtheorg.css"/>
|
||||
#+HTML_HEAD: <script src="../js/jquery.min.js"></script>
|
||||
#+HTML_HEAD: <script src="../js/bootstrap.min.js"></script>
|
||||
#+HTML_HEAD: <script src="../js/jquery.stickytableheaders.min.js"></script>
|
||||
#+HTML_HEAD: <script src="../js/readtheorg.js"></script>
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
#+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
|
||||
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{/home/thomas/Cloud/thesis/papers/dehaeze20_optim_robus_compl_filte/tikz/}{config.tex}")
|
||||
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
||||
|
||||
Reference in new issue
Block a user