diff --git a/404.html b/404.html index 353a415..eb686e9 100644 --- a/404.html +++ b/404.html @@ -12,7 +12,7 @@ - + @@ -20,7 +20,7 @@ - + @@ -196,7 +196,7 @@
- +
GitHub @@ -429,7 +429,7 @@
- +
GitHub diff --git a/assets/stylesheets/main.3cba04c6.min.css b/assets/stylesheets/main.3cba04c6.min.css new file mode 100644 index 0000000..873f8fe --- /dev/null +++ b/assets/stylesheets/main.3cba04c6.min.css @@ -0,0 +1 @@ +@charset "UTF-8";html{-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;box-sizing:border-box}*,:after,:before{box-sizing:inherit}@media (prefers-reduced-motion){*,:after,:before{transition:none!important}}body{margin:0}a,button,input,label{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}hr{border:0;box-sizing:initial;display:block;height:.05rem;overflow:visible;padding:0}small{font-size:80%}sub,sup{line-height:1em}img{border-style:none}table{border-collapse:initial;border-spacing:0}td,th{font-weight:400;vertical-align:top}button{background:#0000;border:0;font-family:inherit;font-size:inherit;margin:0;padding:0}input{border:0;outline:none}:root{--md-primary-fg-color:#4051b5;--md-primary-fg-color--light:#5d6cc0;--md-primary-fg-color--dark:#303fa1;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3;--md-accent-fg-color:#526cfe;--md-accent-fg-color--transparent:#526cfe1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-scheme=default]{color-scheme:light}[data-md-color-scheme=default] img[src$="#gh-dark-mode-only"],[data-md-color-scheme=default] img[src$="#only-dark"]{display:none}:root,[data-md-color-scheme=default]{--md-hue:225deg;--md-default-fg-color:#000000de;--md-default-fg-color--light:#0000008a;--md-default-fg-color--lighter:#00000052;--md-default-fg-color--lightest:#00000012;--md-default-bg-color:#fff;--md-default-bg-color--light:#ffffffb3;--md-default-bg-color--lighter:#ffffff4d;--md-default-bg-color--lightest:#ffffff1f;--md-code-fg-color:#36464e;--md-code-bg-color:#f5f5f5;--md-code-hl-color:#4287ff;--md-code-hl-color--light:#4287ff1a;--md-code-hl-number-color:#d52a2a;--md-code-hl-special-color:#db1457;--md-code-hl-function-color:#a846b9;--md-code-hl-constant-color:#6e59d9;--md-code-hl-keyword-color:#3f6ec6;--md-code-hl-string-color:#1c7d4d;--md-code-hl-name-color:var(--md-code-fg-color);--md-code-hl-operator-color:var(--md-default-fg-color--light);--md-code-hl-punctuation-color:var(--md-default-fg-color--light);--md-code-hl-comment-color:var(--md-default-fg-color--light);--md-code-hl-generic-color:var(--md-default-fg-color--light);--md-code-hl-variable-color:var(--md-default-fg-color--light);--md-typeset-color:var(--md-default-fg-color);--md-typeset-a-color:var(--md-primary-fg-color);--md-typeset-del-color:#f5503d26;--md-typeset-ins-color:#0bd57026;--md-typeset-kbd-color:#fafafa;--md-typeset-kbd-accent-color:#fff;--md-typeset-kbd-border-color:#b8b8b8;--md-typeset-mark-color:#ffff0080;--md-typeset-table-color:#0000001f;--md-typeset-table-color--light:rgba(0,0,0,.035);--md-admonition-fg-color:var(--md-default-fg-color);--md-admonition-bg-color:var(--md-default-bg-color);--md-warning-fg-color:#000000de;--md-warning-bg-color:#ff9;--md-footer-fg-color:#fff;--md-footer-fg-color--light:#ffffffb3;--md-footer-fg-color--lighter:#ffffff73;--md-footer-bg-color:#000000de;--md-footer-bg-color--dark:#00000052;--md-shadow-z1:0 0.2rem 0.5rem #0000000d,0 0 0.05rem #0000001a;--md-shadow-z2:0 0.2rem 0.5rem #0000001a,0 0 0.05rem #00000040;--md-shadow-z3:0 0.2rem 0.5rem #0003,0 0 0.05rem #00000059}.md-icon svg{fill:currentcolor;display:block;height:1.2rem;width:1.2rem}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--md-text-font-family:var(--md-text-font,_),-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif;--md-code-font-family:var(--md-code-font,_),SFMono-Regular,Consolas,Menlo,monospace}aside,body,input{font-feature-settings:"kern","liga";color:var(--md-typeset-color);font-family:var(--md-text-font-family)}code,kbd,pre{font-feature-settings:"kern";font-family:var(--md-code-font-family)}:root{--md-typeset-table-sort-icon:url('data:image/svg+xml;charset=utf-8,');--md-typeset-table-sort-icon--asc:url('data:image/svg+xml;charset=utf-8,');--md-typeset-table-sort-icon--desc:url('data:image/svg+xml;charset=utf-8,')}.md-typeset{-webkit-print-color-adjust:exact;color-adjust:exact;font-size:.8rem;line-height:1.6}@media print{.md-typeset{font-size:.68rem}}.md-typeset blockquote,.md-typeset dl,.md-typeset figure,.md-typeset ol,.md-typeset pre,.md-typeset ul{margin-bottom:1em;margin-top:1em}.md-typeset h1{color:var(--md-default-fg-color--light);font-size:2em;line-height:1.3;margin:0 0 1.25em}.md-typeset h1,.md-typeset h2{font-weight:300;letter-spacing:-.01em}.md-typeset h2{font-size:1.5625em;line-height:1.4;margin:1.6em 0 .64em}.md-typeset h3{font-size:1.25em;font-weight:400;letter-spacing:-.01em;line-height:1.5;margin:1.6em 0 .8em}.md-typeset h2+h3{margin-top:.8em}.md-typeset h4{font-weight:700;letter-spacing:-.01em;margin:1em 0}.md-typeset h5,.md-typeset h6{color:var(--md-default-fg-color--light);font-size:.8em;font-weight:700;letter-spacing:-.01em;margin:1.25em 0}.md-typeset h5{text-transform:uppercase}.md-typeset hr{border-bottom:.05rem solid var(--md-default-fg-color--lightest);display:flow-root;margin:1.5em 0}.md-typeset a{color:var(--md-typeset-a-color);word-break:break-word}.md-typeset a,.md-typeset a:before{transition:color 125ms}.md-typeset a:focus,.md-typeset a:hover{color:var(--md-accent-fg-color)}.md-typeset a:focus code,.md-typeset a:hover code{background-color:var(--md-accent-fg-color--transparent)}.md-typeset a code{color:currentcolor;transition:background-color 125ms}.md-typeset a.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset code,.md-typeset kbd,.md-typeset pre{color:var(--md-code-fg-color);direction:ltr;font-variant-ligatures:none}@media print{.md-typeset code,.md-typeset kbd,.md-typeset pre{white-space:pre-wrap}}.md-typeset code{background-color:var(--md-code-bg-color);border-radius:.1rem;-webkit-box-decoration-break:clone;box-decoration-break:clone;font-size:.85em;padding:0 .2941176471em;word-break:break-word}.md-typeset code:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-typeset pre{display:flow-root;line-height:1.4;position:relative}.md-typeset pre>code{-webkit-box-decoration-break:slice;box-decoration-break:slice;box-shadow:none;display:block;margin:0;outline-color:var(--md-accent-fg-color);overflow:auto;padding:.7720588235em 1.1764705882em;scrollbar-color:var(--md-default-fg-color--lighter) #0000;scrollbar-width:thin;touch-action:auto;word-break:normal}.md-typeset pre>code:hover{scrollbar-color:var(--md-accent-fg-color) #0000}.md-typeset pre>code::-webkit-scrollbar{height:.2rem;width:.2rem}.md-typeset pre>code::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-typeset pre>code::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}.md-typeset kbd{background-color:var(--md-typeset-kbd-color);border-radius:.1rem;box-shadow:0 .1rem 0 .05rem var(--md-typeset-kbd-border-color),0 .1rem 0 var(--md-typeset-kbd-border-color),0 -.1rem .2rem var(--md-typeset-kbd-accent-color) inset;color:var(--md-default-fg-color);display:inline-block;font-size:.75em;padding:0 .6666666667em;vertical-align:text-top;word-break:break-word}.md-typeset mark{background-color:var(--md-typeset-mark-color);-webkit-box-decoration-break:clone;box-decoration-break:clone;color:inherit;word-break:break-word}.md-typeset abbr{border-bottom:.05rem dotted var(--md-default-fg-color--light);cursor:help;text-decoration:none}.md-typeset small{opacity:.75}[dir=ltr] .md-typeset sub,[dir=ltr] .md-typeset sup{margin-left:.078125em}[dir=rtl] .md-typeset sub,[dir=rtl] .md-typeset sup{margin-right:.078125em}[dir=ltr] .md-typeset blockquote{padding-left:.6rem}[dir=rtl] .md-typeset blockquote{padding-right:.6rem}[dir=ltr] .md-typeset blockquote{border-left:.2rem solid var(--md-default-fg-color--lighter)}[dir=rtl] .md-typeset blockquote{border-right:.2rem solid var(--md-default-fg-color--lighter)}.md-typeset blockquote{color:var(--md-default-fg-color--light);margin-left:0;margin-right:0}.md-typeset ul{list-style-type:disc}[dir=ltr] .md-typeset ol,[dir=ltr] .md-typeset ul{margin-left:.625em}[dir=rtl] .md-typeset ol,[dir=rtl] .md-typeset ul{margin-right:.625em}.md-typeset ol,.md-typeset ul{padding:0}.md-typeset ol:not([hidden]),.md-typeset ul:not([hidden]){display:flow-root}.md-typeset ol ol,.md-typeset ul ol{list-style-type:lower-alpha}.md-typeset ol ol ol,.md-typeset ul ol ol{list-style-type:lower-roman}[dir=ltr] .md-typeset ol li,[dir=ltr] .md-typeset ul li{margin-left:1.25em}[dir=rtl] .md-typeset ol li,[dir=rtl] .md-typeset ul li{margin-right:1.25em}.md-typeset ol li,.md-typeset ul li{margin-bottom:.5em}.md-typeset ol li blockquote,.md-typeset ol li p,.md-typeset ul li blockquote,.md-typeset ul li p{margin:.5em 0}.md-typeset ol li:last-child,.md-typeset ul li:last-child{margin-bottom:0}[dir=ltr] .md-typeset ol li ol,[dir=ltr] .md-typeset ol li ul,[dir=ltr] .md-typeset ul li ol,[dir=ltr] .md-typeset ul li ul{margin-left:.625em}[dir=rtl] .md-typeset ol li ol,[dir=rtl] .md-typeset ol li ul,[dir=rtl] .md-typeset ul li ol,[dir=rtl] .md-typeset ul li ul{margin-right:.625em}.md-typeset ol li ol,.md-typeset ol li ul,.md-typeset ul li ol,.md-typeset ul li ul{margin-bottom:.5em;margin-top:.5em}[dir=ltr] .md-typeset dd{margin-left:1.875em}[dir=rtl] .md-typeset dd{margin-right:1.875em}.md-typeset dd{margin-bottom:1.5em;margin-top:1em}.md-typeset img,.md-typeset svg,.md-typeset video{height:auto;max-width:100%}.md-typeset img[align=left]{margin:1em 1em 1em 0}.md-typeset img[align=right]{margin:1em 0 1em 1em}.md-typeset img[align]:only-child{margin-top:0}.md-typeset figure{display:flow-root;margin:1em auto;max-width:100%;text-align:center;width:-moz-fit-content;width:fit-content}.md-typeset figure img{display:block;margin:0 auto}.md-typeset figcaption{font-style:italic;margin:1em auto;max-width:24rem}.md-typeset iframe{max-width:100%}.md-typeset table:not([class]){background-color:var(--md-default-bg-color);border:.05rem solid var(--md-typeset-table-color);border-radius:.1rem;display:inline-block;font-size:.64rem;max-width:100%;overflow:auto;touch-action:auto}@media print{.md-typeset table:not([class]){display:table}}.md-typeset table:not([class])+*{margin-top:1.5em}.md-typeset table:not([class]) td>:first-child,.md-typeset table:not([class]) th>:first-child{margin-top:0}.md-typeset table:not([class]) td>:last-child,.md-typeset table:not([class]) th>:last-child{margin-bottom:0}.md-typeset table:not([class]) td:not([align]),.md-typeset table:not([class]) th:not([align]){text-align:left}[dir=rtl] .md-typeset table:not([class]) td:not([align]),[dir=rtl] .md-typeset table:not([class]) th:not([align]){text-align:right}.md-typeset table:not([class]) th{font-weight:700;min-width:5rem;padding:.9375em 1.25em;vertical-align:top}.md-typeset table:not([class]) td{border-top:.05rem solid var(--md-typeset-table-color);padding:.9375em 1.25em;vertical-align:top}.md-typeset table:not([class]) tbody tr{transition:background-color 125ms}.md-typeset table:not([class]) tbody tr:hover{background-color:var(--md-typeset-table-color--light);box-shadow:0 .05rem 0 var(--md-default-bg-color) inset}.md-typeset table:not([class]) a{word-break:normal}.md-typeset table th[role=columnheader]{cursor:pointer}[dir=ltr] .md-typeset table th[role=columnheader]:after{margin-left:.5em}[dir=rtl] .md-typeset table th[role=columnheader]:after{margin-right:.5em}.md-typeset table th[role=columnheader]:after{content:"";display:inline-block;height:1.2em;-webkit-mask-image:var(--md-typeset-table-sort-icon);mask-image:var(--md-typeset-table-sort-icon);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color 125ms;vertical-align:text-bottom;width:1.2em}.md-typeset table th[role=columnheader]:hover:after{background-color:var(--md-default-fg-color--lighter)}.md-typeset table th[role=columnheader][aria-sort=ascending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--asc);mask-image:var(--md-typeset-table-sort-icon--asc)}.md-typeset table th[role=columnheader][aria-sort=descending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--desc);mask-image:var(--md-typeset-table-sort-icon--desc)}.md-typeset__scrollwrap{margin:1em -.8rem;overflow-x:auto;touch-action:auto}.md-typeset__table{display:inline-block;margin-bottom:.5em;padding:0 .8rem}@media print{.md-typeset__table{display:block}}html .md-typeset__table table{display:table;margin:0;overflow:hidden;width:100%}@media screen and (max-width:44.984375em){.md-content__inner>pre{margin:1em -.8rem}.md-content__inner>pre code{border-radius:0}}.md-typeset .md-author{border-radius:100%;display:block;flex-shrink:0;height:1.6rem;overflow:hidden;position:relative;transition:color 125ms,transform 125ms;width:1.6rem}.md-typeset .md-author img{display:block}.md-typeset .md-author--more{background:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--lighter);font-size:.6rem;font-weight:700;line-height:1.6rem;text-align:center}.md-typeset .md-author--long{height:2.4rem;width:2.4rem}.md-typeset a.md-author{transform:scale(1)}.md-typeset a.md-author img{border-radius:100%;filter:grayscale(100%) opacity(75%);transition:filter 125ms}.md-typeset a.md-author:focus,.md-typeset a.md-author:hover{transform:scale(1.1);z-index:1}.md-typeset a.md-author:focus img,.md-typeset a.md-author:hover img{filter:grayscale(0)}.md-banner{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color);overflow:auto}@media print{.md-banner{display:none}}.md-banner--warning{background-color:var(--md-warning-bg-color);color:var(--md-warning-fg-color)}.md-banner__inner{font-size:.7rem;margin:.6rem auto;padding:0 .8rem}[dir=ltr] .md-banner__button{float:right}[dir=rtl] .md-banner__button{float:left}.md-banner__button{color:inherit;cursor:pointer;transition:opacity .25s}.no-js .md-banner__button{display:none}.md-banner__button:hover{opacity:.7}html{font-size:125%;height:100%;overflow-x:hidden}@media screen and (min-width:100em){html{font-size:137.5%}}@media screen and (min-width:125em){html{font-size:150%}}body{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;font-size:.5rem;min-height:100%;position:relative;width:100%}@media print{body{display:block}}@media screen and (max-width:59.984375em){body[data-md-scrolllock]{position:fixed}}.md-grid{margin-left:auto;margin-right:auto;max-width:61rem}.md-container{display:flex;flex-direction:column;flex-grow:1}@media print{.md-container{display:block}}.md-main{flex-grow:1}.md-main__inner{display:flex;height:100%;margin-top:1.5rem}.md-ellipsis{overflow:hidden;text-overflow:ellipsis}.md-toggle{display:none}.md-option{height:0;opacity:0;position:absolute;width:0}.md-option:checked+label:not([hidden]){display:block}.md-option.focus-visible+label{outline-color:var(--md-accent-fg-color);outline-style:auto}.md-skip{background-color:var(--md-default-fg-color);border-radius:.1rem;color:var(--md-default-bg-color);font-size:.64rem;margin:.5rem;opacity:0;outline-color:var(--md-accent-fg-color);padding:.3rem .5rem;position:fixed;transform:translateY(.4rem);z-index:-1}.md-skip:focus{opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 175ms 75ms;z-index:10}@page{margin:25mm}:root{--md-clipboard-icon:url('data:image/svg+xml;charset=utf-8,')}.md-clipboard{border-radius:.1rem;color:var(--md-default-fg-color--lightest);cursor:pointer;height:1.5em;outline-color:var(--md-accent-fg-color);outline-offset:.1rem;position:absolute;right:.5em;top:.5em;transition:color .25s;width:1.5em;z-index:1}@media print{.md-clipboard{display:none}}.md-clipboard:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}:hover>.md-clipboard{color:var(--md-default-fg-color--light)}.md-clipboard:focus,.md-clipboard:hover{color:var(--md-accent-fg-color)}.md-clipboard:after{background-color:currentcolor;content:"";display:block;height:1.125em;margin:0 auto;-webkit-mask-image:var(--md-clipboard-icon);mask-image:var(--md-clipboard-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:1.125em}.md-clipboard--inline{cursor:pointer}.md-clipboard--inline code{transition:color .25s,background-color .25s}.md-clipboard--inline:focus code,.md-clipboard--inline:hover code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-typeset .md-code__content{display:grid}@keyframes consent{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes overlay{0%{opacity:0}to{opacity:1}}.md-consent__overlay{animation:overlay .25s both;-webkit-backdrop-filter:blur(.1rem);backdrop-filter:blur(.1rem);background-color:#0000008a;height:100%;opacity:1;position:fixed;top:0;width:100%;z-index:5}.md-consent__inner{animation:consent .5s cubic-bezier(.1,.7,.1,1) both;background-color:var(--md-default-bg-color);border:0;border-radius:.1rem;bottom:0;box-shadow:0 0 .2rem #0000001a,0 .2rem .4rem #0003;max-height:100%;overflow:auto;padding:0;position:fixed;width:100%;z-index:5}.md-consent__form{padding:.8rem}.md-consent__settings{display:none;margin:1em 0}input:checked+.md-consent__settings{display:block}.md-consent__controls{margin-bottom:.8rem}.md-typeset .md-consent__controls .md-button{display:inline}@media screen and (max-width:44.984375em){.md-typeset .md-consent__controls .md-button{display:block;margin-top:.4rem;text-align:center;width:100%}}.md-consent label{cursor:pointer}.md-content{flex-grow:1;min-width:0}.md-content__inner{margin:0 .8rem 1.2rem;padding-top:.6rem}@media screen and (min-width:76.25em){[dir=ltr] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}[dir=ltr] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner,[dir=rtl] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-right:1.2rem}[dir=rtl] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}}.md-content__inner:before{content:"";display:block;height:.4rem}.md-content__inner>:last-child{margin-bottom:0}[dir=ltr] .md-content__button{float:right}[dir=rtl] .md-content__button{float:left}[dir=ltr] .md-content__button{margin-left:.4rem}[dir=rtl] .md-content__button{margin-right:.4rem}.md-content__button{margin:.4rem 0;padding:0}@media print{.md-content__button{display:none}}.md-typeset .md-content__button{color:var(--md-default-fg-color--lighter)}.md-content__button svg{display:inline;vertical-align:top}[dir=rtl] .md-content__button svg{transform:scaleX(-1)}[dir=ltr] .md-dialog{right:.8rem}[dir=rtl] .md-dialog{left:.8rem}.md-dialog{background-color:var(--md-default-fg-color);border-radius:.1rem;bottom:.8rem;box-shadow:var(--md-shadow-z3);min-width:11.1rem;opacity:0;padding:.4rem .6rem;pointer-events:none;position:fixed;transform:translateY(100%);transition:transform 0ms .4s,opacity .4s;z-index:4}@media print{.md-dialog{display:none}}.md-dialog--active{opacity:1;pointer-events:auto;transform:translateY(0);transition:transform .4s cubic-bezier(.075,.85,.175,1),opacity .4s}.md-dialog__inner{color:var(--md-default-bg-color);font-size:.7rem}.md-feedback{margin:2em 0 1em;text-align:center}.md-feedback fieldset{border:none;margin:0;padding:0}.md-feedback__title{font-weight:700;margin:1em auto}.md-feedback__inner{position:relative}.md-feedback__list{display:flex;flex-wrap:wrap;place-content:baseline center;position:relative}.md-feedback__list:hover .md-icon:not(:disabled){color:var(--md-default-fg-color--lighter)}:disabled .md-feedback__list{min-height:1.8rem}.md-feedback__icon{color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;margin:0 .1rem;transition:color 125ms}.md-feedback__icon:not(:disabled).md-icon:hover{color:var(--md-accent-fg-color)}.md-feedback__icon:disabled{color:var(--md-default-fg-color--lightest);pointer-events:none}.md-feedback__note{opacity:0;position:relative;transform:translateY(.4rem);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-feedback__note>*{margin:0 auto;max-width:16rem}:disabled .md-feedback__note{opacity:1;transform:translateY(0)}.md-footer{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color)}@media print{.md-footer{display:none}}.md-footer__inner{justify-content:space-between;overflow:auto;padding:.2rem}.md-footer__inner:not([hidden]){display:flex}.md-footer__link{align-items:end;display:flex;flex-grow:0.01;margin-bottom:.4rem;margin-top:1rem;max-width:100%;outline-color:var(--md-accent-fg-color);overflow:hidden;transition:opacity .25s}.md-footer__link:focus,.md-footer__link:hover{opacity:.7}[dir=rtl] .md-footer__link svg{transform:scaleX(-1)}@media screen and (max-width:44.984375em){.md-footer__link--prev{flex-shrink:0}.md-footer__link--prev .md-footer__title{display:none}}[dir=ltr] .md-footer__link--next{margin-left:auto}[dir=rtl] .md-footer__link--next{margin-right:auto}.md-footer__link--next{text-align:right}[dir=rtl] .md-footer__link--next{text-align:left}.md-footer__title{flex-grow:1;font-size:.9rem;margin-bottom:.7rem;max-width:calc(100% - 2.4rem);padding:0 1rem;white-space:nowrap}.md-footer__button{margin:.2rem;padding:.4rem}.md-footer__direction{font-size:.64rem;opacity:.7}.md-footer-meta{background-color:var(--md-footer-bg-color--dark)}.md-footer-meta__inner{display:flex;flex-wrap:wrap;justify-content:space-between;padding:.2rem}html .md-footer-meta.md-typeset a{color:var(--md-footer-fg-color--light)}html .md-footer-meta.md-typeset a:focus,html .md-footer-meta.md-typeset a:hover{color:var(--md-footer-fg-color)}.md-copyright{color:var(--md-footer-fg-color--lighter);font-size:.64rem;margin:auto .6rem;padding:.4rem 0;width:100%}@media screen and (min-width:45em){.md-copyright{width:auto}}.md-copyright__highlight{color:var(--md-footer-fg-color--light)}.md-social{display:inline-flex;gap:.2rem;margin:0 .4rem;padding:.2rem 0 .6rem}@media screen and (min-width:45em){.md-social{padding:.6rem 0}}.md-social__link{display:inline-block;height:1.6rem;text-align:center;width:1.6rem}.md-social__link:before{line-height:1.9}.md-social__link svg{fill:currentcolor;max-height:.8rem;vertical-align:-25%}.md-typeset .md-button{border:.1rem solid;border-radius:.1rem;color:var(--md-primary-fg-color);cursor:pointer;display:inline-block;font-weight:700;padding:.625em 2em;transition:color 125ms,background-color 125ms,border-color 125ms}.md-typeset .md-button--primary{background-color:var(--md-primary-fg-color);border-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color)}.md-typeset .md-button:focus,.md-typeset .md-button:hover{background-color:var(--md-accent-fg-color);border-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[dir=ltr] .md-typeset .md-input{border-top-left-radius:.1rem}[dir=ltr] .md-typeset .md-input,[dir=rtl] .md-typeset .md-input{border-top-right-radius:.1rem}[dir=rtl] .md-typeset .md-input{border-top-left-radius:.1rem}.md-typeset .md-input{border-bottom:.1rem solid var(--md-default-fg-color--lighter);box-shadow:var(--md-shadow-z1);font-size:.8rem;height:1.8rem;padding:0 .6rem;transition:border .25s,box-shadow .25s}.md-typeset .md-input:focus,.md-typeset .md-input:hover{border-bottom-color:var(--md-accent-fg-color);box-shadow:var(--md-shadow-z2)}.md-typeset .md-input--stretch{width:100%}.md-header{background-color:var(--md-primary-fg-color);box-shadow:0 0 .2rem #0000,0 .2rem .4rem #0000;color:var(--md-primary-bg-color);display:block;left:0;position:sticky;right:0;top:0;z-index:4}@media print{.md-header{display:none}}.md-header[hidden]{transform:translateY(-100%);transition:transform .25s cubic-bezier(.8,0,.6,1),box-shadow .25s}.md-header--shadow{box-shadow:0 0 .2rem #0000001a,0 .2rem .4rem #0003;transition:transform .25s cubic-bezier(.1,.7,.1,1),box-shadow .25s}.md-header__inner{align-items:center;display:flex;padding:0 .2rem}.md-header__button{color:currentcolor;cursor:pointer;margin:.2rem;outline-color:var(--md-accent-fg-color);padding:.4rem;position:relative;transition:opacity .25s;vertical-align:middle;z-index:1}.md-header__button:hover{opacity:.7}.md-header__button:not([hidden]){display:inline-block}.md-header__button:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-header__button.md-logo{margin:.2rem;padding:.4rem}@media screen and (max-width:76.234375em){.md-header__button.md-logo{display:none}}.md-header__button.md-logo img,.md-header__button.md-logo svg{fill:currentcolor;display:block;height:1.2rem;width:auto}@media screen and (min-width:60em){.md-header__button[for=__search]{display:none}}.no-js .md-header__button[for=__search]{display:none}[dir=rtl] .md-header__button[for=__search] svg{transform:scaleX(-1)}@media screen and (min-width:76.25em){.md-header__button[for=__drawer]{display:none}}.md-header__topic{display:flex;max-width:100%;position:absolute;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;white-space:nowrap}.md-header__topic+.md-header__topic{opacity:0;pointer-events:none;transform:translateX(1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__topic+.md-header__topic{transform:translateX(-1.25rem)}.md-header__topic:first-child{font-weight:700}[dir=ltr] .md-header__title{margin-left:1rem;margin-right:.4rem}[dir=rtl] .md-header__title{margin-left:.4rem;margin-right:1rem}.md-header__title{flex-grow:1;font-size:.9rem;height:2.4rem;line-height:2.4rem}.md-header__title--active .md-header__topic{opacity:0;pointer-events:none;transform:translateX(-1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__title--active .md-header__topic{transform:translateX(1.25rem)}.md-header__title--active .md-header__topic+.md-header__topic{opacity:1;pointer-events:auto;transform:translateX(0);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;z-index:0}.md-header__title>.md-header__ellipsis{height:100%;position:relative;width:100%}.md-header__option{display:flex;flex-shrink:0;max-width:100%;transition:max-width 0ms .25s,opacity .25s .25s;white-space:nowrap}[data-md-toggle=search]:checked~.md-header .md-header__option{max-width:0;opacity:0;transition:max-width 0ms,opacity 0ms}.md-header__option>input{bottom:0}.md-header__source{display:none}@media screen and (min-width:60em){[dir=ltr] .md-header__source{margin-left:1rem}[dir=rtl] .md-header__source{margin-right:1rem}.md-header__source{display:block;max-width:11.7rem;width:11.7rem}}@media screen and (min-width:76.25em){[dir=ltr] .md-header__source{margin-left:1.4rem}[dir=rtl] .md-header__source{margin-right:1.4rem}}.md-meta{color:var(--md-default-fg-color--light);font-size:.7rem;line-height:1.3}.md-meta__list{display:inline-flex;flex-wrap:wrap;list-style:none;margin:0;padding:0}.md-meta__item:not(:last-child):after{content:"·";margin-left:.2rem;margin-right:.2rem}.md-meta__link{color:var(--md-typeset-a-color)}.md-meta__link:focus,.md-meta__link:hover{color:var(--md-accent-fg-color)}.md-draft{background-color:#ff1744;border-radius:.125em;color:#fff;display:inline-block;font-weight:700;padding-left:.5714285714em;padding-right:.5714285714em}:root{--md-nav-icon--prev:url('data:image/svg+xml;charset=utf-8,');--md-nav-icon--next:url('data:image/svg+xml;charset=utf-8,');--md-toc-icon:url('data:image/svg+xml;charset=utf-8,')}.md-nav{font-size:.7rem;line-height:1.3}.md-nav__title{color:var(--md-default-fg-color--light);display:block;font-weight:700;overflow:hidden;padding:0 .6rem;text-overflow:ellipsis}.md-nav__title .md-nav__button{display:none}.md-nav__title .md-nav__button img{height:100%;width:auto}.md-nav__title .md-nav__button.md-logo img,.md-nav__title .md-nav__button.md-logo svg{fill:currentcolor;display:block;height:2.4rem;max-width:100%;object-fit:contain;width:auto}.md-nav__list{list-style:none;margin:0;padding:0}.md-nav__link{align-items:flex-start;display:flex;gap:.4rem;margin-top:.625em;scroll-snap-align:start;transition:color 125ms}.md-nav__link--passed{color:var(--md-default-fg-color--light)}.md-nav__item .md-nav__link--active,.md-nav__item .md-nav__link--active code{color:var(--md-typeset-a-color)}.md-nav__link .md-ellipsis{position:relative}[dir=ltr] .md-nav__link .md-icon:last-child{margin-left:auto}[dir=rtl] .md-nav__link .md-icon:last-child{margin-right:auto}.md-nav__link svg{fill:currentcolor;flex-shrink:0;height:1.3em;position:relative}.md-nav__link[for]:focus,.md-nav__link[for]:hover,.md-nav__link[href]:focus,.md-nav__link[href]:hover{color:var(--md-accent-fg-color);cursor:pointer}.md-nav__link.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-nav--primary .md-nav__link[for=__toc]{display:none}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{background-color:currentcolor;display:block;height:100%;-webkit-mask-image:var(--md-toc-icon);mask-image:var(--md-toc-icon);width:100%}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:none}.md-nav__container>.md-nav__link{margin-top:0}.md-nav__container>.md-nav__link:first-child{flex-grow:1;min-width:0}.md-nav__icon{flex-shrink:0}.md-nav__source{display:none}@media screen and (max-width:76.234375em){.md-nav--primary,.md-nav--primary .md-nav{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;height:100%;left:0;position:absolute;right:0;top:0;z-index:1}.md-nav--primary .md-nav__item,.md-nav--primary .md-nav__title{font-size:.8rem;line-height:1.5}.md-nav--primary .md-nav__title{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);cursor:pointer;height:5.6rem;line-height:2.4rem;padding:3rem .8rem .2rem;position:relative;white-space:nowrap}[dir=ltr] .md-nav--primary .md-nav__title .md-nav__icon{left:.4rem}[dir=rtl] .md-nav--primary .md-nav__title .md-nav__icon{right:.4rem}.md-nav--primary .md-nav__title .md-nav__icon{display:block;height:1.2rem;margin:.2rem;position:absolute;top:.4rem;width:1.2rem}.md-nav--primary .md-nav__title .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--prev);mask-image:var(--md-nav-icon--prev);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}.md-nav--primary .md-nav__title~.md-nav__list{background-color:var(--md-default-bg-color);box-shadow:0 .05rem 0 var(--md-default-fg-color--lightest) inset;overflow-y:auto;scroll-snap-type:y mandatory;touch-action:pan-y}.md-nav--primary .md-nav__title~.md-nav__list>:first-child{border-top:0}.md-nav--primary .md-nav__title[for=__drawer]{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);font-weight:700}.md-nav--primary .md-nav__title .md-logo{display:block;left:.2rem;margin:.2rem;padding:.4rem;position:absolute;right:.2rem;top:.2rem}.md-nav--primary .md-nav__list{flex:1}.md-nav--primary .md-nav__item{border-top:.05rem solid var(--md-default-fg-color--lightest)}.md-nav--primary .md-nav__item--active>.md-nav__link{color:var(--md-typeset-a-color)}.md-nav--primary .md-nav__item--active>.md-nav__link:focus,.md-nav--primary .md-nav__item--active>.md-nav__link:hover{color:var(--md-accent-fg-color)}.md-nav--primary .md-nav__link{margin-top:0;padding:.6rem .8rem}.md-nav--primary .md-nav__link svg{margin-top:.1em}.md-nav--primary .md-nav__link>.md-nav__link{padding:0}[dir=ltr] .md-nav--primary .md-nav__link .md-nav__icon{margin-right:-.2rem}[dir=rtl] .md-nav--primary .md-nav__link .md-nav__icon{margin-left:-.2rem}.md-nav--primary .md-nav__link .md-nav__icon{font-size:1.2rem;height:1.2rem;width:1.2rem}.md-nav--primary .md-nav__link .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-nav--primary .md-nav__icon:after{transform:scale(-1)}.md-nav--primary .md-nav--secondary .md-nav{background-color:initial;position:static}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-left:1.4rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-right:1.4rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-left:2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-right:2rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-left:2.6rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-right:2.6rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-left:3.2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-right:3.2rem}.md-nav--secondary{background-color:initial}.md-nav__toggle~.md-nav{display:flex;opacity:0;transform:translateX(100%);transition:transform .25s cubic-bezier(.8,0,.6,1),opacity 125ms 50ms}[dir=rtl] .md-nav__toggle~.md-nav{transform:translateX(-100%)}.md-nav__toggle:checked~.md-nav{opacity:1;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 125ms 125ms}.md-nav__toggle:checked~.md-nav>.md-nav__list{-webkit-backface-visibility:hidden;backface-visibility:hidden}}@media screen and (max-width:59.984375em){.md-nav--primary .md-nav__link[for=__toc]{display:flex}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--primary .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:flex}.md-nav__source{background-color:var(--md-primary-fg-color--dark);color:var(--md-primary-bg-color);display:block;padding:0 .2rem}}@media screen and (min-width:60em) and (max-width:76.234375em){.md-nav--integrated .md-nav__link[for=__toc]{display:flex}.md-nav--integrated .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--integrated .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--integrated .md-nav__link[for=__toc]~.md-nav{display:flex}}@media screen and (min-width:60em){.md-nav{margin-bottom:-.4rem}.md-nav--secondary .md-nav__title{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);position:sticky;top:0;z-index:1}.md-nav--secondary .md-nav__title[for=__toc]{scroll-snap-align:start}.md-nav--secondary .md-nav__title .md-nav__icon{display:none}[dir=ltr] .md-nav--secondary .md-nav__list{padding-left:.6rem}[dir=rtl] .md-nav--secondary .md-nav__list{padding-right:.6rem}.md-nav--secondary .md-nav__list{padding-bottom:.4rem}[dir=ltr] .md-nav--secondary .md-nav__item>.md-nav__link{margin-right:.4rem}[dir=rtl] .md-nav--secondary .md-nav__item>.md-nav__link{margin-left:.4rem}}@media screen and (min-width:76.25em){.md-nav{margin-bottom:-.4rem;transition:max-height .25s cubic-bezier(.86,0,.07,1)}.md-nav--primary .md-nav__title{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);position:sticky;top:0;z-index:1}.md-nav--primary .md-nav__title[for=__drawer]{scroll-snap-align:start}.md-nav--primary .md-nav__title .md-nav__icon{display:none}[dir=ltr] .md-nav--primary .md-nav__list{padding-left:.6rem}[dir=rtl] .md-nav--primary .md-nav__list{padding-right:.6rem}.md-nav--primary .md-nav__list{padding-bottom:.4rem}[dir=ltr] .md-nav--primary .md-nav__item>.md-nav__link{margin-right:.4rem}[dir=rtl] .md-nav--primary .md-nav__item>.md-nav__link{margin-left:.4rem}.md-nav__toggle~.md-nav{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .25s cubic-bezier(.86,0,.07,1),opacity .25s,visibility 0ms .25s;visibility:collapse}.md-nav__toggle~.md-nav>.md-nav__list{overflow:hidden}.md-nav__toggle.md-toggle--indeterminate~.md-nav,.md-nav__toggle:checked~.md-nav{grid-template-rows:1fr;opacity:1;transition:grid-template-rows .25s cubic-bezier(.86,0,.07,1),opacity .15s .1s,visibility 0ms;visibility:visible}.md-nav__toggle.md-toggle--indeterminate~.md-nav{transition:none}.md-nav__item--nested>.md-nav>.md-nav__title{display:none}.md-nav__item--section{display:block;margin:1.25em 0}.md-nav__item--section:last-child{margin-bottom:0}.md-nav__item--section>.md-nav__link{font-weight:700}.md-nav__item--section>.md-nav__link[for]{color:var(--md-default-fg-color--light)}.md-nav__item--section>.md-nav__link:not(.md-nav__container){pointer-events:none}.md-nav__item--section>.md-nav__link .md-icon,.md-nav__item--section>.md-nav__link>[for]{display:none}[dir=ltr] .md-nav__item--section>.md-nav{margin-left:-.6rem}[dir=rtl] .md-nav__item--section>.md-nav{margin-right:-.6rem}.md-nav__item--section>.md-nav{display:block;opacity:1;visibility:visible}.md-nav__item--section>.md-nav>.md-nav__list>.md-nav__item{padding:0}.md-nav__icon{border-radius:100%;height:.9rem;transition:background-color .25s;width:.9rem}.md-nav__icon:hover{background-color:var(--md-accent-fg-color--transparent)}.md-nav__icon:after{background-color:currentcolor;border-radius:100%;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:transform .25s;vertical-align:-.1rem;width:100%}[dir=rtl] .md-nav__icon:after{transform:rotate(180deg)}.md-nav__item--nested .md-nav__toggle:checked~.md-nav__link .md-nav__icon:after,.md-nav__item--nested .md-toggle--indeterminate~.md-nav__link .md-nav__icon:after{transform:rotate(90deg)}.md-nav--lifted>.md-nav__list>.md-nav__item,.md-nav--lifted>.md-nav__title{display:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active{display:block}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);margin-top:0;position:sticky;top:0;z-index:1}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link:not(.md-nav__container){pointer-events:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active.md-nav__item--section{margin:0}[dir=ltr] .md-nav--lifted>.md-nav__list>.md-nav__item>.md-nav:not(.md-nav--secondary){margin-left:-.6rem}[dir=rtl] .md-nav--lifted>.md-nav__list>.md-nav__item>.md-nav:not(.md-nav--secondary){margin-right:-.6rem}.md-nav--lifted>.md-nav__list>.md-nav__item>[for]{color:var(--md-default-fg-color--light)}.md-nav--lifted .md-nav[data-md-level="1"]{grid-template-rows:1fr;opacity:1;visibility:visible}[dir=ltr] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-left:.05rem solid var(--md-primary-fg-color)}[dir=rtl] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-right:.05rem solid var(--md-primary-fg-color)}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{display:block;margin-bottom:1.25em;opacity:1;visibility:visible}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary>.md-nav__list{overflow:visible;padding-bottom:0}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary>.md-nav__title{display:none}}.md-pagination{font-size:.8rem;font-weight:700;gap:.4rem}.md-pagination,.md-pagination>*{align-items:center;display:flex;justify-content:center}.md-pagination>*{border-radius:.2rem;height:1.8rem;min-width:1.8rem;text-align:center}.md-pagination__current{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light)}.md-pagination__link{transition:color 125ms,background-color 125ms}.md-pagination__link:focus,.md-pagination__link:hover{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-pagination__link:focus svg,.md-pagination__link:hover svg{color:var(--md-accent-fg-color)}.md-pagination__link.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-pagination__link svg{fill:currentcolor;color:var(--md-default-fg-color--lighter);display:block;max-height:100%;width:1.2rem}.md-post__back{border-bottom:.05rem solid var(--md-default-fg-color--lightest);margin-bottom:1.2rem;padding-bottom:1.2rem}@media screen and (max-width:76.234375em){.md-post__back{display:none}}[dir=rtl] .md-post__back svg{transform:scaleX(-1)}.md-post__authors{display:flex;flex-direction:column;gap:.6rem;margin:0 .6rem 1.2rem}.md-post .md-post__meta a{transition:color 125ms}.md-post .md-post__meta a:focus,.md-post .md-post__meta a:hover{color:var(--md-accent-fg-color)}.md-post__title{color:var(--md-default-fg-color--light);font-weight:700}.md-post--excerpt{margin-bottom:3.2rem}.md-post--excerpt .md-post__header{align-items:center;display:flex;gap:.6rem;min-height:1.6rem}.md-post--excerpt .md-post__authors{align-items:center;display:inline-flex;flex-direction:row;gap:.2rem;margin:0;min-height:2.4rem}[dir=ltr] .md-post--excerpt .md-post__meta .md-meta__list{margin-right:.4rem}[dir=rtl] .md-post--excerpt .md-post__meta .md-meta__list{margin-left:.4rem}.md-post--excerpt .md-post__content>:first-child{--md-scroll-margin:6rem;margin-top:0}.md-post>.md-nav--secondary{margin:1em 0}.md-profile{align-items:center;display:flex;font-size:.7rem;gap:.6rem;line-height:1.4;width:100%}.md-profile__description{flex-grow:1}.md-content--post{display:flex}@media screen and (max-width:76.234375em){.md-content--post{flex-flow:column-reverse}}.md-content--post>.md-content__inner{min-width:0}@media screen and (min-width:76.25em){[dir=ltr] .md-content--post>.md-content__inner{margin-left:1.2rem}[dir=rtl] .md-content--post>.md-content__inner{margin-right:1.2rem}}@media screen and (max-width:76.234375em){.md-sidebar.md-sidebar--post{padding:0;position:static;width:100%}.md-sidebar.md-sidebar--post .md-sidebar__scrollwrap{overflow:visible}.md-sidebar.md-sidebar--post .md-sidebar__inner{padding:0}.md-sidebar.md-sidebar--post .md-post__meta{margin-left:.6rem;margin-right:.6rem}.md-sidebar.md-sidebar--post .md-nav__item{border:none;display:inline}.md-sidebar.md-sidebar--post .md-nav__list{display:inline-flex;flex-wrap:wrap;gap:.6rem;padding-bottom:.6rem;padding-top:.6rem}.md-sidebar.md-sidebar--post .md-nav__link{padding:0}.md-sidebar.md-sidebar--post .md-nav{height:auto;margin-bottom:0;position:static}}:root{--md-progress-value:0;--md-progress-delay:400ms}.md-progress{background:var(--md-primary-bg-color);height:.075rem;opacity:min(clamp(0,var(--md-progress-value),1),clamp(0,100 - var(--md-progress-value),1));position:fixed;top:0;transform:scaleX(calc(var(--md-progress-value)*1%));transform-origin:left;transition:transform .5s cubic-bezier(.19,1,.22,1),opacity .25s var(--md-progress-delay);width:100%;z-index:4}:root{--md-search-result-icon:url('data:image/svg+xml;charset=utf-8,')}.md-search{position:relative}@media screen and (min-width:60em){.md-search{padding:.2rem 0}}.no-js .md-search{display:none}.md-search__overlay{opacity:0;z-index:1}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__overlay{left:-2.2rem}[dir=rtl] .md-search__overlay{right:-2.2rem}.md-search__overlay{background-color:var(--md-default-bg-color);border-radius:1rem;height:2rem;overflow:hidden;pointer-events:none;position:absolute;top:-1rem;transform-origin:center;transition:transform .3s .1s,opacity .2s .2s;width:2rem}[data-md-toggle=search]:checked~.md-header .md-search__overlay{opacity:1;transition:transform .4s,opacity .1s}}@media screen and (min-width:60em){[dir=ltr] .md-search__overlay{left:0}[dir=rtl] .md-search__overlay{right:0}.md-search__overlay{background-color:#0000008a;cursor:pointer;height:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0}[data-md-toggle=search]:checked~.md-header .md-search__overlay{height:200vh;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@media screen and (max-width:29.984375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(45)}}@media screen and (min-width:30em) and (max-width:44.984375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(60)}}@media screen and (min-width:45em) and (max-width:59.984375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(75)}}.md-search__inner{-webkit-backface-visibility:hidden;backface-visibility:hidden}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__inner{left:0}[dir=rtl] .md-search__inner{right:0}.md-search__inner{height:0;opacity:0;overflow:hidden;position:fixed;top:0;transform:translateX(5%);transition:width 0ms .3s,height 0ms .3s,transform .15s cubic-bezier(.4,0,.2,1) .15s,opacity .15s .15s;width:0;z-index:2}[dir=rtl] .md-search__inner{transform:translateX(-5%)}[data-md-toggle=search]:checked~.md-header .md-search__inner{height:100%;opacity:1;transform:translateX(0);transition:width 0ms 0ms,height 0ms 0ms,transform .15s cubic-bezier(.1,.7,.1,1) .15s,opacity .15s .15s;width:100%}}@media screen and (min-width:60em){[dir=ltr] .md-search__inner{float:right}[dir=rtl] .md-search__inner{float:left}.md-search__inner{padding:.1rem 0;position:relative;transition:width .25s cubic-bezier(.1,.7,.1,1);width:11.7rem}}@media screen and (min-width:60em) and (max-width:76.234375em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:23.4rem}}@media screen and (min-width:76.25em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:34.4rem}}.md-search__form{background-color:var(--md-default-bg-color);box-shadow:0 0 .6rem #0000;height:2.4rem;position:relative;transition:color .25s,background-color .25s;z-index:2}@media screen and (min-width:60em){.md-search__form{background-color:#00000042;border-radius:.1rem;height:1.8rem}.md-search__form:hover{background-color:#ffffff1f}}[data-md-toggle=search]:checked~.md-header .md-search__form{background-color:var(--md-default-bg-color);border-radius:.1rem .1rem 0 0;box-shadow:0 0 .6rem #00000012;color:var(--md-default-fg-color)}[dir=ltr] .md-search__input{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__input{padding-left:2.2rem;padding-right:3.6rem}.md-search__input{background:#0000;font-size:.9rem;height:100%;position:relative;text-overflow:ellipsis;width:100%;z-index:2}.md-search__input::placeholder{transition:color .25s}.md-search__input::placeholder,.md-search__input~.md-search__icon{color:var(--md-default-fg-color--light)}.md-search__input::-ms-clear{display:none}@media screen and (max-width:59.984375em){.md-search__input{font-size:.9rem;height:2.4rem;width:100%}}@media screen and (min-width:60em){[dir=ltr] .md-search__input{padding-left:2.2rem}[dir=rtl] .md-search__input{padding-right:2.2rem}.md-search__input{color:inherit;font-size:.8rem}.md-search__input::placeholder{color:var(--md-primary-bg-color--light)}.md-search__input+.md-search__icon{color:var(--md-primary-bg-color)}[data-md-toggle=search]:checked~.md-header .md-search__input{text-overflow:clip}[data-md-toggle=search]:checked~.md-header .md-search__input+.md-search__icon{color:var(--md-default-fg-color--light)}[data-md-toggle=search]:checked~.md-header .md-search__input::placeholder{color:#0000}}.md-search__icon{cursor:pointer;display:inline-block;height:1.2rem;transition:color .25s,opacity .25s;width:1.2rem}.md-search__icon:hover{opacity:.7}[dir=ltr] .md-search__icon[for=__search]{left:.5rem}[dir=rtl] .md-search__icon[for=__search]{right:.5rem}.md-search__icon[for=__search]{position:absolute;top:.3rem;z-index:2}[dir=rtl] .md-search__icon[for=__search] svg{transform:scaleX(-1)}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__icon[for=__search]{left:.8rem}[dir=rtl] .md-search__icon[for=__search]{right:.8rem}.md-search__icon[for=__search]{top:.6rem}.md-search__icon[for=__search] svg:first-child{display:none}}@media screen and (min-width:60em){.md-search__icon[for=__search]{pointer-events:none}.md-search__icon[for=__search] svg:last-child{display:none}}[dir=ltr] .md-search__options{right:.5rem}[dir=rtl] .md-search__options{left:.5rem}.md-search__options{pointer-events:none;position:absolute;top:.3rem;z-index:2}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__options{right:.8rem}[dir=rtl] .md-search__options{left:.8rem}.md-search__options{top:.6rem}}[dir=ltr] .md-search__options>.md-icon{margin-left:.2rem}[dir=rtl] .md-search__options>.md-icon{margin-right:.2rem}.md-search__options>.md-icon{color:var(--md-default-fg-color--light);opacity:0;transform:scale(.75);transition:transform .15s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-search__options>.md-icon:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>.md-icon{opacity:1;pointer-events:auto;transform:scale(1)}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>.md-icon:hover{opacity:.7}[dir=ltr] .md-search__suggest{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__suggest{padding-left:2.2rem;padding-right:3.6rem}.md-search__suggest{align-items:center;color:var(--md-default-fg-color--lighter);display:flex;font-size:.9rem;height:100%;opacity:0;position:absolute;top:0;transition:opacity 50ms;white-space:nowrap;width:100%}@media screen and (min-width:60em){[dir=ltr] .md-search__suggest{padding-left:2.2rem}[dir=rtl] .md-search__suggest{padding-right:2.2rem}.md-search__suggest{font-size:.8rem}}[data-md-toggle=search]:checked~.md-header .md-search__suggest{opacity:1;transition:opacity .3s .1s}[dir=ltr] .md-search__output{border-bottom-left-radius:.1rem}[dir=ltr] .md-search__output,[dir=rtl] .md-search__output{border-bottom-right-radius:.1rem}[dir=rtl] .md-search__output{border-bottom-left-radius:.1rem}.md-search__output{overflow:hidden;position:absolute;width:100%;z-index:1}@media screen and (max-width:59.984375em){.md-search__output{bottom:0;top:2.4rem}}@media screen and (min-width:60em){.md-search__output{opacity:0;top:1.9rem;transition:opacity .4s}[data-md-toggle=search]:checked~.md-header .md-search__output{box-shadow:var(--md-shadow-z3);opacity:1}}.md-search__scrollwrap{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);height:100%;overflow-y:auto;touch-action:pan-y}@media (-webkit-max-device-pixel-ratio:1),(max-resolution:1dppx){.md-search__scrollwrap{transform:translateZ(0)}}@media screen and (min-width:60em) and (max-width:76.234375em){.md-search__scrollwrap{width:23.4rem}}@media screen and (min-width:76.25em){.md-search__scrollwrap{width:34.4rem}}@media screen and (min-width:60em){.md-search__scrollwrap{max-height:0;scrollbar-color:var(--md-default-fg-color--lighter) #0000;scrollbar-width:thin}[data-md-toggle=search]:checked~.md-header .md-search__scrollwrap{max-height:75vh}.md-search__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) #0000}.md-search__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-search__scrollwrap::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}}.md-search-result{color:var(--md-default-fg-color);word-break:break-word}.md-search-result__meta{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);font-size:.64rem;line-height:1.8rem;padding:0 .8rem;scroll-snap-align:start}@media screen and (min-width:60em){[dir=ltr] .md-search-result__meta{padding-left:2.2rem}[dir=rtl] .md-search-result__meta{padding-right:2.2rem}}.md-search-result__list{list-style:none;margin:0;padding:0;-webkit-user-select:none;user-select:none}.md-search-result__item{box-shadow:0 -.05rem var(--md-default-fg-color--lightest)}.md-search-result__item:first-child{box-shadow:none}.md-search-result__link{display:block;outline:none;scroll-snap-align:start;transition:background-color .25s}.md-search-result__link:focus,.md-search-result__link:hover{background-color:var(--md-accent-fg-color--transparent)}.md-search-result__link:last-child p:last-child{margin-bottom:.6rem}.md-search-result__more>summary{cursor:pointer;display:block;outline:none;position:sticky;scroll-snap-align:start;top:0;z-index:1}.md-search-result__more>summary::marker{display:none}.md-search-result__more>summary::-webkit-details-marker{display:none}.md-search-result__more>summary>div{color:var(--md-typeset-a-color);font-size:.64rem;padding:.75em .8rem;transition:color .25s,background-color .25s}@media screen and (min-width:60em){[dir=ltr] .md-search-result__more>summary>div{padding-left:2.2rem}[dir=rtl] .md-search-result__more>summary>div{padding-right:2.2rem}}.md-search-result__more>summary:focus>div,.md-search-result__more>summary:hover>div{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-search-result__more[open]>summary{background-color:var(--md-default-bg-color)}.md-search-result__article{overflow:hidden;padding:0 .8rem;position:relative}@media screen and (min-width:60em){[dir=ltr] .md-search-result__article{padding-left:2.2rem}[dir=rtl] .md-search-result__article{padding-right:2.2rem}}[dir=ltr] .md-search-result__icon{left:0}[dir=rtl] .md-search-result__icon{right:0}.md-search-result__icon{color:var(--md-default-fg-color--light);height:1.2rem;margin:.5rem;position:absolute;width:1.2rem}@media screen and (max-width:59.984375em){.md-search-result__icon{display:none}}.md-search-result__icon:after{background-color:currentcolor;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-search-result-icon);mask-image:var(--md-search-result-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-search-result__icon:after{transform:scaleX(-1)}.md-search-result .md-typeset{color:var(--md-default-fg-color--light);font-size:.64rem;line-height:1.6}.md-search-result .md-typeset h1{color:var(--md-default-fg-color);font-size:.8rem;font-weight:400;line-height:1.4;margin:.55rem 0}.md-search-result .md-typeset h1 mark{text-decoration:none}.md-search-result .md-typeset h2{color:var(--md-default-fg-color);font-size:.64rem;font-weight:700;line-height:1.6;margin:.5em 0}.md-search-result .md-typeset h2 mark{text-decoration:none}.md-search-result__terms{color:var(--md-default-fg-color);display:block;font-size:.64rem;font-style:italic;margin:.5em 0}.md-search-result mark{background-color:initial;color:var(--md-accent-fg-color);text-decoration:underline}.md-select{position:relative;z-index:1}.md-select__inner{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);left:50%;margin-top:.2rem;max-height:0;opacity:0;position:absolute;top:calc(100% - .2rem);transform:translate3d(-50%,.3rem,0);transition:transform .25s 375ms,opacity .25s .25s,max-height 0ms .5s}.md-select:focus-within .md-select__inner,.md-select:hover .md-select__inner{max-height:10rem;opacity:1;transform:translate3d(-50%,0,0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms}.md-select__inner:after{border-bottom:.2rem solid #0000;border-bottom-color:var(--md-default-bg-color);border-left:.2rem solid #0000;border-right:.2rem solid #0000;border-top:0;content:"";height:0;left:50%;margin-left:-.2rem;margin-top:-.2rem;position:absolute;top:0;width:0}.md-select__list{border-radius:.1rem;font-size:.8rem;list-style-type:none;margin:0;max-height:inherit;overflow:auto;padding:0}.md-select__item{line-height:1.8rem}[dir=ltr] .md-select__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-select__link{padding-left:1.2rem;padding-right:.6rem}.md-select__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:background-color .25s,color .25s;width:100%}.md-select__link:focus,.md-select__link:hover{color:var(--md-accent-fg-color)}.md-select__link:focus{background-color:var(--md-default-fg-color--lightest)}.md-sidebar{align-self:flex-start;flex-shrink:0;padding:1.2rem 0;position:sticky;top:2.4rem;width:12.1rem}@media print{.md-sidebar{display:none}}@media screen and (max-width:76.234375em){[dir=ltr] .md-sidebar--primary{left:-12.1rem}[dir=rtl] .md-sidebar--primary{right:-12.1rem}.md-sidebar--primary{background-color:var(--md-default-bg-color);display:block;height:100%;position:fixed;top:0;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .25s;width:12.1rem;z-index:5}[data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{box-shadow:var(--md-shadow-z3);transform:translateX(12.1rem)}[dir=rtl] [data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{transform:translateX(-12.1rem)}.md-sidebar--primary .md-sidebar__scrollwrap{bottom:0;left:0;margin:0;overflow:hidden;position:absolute;right:0;scroll-snap-type:none;top:0}}@media screen and (min-width:76.25em){.md-sidebar{height:0}.no-js .md-sidebar{height:auto}.md-header--lifted~.md-container .md-sidebar{top:4.8rem}}.md-sidebar--secondary{display:none;order:2}@media screen and (min-width:60em){.md-sidebar--secondary{height:0}.no-js .md-sidebar--secondary{height:auto}.md-sidebar--secondary:not([hidden]){display:block}.md-sidebar--secondary .md-sidebar__scrollwrap{touch-action:pan-y}}.md-sidebar__scrollwrap{scrollbar-gutter:stable;-webkit-backface-visibility:hidden;backface-visibility:hidden;margin:0 .2rem;overflow-y:auto;scrollbar-color:var(--md-default-fg-color--lighter) #0000;scrollbar-width:thin}.md-sidebar__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-sidebar__scrollwrap:focus-within,.md-sidebar__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) #0000}.md-sidebar__scrollwrap:focus-within::-webkit-scrollbar-thumb,.md-sidebar__scrollwrap:hover::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-sidebar__scrollwrap:focus-within::-webkit-scrollbar-thumb:hover,.md-sidebar__scrollwrap:hover::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}@supports selector(::-webkit-scrollbar){.md-sidebar__scrollwrap{scrollbar-gutter:auto}[dir=ltr] .md-sidebar__inner{padding-right:calc(100% - 11.5rem)}[dir=rtl] .md-sidebar__inner{padding-left:calc(100% - 11.5rem)}}@media screen and (max-width:76.234375em){.md-overlay{background-color:#0000008a;height:0;opacity:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0;z-index:5}[data-md-toggle=drawer]:checked~.md-overlay{height:100%;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@keyframes facts{0%{height:0}to{height:.65rem}}@keyframes fact{0%{opacity:0;transform:translateY(100%)}50%{opacity:0}to{opacity:1;transform:translateY(0)}}:root{--md-source-forks-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-repositories-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-stars-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-version-icon:url('data:image/svg+xml;charset=utf-8,')}.md-source{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:block;font-size:.65rem;line-height:1.2;outline-color:var(--md-accent-fg-color);transition:opacity .25s;white-space:nowrap}.md-source:hover{opacity:.7}.md-source__icon{display:inline-block;height:2.4rem;vertical-align:middle;width:2rem}[dir=ltr] .md-source__icon svg{margin-left:.6rem}[dir=rtl] .md-source__icon svg{margin-right:.6rem}.md-source__icon svg{margin-top:.6rem}[dir=ltr] .md-source__icon+.md-source__repository{padding-left:2rem}[dir=rtl] .md-source__icon+.md-source__repository{padding-right:2rem}[dir=ltr] .md-source__icon+.md-source__repository{margin-left:-2rem}[dir=rtl] .md-source__icon+.md-source__repository{margin-right:-2rem}[dir=ltr] .md-source__repository{margin-left:.6rem}[dir=rtl] .md-source__repository{margin-right:.6rem}.md-source__repository{display:inline-block;max-width:calc(100% - 1.2rem);overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.md-source__facts{display:flex;font-size:.55rem;gap:.4rem;list-style-type:none;margin:.1rem 0 0;opacity:.75;overflow:hidden;padding:0;width:100%}.md-source__repository--active .md-source__facts{animation:facts .25s ease-in}.md-source__fact{overflow:hidden;text-overflow:ellipsis}.md-source__repository--active .md-source__fact{animation:fact .4s ease-out}[dir=ltr] .md-source__fact:before{margin-right:.1rem}[dir=rtl] .md-source__fact:before{margin-left:.1rem}.md-source__fact:before{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:text-top;width:.6rem}.md-source__fact:nth-child(1n+2){flex-shrink:0}.md-source__fact--version:before{-webkit-mask-image:var(--md-source-version-icon);mask-image:var(--md-source-version-icon)}.md-source__fact--stars:before{-webkit-mask-image:var(--md-source-stars-icon);mask-image:var(--md-source-stars-icon)}.md-source__fact--forks:before{-webkit-mask-image:var(--md-source-forks-icon);mask-image:var(--md-source-forks-icon)}.md-source__fact--repositories:before{-webkit-mask-image:var(--md-source-repositories-icon);mask-image:var(--md-source-repositories-icon)}.md-source-file{margin:1em 0}[dir=ltr] .md-source-file__fact{margin-right:.6rem}[dir=rtl] .md-source-file__fact{margin-left:.6rem}.md-source-file__fact{align-items:center;color:var(--md-default-fg-color--light);display:inline-flex;font-size:.68rem;gap:.3rem}.md-source-file__fact .md-icon{flex-shrink:0;margin-bottom:.05rem}[dir=ltr] .md-source-file__fact .md-author{float:left}[dir=rtl] .md-source-file__fact .md-author{float:right}.md-source-file__fact .md-author{margin-right:.2rem}.md-source-file__fact svg{width:.9rem}:root{--md-status:url('data:image/svg+xml;charset=utf-8,');--md-status--new:url('data:image/svg+xml;charset=utf-8,');--md-status--deprecated:url('data:image/svg+xml;charset=utf-8,');--md-status--encrypted:url('data:image/svg+xml;charset=utf-8,')}.md-status:after{background-color:var(--md-default-fg-color--light);content:"";display:inline-block;height:1.125em;-webkit-mask-image:var(--md-status);mask-image:var(--md-status);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:text-bottom;width:1.125em}.md-status:hover:after{background-color:currentcolor}.md-status--new:after{-webkit-mask-image:var(--md-status--new);mask-image:var(--md-status--new)}.md-status--deprecated:after{-webkit-mask-image:var(--md-status--deprecated);mask-image:var(--md-status--deprecated)}.md-status--encrypted:after{-webkit-mask-image:var(--md-status--encrypted);mask-image:var(--md-status--encrypted)}.md-tabs{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);display:block;line-height:1.3;overflow:auto;width:100%;z-index:3}@media print{.md-tabs{display:none}}@media screen and (max-width:76.234375em){.md-tabs{display:none}}.md-tabs[hidden]{pointer-events:none}[dir=ltr] .md-tabs__list{margin-left:.2rem}[dir=rtl] .md-tabs__list{margin-right:.2rem}.md-tabs__list{contain:content;display:flex;list-style:none;margin:0;overflow:auto;padding:0;scrollbar-width:none;white-space:nowrap}.md-tabs__list::-webkit-scrollbar{display:none}.md-tabs__item{height:2.4rem;padding-left:.6rem;padding-right:.6rem}.md-tabs__item--active .md-tabs__link{color:inherit;opacity:1}.md-tabs__link{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:flex;font-size:.7rem;margin-top:.8rem;opacity:.7;outline-color:var(--md-accent-fg-color);outline-offset:.2rem;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .25s}.md-tabs__link:focus,.md-tabs__link:hover{color:inherit;opacity:1}[dir=ltr] .md-tabs__link svg{margin-right:.4rem}[dir=rtl] .md-tabs__link svg{margin-left:.4rem}.md-tabs__link svg{fill:currentcolor;height:1.3em}.md-tabs__item:nth-child(2) .md-tabs__link{transition-delay:20ms}.md-tabs__item:nth-child(3) .md-tabs__link{transition-delay:40ms}.md-tabs__item:nth-child(4) .md-tabs__link{transition-delay:60ms}.md-tabs__item:nth-child(5) .md-tabs__link{transition-delay:80ms}.md-tabs__item:nth-child(6) .md-tabs__link{transition-delay:.1s}.md-tabs__item:nth-child(7) .md-tabs__link{transition-delay:.12s}.md-tabs__item:nth-child(8) .md-tabs__link{transition-delay:.14s}.md-tabs__item:nth-child(9) .md-tabs__link{transition-delay:.16s}.md-tabs__item:nth-child(10) .md-tabs__link{transition-delay:.18s}.md-tabs__item:nth-child(11) .md-tabs__link{transition-delay:.2s}.md-tabs__item:nth-child(12) .md-tabs__link{transition-delay:.22s}.md-tabs__item:nth-child(13) .md-tabs__link{transition-delay:.24s}.md-tabs__item:nth-child(14) .md-tabs__link{transition-delay:.26s}.md-tabs__item:nth-child(15) .md-tabs__link{transition-delay:.28s}.md-tabs__item:nth-child(16) .md-tabs__link{transition-delay:.3s}.md-tabs[hidden] .md-tabs__link{opacity:0;transform:translateY(50%);transition:transform 0ms .1s,opacity .1s}:root{--md-tag-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .md-tags:not([hidden]){display:inline-flex;flex-wrap:wrap;gap:.5em;margin-bottom:.75em;margin-top:-.125em}.md-typeset .md-tag{align-items:center;background:var(--md-default-fg-color--lightest);border-radius:2.4rem;display:inline-flex;font-size:.64rem;font-size:min(.8em,.64rem);font-weight:700;gap:.5em;letter-spacing:normal;line-height:1.6;padding:.3125em .78125em}.md-typeset .md-tag[href]{-webkit-tap-highlight-color:transparent;color:inherit;outline:none;transition:color 125ms,background-color 125ms}.md-typeset .md-tag[href]:focus,.md-typeset .md-tag[href]:hover{background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[id]>.md-typeset .md-tag{vertical-align:text-top}.md-typeset .md-tag-icon:before{background-color:var(--md-default-fg-color--lighter);content:"";display:inline-block;height:1.2em;-webkit-mask-image:var(--md-tag-icon);mask-image:var(--md-tag-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color 125ms;vertical-align:text-bottom;width:1.2em}.md-typeset .md-tag-icon[href]:focus:before,.md-typeset .md-tag-icon[href]:hover:before{background-color:var(--md-accent-bg-color)}@keyframes pulse{0%{transform:scale(.95)}75%{transform:scale(1)}to{transform:scale(.95)}}:root{--md-annotation-bg-icon:url('data:image/svg+xml;charset=utf-8,');--md-annotation-icon:url('data:image/svg+xml;charset=utf-8,')}.md-tooltip{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);font-family:var(--md-text-font-family);left:clamp(var(--md-tooltip-0,0rem) + .8rem,var(--md-tooltip-x),100vw + var(--md-tooltip-0,0rem) + .8rem - var(--md-tooltip-width) - 2 * .8rem);max-width:calc(100vw - 1.6rem);opacity:0;position:absolute;top:var(--md-tooltip-y);transform:translateY(-.4rem);transition:transform 0ms .25s,opacity .25s,z-index .25s;width:var(--md-tooltip-width);z-index:0}.md-tooltip--active{opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,z-index 0ms;z-index:2}.md-tooltip--inline{font-weight:700;-webkit-user-select:none;user-select:none;width:auto}.md-tooltip--inline:not(.md-tooltip--active){transform:translateY(.2rem) scale(.9)}.md-tooltip--inline .md-tooltip__inner{font-size:.5rem;padding:.2rem .4rem}[hidden]+.md-tooltip--inline{display:none}.focus-visible>.md-tooltip,.md-tooltip:target{outline:var(--md-accent-fg-color) auto}.md-tooltip__inner{font-size:.64rem;padding:.8rem}.md-tooltip__inner.md-typeset>:first-child{margin-top:0}.md-tooltip__inner.md-typeset>:last-child{margin-bottom:0}.md-annotation{font-style:normal;font-weight:400;outline:none;text-align:initial;vertical-align:text-bottom;white-space:normal}[dir=rtl] .md-annotation{direction:rtl}code .md-annotation{font-family:var(--md-code-font-family);font-size:inherit}.md-annotation:not([hidden]){display:inline-block;line-height:1.25}.md-annotation__index{border-radius:.01px;cursor:pointer;display:inline-block;margin-left:.4ch;margin-right:.4ch;outline:none;overflow:hidden;position:relative;-webkit-user-select:none;user-select:none;vertical-align:text-top;z-index:0}.md-annotation .md-annotation__index{transition:z-index .25s}@media screen{.md-annotation__index{width:2.2ch}[data-md-visible]>.md-annotation__index{animation:pulse 2s infinite}.md-annotation__index:before{background:var(--md-default-bg-color);-webkit-mask-image:var(--md-annotation-bg-icon);mask-image:var(--md-annotation-bg-icon)}.md-annotation__index:after,.md-annotation__index:before{content:"";height:2.2ch;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:-.1ch;width:2.2ch;z-index:-1}.md-annotation__index:after{background-color:var(--md-default-fg-color--lighter);-webkit-mask-image:var(--md-annotation-icon);mask-image:var(--md-annotation-icon);transform:scale(1.0001);transition:background-color .25s,transform .25s}.md-tooltip--active+.md-annotation__index:after{transform:rotate(45deg)}.md-tooltip--active+.md-annotation__index:after,:hover>.md-annotation__index:after{background-color:var(--md-accent-fg-color)}}.md-tooltip--active+.md-annotation__index{animation-play-state:paused;transition-duration:0ms;z-index:2}.md-annotation__index [data-md-annotation-id]{display:inline-block}@media print{.md-annotation__index [data-md-annotation-id]{background:var(--md-default-fg-color--lighter);border-radius:2ch;color:var(--md-default-bg-color);font-weight:700;padding:0 .6ch;white-space:nowrap}.md-annotation__index [data-md-annotation-id]:after{content:attr(data-md-annotation-id)}}.md-typeset .md-annotation-list{counter-reset:xxx;list-style:none}.md-typeset .md-annotation-list li{position:relative}[dir=ltr] .md-typeset .md-annotation-list li:before{left:-2.125em}[dir=rtl] .md-typeset .md-annotation-list li:before{right:-2.125em}.md-typeset .md-annotation-list li:before{background:var(--md-default-fg-color--lighter);border-radius:2ch;color:var(--md-default-bg-color);content:counter(xxx);counter-increment:xxx;font-size:.8875em;font-weight:700;height:2ch;line-height:1.25;min-width:2ch;padding:0 .6ch;position:absolute;text-align:center;top:.25em}:root{--md-tooltip-width:20rem;--md-tooltip-tail:0.3rem}.md-tooltip2{-webkit-backface-visibility:hidden;backface-visibility:hidden;color:var(--md-default-fg-color);font-family:var(--md-text-font-family);opacity:0;pointer-events:none;position:absolute;top:calc(var(--md-tooltip-host-y) + var(--md-tooltip-y));transform:translateY(-.4rem);transform-origin:calc(var(--md-tooltip-host-x) + var(--md-tooltip-x)) 0;transition:transform 0ms .25s,opacity .25s,z-index .25s;width:100%;z-index:0}.md-tooltip2:before{border-left:var(--md-tooltip-tail) solid #0000;border-right:var(--md-tooltip-tail) solid #0000;content:"";display:block;left:clamp(1.5 * .8rem,var(--md-tooltip-host-x) + var(--md-tooltip-x) - var(--md-tooltip-tail),100vw - 2 * var(--md-tooltip-tail) - 1.5 * .8rem);position:absolute;z-index:1}.md-tooltip2--top:before{border-top:var(--md-tooltip-tail) solid var(--md-default-bg-color);bottom:calc(var(--md-tooltip-tail)*-1 + .025rem);filter:drop-shadow(0 1px 0 hsla(0,0%,0%,.05))}.md-tooltip2--bottom:before{border-bottom:var(--md-tooltip-tail) solid var(--md-default-bg-color);filter:drop-shadow(0 -1px 0 hsla(0,0%,0%,.05));top:calc(var(--md-tooltip-tail)*-1 + .025rem)}.md-tooltip2--active{opacity:1;transform:translateY(0);transition:transform .4s cubic-bezier(0,1,.5,1),opacity .25s,z-index 0ms;z-index:2}.md-tooltip2__inner{scrollbar-gutter:stable;background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);left:clamp(.8rem,var(--md-tooltip-host-x) - .8rem,100vw - var(--md-tooltip-width) - .8rem);max-height:40vh;max-width:calc(100vw - 1.6rem);position:relative;scrollbar-width:thin}.md-tooltip2__inner::-webkit-scrollbar{height:.2rem;width:.2rem}.md-tooltip2__inner::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-tooltip2__inner::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}[role=tooltip]>.md-tooltip2__inner{font-size:.5rem;font-weight:700;left:clamp(.8rem,var(--md-tooltip-host-x) + var(--md-tooltip-x) - var(--md-tooltip-width)/2,100vw - var(--md-tooltip-width) - .8rem);max-width:min(100vw - 2 * .8rem,400px);padding:.2rem .4rem;-webkit-user-select:none;user-select:none;width:-moz-fit-content;width:fit-content}.md-tooltip2__inner.md-typeset>:first-child{margin-top:0}.md-tooltip2__inner.md-typeset>:last-child{margin-bottom:0}[dir=ltr] .md-top{margin-left:50%}[dir=rtl] .md-top{margin-right:50%}.md-top{background-color:var(--md-default-bg-color);border-radius:1.6rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color--light);cursor:pointer;display:block;font-size:.7rem;outline:none;padding:.4rem .8rem;position:fixed;top:3.2rem;transform:translate(-50%);transition:color 125ms,background-color 125ms,transform 125ms cubic-bezier(.4,0,.2,1),opacity 125ms;z-index:2}@media print{.md-top{display:none}}[dir=rtl] .md-top{transform:translate(50%)}.md-top[hidden]{opacity:0;pointer-events:none;transform:translate(-50%,.2rem);transition-duration:0ms}[dir=rtl] .md-top[hidden]{transform:translate(50%,.2rem)}.md-top:focus,.md-top:hover{background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-top svg{display:inline-block;vertical-align:-.5em}@keyframes hoverfix{0%{pointer-events:none}}:root{--md-version-icon:url('data:image/svg+xml;charset=utf-8,')}.md-version{flex-shrink:0;font-size:.8rem;height:2.4rem}[dir=ltr] .md-version__current{margin-left:1.4rem;margin-right:.4rem}[dir=rtl] .md-version__current{margin-left:.4rem;margin-right:1.4rem}.md-version__current{color:inherit;cursor:pointer;outline:none;position:relative;top:.05rem}[dir=ltr] .md-version__current:after{margin-left:.4rem}[dir=rtl] .md-version__current:after{margin-right:.4rem}.md-version__current:after{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-image:var(--md-version-icon);mask-image:var(--md-version-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.4rem}.md-version__alias{margin-left:.3rem;opacity:.7}.md-version__list{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);list-style-type:none;margin:.2rem .8rem;max-height:0;opacity:0;overflow:auto;padding:0;position:absolute;scroll-snap-type:y mandatory;top:.15rem;transition:max-height 0ms .5s,opacity .25s .25s;z-index:3}.md-version:focus-within .md-version__list,.md-version:hover .md-version__list{max-height:10rem;opacity:1;transition:max-height 0ms,opacity .25s}@media (hover:none),(pointer:coarse){.md-version:hover .md-version__list{animation:hoverfix .25s forwards}.md-version:focus-within .md-version__list{animation:none}}.md-version__item{line-height:1.8rem}[dir=ltr] .md-version__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-version__link{padding-left:1.2rem;padding-right:.6rem}.md-version__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:color .25s,background-color .25s;white-space:nowrap;width:100%}.md-version__link:focus,.md-version__link:hover{color:var(--md-accent-fg-color)}.md-version__link:focus{background-color:var(--md-default-fg-color--lightest)}:root{--md-admonition-icon--note:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--abstract:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--info:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--tip:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--success:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--question:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--warning:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--failure:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--danger:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--bug:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--quote:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .admonition,.md-typeset details{background-color:var(--md-admonition-bg-color);border:.075rem solid #448aff;border-radius:.2rem;box-shadow:var(--md-shadow-z1);color:var(--md-admonition-fg-color);display:flow-root;font-size:.64rem;margin:1.5625em 0;padding:0 .6rem;page-break-inside:avoid;transition:box-shadow 125ms}@media print{.md-typeset .admonition,.md-typeset details{box-shadow:none}}.md-typeset .admonition:focus-within,.md-typeset details:focus-within{box-shadow:0 0 0 .2rem #448aff1a}.md-typeset .admonition>*,.md-typeset details>*{box-sizing:border-box}.md-typeset .admonition .admonition,.md-typeset .admonition details,.md-typeset details .admonition,.md-typeset details details{margin-bottom:1em;margin-top:1em}.md-typeset .admonition .md-typeset__scrollwrap,.md-typeset details .md-typeset__scrollwrap{margin:1em -.6rem}.md-typeset .admonition .md-typeset__table,.md-typeset details .md-typeset__table{padding:0 .6rem}.md-typeset .admonition>.tabbed-set:only-child,.md-typeset details>.tabbed-set:only-child{margin-top:0}html .md-typeset .admonition>:last-child,html .md-typeset details>:last-child{margin-bottom:.6rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{padding-left:2rem;padding-right:.6rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{padding-left:.6rem;padding-right:2rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{border-left-width:.2rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-right-width:.2rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{border-top-left-radius:.1rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary,[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-top-right-radius:.1rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-top-left-radius:.1rem}.md-typeset .admonition-title,.md-typeset summary{background-color:#448aff1a;border:none;font-weight:700;margin:0 -.6rem;padding-bottom:.4rem;padding-top:.4rem;position:relative}html .md-typeset .admonition-title:last-child,html .md-typeset summary:last-child{margin-bottom:0}[dir=ltr] .md-typeset .admonition-title:before,[dir=ltr] .md-typeset summary:before{left:.6rem}[dir=rtl] .md-typeset .admonition-title:before,[dir=rtl] .md-typeset summary:before{right:.6rem}.md-typeset .admonition-title:before,.md-typeset summary:before{background-color:#448aff;content:"";height:1rem;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;width:1rem}.md-typeset .admonition-title code,.md-typeset summary code{box-shadow:0 0 0 .05rem var(--md-default-fg-color--lightest)}.md-typeset .admonition.note,.md-typeset details.note{border-color:#448aff}.md-typeset .admonition.note:focus-within,.md-typeset details.note:focus-within{box-shadow:0 0 0 .2rem #448aff1a}.md-typeset .note>.admonition-title,.md-typeset .note>summary{background-color:#448aff1a}.md-typeset .note>.admonition-title:before,.md-typeset .note>summary:before{background-color:#448aff;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note)}.md-typeset .note>.admonition-title:after,.md-typeset .note>summary:after{color:#448aff}.md-typeset .admonition.abstract,.md-typeset details.abstract{border-color:#00b0ff}.md-typeset .admonition.abstract:focus-within,.md-typeset details.abstract:focus-within{box-shadow:0 0 0 .2rem #00b0ff1a}.md-typeset .abstract>.admonition-title,.md-typeset .abstract>summary{background-color:#00b0ff1a}.md-typeset .abstract>.admonition-title:before,.md-typeset .abstract>summary:before{background-color:#00b0ff;-webkit-mask-image:var(--md-admonition-icon--abstract);mask-image:var(--md-admonition-icon--abstract)}.md-typeset .abstract>.admonition-title:after,.md-typeset .abstract>summary:after{color:#00b0ff}.md-typeset .admonition.info,.md-typeset details.info{border-color:#00b8d4}.md-typeset .admonition.info:focus-within,.md-typeset details.info:focus-within{box-shadow:0 0 0 .2rem #00b8d41a}.md-typeset .info>.admonition-title,.md-typeset .info>summary{background-color:#00b8d41a}.md-typeset .info>.admonition-title:before,.md-typeset .info>summary:before{background-color:#00b8d4;-webkit-mask-image:var(--md-admonition-icon--info);mask-image:var(--md-admonition-icon--info)}.md-typeset .info>.admonition-title:after,.md-typeset .info>summary:after{color:#00b8d4}.md-typeset .admonition.tip,.md-typeset details.tip{border-color:#00bfa5}.md-typeset .admonition.tip:focus-within,.md-typeset details.tip:focus-within{box-shadow:0 0 0 .2rem #00bfa51a}.md-typeset .tip>.admonition-title,.md-typeset .tip>summary{background-color:#00bfa51a}.md-typeset .tip>.admonition-title:before,.md-typeset .tip>summary:before{background-color:#00bfa5;-webkit-mask-image:var(--md-admonition-icon--tip);mask-image:var(--md-admonition-icon--tip)}.md-typeset .tip>.admonition-title:after,.md-typeset .tip>summary:after{color:#00bfa5}.md-typeset .admonition.success,.md-typeset details.success{border-color:#00c853}.md-typeset .admonition.success:focus-within,.md-typeset details.success:focus-within{box-shadow:0 0 0 .2rem #00c8531a}.md-typeset .success>.admonition-title,.md-typeset .success>summary{background-color:#00c8531a}.md-typeset .success>.admonition-title:before,.md-typeset .success>summary:before{background-color:#00c853;-webkit-mask-image:var(--md-admonition-icon--success);mask-image:var(--md-admonition-icon--success)}.md-typeset .success>.admonition-title:after,.md-typeset .success>summary:after{color:#00c853}.md-typeset .admonition.question,.md-typeset details.question{border-color:#64dd17}.md-typeset .admonition.question:focus-within,.md-typeset details.question:focus-within{box-shadow:0 0 0 .2rem #64dd171a}.md-typeset .question>.admonition-title,.md-typeset .question>summary{background-color:#64dd171a}.md-typeset .question>.admonition-title:before,.md-typeset .question>summary:before{background-color:#64dd17;-webkit-mask-image:var(--md-admonition-icon--question);mask-image:var(--md-admonition-icon--question)}.md-typeset .question>.admonition-title:after,.md-typeset .question>summary:after{color:#64dd17}.md-typeset .admonition.warning,.md-typeset details.warning{border-color:#ff9100}.md-typeset .admonition.warning:focus-within,.md-typeset details.warning:focus-within{box-shadow:0 0 0 .2rem #ff91001a}.md-typeset .warning>.admonition-title,.md-typeset .warning>summary{background-color:#ff91001a}.md-typeset .warning>.admonition-title:before,.md-typeset .warning>summary:before{background-color:#ff9100;-webkit-mask-image:var(--md-admonition-icon--warning);mask-image:var(--md-admonition-icon--warning)}.md-typeset .warning>.admonition-title:after,.md-typeset .warning>summary:after{color:#ff9100}.md-typeset .admonition.failure,.md-typeset details.failure{border-color:#ff5252}.md-typeset .admonition.failure:focus-within,.md-typeset details.failure:focus-within{box-shadow:0 0 0 .2rem #ff52521a}.md-typeset .failure>.admonition-title,.md-typeset .failure>summary{background-color:#ff52521a}.md-typeset .failure>.admonition-title:before,.md-typeset .failure>summary:before{background-color:#ff5252;-webkit-mask-image:var(--md-admonition-icon--failure);mask-image:var(--md-admonition-icon--failure)}.md-typeset .failure>.admonition-title:after,.md-typeset .failure>summary:after{color:#ff5252}.md-typeset .admonition.danger,.md-typeset details.danger{border-color:#ff1744}.md-typeset .admonition.danger:focus-within,.md-typeset details.danger:focus-within{box-shadow:0 0 0 .2rem #ff17441a}.md-typeset .danger>.admonition-title,.md-typeset .danger>summary{background-color:#ff17441a}.md-typeset .danger>.admonition-title:before,.md-typeset .danger>summary:before{background-color:#ff1744;-webkit-mask-image:var(--md-admonition-icon--danger);mask-image:var(--md-admonition-icon--danger)}.md-typeset .danger>.admonition-title:after,.md-typeset .danger>summary:after{color:#ff1744}.md-typeset .admonition.bug,.md-typeset details.bug{border-color:#f50057}.md-typeset .admonition.bug:focus-within,.md-typeset details.bug:focus-within{box-shadow:0 0 0 .2rem #f500571a}.md-typeset .bug>.admonition-title,.md-typeset .bug>summary{background-color:#f500571a}.md-typeset .bug>.admonition-title:before,.md-typeset .bug>summary:before{background-color:#f50057;-webkit-mask-image:var(--md-admonition-icon--bug);mask-image:var(--md-admonition-icon--bug)}.md-typeset .bug>.admonition-title:after,.md-typeset .bug>summary:after{color:#f50057}.md-typeset .admonition.example,.md-typeset details.example{border-color:#7c4dff}.md-typeset .admonition.example:focus-within,.md-typeset details.example:focus-within{box-shadow:0 0 0 .2rem #7c4dff1a}.md-typeset .example>.admonition-title,.md-typeset .example>summary{background-color:#7c4dff1a}.md-typeset .example>.admonition-title:before,.md-typeset .example>summary:before{background-color:#7c4dff;-webkit-mask-image:var(--md-admonition-icon--example);mask-image:var(--md-admonition-icon--example)}.md-typeset .example>.admonition-title:after,.md-typeset .example>summary:after{color:#7c4dff}.md-typeset .admonition.quote,.md-typeset details.quote{border-color:#9e9e9e}.md-typeset .admonition.quote:focus-within,.md-typeset details.quote:focus-within{box-shadow:0 0 0 .2rem #9e9e9e1a}.md-typeset .quote>.admonition-title,.md-typeset .quote>summary{background-color:#9e9e9e1a}.md-typeset .quote>.admonition-title:before,.md-typeset .quote>summary:before{background-color:#9e9e9e;-webkit-mask-image:var(--md-admonition-icon--quote);mask-image:var(--md-admonition-icon--quote)}.md-typeset .quote>.admonition-title:after,.md-typeset .quote>summary:after{color:#9e9e9e}:root{--md-footnotes-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .footnote{color:var(--md-default-fg-color--light);font-size:.64rem}[dir=ltr] .md-typeset .footnote>ol{margin-left:0}[dir=rtl] .md-typeset .footnote>ol{margin-right:0}.md-typeset .footnote>ol>li{transition:color 125ms}.md-typeset .footnote>ol>li:target{color:var(--md-default-fg-color)}.md-typeset .footnote>ol>li:focus-within .footnote-backref{opacity:1;transform:translateX(0);transition:none}.md-typeset .footnote>ol>li:hover .footnote-backref,.md-typeset .footnote>ol>li:target .footnote-backref{opacity:1;transform:translateX(0)}.md-typeset .footnote>ol>li>:first-child{margin-top:0}.md-typeset .footnote-ref{font-size:.75em;font-weight:700}html .md-typeset .footnote-ref{outline-offset:.1rem}.md-typeset [id^="fnref:"]:target>.footnote-ref{outline:auto}.md-typeset .footnote-backref{color:var(--md-typeset-a-color);display:inline-block;font-size:0;opacity:0;transform:translateX(.25rem);transition:color .25s,transform .25s .25s,opacity 125ms .25s;vertical-align:text-bottom}@media print{.md-typeset .footnote-backref{color:var(--md-typeset-a-color);opacity:1;transform:translateX(0)}}[dir=rtl] .md-typeset .footnote-backref{transform:translateX(-.25rem)}.md-typeset .footnote-backref:hover{color:var(--md-accent-fg-color)}.md-typeset .footnote-backref:before{background-color:currentcolor;content:"";display:inline-block;height:.8rem;-webkit-mask-image:var(--md-footnotes-icon);mask-image:var(--md-footnotes-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.8rem}[dir=rtl] .md-typeset .footnote-backref:before svg{transform:scaleX(-1)}[dir=ltr] .md-typeset .headerlink{margin-left:.5rem}[dir=rtl] .md-typeset .headerlink{margin-right:.5rem}.md-typeset .headerlink{color:var(--md-default-fg-color--lighter);display:inline-block;opacity:0;transition:color .25s,opacity 125ms}@media print{.md-typeset .headerlink{display:none}}.md-typeset .headerlink:focus,.md-typeset :hover>.headerlink,.md-typeset :target>.headerlink{opacity:1;transition:color .25s,opacity 125ms}.md-typeset .headerlink:focus,.md-typeset .headerlink:hover,.md-typeset :target>.headerlink{color:var(--md-accent-fg-color)}.md-typeset :target{--md-scroll-margin:3.6rem;--md-scroll-offset:0rem;scroll-margin-top:calc(var(--md-scroll-margin) - var(--md-scroll-offset))}@media screen and (min-width:76.25em){.md-header--lifted~.md-container .md-typeset :target{--md-scroll-margin:6rem}}.md-typeset h1:target,.md-typeset h2:target,.md-typeset h3:target{--md-scroll-offset:0.2rem}.md-typeset h4:target{--md-scroll-offset:0.15rem}.md-typeset div.arithmatex{overflow:auto}@media screen and (max-width:44.984375em){.md-typeset div.arithmatex{margin:0 -.8rem}.md-typeset div.arithmatex>*{width:min-content}}.md-typeset div.arithmatex>*{margin-left:auto!important;margin-right:auto!important;padding:0 .8rem;touch-action:auto}.md-typeset div.arithmatex>* mjx-container{margin:0!important}.md-typeset div.arithmatex mjx-assistive-mml{height:0}.md-typeset del.critic{background-color:var(--md-typeset-del-color)}.md-typeset del.critic,.md-typeset ins.critic{-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset ins.critic{background-color:var(--md-typeset-ins-color)}.md-typeset .critic.comment{-webkit-box-decoration-break:clone;box-decoration-break:clone;color:var(--md-code-hl-comment-color)}.md-typeset .critic.comment:before{content:"/* "}.md-typeset .critic.comment:after{content:" */"}.md-typeset .critic.block{box-shadow:none;display:block;margin:1em 0;overflow:auto;padding-left:.8rem;padding-right:.8rem}.md-typeset .critic.block>:first-child{margin-top:.5em}.md-typeset .critic.block>:last-child{margin-bottom:.5em}:root{--md-details-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset details{display:flow-root;overflow:visible;padding-top:0}.md-typeset details[open]>summary:after{transform:rotate(90deg)}.md-typeset details:not([open]){box-shadow:none;padding-bottom:0}.md-typeset details:not([open])>summary{border-radius:.1rem}[dir=ltr] .md-typeset summary{padding-right:1.8rem}[dir=rtl] .md-typeset summary{padding-left:1.8rem}[dir=ltr] .md-typeset summary{border-top-left-radius:.1rem}[dir=ltr] .md-typeset summary,[dir=rtl] .md-typeset summary{border-top-right-radius:.1rem}[dir=rtl] .md-typeset summary{border-top-left-radius:.1rem}.md-typeset summary{cursor:pointer;display:block;min-height:1rem;overflow:hidden}.md-typeset summary.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset summary:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[dir=ltr] .md-typeset summary:after{right:.4rem}[dir=rtl] .md-typeset summary:after{left:.4rem}.md-typeset summary:after{background-color:currentcolor;content:"";height:1rem;-webkit-mask-image:var(--md-details-icon);mask-image:var(--md-details-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;transform:rotate(0deg);transition:transform .25s;width:1rem}[dir=rtl] .md-typeset summary:after{transform:rotate(180deg)}.md-typeset summary::marker{display:none}.md-typeset summary::-webkit-details-marker{display:none}.md-typeset .emojione,.md-typeset .gemoji,.md-typeset .twemoji{--md-icon-size:1.125em;display:inline-flex;height:var(--md-icon-size);vertical-align:text-top}.md-typeset .emojione svg,.md-typeset .gemoji svg,.md-typeset .twemoji svg{fill:currentcolor;max-height:100%;width:var(--md-icon-size)}.md-typeset .lg,.md-typeset .xl,.md-typeset .xxl,.md-typeset .xxxl{vertical-align:text-bottom}.md-typeset .middle{vertical-align:middle}.md-typeset .lg{--md-icon-size:1.5em}.md-typeset .xl{--md-icon-size:2.25em}.md-typeset .xxl{--md-icon-size:3em}.md-typeset .xxxl{--md-icon-size:4em}.highlight .o,.highlight .ow{color:var(--md-code-hl-operator-color)}.highlight .p{color:var(--md-code-hl-punctuation-color)}.highlight .cpf,.highlight .l,.highlight .s,.highlight .s1,.highlight .s2,.highlight .sb,.highlight .sc,.highlight .si,.highlight .ss{color:var(--md-code-hl-string-color)}.highlight .cp,.highlight .se,.highlight .sh,.highlight .sr,.highlight .sx{color:var(--md-code-hl-special-color)}.highlight .il,.highlight .m,.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:var(--md-code-hl-number-color)}.highlight .k,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr,.highlight .kt{color:var(--md-code-hl-keyword-color)}.highlight .kc,.highlight .n{color:var(--md-code-hl-name-color)}.highlight .bp,.highlight .nb,.highlight .no{color:var(--md-code-hl-constant-color)}.highlight .nc,.highlight .ne,.highlight .nf,.highlight .nn{color:var(--md-code-hl-function-color)}.highlight .nd,.highlight .ni,.highlight .nl,.highlight .nt{color:var(--md-code-hl-keyword-color)}.highlight .c,.highlight .c1,.highlight .ch,.highlight .cm,.highlight .cs,.highlight .sd{color:var(--md-code-hl-comment-color)}.highlight .na,.highlight .nv,.highlight .vc,.highlight .vg,.highlight .vi{color:var(--md-code-hl-variable-color)}.highlight .ge,.highlight .gh,.highlight .go,.highlight .gp,.highlight .gr,.highlight .gs,.highlight .gt,.highlight .gu{color:var(--md-code-hl-generic-color)}.highlight .gd,.highlight .gi{border-radius:.1rem;margin:0 -.125em;padding:0 .125em}.highlight .gd{background-color:var(--md-typeset-del-color)}.highlight .gi{background-color:var(--md-typeset-ins-color)}.highlight .hll{background-color:var(--md-code-hl-color--light);box-shadow:2px 0 0 0 var(--md-code-hl-color) inset;display:block;margin:0 -1.1764705882em;padding:0 1.1764705882em}.highlight span.filename{background-color:var(--md-code-bg-color);border-bottom:.05rem solid var(--md-default-fg-color--lightest);border-top-left-radius:.1rem;border-top-right-radius:.1rem;display:flow-root;font-size:.85em;font-weight:700;margin-top:1em;padding:.6617647059em 1.1764705882em;position:relative}.highlight span.filename+pre{margin-top:0}.highlight span.filename+pre>code{border-top-left-radius:0;border-top-right-radius:0}.highlight [data-linenos]:before{background-color:var(--md-code-bg-color);box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset;color:var(--md-default-fg-color--light);content:attr(data-linenos);float:left;left:-1.1764705882em;margin-left:-1.1764705882em;margin-right:1.1764705882em;padding-left:1.1764705882em;position:sticky;-webkit-user-select:none;user-select:none;z-index:3}.highlight code a[id]{position:absolute;visibility:hidden}.highlight code[data-md-copying]{display:initial}.highlight code[data-md-copying] .hll{display:contents}.highlight code[data-md-copying] .md-annotation{display:none}.highlighttable{display:flow-root}.highlighttable tbody,.highlighttable td{display:block;padding:0}.highlighttable tr{display:flex}.highlighttable pre{margin:0}.highlighttable th.filename{flex-grow:1;padding:0;text-align:left}.highlighttable th.filename span.filename{margin-top:0}.highlighttable .linenos{background-color:var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-top-left-radius:.1rem;font-size:.85em;padding:.7720588235em 0 .7720588235em 1.1764705882em;-webkit-user-select:none;user-select:none}.highlighttable .linenodiv{box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset;padding-right:.5882352941em}.highlighttable .linenodiv pre{color:var(--md-default-fg-color--light);text-align:right}.highlighttable .code{flex:1;min-width:0}.linenodiv a{color:inherit}.md-typeset .highlighttable{direction:ltr;margin:1em 0}.md-typeset .highlighttable>tbody>tr>.code>div>pre>code{border-bottom-left-radius:0;border-top-left-radius:0}.md-typeset .highlight+.result{border:.05rem solid var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-bottom-right-radius:.1rem;border-top-width:.1rem;margin-top:-1.125em;overflow:visible;padding:0 1em}.md-typeset .highlight+.result:after{clear:both;content:"";display:block}@media screen and (max-width:44.984375em){.md-content__inner>.highlight{margin:1em -.8rem}.md-content__inner>.highlight>.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.code>div>pre>code,.md-content__inner>.highlight>.highlighttable>tbody>tr>.filename span.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.linenos,.md-content__inner>.highlight>pre>code{border-radius:0}.md-content__inner>.highlight+.result{border-left-width:0;border-radius:0;border-right-width:0;margin-left:-.8rem;margin-right:-.8rem}}.md-typeset .keys kbd:after,.md-typeset .keys kbd:before{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;color:inherit;margin:0;position:relative}.md-typeset .keys span{color:var(--md-default-fg-color--light);padding:0 .2em}.md-typeset .keys .key-alt:before,.md-typeset .keys .key-left-alt:before,.md-typeset .keys .key-right-alt:before{content:"⎇";padding-right:.4em}.md-typeset .keys .key-command:before,.md-typeset .keys .key-left-command:before,.md-typeset .keys .key-right-command:before{content:"⌘";padding-right:.4em}.md-typeset .keys .key-control:before,.md-typeset .keys .key-left-control:before,.md-typeset .keys .key-right-control:before{content:"⌃";padding-right:.4em}.md-typeset .keys .key-left-meta:before,.md-typeset .keys .key-meta:before,.md-typeset .keys .key-right-meta:before{content:"◆";padding-right:.4em}.md-typeset .keys .key-left-option:before,.md-typeset .keys .key-option:before,.md-typeset .keys .key-right-option:before{content:"⌥";padding-right:.4em}.md-typeset .keys .key-left-shift:before,.md-typeset .keys .key-right-shift:before,.md-typeset .keys .key-shift:before{content:"⇧";padding-right:.4em}.md-typeset .keys .key-left-super:before,.md-typeset .keys .key-right-super:before,.md-typeset .keys .key-super:before{content:"❖";padding-right:.4em}.md-typeset .keys .key-left-windows:before,.md-typeset .keys .key-right-windows:before,.md-typeset .keys .key-windows:before{content:"⊞";padding-right:.4em}.md-typeset .keys .key-arrow-down:before{content:"↓";padding-right:.4em}.md-typeset .keys .key-arrow-left:before{content:"←";padding-right:.4em}.md-typeset .keys .key-arrow-right:before{content:"→";padding-right:.4em}.md-typeset .keys .key-arrow-up:before{content:"↑";padding-right:.4em}.md-typeset .keys .key-backspace:before{content:"⌫";padding-right:.4em}.md-typeset .keys .key-backtab:before{content:"⇤";padding-right:.4em}.md-typeset .keys .key-caps-lock:before{content:"⇪";padding-right:.4em}.md-typeset .keys .key-clear:before{content:"⌧";padding-right:.4em}.md-typeset .keys .key-context-menu:before{content:"☰";padding-right:.4em}.md-typeset .keys .key-delete:before{content:"⌦";padding-right:.4em}.md-typeset .keys .key-eject:before{content:"⏏";padding-right:.4em}.md-typeset .keys .key-end:before{content:"⤓";padding-right:.4em}.md-typeset .keys .key-escape:before{content:"⎋";padding-right:.4em}.md-typeset .keys .key-home:before{content:"⤒";padding-right:.4em}.md-typeset .keys .key-insert:before{content:"⎀";padding-right:.4em}.md-typeset .keys .key-page-down:before{content:"⇟";padding-right:.4em}.md-typeset .keys .key-page-up:before{content:"⇞";padding-right:.4em}.md-typeset .keys .key-print-screen:before{content:"⎙";padding-right:.4em}.md-typeset .keys .key-tab:after{content:"⇥";padding-left:.4em}.md-typeset .keys .key-num-enter:after{content:"⌤";padding-left:.4em}.md-typeset .keys .key-enter:after{content:"⏎";padding-left:.4em}:root{--md-tabbed-icon--prev:url('data:image/svg+xml;charset=utf-8,');--md-tabbed-icon--next:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .tabbed-set{border-radius:.1rem;display:flex;flex-flow:column wrap;margin:1em 0;position:relative}.md-typeset .tabbed-set>input{height:0;opacity:0;position:absolute;width:0}.md-typeset .tabbed-set>input:target{--md-scroll-offset:0.625em}.md-typeset .tabbed-set>input.focus-visible~.tabbed-labels:before{background-color:var(--md-accent-fg-color)}.md-typeset .tabbed-labels{-ms-overflow-style:none;box-shadow:0 -.05rem var(--md-default-fg-color--lightest) inset;display:flex;max-width:100%;overflow:auto;scrollbar-width:none}@media print{.md-typeset .tabbed-labels{display:contents}}@media screen{.js .md-typeset .tabbed-labels{position:relative}.js .md-typeset .tabbed-labels:before{background:var(--md-default-fg-color);bottom:0;content:"";display:block;height:2px;left:0;position:absolute;transform:translateX(var(--md-indicator-x));transition:width 225ms,background-color .25s,transform .25s;transition-timing-function:cubic-bezier(.4,0,.2,1);width:var(--md-indicator-width)}}.md-typeset .tabbed-labels::-webkit-scrollbar{display:none}.md-typeset .tabbed-labels>label{border-bottom:.1rem solid #0000;border-radius:.1rem .1rem 0 0;color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;font-size:.64rem;font-weight:700;padding:.78125em 1.25em .625em;scroll-margin-inline-start:1rem;transition:background-color .25s,color .25s;white-space:nowrap;width:auto}@media print{.md-typeset .tabbed-labels>label:first-child{order:1}.md-typeset .tabbed-labels>label:nth-child(2){order:2}.md-typeset .tabbed-labels>label:nth-child(3){order:3}.md-typeset .tabbed-labels>label:nth-child(4){order:4}.md-typeset .tabbed-labels>label:nth-child(5){order:5}.md-typeset .tabbed-labels>label:nth-child(6){order:6}.md-typeset .tabbed-labels>label:nth-child(7){order:7}.md-typeset .tabbed-labels>label:nth-child(8){order:8}.md-typeset .tabbed-labels>label:nth-child(9){order:9}.md-typeset .tabbed-labels>label:nth-child(10){order:10}.md-typeset .tabbed-labels>label:nth-child(11){order:11}.md-typeset .tabbed-labels>label:nth-child(12){order:12}.md-typeset .tabbed-labels>label:nth-child(13){order:13}.md-typeset .tabbed-labels>label:nth-child(14){order:14}.md-typeset .tabbed-labels>label:nth-child(15){order:15}.md-typeset .tabbed-labels>label:nth-child(16){order:16}.md-typeset .tabbed-labels>label:nth-child(17){order:17}.md-typeset .tabbed-labels>label:nth-child(18){order:18}.md-typeset .tabbed-labels>label:nth-child(19){order:19}.md-typeset .tabbed-labels>label:nth-child(20){order:20}}.md-typeset .tabbed-labels>label:hover{color:var(--md-default-fg-color)}.md-typeset .tabbed-labels>label>[href]:first-child{color:inherit}.md-typeset .tabbed-labels--linked>label{padding:0}.md-typeset .tabbed-labels--linked>label>a{display:block;padding:.78125em 1.25em .625em}.md-typeset .tabbed-content{width:100%}@media print{.md-typeset .tabbed-content{display:contents}}.md-typeset .tabbed-block{display:none}@media print{.md-typeset .tabbed-block{display:block}.md-typeset .tabbed-block:first-child{order:1}.md-typeset .tabbed-block:nth-child(2){order:2}.md-typeset .tabbed-block:nth-child(3){order:3}.md-typeset .tabbed-block:nth-child(4){order:4}.md-typeset .tabbed-block:nth-child(5){order:5}.md-typeset .tabbed-block:nth-child(6){order:6}.md-typeset .tabbed-block:nth-child(7){order:7}.md-typeset .tabbed-block:nth-child(8){order:8}.md-typeset .tabbed-block:nth-child(9){order:9}.md-typeset .tabbed-block:nth-child(10){order:10}.md-typeset .tabbed-block:nth-child(11){order:11}.md-typeset .tabbed-block:nth-child(12){order:12}.md-typeset .tabbed-block:nth-child(13){order:13}.md-typeset .tabbed-block:nth-child(14){order:14}.md-typeset .tabbed-block:nth-child(15){order:15}.md-typeset .tabbed-block:nth-child(16){order:16}.md-typeset .tabbed-block:nth-child(17){order:17}.md-typeset .tabbed-block:nth-child(18){order:18}.md-typeset .tabbed-block:nth-child(19){order:19}.md-typeset .tabbed-block:nth-child(20){order:20}}.md-typeset .tabbed-block>.highlight:first-child>pre,.md-typeset .tabbed-block>pre:first-child{margin:0}.md-typeset .tabbed-block>.highlight:first-child>pre>code,.md-typeset .tabbed-block>pre:first-child>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child>.filename{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable{margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.filename span.filename,.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.linenos{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.code>div>pre>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child+.result{margin-top:-.125em}.md-typeset .tabbed-block>.tabbed-set{margin:0}.md-typeset .tabbed-button{align-self:center;border-radius:100%;color:var(--md-default-fg-color--light);cursor:pointer;display:block;height:.9rem;margin-top:.1rem;pointer-events:auto;transition:background-color .25s;width:.9rem}.md-typeset .tabbed-button:hover{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-typeset .tabbed-button:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-tabbed-icon--prev);mask-image:var(--md-tabbed-icon--prev);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color .25s,transform .25s;width:100%}.md-typeset .tabbed-control{background:linear-gradient(to right,var(--md-default-bg-color) 60%,#0000);display:flex;height:1.9rem;justify-content:start;pointer-events:none;position:absolute;transition:opacity 125ms;width:1.2rem}[dir=rtl] .md-typeset .tabbed-control{transform:rotate(180deg)}.md-typeset .tabbed-control[hidden]{opacity:0}.md-typeset .tabbed-control--next{background:linear-gradient(to left,var(--md-default-bg-color) 60%,#0000);justify-content:end;right:0}.md-typeset .tabbed-control--next .tabbed-button:after{-webkit-mask-image:var(--md-tabbed-icon--next);mask-image:var(--md-tabbed-icon--next)}@media screen and (max-width:44.984375em){[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels{padding-right:.8rem}.md-content__inner>.tabbed-set .tabbed-labels{margin:0 -.8rem;max-width:100vw;scroll-padding-inline-start:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-left:.8rem}.md-content__inner>.tabbed-set .tabbed-labels:after{content:""}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-right:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-left:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-right:-.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{width:2rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-left:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-right:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-left:-.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{width:2rem}}@media screen{.md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){color:var(--md-default-fg-color)}.md-typeset .no-js .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .no-js .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .no-js .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .no-js .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .no-js .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .no-js .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .no-js .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .no-js .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .no-js .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .no-js .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .no-js .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .no-js .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .no-js .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .no-js .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .no-js .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .no-js .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .no-js .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .no-js .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .no-js .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .no-js .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9),.no-js .md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.no-js .md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.no-js .md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.no-js .md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.no-js .md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.no-js .md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.no-js .md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.no-js .md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.no-js .md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.no-js .md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.no-js .md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.no-js .md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.no-js .md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.no-js .md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.no-js .md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.no-js .md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.no-js .md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.no-js .md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.no-js .md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.no-js .md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){border-color:var(--md-default-fg-color)}}.md-typeset .tabbed-set>input:first-child.focus-visible~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10).focus-visible~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11).focus-visible~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12).focus-visible~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13).focus-visible~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14).focus-visible~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15).focus-visible~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16).focus-visible~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17).focus-visible~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18).focus-visible~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19).focus-visible~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2).focus-visible~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20).focus-visible~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3).focus-visible~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4).focus-visible~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5).focus-visible~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6).focus-visible~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7).focus-visible~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8).focus-visible~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9).focus-visible~.tabbed-labels>:nth-child(9){color:var(--md-accent-fg-color)}.md-typeset .tabbed-set>input:first-child:checked~.tabbed-content>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-content>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-content>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-content>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-content>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-content>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-content>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-content>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-content>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-content>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-content>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-content>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-content>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-content>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-content>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-content>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-content>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-content>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-content>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-content>:nth-child(9){display:block}:root{--md-tasklist-icon:url('data:image/svg+xml;charset=utf-8,');--md-tasklist-icon--checked:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .task-list-item{list-style-type:none;position:relative}[dir=ltr] .md-typeset .task-list-item [type=checkbox]{left:-2em}[dir=rtl] .md-typeset .task-list-item [type=checkbox]{right:-2em}.md-typeset .task-list-item [type=checkbox]{position:absolute;top:.45em}.md-typeset .task-list-control [type=checkbox]{opacity:0;z-index:-1}[dir=ltr] .md-typeset .task-list-indicator:before{left:-1.5em}[dir=rtl] .md-typeset .task-list-indicator:before{right:-1.5em}.md-typeset .task-list-indicator:before{background-color:var(--md-default-fg-color--lightest);content:"";height:1.25em;-webkit-mask-image:var(--md-tasklist-icon);mask-image:var(--md-tasklist-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.15em;width:1.25em}.md-typeset [type=checkbox]:checked+.task-list-indicator:before{background-color:#00e676;-webkit-mask-image:var(--md-tasklist-icon--checked);mask-image:var(--md-tasklist-icon--checked)}:root>*{--md-mermaid-font-family:var(--md-text-font-family),sans-serif;--md-mermaid-edge-color:var(--md-code-fg-color);--md-mermaid-node-bg-color:var(--md-accent-fg-color--transparent);--md-mermaid-node-fg-color:var(--md-accent-fg-color);--md-mermaid-label-bg-color:var(--md-default-bg-color);--md-mermaid-label-fg-color:var(--md-code-fg-color);--md-mermaid-sequence-actor-bg-color:var(--md-mermaid-label-bg-color);--md-mermaid-sequence-actor-fg-color:var(--md-mermaid-label-fg-color);--md-mermaid-sequence-actor-border-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-actor-line-color:var(--md-default-fg-color--lighter);--md-mermaid-sequence-actorman-bg-color:var(--md-mermaid-label-bg-color);--md-mermaid-sequence-actorman-line-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-box-bg-color:var(--md-mermaid-node-bg-color);--md-mermaid-sequence-box-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-label-bg-color:var(--md-mermaid-node-bg-color);--md-mermaid-sequence-label-fg-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-loop-bg-color:var(--md-mermaid-node-bg-color);--md-mermaid-sequence-loop-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-loop-border-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-message-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-message-line-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-note-bg-color:var(--md-mermaid-label-bg-color);--md-mermaid-sequence-note-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-note-border-color:var(--md-mermaid-label-fg-color);--md-mermaid-sequence-number-bg-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-number-fg-color:var(--md-accent-bg-color)}.mermaid{line-height:normal;margin:1em 0}.md-typeset .grid{grid-gap:.4rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));margin:1em 0}.md-typeset .grid.cards>ol,.md-typeset .grid.cards>ul{display:contents}.md-typeset .grid.cards>ol>li,.md-typeset .grid.cards>ul>li,.md-typeset .grid>.card{border:.05rem solid var(--md-default-fg-color--lightest);border-radius:.1rem;display:block;margin:0;padding:.8rem;transition:border .25s,box-shadow .25s}.md-typeset .grid.cards>ol>li:focus-within,.md-typeset .grid.cards>ol>li:hover,.md-typeset .grid.cards>ul>li:focus-within,.md-typeset .grid.cards>ul>li:hover,.md-typeset .grid>.card:focus-within,.md-typeset .grid>.card:hover{border-color:#0000;box-shadow:var(--md-shadow-z2)}.md-typeset .grid.cards>ol>li>hr,.md-typeset .grid.cards>ul>li>hr,.md-typeset .grid>.card>hr{margin-bottom:1em;margin-top:1em}.md-typeset .grid.cards>ol>li>:first-child,.md-typeset .grid.cards>ul>li>:first-child,.md-typeset .grid>.card>:first-child{margin-top:0}.md-typeset .grid.cards>ol>li>:last-child,.md-typeset .grid.cards>ul>li>:last-child,.md-typeset .grid>.card>:last-child{margin-bottom:0}.md-typeset .grid>*,.md-typeset .grid>.admonition,.md-typeset .grid>.highlight>*,.md-typeset .grid>.highlighttable,.md-typeset .grid>.md-typeset details,.md-typeset .grid>details,.md-typeset .grid>pre{margin-bottom:0;margin-top:0}.md-typeset .grid>.highlight>pre:only-child,.md-typeset .grid>.highlight>pre>code,.md-typeset .grid>.highlighttable,.md-typeset .grid>.highlighttable>tbody,.md-typeset .grid>.highlighttable>tbody>tr,.md-typeset .grid>.highlighttable>tbody>tr>.code,.md-typeset .grid>.highlighttable>tbody>tr>.code>.highlight,.md-typeset .grid>.highlighttable>tbody>tr>.code>.highlight>pre,.md-typeset .grid>.highlighttable>tbody>tr>.code>.highlight>pre>code{height:100%}.md-typeset .grid>.tabbed-set{margin-bottom:0;margin-top:0}@media screen and (min-width:45em){[dir=ltr] .md-typeset .inline{float:left}[dir=rtl] .md-typeset .inline{float:right}[dir=ltr] .md-typeset .inline{margin-right:.8rem}[dir=rtl] .md-typeset .inline{margin-left:.8rem}.md-typeset .inline{margin-bottom:.8rem;margin-top:0;width:11.7rem}[dir=ltr] .md-typeset .inline.end{float:right}[dir=rtl] .md-typeset .inline.end{float:left}[dir=ltr] .md-typeset .inline.end{margin-left:.8rem;margin-right:0}[dir=rtl] .md-typeset .inline.end{margin-left:0;margin-right:.8rem}} \ No newline at end of file diff --git a/assets/stylesheets/main.3cba04c6.min.css.map b/assets/stylesheets/main.3cba04c6.min.css.map new file mode 100644 index 0000000..0d8f7b6 --- /dev/null +++ b/assets/stylesheets/main.3cba04c6.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["src/templates/assets/stylesheets/main/components/_meta.scss","../../../../src/templates/assets/stylesheets/main.scss","src/templates/assets/stylesheets/main/_resets.scss","src/templates/assets/stylesheets/main/_colors.scss","src/templates/assets/stylesheets/main/_icons.scss","src/templates/assets/stylesheets/main/_typeset.scss","src/templates/assets/stylesheets/utilities/_break.scss","src/templates/assets/stylesheets/main/components/_author.scss","src/templates/assets/stylesheets/main/components/_banner.scss","src/templates/assets/stylesheets/main/components/_base.scss","src/templates/assets/stylesheets/main/components/_clipboard.scss","src/templates/assets/stylesheets/main/components/_code.scss","src/templates/assets/stylesheets/main/components/_consent.scss","src/templates/assets/stylesheets/main/components/_content.scss","src/templates/assets/stylesheets/main/components/_dialog.scss","src/templates/assets/stylesheets/main/components/_feedback.scss","src/templates/assets/stylesheets/main/components/_footer.scss","src/templates/assets/stylesheets/main/components/_form.scss","src/templates/assets/stylesheets/main/components/_header.scss","node_modules/material-design-color/material-color.scss","src/templates/assets/stylesheets/main/components/_nav.scss","src/templates/assets/stylesheets/main/components/_pagination.scss","src/templates/assets/stylesheets/main/components/_post.scss","src/templates/assets/stylesheets/main/components/_progress.scss","src/templates/assets/stylesheets/main/components/_search.scss","src/templates/assets/stylesheets/main/components/_select.scss","src/templates/assets/stylesheets/main/components/_sidebar.scss","src/templates/assets/stylesheets/main/components/_source.scss","src/templates/assets/stylesheets/main/components/_status.scss","src/templates/assets/stylesheets/main/components/_tabs.scss","src/templates/assets/stylesheets/main/components/_tag.scss","src/templates/assets/stylesheets/main/components/_tooltip.scss","src/templates/assets/stylesheets/main/components/_tooltip2.scss","src/templates/assets/stylesheets/main/components/_top.scss","src/templates/assets/stylesheets/main/components/_version.scss","src/templates/assets/stylesheets/main/extensions/markdown/_admonition.scss","src/templates/assets/stylesheets/main/extensions/markdown/_footnotes.scss","src/templates/assets/stylesheets/main/extensions/markdown/_toc.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_arithmatex.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_critic.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_details.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_emoji.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_highlight.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_keys.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_tabbed.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_tasklist.scss","src/templates/assets/stylesheets/main/integrations/_mermaid.scss","src/templates/assets/stylesheets/main/modifiers/_grid.scss","src/templates/assets/stylesheets/main/modifiers/_inline.scss"],"names":[],"mappings":"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CJ,CmB9qCI,8CAEE,kCAAA,CAAA,0BnB+qCN,CACF,CKj3CI,0Cc0MA,0CACE,YnB0qCJ,CmBvqCI,yDACE,UnByqCN,CmBrqCI,wDACE,YnBuqCN,CmBnqCI,kDACE,YnBqqCN,CmBhqCE,gBAIE,iDAAA,CADA,gCAAA,CAFA,aAAA,CACA,enBoqCJ,CACF,CK96CM,+DcmRF,6CACE,YnB8pCJ,CmB3pCI,4DACE,UnB6pCN,CmBzpCI,2DACE,YnB2pCN,CmBvpCI,qDACE,YnBypCN,CACF,CKt6CI,mCc7JJ,QAgbI,oBnBupCF,CmBjpCI,kCAME,qCAAA,CACA,qDAAA,CANA,eAAA,CACA,KAAA,CAGA,SnBmpCN,CmB9oCM,6CACE,uBnBgpCR,CmB5oCM,gDACE,YnB8oCR,CmBzoCI,2CACE,kBnB4oCN,CmB7oCI,2CACE,mBnB4oCN,CmB7oCI,iCAEE,oBnB2oCN,CmBpoCI,yDACE,kBnBsoCN,CmBvoCI,yDACE,iBnBsoCN,CACF,CK/7CI,sCc7JJ,QA4dI,oBAAA,CACA,oDnBooCF,CmB9nCI,gCAME,qCAAA,CACA,qDAAA,CANA,eAAA,CACA,KAAA,CAGA,SnBgoCN,CmB3nCM,8CACE,uBnB6nCR,CmBznCM,8CACE,YnB2nCR,CmBtnCI,yCACE,kBnBynCN,CmB1nCI,yCACE,mBnBynCN,CmB1nCI,+BAEE,oBnBwnCN,CmBjnCI,uDACE,kBnBmnCN,CmBpnCI,uDACE,iBnBmnCN,CmB9mCE,wBACE,YAAA,CACA,sBAAA,CAEA,SAAA,CACA,6FACE,CAHF,mBnBknCJ,CmB1mCI,sCACE,enB4mCN,CmBvmCE,iFACE,sBAAA,CAEA,SAAA,CACA,4FACE,CAHF,kBnB2mCJ,CmBlmCE,iDACE,enBomCJ,CmBhmCE,6CACE,YnBkmCJ,CmB9lCE,uBACE,aAAA,CACA,enBgmCJ,CmB7lCI,kCACE,enB+lCN,CmB3lCI,qCACE,enB6lCN,CmB1lCM,0CACE,uCnB4lCR,CmBxlCM,6DACE,mBnB0lCR,CmBtlCM,yFAEE,YnBwlCR,CmBnlCI,yCAEE,kBnBulCN,CmBzlCI,yCAEE,mBnBulCN,CmBzlCI,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","file":"main.css"} \ No newline at end of file diff --git a/assets/stylesheets/main.76a95c52.min.css b/assets/stylesheets/main.76a95c52.min.css deleted file mode 100644 index 120bca6..0000000 --- a/assets/stylesheets/main.76a95c52.min.css +++ /dev/null @@ -1 +0,0 @@ -@charset "UTF-8";html{-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;box-sizing:border-box}*,:after,:before{box-sizing:inherit}@media (prefers-reduced-motion){*,:after,:before{transition:none!important}}body{margin:0}a,button,input,label{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}hr{border:0;box-sizing:initial;display:block;height:.05rem;overflow:visible;padding:0}small{font-size:80%}sub,sup{line-height:1em}img{border-style:none}table{border-collapse:initial;border-spacing:0}td,th{font-weight:400;vertical-align:top}button{background:#0000;border:0;font-family:inherit;font-size:inherit;margin:0;padding:0}input{border:0;outline:none}:root{--md-primary-fg-color:#4051b5;--md-primary-fg-color--light:#5d6cc0;--md-primary-fg-color--dark:#303fa1;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3;--md-accent-fg-color:#526cfe;--md-accent-fg-color--transparent:#526cfe1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-scheme=default]{color-scheme:light}[data-md-color-scheme=default] img[src$="#gh-dark-mode-only"],[data-md-color-scheme=default] img[src$="#only-dark"]{display:none}:root,[data-md-color-scheme=default]{--md-hue:225deg;--md-default-fg-color:#000000de;--md-default-fg-color--light:#0000008a;--md-default-fg-color--lighter:#00000052;--md-default-fg-color--lightest:#00000012;--md-default-bg-color:#fff;--md-default-bg-color--light:#ffffffb3;--md-default-bg-color--lighter:#ffffff4d;--md-default-bg-color--lightest:#ffffff1f;--md-code-fg-color:#36464e;--md-code-bg-color:#f5f5f5;--md-code-hl-color:#4287ff;--md-code-hl-color--light:#4287ff1a;--md-code-hl-number-color:#d52a2a;--md-code-hl-special-color:#db1457;--md-code-hl-function-color:#a846b9;--md-code-hl-constant-color:#6e59d9;--md-code-hl-keyword-color:#3f6ec6;--md-code-hl-string-color:#1c7d4d;--md-code-hl-name-color:var(--md-code-fg-color);--md-code-hl-operator-color:var(--md-default-fg-color--light);--md-code-hl-punctuation-color:var(--md-default-fg-color--light);--md-code-hl-comment-color:var(--md-default-fg-color--light);--md-code-hl-generic-color:var(--md-default-fg-color--light);--md-code-hl-variable-color:var(--md-default-fg-color--light);--md-typeset-color:var(--md-default-fg-color);--md-typeset-a-color:var(--md-primary-fg-color);--md-typeset-del-color:#f5503d26;--md-typeset-ins-color:#0bd57026;--md-typeset-kbd-color:#fafafa;--md-typeset-kbd-accent-color:#fff;--md-typeset-kbd-border-color:#b8b8b8;--md-typeset-mark-color:#ffff0080;--md-typeset-table-color:#0000001f;--md-typeset-table-color--light:rgba(0,0,0,.035);--md-admonition-fg-color:var(--md-default-fg-color);--md-admonition-bg-color:var(--md-default-bg-color);--md-warning-fg-color:#000000de;--md-warning-bg-color:#ff9;--md-footer-fg-color:#fff;--md-footer-fg-color--light:#ffffffb3;--md-footer-fg-color--lighter:#ffffff73;--md-footer-bg-color:#000000de;--md-footer-bg-color--dark:#00000052;--md-shadow-z1:0 0.2rem 0.5rem #0000000d,0 0 0.05rem #0000001a;--md-shadow-z2:0 0.2rem 0.5rem #0000001a,0 0 0.05rem #00000040;--md-shadow-z3:0 0.2rem 0.5rem #0003,0 0 0.05rem #00000059}.md-icon svg{fill:currentcolor;display:block;height:1.2rem;width:1.2rem}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--md-text-font-family:var(--md-text-font,_),-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif;--md-code-font-family:var(--md-code-font,_),SFMono-Regular,Consolas,Menlo,monospace}aside,body,input{font-feature-settings:"kern","liga";color:var(--md-typeset-color);font-family:var(--md-text-font-family)}code,kbd,pre{font-feature-settings:"kern";font-family:var(--md-code-font-family)}:root{--md-typeset-table-sort-icon:url('data:image/svg+xml;charset=utf-8,');--md-typeset-table-sort-icon--asc:url('data:image/svg+xml;charset=utf-8,');--md-typeset-table-sort-icon--desc:url('data:image/svg+xml;charset=utf-8,')}.md-typeset{-webkit-print-color-adjust:exact;color-adjust:exact;font-size:.8rem;line-height:1.6}@media print{.md-typeset{font-size:.68rem}}.md-typeset blockquote,.md-typeset dl,.md-typeset figure,.md-typeset ol,.md-typeset pre,.md-typeset ul{margin-bottom:1em;margin-top:1em}.md-typeset h1{color:var(--md-default-fg-color--light);font-size:2em;line-height:1.3;margin:0 0 1.25em}.md-typeset h1,.md-typeset h2{font-weight:300;letter-spacing:-.01em}.md-typeset h2{font-size:1.5625em;line-height:1.4;margin:1.6em 0 .64em}.md-typeset h3{font-size:1.25em;font-weight:400;letter-spacing:-.01em;line-height:1.5;margin:1.6em 0 .8em}.md-typeset h2+h3{margin-top:.8em}.md-typeset h4{font-weight:700;letter-spacing:-.01em;margin:1em 0}.md-typeset h5,.md-typeset h6{color:var(--md-default-fg-color--light);font-size:.8em;font-weight:700;letter-spacing:-.01em;margin:1.25em 0}.md-typeset h5{text-transform:uppercase}.md-typeset hr{border-bottom:.05rem solid var(--md-default-fg-color--lightest);display:flow-root;margin:1.5em 0}.md-typeset a{color:var(--md-typeset-a-color);word-break:break-word}.md-typeset a,.md-typeset a:before{transition:color 125ms}.md-typeset a:focus,.md-typeset a:hover{color:var(--md-accent-fg-color)}.md-typeset a:focus code,.md-typeset a:hover code{background-color:var(--md-accent-fg-color--transparent)}.md-typeset a code{color:currentcolor;transition:background-color 125ms}.md-typeset a.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset code,.md-typeset kbd,.md-typeset pre{color:var(--md-code-fg-color);direction:ltr;font-variant-ligatures:none}@media print{.md-typeset code,.md-typeset kbd,.md-typeset pre{white-space:pre-wrap}}.md-typeset code{background-color:var(--md-code-bg-color);border-radius:.1rem;-webkit-box-decoration-break:clone;box-decoration-break:clone;font-size:.85em;padding:0 .2941176471em;word-break:break-word}.md-typeset code:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-typeset pre{display:flow-root;line-height:1.4;position:relative}.md-typeset pre>code{-webkit-box-decoration-break:slice;box-decoration-break:slice;box-shadow:none;display:block;margin:0;outline-color:var(--md-accent-fg-color);overflow:auto;padding:.7720588235em 1.1764705882em;scrollbar-color:var(--md-default-fg-color--lighter) #0000;scrollbar-width:thin;touch-action:auto;word-break:normal}.md-typeset pre>code:hover{scrollbar-color:var(--md-accent-fg-color) #0000}.md-typeset pre>code::-webkit-scrollbar{height:.2rem;width:.2rem}.md-typeset pre>code::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-typeset pre>code::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}.md-typeset kbd{background-color:var(--md-typeset-kbd-color);border-radius:.1rem;box-shadow:0 .1rem 0 .05rem var(--md-typeset-kbd-border-color),0 .1rem 0 var(--md-typeset-kbd-border-color),0 -.1rem .2rem var(--md-typeset-kbd-accent-color) inset;color:var(--md-default-fg-color);display:inline-block;font-size:.75em;padding:0 .6666666667em;vertical-align:text-top;word-break:break-word}.md-typeset mark{background-color:var(--md-typeset-mark-color);-webkit-box-decoration-break:clone;box-decoration-break:clone;color:inherit;word-break:break-word}.md-typeset abbr{border-bottom:.05rem dotted var(--md-default-fg-color--light);cursor:help;text-decoration:none}.md-typeset small{opacity:.75}[dir=ltr] .md-typeset sub,[dir=ltr] .md-typeset sup{margin-left:.078125em}[dir=rtl] .md-typeset sub,[dir=rtl] .md-typeset sup{margin-right:.078125em}[dir=ltr] .md-typeset blockquote{padding-left:.6rem}[dir=rtl] .md-typeset blockquote{padding-right:.6rem}[dir=ltr] .md-typeset blockquote{border-left:.2rem solid var(--md-default-fg-color--lighter)}[dir=rtl] .md-typeset blockquote{border-right:.2rem solid var(--md-default-fg-color--lighter)}.md-typeset blockquote{color:var(--md-default-fg-color--light);margin-left:0;margin-right:0}.md-typeset ul{list-style-type:disc}[dir=ltr] .md-typeset ol,[dir=ltr] .md-typeset ul{margin-left:.625em}[dir=rtl] .md-typeset ol,[dir=rtl] .md-typeset ul{margin-right:.625em}.md-typeset ol,.md-typeset ul{padding:0}.md-typeset ol:not([hidden]),.md-typeset ul:not([hidden]){display:flow-root}.md-typeset ol ol,.md-typeset ul ol{list-style-type:lower-alpha}.md-typeset ol ol ol,.md-typeset ul ol ol{list-style-type:lower-roman}[dir=ltr] .md-typeset ol li,[dir=ltr] .md-typeset ul li{margin-left:1.25em}[dir=rtl] .md-typeset ol li,[dir=rtl] .md-typeset ul li{margin-right:1.25em}.md-typeset ol li,.md-typeset ul li{margin-bottom:.5em}.md-typeset ol li blockquote,.md-typeset ol li p,.md-typeset ul li blockquote,.md-typeset ul li p{margin:.5em 0}.md-typeset ol li:last-child,.md-typeset ul li:last-child{margin-bottom:0}[dir=ltr] .md-typeset ol li ol,[dir=ltr] .md-typeset ol li ul,[dir=ltr] .md-typeset ul li ol,[dir=ltr] .md-typeset ul li ul{margin-left:.625em}[dir=rtl] .md-typeset ol li ol,[dir=rtl] .md-typeset ol li ul,[dir=rtl] .md-typeset ul li ol,[dir=rtl] .md-typeset ul li ul{margin-right:.625em}.md-typeset ol li ol,.md-typeset ol li ul,.md-typeset ul li ol,.md-typeset ul li ul{margin-bottom:.5em;margin-top:.5em}[dir=ltr] .md-typeset dd{margin-left:1.875em}[dir=rtl] .md-typeset dd{margin-right:1.875em}.md-typeset dd{margin-bottom:1.5em;margin-top:1em}.md-typeset img,.md-typeset svg,.md-typeset video{height:auto;max-width:100%}.md-typeset img[align=left]{margin:1em 1em 1em 0}.md-typeset img[align=right]{margin:1em 0 1em 1em}.md-typeset img[align]:only-child{margin-top:0}.md-typeset figure{display:flow-root;margin:1em auto;max-width:100%;text-align:center;width:-moz-fit-content;width:fit-content}.md-typeset figure img{display:block;margin:0 auto}.md-typeset figcaption{font-style:italic;margin:1em auto;max-width:24rem}.md-typeset iframe{max-width:100%}.md-typeset table:not([class]){background-color:var(--md-default-bg-color);border:.05rem solid var(--md-typeset-table-color);border-radius:.1rem;display:inline-block;font-size:.64rem;max-width:100%;overflow:auto;touch-action:auto}@media print{.md-typeset table:not([class]){display:table}}.md-typeset table:not([class])+*{margin-top:1.5em}.md-typeset table:not([class]) td>:first-child,.md-typeset table:not([class]) th>:first-child{margin-top:0}.md-typeset table:not([class]) td>:last-child,.md-typeset table:not([class]) th>:last-child{margin-bottom:0}.md-typeset table:not([class]) td:not([align]),.md-typeset table:not([class]) th:not([align]){text-align:left}[dir=rtl] .md-typeset table:not([class]) td:not([align]),[dir=rtl] .md-typeset table:not([class]) th:not([align]){text-align:right}.md-typeset table:not([class]) th{font-weight:700;min-width:5rem;padding:.9375em 1.25em;vertical-align:top}.md-typeset table:not([class]) td{border-top:.05rem solid var(--md-typeset-table-color);padding:.9375em 1.25em;vertical-align:top}.md-typeset table:not([class]) tbody tr{transition:background-color 125ms}.md-typeset table:not([class]) tbody tr:hover{background-color:var(--md-typeset-table-color--light);box-shadow:0 .05rem 0 var(--md-default-bg-color) inset}.md-typeset table:not([class]) a{word-break:normal}.md-typeset table th[role=columnheader]{cursor:pointer}[dir=ltr] .md-typeset table th[role=columnheader]:after{margin-left:.5em}[dir=rtl] .md-typeset table th[role=columnheader]:after{margin-right:.5em}.md-typeset table th[role=columnheader]:after{content:"";display:inline-block;height:1.2em;-webkit-mask-image:var(--md-typeset-table-sort-icon);mask-image:var(--md-typeset-table-sort-icon);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color 125ms;vertical-align:text-bottom;width:1.2em}.md-typeset table th[role=columnheader]:hover:after{background-color:var(--md-default-fg-color--lighter)}.md-typeset table th[role=columnheader][aria-sort=ascending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--asc);mask-image:var(--md-typeset-table-sort-icon--asc)}.md-typeset table th[role=columnheader][aria-sort=descending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--desc);mask-image:var(--md-typeset-table-sort-icon--desc)}.md-typeset__scrollwrap{margin:1em -.8rem;overflow-x:auto;touch-action:auto}.md-typeset__table{display:inline-block;margin-bottom:.5em;padding:0 .8rem}@media print{.md-typeset__table{display:block}}html .md-typeset__table table{display:table;margin:0;overflow:hidden;width:100%}@media screen and (max-width:44.984375em){.md-content__inner>pre{margin:1em -.8rem}.md-content__inner>pre code{border-radius:0}}.md-typeset .md-author{border-radius:100%;display:block;flex-shrink:0;height:1.6rem;overflow:hidden;position:relative;transition:color 125ms,transform 125ms;width:1.6rem}.md-typeset .md-author img{display:block}.md-typeset .md-author--more{background:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--lighter);font-size:.6rem;font-weight:700;line-height:1.6rem;text-align:center}.md-typeset .md-author--long{height:2.4rem;width:2.4rem}.md-typeset a.md-author{transform:scale(1)}.md-typeset a.md-author img{border-radius:100%;filter:grayscale(100%) opacity(75%);transition:filter 125ms}.md-typeset a.md-author:focus,.md-typeset a.md-author:hover{transform:scale(1.1);z-index:1}.md-typeset a.md-author:focus img,.md-typeset a.md-author:hover img{filter:grayscale(0)}.md-banner{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color);overflow:auto}@media print{.md-banner{display:none}}.md-banner--warning{background-color:var(--md-warning-bg-color);color:var(--md-warning-fg-color)}.md-banner__inner{font-size:.7rem;margin:.6rem auto;padding:0 .8rem}[dir=ltr] .md-banner__button{float:right}[dir=rtl] .md-banner__button{float:left}.md-banner__button{color:inherit;cursor:pointer;transition:opacity .25s}.no-js .md-banner__button{display:none}.md-banner__button:hover{opacity:.7}html{font-size:125%;height:100%;overflow-x:hidden}@media screen and (min-width:100em){html{font-size:137.5%}}@media screen and (min-width:125em){html{font-size:150%}}body{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;font-size:.5rem;min-height:100%;position:relative;width:100%}@media print{body{display:block}}@media screen and (max-width:59.984375em){body[data-md-scrolllock]{position:fixed}}.md-grid{margin-left:auto;margin-right:auto;max-width:61rem}.md-container{display:flex;flex-direction:column;flex-grow:1}@media print{.md-container{display:block}}.md-main{flex-grow:1}.md-main__inner{display:flex;height:100%;margin-top:1.5rem}.md-ellipsis{overflow:hidden;text-overflow:ellipsis}.md-toggle{display:none}.md-option{height:0;opacity:0;position:absolute;width:0}.md-option:checked+label:not([hidden]){display:block}.md-option.focus-visible+label{outline-color:var(--md-accent-fg-color);outline-style:auto}.md-skip{background-color:var(--md-default-fg-color);border-radius:.1rem;color:var(--md-default-bg-color);font-size:.64rem;margin:.5rem;opacity:0;outline-color:var(--md-accent-fg-color);padding:.3rem .5rem;position:fixed;transform:translateY(.4rem);z-index:-1}.md-skip:focus{opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 175ms 75ms;z-index:10}@page{margin:25mm}:root{--md-clipboard-icon:url('data:image/svg+xml;charset=utf-8,')}.md-clipboard{border-radius:.1rem;color:var(--md-default-fg-color--lightest);cursor:pointer;height:1.5em;outline-color:var(--md-accent-fg-color);outline-offset:.1rem;position:absolute;right:.5em;top:.5em;transition:color .25s;width:1.5em;z-index:1}@media print{.md-clipboard{display:none}}.md-clipboard:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}:hover>.md-clipboard{color:var(--md-default-fg-color--light)}.md-clipboard:focus,.md-clipboard:hover{color:var(--md-accent-fg-color)}.md-clipboard:after{background-color:currentcolor;content:"";display:block;height:1.125em;margin:0 auto;-webkit-mask-image:var(--md-clipboard-icon);mask-image:var(--md-clipboard-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:1.125em}.md-clipboard--inline{cursor:pointer}.md-clipboard--inline code{transition:color .25s,background-color .25s}.md-clipboard--inline:focus code,.md-clipboard--inline:hover code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-typeset .md-code__content{display:grid}@keyframes consent{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes overlay{0%{opacity:0}to{opacity:1}}.md-consent__overlay{animation:overlay .25s both;-webkit-backdrop-filter:blur(.1rem);backdrop-filter:blur(.1rem);background-color:#0000008a;height:100%;opacity:1;position:fixed;top:0;width:100%;z-index:5}.md-consent__inner{animation:consent .5s cubic-bezier(.1,.7,.1,1) both;background-color:var(--md-default-bg-color);border:0;border-radius:.1rem;bottom:0;box-shadow:0 0 .2rem #0000001a,0 .2rem .4rem #0003;max-height:100%;overflow:auto;padding:0;position:fixed;width:100%;z-index:5}.md-consent__form{padding:.8rem}.md-consent__settings{display:none;margin:1em 0}input:checked+.md-consent__settings{display:block}.md-consent__controls{margin-bottom:.8rem}.md-typeset .md-consent__controls .md-button{display:inline}@media screen and (max-width:44.984375em){.md-typeset .md-consent__controls .md-button{display:block;margin-top:.4rem;text-align:center;width:100%}}.md-consent label{cursor:pointer}.md-content{flex-grow:1;min-width:0}.md-content__inner{margin:0 .8rem 1.2rem;padding-top:.6rem}@media screen and (min-width:76.25em){[dir=ltr] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}[dir=ltr] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner,[dir=rtl] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-right:1.2rem}[dir=rtl] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}}.md-content__inner:before{content:"";display:block;height:.4rem}.md-content__inner>:last-child{margin-bottom:0}[dir=ltr] .md-content__button{float:right}[dir=rtl] .md-content__button{float:left}[dir=ltr] .md-content__button{margin-left:.4rem}[dir=rtl] .md-content__button{margin-right:.4rem}.md-content__button{margin:.4rem 0;padding:0}@media print{.md-content__button{display:none}}.md-typeset .md-content__button{color:var(--md-default-fg-color--lighter)}.md-content__button svg{display:inline;vertical-align:top}[dir=rtl] .md-content__button svg{transform:scaleX(-1)}[dir=ltr] .md-dialog{right:.8rem}[dir=rtl] .md-dialog{left:.8rem}.md-dialog{background-color:var(--md-default-fg-color);border-radius:.1rem;bottom:.8rem;box-shadow:var(--md-shadow-z3);min-width:11.1rem;opacity:0;padding:.4rem .6rem;pointer-events:none;position:fixed;transform:translateY(100%);transition:transform 0ms .4s,opacity .4s;z-index:4}@media print{.md-dialog{display:none}}.md-dialog--active{opacity:1;pointer-events:auto;transform:translateY(0);transition:transform .4s cubic-bezier(.075,.85,.175,1),opacity .4s}.md-dialog__inner{color:var(--md-default-bg-color);font-size:.7rem}.md-feedback{margin:2em 0 1em;text-align:center}.md-feedback fieldset{border:none;margin:0;padding:0}.md-feedback__title{font-weight:700;margin:1em auto}.md-feedback__inner{position:relative}.md-feedback__list{display:flex;flex-wrap:wrap;place-content:baseline center;position:relative}.md-feedback__list:hover .md-icon:not(:disabled){color:var(--md-default-fg-color--lighter)}:disabled .md-feedback__list{min-height:1.8rem}.md-feedback__icon{color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;margin:0 .1rem;transition:color 125ms}.md-feedback__icon:not(:disabled).md-icon:hover{color:var(--md-accent-fg-color)}.md-feedback__icon:disabled{color:var(--md-default-fg-color--lightest);pointer-events:none}.md-feedback__note{opacity:0;position:relative;transform:translateY(.4rem);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-feedback__note>*{margin:0 auto;max-width:16rem}:disabled .md-feedback__note{opacity:1;transform:translateY(0)}.md-footer{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color)}@media print{.md-footer{display:none}}.md-footer__inner{justify-content:space-between;overflow:auto;padding:.2rem}.md-footer__inner:not([hidden]){display:flex}.md-footer__link{align-items:end;display:flex;flex-grow:0.01;margin-bottom:.4rem;margin-top:1rem;max-width:100%;outline-color:var(--md-accent-fg-color);overflow:hidden;transition:opacity .25s}.md-footer__link:focus,.md-footer__link:hover{opacity:.7}[dir=rtl] .md-footer__link svg{transform:scaleX(-1)}@media screen and (max-width:44.984375em){.md-footer__link--prev{flex-shrink:0}.md-footer__link--prev .md-footer__title{display:none}}[dir=ltr] .md-footer__link--next{margin-left:auto}[dir=rtl] .md-footer__link--next{margin-right:auto}.md-footer__link--next{text-align:right}[dir=rtl] .md-footer__link--next{text-align:left}.md-footer__title{flex-grow:1;font-size:.9rem;margin-bottom:.7rem;max-width:calc(100% - 2.4rem);padding:0 1rem;white-space:nowrap}.md-footer__button{margin:.2rem;padding:.4rem}.md-footer__direction{font-size:.64rem;opacity:.7}.md-footer-meta{background-color:var(--md-footer-bg-color--dark)}.md-footer-meta__inner{display:flex;flex-wrap:wrap;justify-content:space-between;padding:.2rem}html .md-footer-meta.md-typeset a{color:var(--md-footer-fg-color--light)}html .md-footer-meta.md-typeset a:focus,html .md-footer-meta.md-typeset a:hover{color:var(--md-footer-fg-color)}.md-copyright{color:var(--md-footer-fg-color--lighter);font-size:.64rem;margin:auto .6rem;padding:.4rem 0;width:100%}@media screen and (min-width:45em){.md-copyright{width:auto}}.md-copyright__highlight{color:var(--md-footer-fg-color--light)}.md-social{display:inline-flex;gap:.2rem;margin:0 .4rem;padding:.2rem 0 .6rem}@media screen and (min-width:45em){.md-social{padding:.6rem 0}}.md-social__link{display:inline-block;height:1.6rem;text-align:center;width:1.6rem}.md-social__link:before{line-height:1.9}.md-social__link svg{fill:currentcolor;max-height:.8rem;vertical-align:-25%}.md-typeset .md-button{border:.1rem solid;border-radius:.1rem;color:var(--md-primary-fg-color);cursor:pointer;display:inline-block;font-weight:700;padding:.625em 2em;transition:color 125ms,background-color 125ms,border-color 125ms}.md-typeset .md-button--primary{background-color:var(--md-primary-fg-color);border-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color)}.md-typeset .md-button:focus,.md-typeset .md-button:hover{background-color:var(--md-accent-fg-color);border-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[dir=ltr] .md-typeset .md-input{border-top-left-radius:.1rem}[dir=ltr] .md-typeset .md-input,[dir=rtl] .md-typeset .md-input{border-top-right-radius:.1rem}[dir=rtl] .md-typeset .md-input{border-top-left-radius:.1rem}.md-typeset .md-input{border-bottom:.1rem solid var(--md-default-fg-color--lighter);box-shadow:var(--md-shadow-z1);font-size:.8rem;height:1.8rem;padding:0 .6rem;transition:border .25s,box-shadow .25s}.md-typeset .md-input:focus,.md-typeset .md-input:hover{border-bottom-color:var(--md-accent-fg-color);box-shadow:var(--md-shadow-z2)}.md-typeset .md-input--stretch{width:100%}.md-header{background-color:var(--md-primary-fg-color);box-shadow:0 0 .2rem #0000,0 .2rem .4rem #0000;color:var(--md-primary-bg-color);display:block;left:0;position:sticky;right:0;top:0;z-index:4}@media print{.md-header{display:none}}.md-header[hidden]{transform:translateY(-100%);transition:transform .25s cubic-bezier(.8,0,.6,1),box-shadow .25s}.md-header--shadow{box-shadow:0 0 .2rem #0000001a,0 .2rem .4rem #0003;transition:transform .25s cubic-bezier(.1,.7,.1,1),box-shadow .25s}.md-header__inner{align-items:center;display:flex;padding:0 .2rem}.md-header__button{color:currentcolor;cursor:pointer;margin:.2rem;outline-color:var(--md-accent-fg-color);padding:.4rem;position:relative;transition:opacity .25s;vertical-align:middle;z-index:1}.md-header__button:hover{opacity:.7}.md-header__button:not([hidden]){display:inline-block}.md-header__button:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-header__button.md-logo{margin:.2rem;padding:.4rem}@media screen and (max-width:76.234375em){.md-header__button.md-logo{display:none}}.md-header__button.md-logo img,.md-header__button.md-logo svg{fill:currentcolor;display:block;height:1.2rem;width:auto}@media screen and (min-width:60em){.md-header__button[for=__search]{display:none}}.no-js .md-header__button[for=__search]{display:none}[dir=rtl] .md-header__button[for=__search] svg{transform:scaleX(-1)}@media screen and (min-width:76.25em){.md-header__button[for=__drawer]{display:none}}.md-header__topic{display:flex;max-width:100%;position:absolute;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;white-space:nowrap}.md-header__topic+.md-header__topic{opacity:0;pointer-events:none;transform:translateX(1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__topic+.md-header__topic{transform:translateX(-1.25rem)}.md-header__topic:first-child{font-weight:700}[dir=ltr] .md-header__title{margin-left:1rem;margin-right:.4rem}[dir=rtl] .md-header__title{margin-left:.4rem;margin-right:1rem}.md-header__title{flex-grow:1;font-size:.9rem;height:2.4rem;line-height:2.4rem}.md-header__title--active .md-header__topic{opacity:0;pointer-events:none;transform:translateX(-1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__title--active .md-header__topic{transform:translateX(1.25rem)}.md-header__title--active .md-header__topic+.md-header__topic{opacity:1;pointer-events:auto;transform:translateX(0);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;z-index:0}.md-header__title>.md-header__ellipsis{height:100%;position:relative;width:100%}.md-header__option{display:flex;flex-shrink:0;max-width:100%;transition:max-width 0ms .25s,opacity .25s .25s;white-space:nowrap}[data-md-toggle=search]:checked~.md-header .md-header__option{max-width:0;opacity:0;transition:max-width 0ms,opacity 0ms}.md-header__option>input{bottom:0}.md-header__source{display:none}@media screen and (min-width:60em){[dir=ltr] .md-header__source{margin-left:1rem}[dir=rtl] .md-header__source{margin-right:1rem}.md-header__source{display:block;max-width:11.7rem;width:11.7rem}}@media screen and (min-width:76.25em){[dir=ltr] .md-header__source{margin-left:1.4rem}[dir=rtl] .md-header__source{margin-right:1.4rem}}.md-meta{color:var(--md-default-fg-color--light);font-size:.7rem;line-height:1.3}.md-meta__list{display:inline-flex;flex-wrap:wrap;list-style:none;margin:0;padding:0}.md-meta__item:not(:last-child):after{content:"·";margin-left:.2rem;margin-right:.2rem}.md-meta__link{color:var(--md-typeset-a-color)}.md-meta__link:focus,.md-meta__link:hover{color:var(--md-accent-fg-color)}.md-draft{background-color:#ff1744;border-radius:.125em;color:#fff;display:inline-block;font-weight:700;padding-left:.5714285714em;padding-right:.5714285714em}:root{--md-nav-icon--prev:url('data:image/svg+xml;charset=utf-8,');--md-nav-icon--next:url('data:image/svg+xml;charset=utf-8,');--md-toc-icon:url('data:image/svg+xml;charset=utf-8,')}.md-nav{font-size:.7rem;line-height:1.3}.md-nav__title{color:var(--md-default-fg-color--light);display:block;font-weight:700;overflow:hidden;padding:0 .6rem;text-overflow:ellipsis}.md-nav__title .md-nav__button{display:none}.md-nav__title .md-nav__button img{height:100%;width:auto}.md-nav__title .md-nav__button.md-logo img,.md-nav__title .md-nav__button.md-logo svg{fill:currentcolor;display:block;height:2.4rem;max-width:100%;object-fit:contain;width:auto}.md-nav__list{list-style:none;margin:0;padding:0}.md-nav__link{align-items:flex-start;display:flex;gap:.4rem;margin-top:.625em;scroll-snap-align:start;transition:color 125ms}.md-nav__link--passed{color:var(--md-default-fg-color--light)}.md-nav__item .md-nav__link--active,.md-nav__item .md-nav__link--active code{color:var(--md-typeset-a-color)}.md-nav__link .md-ellipsis{position:relative}[dir=ltr] .md-nav__link .md-icon:last-child{margin-left:auto}[dir=rtl] .md-nav__link .md-icon:last-child{margin-right:auto}.md-nav__link svg{fill:currentcolor;flex-shrink:0;height:1.3em}.md-nav__link[for]:focus,.md-nav__link[for]:hover,.md-nav__link[href]:focus,.md-nav__link[href]:hover{color:var(--md-accent-fg-color);cursor:pointer}.md-nav__link.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-nav--primary .md-nav__link[for=__toc]{display:none}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{background-color:currentcolor;display:block;height:100%;-webkit-mask-image:var(--md-toc-icon);mask-image:var(--md-toc-icon);width:100%}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:none}.md-nav__container>.md-nav__link{margin-top:0}.md-nav__container>.md-nav__link:first-child{flex-grow:1;min-width:0}.md-nav__icon{flex-shrink:0}.md-nav__source{display:none}@media screen and (max-width:76.234375em){.md-nav--primary,.md-nav--primary .md-nav{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;height:100%;left:0;position:absolute;right:0;top:0;z-index:1}.md-nav--primary .md-nav__item,.md-nav--primary .md-nav__title{font-size:.8rem;line-height:1.5}.md-nav--primary .md-nav__title{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);cursor:pointer;height:5.6rem;line-height:2.4rem;padding:3rem .8rem .2rem;position:relative;white-space:nowrap}[dir=ltr] .md-nav--primary .md-nav__title .md-nav__icon{left:.4rem}[dir=rtl] .md-nav--primary .md-nav__title .md-nav__icon{right:.4rem}.md-nav--primary .md-nav__title .md-nav__icon{display:block;height:1.2rem;margin:.2rem;position:absolute;top:.4rem;width:1.2rem}.md-nav--primary .md-nav__title .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--prev);mask-image:var(--md-nav-icon--prev);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}.md-nav--primary .md-nav__title~.md-nav__list{background-color:var(--md-default-bg-color);box-shadow:0 .05rem 0 var(--md-default-fg-color--lightest) inset;overflow-y:auto;scroll-snap-type:y mandatory;touch-action:pan-y}.md-nav--primary .md-nav__title~.md-nav__list>:first-child{border-top:0}.md-nav--primary .md-nav__title[for=__drawer]{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);font-weight:700}.md-nav--primary .md-nav__title .md-logo{display:block;left:.2rem;margin:.2rem;padding:.4rem;position:absolute;right:.2rem;top:.2rem}.md-nav--primary .md-nav__list{flex:1}.md-nav--primary .md-nav__item{border-top:.05rem solid var(--md-default-fg-color--lightest)}.md-nav--primary .md-nav__item--active>.md-nav__link{color:var(--md-typeset-a-color)}.md-nav--primary .md-nav__item--active>.md-nav__link:focus,.md-nav--primary .md-nav__item--active>.md-nav__link:hover{color:var(--md-accent-fg-color)}.md-nav--primary .md-nav__link{margin-top:0;padding:.6rem .8rem}.md-nav--primary .md-nav__link svg{margin-top:.1em}.md-nav--primary .md-nav__link>.md-nav__link{padding:0}[dir=ltr] .md-nav--primary .md-nav__link .md-nav__icon{margin-right:-.2rem}[dir=rtl] .md-nav--primary .md-nav__link .md-nav__icon{margin-left:-.2rem}.md-nav--primary .md-nav__link .md-nav__icon{font-size:1.2rem;height:1.2rem;width:1.2rem}.md-nav--primary .md-nav__link .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-nav--primary .md-nav__icon:after{transform:scale(-1)}.md-nav--primary .md-nav--secondary .md-nav{background-color:initial;position:static}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-left:1.4rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-right:1.4rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-left:2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-right:2rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-left:2.6rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-right:2.6rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-left:3.2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-right:3.2rem}.md-nav--secondary{background-color:initial}.md-nav__toggle~.md-nav{display:flex;opacity:0;transform:translateX(100%);transition:transform .25s cubic-bezier(.8,0,.6,1),opacity 125ms 50ms}[dir=rtl] .md-nav__toggle~.md-nav{transform:translateX(-100%)}.md-nav__toggle:checked~.md-nav{opacity:1;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 125ms 125ms}.md-nav__toggle:checked~.md-nav>.md-nav__list{-webkit-backface-visibility:hidden;backface-visibility:hidden}}@media screen and (max-width:59.984375em){.md-nav--primary .md-nav__link[for=__toc]{display:flex}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--primary .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:flex}.md-nav__source{background-color:var(--md-primary-fg-color--dark);color:var(--md-primary-bg-color);display:block;padding:0 .2rem}}@media screen and (min-width:60em) and (max-width:76.234375em){.md-nav--integrated .md-nav__link[for=__toc]{display:flex}.md-nav--integrated .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--integrated .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--integrated .md-nav__link[for=__toc]~.md-nav{display:flex}}@media screen and (min-width:60em){.md-nav{margin-bottom:-.4rem}.md-nav--secondary .md-nav__title{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);position:sticky;top:0;z-index:1}.md-nav--secondary .md-nav__title[for=__toc]{scroll-snap-align:start}.md-nav--secondary .md-nav__title .md-nav__icon{display:none}[dir=ltr] .md-nav--secondary .md-nav__list{padding-left:.6rem}[dir=rtl] .md-nav--secondary .md-nav__list{padding-right:.6rem}.md-nav--secondary .md-nav__list{padding-bottom:.4rem}[dir=ltr] .md-nav--secondary .md-nav__item>.md-nav__link{margin-right:.4rem}[dir=rtl] .md-nav--secondary .md-nav__item>.md-nav__link{margin-left:.4rem}}@media screen and (min-width:76.25em){.md-nav{margin-bottom:-.4rem;transition:max-height .25s cubic-bezier(.86,0,.07,1)}.md-nav--primary .md-nav__title{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);position:sticky;top:0;z-index:1}.md-nav--primary .md-nav__title[for=__drawer]{scroll-snap-align:start}.md-nav--primary .md-nav__title .md-nav__icon{display:none}[dir=ltr] .md-nav--primary .md-nav__list{padding-left:.6rem}[dir=rtl] .md-nav--primary .md-nav__list{padding-right:.6rem}.md-nav--primary .md-nav__list{padding-bottom:.4rem}[dir=ltr] .md-nav--primary .md-nav__item>.md-nav__link{margin-right:.4rem}[dir=rtl] .md-nav--primary .md-nav__item>.md-nav__link{margin-left:.4rem}.md-nav__toggle~.md-nav{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .25s cubic-bezier(.86,0,.07,1),opacity .25s,visibility 0ms .25s;visibility:collapse}.md-nav__toggle~.md-nav>.md-nav__list{overflow:hidden}.md-nav__toggle.md-toggle--indeterminate~.md-nav,.md-nav__toggle:checked~.md-nav{grid-template-rows:1fr;opacity:1;transition:grid-template-rows .25s cubic-bezier(.86,0,.07,1),opacity .15s .1s,visibility 0ms;visibility:visible}.md-nav__toggle.md-toggle--indeterminate~.md-nav{transition:none}.md-nav__item--nested>.md-nav>.md-nav__title{display:none}.md-nav__item--section{display:block;margin:1.25em 0}.md-nav__item--section:last-child{margin-bottom:0}.md-nav__item--section>.md-nav__link{font-weight:700}.md-nav__item--section>.md-nav__link[for]{color:var(--md-default-fg-color--light)}.md-nav__item--section>.md-nav__link:not(.md-nav__container){pointer-events:none}.md-nav__item--section>.md-nav__link .md-icon,.md-nav__item--section>.md-nav__link>[for]{display:none}[dir=ltr] .md-nav__item--section>.md-nav{margin-left:-.6rem}[dir=rtl] .md-nav__item--section>.md-nav{margin-right:-.6rem}.md-nav__item--section>.md-nav{display:block;opacity:1;visibility:visible}.md-nav__item--section>.md-nav>.md-nav__list>.md-nav__item{padding:0}.md-nav__icon{border-radius:100%;height:.9rem;transition:background-color .25s;width:.9rem}.md-nav__icon:hover{background-color:var(--md-accent-fg-color--transparent)}.md-nav__icon:after{background-color:currentcolor;border-radius:100%;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:transform .25s;vertical-align:-.1rem;width:100%}[dir=rtl] .md-nav__icon:after{transform:rotate(180deg)}.md-nav__item--nested .md-nav__toggle:checked~.md-nav__link .md-nav__icon:after,.md-nav__item--nested .md-toggle--indeterminate~.md-nav__link .md-nav__icon:after{transform:rotate(90deg)}.md-nav--lifted>.md-nav__list>.md-nav__item,.md-nav--lifted>.md-nav__title{display:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active{display:block}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);margin-top:0;position:sticky;top:0;z-index:1}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link:not(.md-nav__container){pointer-events:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active.md-nav__item--section{margin:0}[dir=ltr] .md-nav--lifted>.md-nav__list>.md-nav__item>.md-nav:not(.md-nav--secondary){margin-left:-.6rem}[dir=rtl] .md-nav--lifted>.md-nav__list>.md-nav__item>.md-nav:not(.md-nav--secondary){margin-right:-.6rem}.md-nav--lifted>.md-nav__list>.md-nav__item>[for]{color:var(--md-default-fg-color--light)}.md-nav--lifted .md-nav[data-md-level="1"]{grid-template-rows:1fr;opacity:1;visibility:visible}[dir=ltr] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-left:.05rem solid var(--md-primary-fg-color)}[dir=rtl] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-right:.05rem solid var(--md-primary-fg-color)}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{display:block;margin-bottom:1.25em;opacity:1;visibility:visible}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary>.md-nav__list{overflow:visible;padding-bottom:0}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary>.md-nav__title{display:none}}.md-pagination{font-size:.8rem;font-weight:700;gap:.4rem}.md-pagination,.md-pagination>*{align-items:center;display:flex;justify-content:center}.md-pagination>*{border-radius:.2rem;height:1.8rem;min-width:1.8rem;text-align:center}.md-pagination__current{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light)}.md-pagination__link{transition:color 125ms,background-color 125ms}.md-pagination__link:focus,.md-pagination__link:hover{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-pagination__link:focus svg,.md-pagination__link:hover svg{color:var(--md-accent-fg-color)}.md-pagination__link.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-pagination__link svg{fill:currentcolor;color:var(--md-default-fg-color--lighter);display:block;max-height:100%;width:1.2rem}.md-post__back{border-bottom:.05rem solid var(--md-default-fg-color--lightest);margin-bottom:1.2rem;padding-bottom:1.2rem}@media screen and (max-width:76.234375em){.md-post__back{display:none}}[dir=rtl] .md-post__back svg{transform:scaleX(-1)}.md-post__authors{display:flex;flex-direction:column;gap:.6rem;margin:0 .6rem 1.2rem}.md-post .md-post__meta a{transition:color 125ms}.md-post .md-post__meta a:focus,.md-post .md-post__meta a:hover{color:var(--md-accent-fg-color)}.md-post__title{color:var(--md-default-fg-color--light);font-weight:700}.md-post--excerpt{margin-bottom:3.2rem}.md-post--excerpt .md-post__header{align-items:center;display:flex;gap:.6rem;min-height:1.6rem}.md-post--excerpt .md-post__authors{align-items:center;display:inline-flex;flex-direction:row;gap:.2rem;margin:0;min-height:2.4rem}[dir=ltr] .md-post--excerpt .md-post__meta .md-meta__list{margin-right:.4rem}[dir=rtl] .md-post--excerpt .md-post__meta .md-meta__list{margin-left:.4rem}.md-post--excerpt .md-post__content>:first-child{--md-scroll-margin:6rem;margin-top:0}.md-post>.md-nav--secondary{margin:1em 0}.md-profile{align-items:center;display:flex;font-size:.7rem;gap:.6rem;line-height:1.4;width:100%}.md-profile__description{flex-grow:1}.md-content--post{display:flex}@media screen and (max-width:76.234375em){.md-content--post{flex-flow:column-reverse}}.md-content--post>.md-content__inner{min-width:0}@media screen and (min-width:76.25em){[dir=ltr] .md-content--post>.md-content__inner{margin-left:1.2rem}[dir=rtl] .md-content--post>.md-content__inner{margin-right:1.2rem}}@media screen and (max-width:76.234375em){.md-sidebar.md-sidebar--post{padding:0;position:static;width:100%}.md-sidebar.md-sidebar--post .md-sidebar__scrollwrap{overflow:visible}.md-sidebar.md-sidebar--post .md-sidebar__inner{padding:0}.md-sidebar.md-sidebar--post .md-post__meta{margin-left:.6rem;margin-right:.6rem}.md-sidebar.md-sidebar--post .md-nav__item{border:none;display:inline}.md-sidebar.md-sidebar--post .md-nav__list{display:inline-flex;flex-wrap:wrap;gap:.6rem;padding-bottom:.6rem;padding-top:.6rem}.md-sidebar.md-sidebar--post .md-nav__link{padding:0}.md-sidebar.md-sidebar--post .md-nav{height:auto;margin-bottom:0;position:static}}:root{--md-progress-value:0;--md-progress-delay:400ms}.md-progress{background:var(--md-primary-bg-color);height:.075rem;opacity:min(clamp(0,var(--md-progress-value),1),clamp(0,100 - var(--md-progress-value),1));position:fixed;top:0;transform:scaleX(calc(var(--md-progress-value)*1%));transform-origin:left;transition:transform .5s cubic-bezier(.19,1,.22,1),opacity .25s var(--md-progress-delay);width:100%;z-index:4}:root{--md-search-result-icon:url('data:image/svg+xml;charset=utf-8,')}.md-search{position:relative}@media screen and (min-width:60em){.md-search{padding:.2rem 0}}.no-js .md-search{display:none}.md-search__overlay{opacity:0;z-index:1}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__overlay{left:-2.2rem}[dir=rtl] .md-search__overlay{right:-2.2rem}.md-search__overlay{background-color:var(--md-default-bg-color);border-radius:1rem;height:2rem;overflow:hidden;pointer-events:none;position:absolute;top:-1rem;transform-origin:center;transition:transform .3s .1s,opacity .2s .2s;width:2rem}[data-md-toggle=search]:checked~.md-header .md-search__overlay{opacity:1;transition:transform .4s,opacity .1s}}@media screen and (min-width:60em){[dir=ltr] .md-search__overlay{left:0}[dir=rtl] .md-search__overlay{right:0}.md-search__overlay{background-color:#0000008a;cursor:pointer;height:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0}[data-md-toggle=search]:checked~.md-header .md-search__overlay{height:200vh;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@media screen and (max-width:29.984375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(45)}}@media screen and (min-width:30em) and (max-width:44.984375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(60)}}@media screen and (min-width:45em) and (max-width:59.984375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(75)}}.md-search__inner{-webkit-backface-visibility:hidden;backface-visibility:hidden}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__inner{left:0}[dir=rtl] .md-search__inner{right:0}.md-search__inner{height:0;opacity:0;overflow:hidden;position:fixed;top:0;transform:translateX(5%);transition:width 0ms .3s,height 0ms .3s,transform .15s cubic-bezier(.4,0,.2,1) .15s,opacity .15s .15s;width:0;z-index:2}[dir=rtl] .md-search__inner{transform:translateX(-5%)}[data-md-toggle=search]:checked~.md-header .md-search__inner{height:100%;opacity:1;transform:translateX(0);transition:width 0ms 0ms,height 0ms 0ms,transform .15s cubic-bezier(.1,.7,.1,1) .15s,opacity .15s .15s;width:100%}}@media screen and (min-width:60em){[dir=ltr] .md-search__inner{float:right}[dir=rtl] .md-search__inner{float:left}.md-search__inner{padding:.1rem 0;position:relative;transition:width .25s cubic-bezier(.1,.7,.1,1);width:11.7rem}}@media screen and (min-width:60em) and (max-width:76.234375em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:23.4rem}}@media screen and (min-width:76.25em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:34.4rem}}.md-search__form{background-color:var(--md-default-bg-color);box-shadow:0 0 .6rem #0000;height:2.4rem;position:relative;transition:color .25s,background-color .25s;z-index:2}@media screen and (min-width:60em){.md-search__form{background-color:#00000042;border-radius:.1rem;height:1.8rem}.md-search__form:hover{background-color:#ffffff1f}}[data-md-toggle=search]:checked~.md-header .md-search__form{background-color:var(--md-default-bg-color);border-radius:.1rem .1rem 0 0;box-shadow:0 0 .6rem #00000012;color:var(--md-default-fg-color)}[dir=ltr] .md-search__input{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__input{padding-left:2.2rem;padding-right:3.6rem}.md-search__input{background:#0000;font-size:.9rem;height:100%;position:relative;text-overflow:ellipsis;width:100%;z-index:2}.md-search__input::placeholder{transition:color .25s}.md-search__input::placeholder,.md-search__input~.md-search__icon{color:var(--md-default-fg-color--light)}.md-search__input::-ms-clear{display:none}@media screen and (max-width:59.984375em){.md-search__input{font-size:.9rem;height:2.4rem;width:100%}}@media screen and (min-width:60em){[dir=ltr] .md-search__input{padding-left:2.2rem}[dir=rtl] .md-search__input{padding-right:2.2rem}.md-search__input{color:inherit;font-size:.8rem}.md-search__input::placeholder{color:var(--md-primary-bg-color--light)}.md-search__input+.md-search__icon{color:var(--md-primary-bg-color)}[data-md-toggle=search]:checked~.md-header .md-search__input{text-overflow:clip}[data-md-toggle=search]:checked~.md-header .md-search__input+.md-search__icon{color:var(--md-default-fg-color--light)}[data-md-toggle=search]:checked~.md-header .md-search__input::placeholder{color:#0000}}.md-search__icon{cursor:pointer;display:inline-block;height:1.2rem;transition:color .25s,opacity .25s;width:1.2rem}.md-search__icon:hover{opacity:.7}[dir=ltr] .md-search__icon[for=__search]{left:.5rem}[dir=rtl] .md-search__icon[for=__search]{right:.5rem}.md-search__icon[for=__search]{position:absolute;top:.3rem;z-index:2}[dir=rtl] .md-search__icon[for=__search] svg{transform:scaleX(-1)}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__icon[for=__search]{left:.8rem}[dir=rtl] .md-search__icon[for=__search]{right:.8rem}.md-search__icon[for=__search]{top:.6rem}.md-search__icon[for=__search] svg:first-child{display:none}}@media screen and (min-width:60em){.md-search__icon[for=__search]{pointer-events:none}.md-search__icon[for=__search] svg:last-child{display:none}}[dir=ltr] .md-search__options{right:.5rem}[dir=rtl] .md-search__options{left:.5rem}.md-search__options{pointer-events:none;position:absolute;top:.3rem;z-index:2}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__options{right:.8rem}[dir=rtl] .md-search__options{left:.8rem}.md-search__options{top:.6rem}}[dir=ltr] .md-search__options>.md-icon{margin-left:.2rem}[dir=rtl] .md-search__options>.md-icon{margin-right:.2rem}.md-search__options>.md-icon{color:var(--md-default-fg-color--light);opacity:0;transform:scale(.75);transition:transform .15s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-search__options>.md-icon:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>.md-icon{opacity:1;pointer-events:auto;transform:scale(1)}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>.md-icon:hover{opacity:.7}[dir=ltr] .md-search__suggest{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__suggest{padding-left:2.2rem;padding-right:3.6rem}.md-search__suggest{align-items:center;color:var(--md-default-fg-color--lighter);display:flex;font-size:.9rem;height:100%;opacity:0;position:absolute;top:0;transition:opacity 50ms;white-space:nowrap;width:100%}@media screen and (min-width:60em){[dir=ltr] .md-search__suggest{padding-left:2.2rem}[dir=rtl] .md-search__suggest{padding-right:2.2rem}.md-search__suggest{font-size:.8rem}}[data-md-toggle=search]:checked~.md-header .md-search__suggest{opacity:1;transition:opacity .3s .1s}[dir=ltr] .md-search__output{border-bottom-left-radius:.1rem}[dir=ltr] .md-search__output,[dir=rtl] .md-search__output{border-bottom-right-radius:.1rem}[dir=rtl] .md-search__output{border-bottom-left-radius:.1rem}.md-search__output{overflow:hidden;position:absolute;width:100%;z-index:1}@media screen and (max-width:59.984375em){.md-search__output{bottom:0;top:2.4rem}}@media screen and (min-width:60em){.md-search__output{opacity:0;top:1.9rem;transition:opacity .4s}[data-md-toggle=search]:checked~.md-header .md-search__output{box-shadow:var(--md-shadow-z3);opacity:1}}.md-search__scrollwrap{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);height:100%;overflow-y:auto;touch-action:pan-y}@media (-webkit-max-device-pixel-ratio:1),(max-resolution:1dppx){.md-search__scrollwrap{transform:translateZ(0)}}@media screen and (min-width:60em) and (max-width:76.234375em){.md-search__scrollwrap{width:23.4rem}}@media screen and (min-width:76.25em){.md-search__scrollwrap{width:34.4rem}}@media screen and (min-width:60em){.md-search__scrollwrap{max-height:0;scrollbar-color:var(--md-default-fg-color--lighter) #0000;scrollbar-width:thin}[data-md-toggle=search]:checked~.md-header .md-search__scrollwrap{max-height:75vh}.md-search__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) #0000}.md-search__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-search__scrollwrap::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}}.md-search-result{color:var(--md-default-fg-color);word-break:break-word}.md-search-result__meta{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);font-size:.64rem;line-height:1.8rem;padding:0 .8rem;scroll-snap-align:start}@media screen and (min-width:60em){[dir=ltr] .md-search-result__meta{padding-left:2.2rem}[dir=rtl] .md-search-result__meta{padding-right:2.2rem}}.md-search-result__list{list-style:none;margin:0;padding:0;-webkit-user-select:none;user-select:none}.md-search-result__item{box-shadow:0 -.05rem var(--md-default-fg-color--lightest)}.md-search-result__item:first-child{box-shadow:none}.md-search-result__link{display:block;outline:none;scroll-snap-align:start;transition:background-color .25s}.md-search-result__link:focus,.md-search-result__link:hover{background-color:var(--md-accent-fg-color--transparent)}.md-search-result__link:last-child p:last-child{margin-bottom:.6rem}.md-search-result__more>summary{cursor:pointer;display:block;outline:none;position:sticky;scroll-snap-align:start;top:0;z-index:1}.md-search-result__more>summary::marker{display:none}.md-search-result__more>summary::-webkit-details-marker{display:none}.md-search-result__more>summary>div{color:var(--md-typeset-a-color);font-size:.64rem;padding:.75em .8rem;transition:color .25s,background-color .25s}@media screen and (min-width:60em){[dir=ltr] .md-search-result__more>summary>div{padding-left:2.2rem}[dir=rtl] .md-search-result__more>summary>div{padding-right:2.2rem}}.md-search-result__more>summary:focus>div,.md-search-result__more>summary:hover>div{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-search-result__more[open]>summary{background-color:var(--md-default-bg-color)}.md-search-result__article{overflow:hidden;padding:0 .8rem;position:relative}@media screen and (min-width:60em){[dir=ltr] .md-search-result__article{padding-left:2.2rem}[dir=rtl] .md-search-result__article{padding-right:2.2rem}}[dir=ltr] .md-search-result__icon{left:0}[dir=rtl] .md-search-result__icon{right:0}.md-search-result__icon{color:var(--md-default-fg-color--light);height:1.2rem;margin:.5rem;position:absolute;width:1.2rem}@media screen and (max-width:59.984375em){.md-search-result__icon{display:none}}.md-search-result__icon:after{background-color:currentcolor;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-search-result-icon);mask-image:var(--md-search-result-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-search-result__icon:after{transform:scaleX(-1)}.md-search-result .md-typeset{color:var(--md-default-fg-color--light);font-size:.64rem;line-height:1.6}.md-search-result .md-typeset h1{color:var(--md-default-fg-color);font-size:.8rem;font-weight:400;line-height:1.4;margin:.55rem 0}.md-search-result .md-typeset h1 mark{text-decoration:none}.md-search-result .md-typeset h2{color:var(--md-default-fg-color);font-size:.64rem;font-weight:700;line-height:1.6;margin:.5em 0}.md-search-result .md-typeset h2 mark{text-decoration:none}.md-search-result__terms{color:var(--md-default-fg-color);display:block;font-size:.64rem;font-style:italic;margin:.5em 0}.md-search-result mark{background-color:initial;color:var(--md-accent-fg-color);text-decoration:underline}.md-select{position:relative;z-index:1}.md-select__inner{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);left:50%;margin-top:.2rem;max-height:0;opacity:0;position:absolute;top:calc(100% - .2rem);transform:translate3d(-50%,.3rem,0);transition:transform .25s 375ms,opacity .25s .25s,max-height 0ms .5s}.md-select:focus-within .md-select__inner,.md-select:hover .md-select__inner{max-height:10rem;opacity:1;transform:translate3d(-50%,0,0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms}.md-select__inner:after{border-bottom:.2rem solid #0000;border-bottom-color:var(--md-default-bg-color);border-left:.2rem solid #0000;border-right:.2rem solid #0000;border-top:0;content:"";height:0;left:50%;margin-left:-.2rem;margin-top:-.2rem;position:absolute;top:0;width:0}.md-select__list{border-radius:.1rem;font-size:.8rem;list-style-type:none;margin:0;max-height:inherit;overflow:auto;padding:0}.md-select__item{line-height:1.8rem}[dir=ltr] .md-select__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-select__link{padding-left:1.2rem;padding-right:.6rem}.md-select__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:background-color .25s,color .25s;width:100%}.md-select__link:focus,.md-select__link:hover{color:var(--md-accent-fg-color)}.md-select__link:focus{background-color:var(--md-default-fg-color--lightest)}.md-sidebar{align-self:flex-start;flex-shrink:0;padding:1.2rem 0;position:sticky;top:2.4rem;width:12.1rem}@media print{.md-sidebar{display:none}}@media screen and (max-width:76.234375em){[dir=ltr] .md-sidebar--primary{left:-12.1rem}[dir=rtl] .md-sidebar--primary{right:-12.1rem}.md-sidebar--primary{background-color:var(--md-default-bg-color);display:block;height:100%;position:fixed;top:0;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .25s;width:12.1rem;z-index:5}[data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{box-shadow:var(--md-shadow-z3);transform:translateX(12.1rem)}[dir=rtl] [data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{transform:translateX(-12.1rem)}.md-sidebar--primary .md-sidebar__scrollwrap{bottom:0;left:0;margin:0;overflow:hidden;position:absolute;right:0;scroll-snap-type:none;top:0}}@media screen and (min-width:76.25em){.md-sidebar{height:0}.no-js .md-sidebar{height:auto}.md-header--lifted~.md-container .md-sidebar{top:4.8rem}}.md-sidebar--secondary{display:none;order:2}@media screen and (min-width:60em){.md-sidebar--secondary{height:0}.no-js .md-sidebar--secondary{height:auto}.md-sidebar--secondary:not([hidden]){display:block}.md-sidebar--secondary .md-sidebar__scrollwrap{touch-action:pan-y}}.md-sidebar__scrollwrap{scrollbar-gutter:stable;-webkit-backface-visibility:hidden;backface-visibility:hidden;margin:0 .2rem;overflow-y:auto;scrollbar-color:var(--md-default-fg-color--lighter) #0000;scrollbar-width:thin}.md-sidebar__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-sidebar__scrollwrap:focus-within,.md-sidebar__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) #0000}.md-sidebar__scrollwrap:focus-within::-webkit-scrollbar-thumb,.md-sidebar__scrollwrap:hover::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-sidebar__scrollwrap:focus-within::-webkit-scrollbar-thumb:hover,.md-sidebar__scrollwrap:hover::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}@supports selector(::-webkit-scrollbar){.md-sidebar__scrollwrap{scrollbar-gutter:auto}[dir=ltr] .md-sidebar__inner{padding-right:calc(100% - 11.5rem)}[dir=rtl] .md-sidebar__inner{padding-left:calc(100% - 11.5rem)}}@media screen and (max-width:76.234375em){.md-overlay{background-color:#0000008a;height:0;opacity:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0;z-index:5}[data-md-toggle=drawer]:checked~.md-overlay{height:100%;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@keyframes facts{0%{height:0}to{height:.65rem}}@keyframes fact{0%{opacity:0;transform:translateY(100%)}50%{opacity:0}to{opacity:1;transform:translateY(0)}}:root{--md-source-forks-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-repositories-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-stars-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-version-icon:url('data:image/svg+xml;charset=utf-8,')}.md-source{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:block;font-size:.65rem;line-height:1.2;outline-color:var(--md-accent-fg-color);transition:opacity .25s;white-space:nowrap}.md-source:hover{opacity:.7}.md-source__icon{display:inline-block;height:2.4rem;vertical-align:middle;width:2rem}[dir=ltr] .md-source__icon svg{margin-left:.6rem}[dir=rtl] .md-source__icon svg{margin-right:.6rem}.md-source__icon svg{margin-top:.6rem}[dir=ltr] .md-source__icon+.md-source__repository{padding-left:2rem}[dir=rtl] .md-source__icon+.md-source__repository{padding-right:2rem}[dir=ltr] .md-source__icon+.md-source__repository{margin-left:-2rem}[dir=rtl] .md-source__icon+.md-source__repository{margin-right:-2rem}[dir=ltr] .md-source__repository{margin-left:.6rem}[dir=rtl] .md-source__repository{margin-right:.6rem}.md-source__repository{display:inline-block;max-width:calc(100% - 1.2rem);overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.md-source__facts{display:flex;font-size:.55rem;gap:.4rem;list-style-type:none;margin:.1rem 0 0;opacity:.75;overflow:hidden;padding:0;width:100%}.md-source__repository--active .md-source__facts{animation:facts .25s ease-in}.md-source__fact{overflow:hidden;text-overflow:ellipsis}.md-source__repository--active .md-source__fact{animation:fact .4s ease-out}[dir=ltr] .md-source__fact:before{margin-right:.1rem}[dir=rtl] .md-source__fact:before{margin-left:.1rem}.md-source__fact:before{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:text-top;width:.6rem}.md-source__fact:nth-child(1n+2){flex-shrink:0}.md-source__fact--version:before{-webkit-mask-image:var(--md-source-version-icon);mask-image:var(--md-source-version-icon)}.md-source__fact--stars:before{-webkit-mask-image:var(--md-source-stars-icon);mask-image:var(--md-source-stars-icon)}.md-source__fact--forks:before{-webkit-mask-image:var(--md-source-forks-icon);mask-image:var(--md-source-forks-icon)}.md-source__fact--repositories:before{-webkit-mask-image:var(--md-source-repositories-icon);mask-image:var(--md-source-repositories-icon)}.md-source-file{margin:1em 0}[dir=ltr] .md-source-file__fact{margin-right:.6rem}[dir=rtl] .md-source-file__fact{margin-left:.6rem}.md-source-file__fact{align-items:center;color:var(--md-default-fg-color--light);display:inline-flex;font-size:.68rem;gap:.3rem}.md-source-file__fact .md-icon{flex-shrink:0;margin-bottom:.05rem}[dir=ltr] .md-source-file__fact .md-author{float:left}[dir=rtl] .md-source-file__fact .md-author{float:right}.md-source-file__fact .md-author{margin-right:.2rem}.md-source-file__fact svg{width:.9rem}:root{--md-status:url('data:image/svg+xml;charset=utf-8,');--md-status--new:url('data:image/svg+xml;charset=utf-8,');--md-status--deprecated:url('data:image/svg+xml;charset=utf-8,');--md-status--encrypted:url('data:image/svg+xml;charset=utf-8,')}.md-status:after{background-color:var(--md-default-fg-color--light);content:"";display:inline-block;height:1.125em;-webkit-mask-image:var(--md-status);mask-image:var(--md-status);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:text-bottom;width:1.125em}.md-status:hover:after{background-color:currentcolor}.md-status--new:after{-webkit-mask-image:var(--md-status--new);mask-image:var(--md-status--new)}.md-status--deprecated:after{-webkit-mask-image:var(--md-status--deprecated);mask-image:var(--md-status--deprecated)}.md-status--encrypted:after{-webkit-mask-image:var(--md-status--encrypted);mask-image:var(--md-status--encrypted)}.md-tabs{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);display:block;line-height:1.3;overflow:auto;width:100%;z-index:3}@media print{.md-tabs{display:none}}@media screen and (max-width:76.234375em){.md-tabs{display:none}}.md-tabs[hidden]{pointer-events:none}[dir=ltr] .md-tabs__list{margin-left:.2rem}[dir=rtl] .md-tabs__list{margin-right:.2rem}.md-tabs__list{contain:content;display:flex;list-style:none;margin:0;overflow:auto;padding:0;scrollbar-width:none;white-space:nowrap}.md-tabs__list::-webkit-scrollbar{display:none}.md-tabs__item{height:2.4rem;padding-left:.6rem;padding-right:.6rem}.md-tabs__item--active .md-tabs__link{color:inherit;opacity:1}.md-tabs__link{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:flex;font-size:.7rem;margin-top:.8rem;opacity:.7;outline-color:var(--md-accent-fg-color);outline-offset:.2rem;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .25s}.md-tabs__link:focus,.md-tabs__link:hover{color:inherit;opacity:1}[dir=ltr] .md-tabs__link svg{margin-right:.4rem}[dir=rtl] .md-tabs__link svg{margin-left:.4rem}.md-tabs__link svg{fill:currentcolor;height:1.3em}.md-tabs__item:nth-child(2) .md-tabs__link{transition-delay:20ms}.md-tabs__item:nth-child(3) .md-tabs__link{transition-delay:40ms}.md-tabs__item:nth-child(4) .md-tabs__link{transition-delay:60ms}.md-tabs__item:nth-child(5) .md-tabs__link{transition-delay:80ms}.md-tabs__item:nth-child(6) .md-tabs__link{transition-delay:.1s}.md-tabs__item:nth-child(7) .md-tabs__link{transition-delay:.12s}.md-tabs__item:nth-child(8) .md-tabs__link{transition-delay:.14s}.md-tabs__item:nth-child(9) .md-tabs__link{transition-delay:.16s}.md-tabs__item:nth-child(10) .md-tabs__link{transition-delay:.18s}.md-tabs__item:nth-child(11) .md-tabs__link{transition-delay:.2s}.md-tabs__item:nth-child(12) .md-tabs__link{transition-delay:.22s}.md-tabs__item:nth-child(13) .md-tabs__link{transition-delay:.24s}.md-tabs__item:nth-child(14) .md-tabs__link{transition-delay:.26s}.md-tabs__item:nth-child(15) .md-tabs__link{transition-delay:.28s}.md-tabs__item:nth-child(16) .md-tabs__link{transition-delay:.3s}.md-tabs[hidden] .md-tabs__link{opacity:0;transform:translateY(50%);transition:transform 0ms .1s,opacity .1s}:root{--md-tag-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .md-tags:not([hidden]){display:inline-flex;flex-wrap:wrap;gap:.5em;margin-bottom:.75em;margin-top:-.125em}.md-typeset .md-tag{align-items:center;background:var(--md-default-fg-color--lightest);border-radius:2.4rem;display:inline-flex;font-size:.64rem;font-size:min(.8em,.64rem);font-weight:700;gap:.5em;letter-spacing:normal;line-height:1.6;padding:.3125em .78125em}.md-typeset .md-tag[href]{-webkit-tap-highlight-color:transparent;color:inherit;outline:none;transition:color 125ms,background-color 125ms}.md-typeset .md-tag[href]:focus,.md-typeset .md-tag[href]:hover{background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[id]>.md-typeset .md-tag{vertical-align:text-top}.md-typeset .md-tag-icon:before{background-color:var(--md-default-fg-color--lighter);content:"";display:inline-block;height:1.2em;-webkit-mask-image:var(--md-tag-icon);mask-image:var(--md-tag-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color 125ms;vertical-align:text-bottom;width:1.2em}.md-typeset .md-tag-icon[href]:focus:before,.md-typeset .md-tag-icon[href]:hover:before{background-color:var(--md-accent-bg-color)}@keyframes pulse{0%{transform:scale(.95)}75%{transform:scale(1)}to{transform:scale(.95)}}:root{--md-annotation-bg-icon:url('data:image/svg+xml;charset=utf-8,');--md-annotation-icon:url('data:image/svg+xml;charset=utf-8,')}.md-tooltip{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);font-family:var(--md-text-font-family);left:clamp(var(--md-tooltip-0,0rem) + .8rem,var(--md-tooltip-x),100vw + var(--md-tooltip-0,0rem) + .8rem - var(--md-tooltip-width) - 2 * .8rem);max-width:calc(100vw - 1.6rem);opacity:0;position:absolute;top:var(--md-tooltip-y);transform:translateY(-.4rem);transition:transform 0ms .25s,opacity .25s,z-index .25s;width:var(--md-tooltip-width);z-index:0}.md-tooltip--active{opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,z-index 0ms;z-index:2}.md-tooltip--inline{font-weight:700;-webkit-user-select:none;user-select:none;width:auto}.md-tooltip--inline:not(.md-tooltip--active){transform:translateY(.2rem) scale(.9)}.md-tooltip--inline .md-tooltip__inner{font-size:.5rem;padding:.2rem .4rem}[hidden]+.md-tooltip--inline{display:none}.focus-visible>.md-tooltip,.md-tooltip:target{outline:var(--md-accent-fg-color) auto}.md-tooltip__inner{font-size:.64rem;padding:.8rem}.md-tooltip__inner.md-typeset>:first-child{margin-top:0}.md-tooltip__inner.md-typeset>:last-child{margin-bottom:0}.md-annotation{font-style:normal;font-weight:400;outline:none;text-align:initial;vertical-align:text-bottom;white-space:normal}[dir=rtl] .md-annotation{direction:rtl}code .md-annotation{font-family:var(--md-code-font-family);font-size:inherit}.md-annotation:not([hidden]){display:inline-block;line-height:1.25}.md-annotation__index{border-radius:.01px;cursor:pointer;display:inline-block;margin-left:.4ch;margin-right:.4ch;outline:none;overflow:hidden;position:relative;-webkit-user-select:none;user-select:none;vertical-align:text-top;z-index:0}.md-annotation .md-annotation__index{transition:z-index .25s}@media screen{.md-annotation__index{width:2.2ch}[data-md-visible]>.md-annotation__index{animation:pulse 2s infinite}.md-annotation__index:before{background:var(--md-default-bg-color);-webkit-mask-image:var(--md-annotation-bg-icon);mask-image:var(--md-annotation-bg-icon)}.md-annotation__index:after,.md-annotation__index:before{content:"";height:2.2ch;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:-.1ch;width:2.2ch;z-index:-1}.md-annotation__index:after{background-color:var(--md-default-fg-color--lighter);-webkit-mask-image:var(--md-annotation-icon);mask-image:var(--md-annotation-icon);transform:scale(1.0001);transition:background-color .25s,transform .25s}.md-tooltip--active+.md-annotation__index:after{transform:rotate(45deg)}.md-tooltip--active+.md-annotation__index:after,:hover>.md-annotation__index:after{background-color:var(--md-accent-fg-color)}}.md-tooltip--active+.md-annotation__index{animation-play-state:paused;transition-duration:0ms;z-index:2}.md-annotation__index [data-md-annotation-id]{display:inline-block}@media print{.md-annotation__index [data-md-annotation-id]{background:var(--md-default-fg-color--lighter);border-radius:2ch;color:var(--md-default-bg-color);font-weight:700;padding:0 .6ch;white-space:nowrap}.md-annotation__index [data-md-annotation-id]:after{content:attr(data-md-annotation-id)}}.md-typeset .md-annotation-list{counter-reset:xxx;list-style:none}.md-typeset .md-annotation-list li{position:relative}[dir=ltr] .md-typeset .md-annotation-list li:before{left:-2.125em}[dir=rtl] .md-typeset .md-annotation-list li:before{right:-2.125em}.md-typeset .md-annotation-list li:before{background:var(--md-default-fg-color--lighter);border-radius:2ch;color:var(--md-default-bg-color);content:counter(xxx);counter-increment:xxx;font-size:.8875em;font-weight:700;height:2ch;line-height:1.25;min-width:2ch;padding:0 .6ch;position:absolute;text-align:center;top:.25em}:root{--md-tooltip-width:20rem;--md-tooltip-tail:0.3rem}.md-tooltip2{-webkit-backface-visibility:hidden;backface-visibility:hidden;color:var(--md-default-fg-color);font-family:var(--md-text-font-family);opacity:0;pointer-events:none;position:absolute;top:calc(var(--md-tooltip-host-y) + var(--md-tooltip-y));transform:translateY(-.4rem);transform-origin:calc(var(--md-tooltip-host-x) + var(--md-tooltip-x)) 0;transition:transform 0ms .25s,opacity .25s,z-index .25s;width:100%;z-index:0}.md-tooltip2:before{border-left:var(--md-tooltip-tail) solid #0000;border-right:var(--md-tooltip-tail) solid #0000;content:"";display:block;left:clamp(1.5 * .8rem,var(--md-tooltip-host-x) + var(--md-tooltip-x) - var(--md-tooltip-tail),100vw - 2 * var(--md-tooltip-tail) - 1.5 * .8rem);position:absolute;z-index:1}.md-tooltip2--top:before{border-top:var(--md-tooltip-tail) solid var(--md-default-bg-color);bottom:calc(var(--md-tooltip-tail)*-1 + .025rem);filter:drop-shadow(0 1px 0 hsla(0,0%,0%,.05))}.md-tooltip2--bottom:before{border-bottom:var(--md-tooltip-tail) solid var(--md-default-bg-color);filter:drop-shadow(0 -1px 0 hsla(0,0%,0%,.05));top:calc(var(--md-tooltip-tail)*-1 + .025rem)}.md-tooltip2--active{opacity:1;transform:translateY(0);transition:transform .4s cubic-bezier(0,1,.5,1),opacity .25s,z-index 0ms;z-index:2}.md-tooltip2__inner{scrollbar-gutter:stable;background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);left:clamp(.8rem,var(--md-tooltip-host-x) - .8rem,100vw - var(--md-tooltip-width) - .8rem);max-height:40vh;max-width:calc(100vw - 1.6rem);position:relative;scrollbar-width:thin}.md-tooltip2__inner::-webkit-scrollbar{height:.2rem;width:.2rem}.md-tooltip2__inner::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-tooltip2__inner::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}[role=tooltip]>.md-tooltip2__inner{font-size:.5rem;font-weight:700;left:clamp(.8rem,var(--md-tooltip-host-x) + var(--md-tooltip-x) - var(--md-tooltip-width)/2,100vw - var(--md-tooltip-width) - .8rem);max-width:min(100vw - 2 * .8rem,400px);padding:.2rem .4rem;-webkit-user-select:none;user-select:none;width:-moz-fit-content;width:fit-content}.md-tooltip2__inner.md-typeset>:first-child{margin-top:0}.md-tooltip2__inner.md-typeset>:last-child{margin-bottom:0}[dir=ltr] .md-top{margin-left:50%}[dir=rtl] .md-top{margin-right:50%}.md-top{background-color:var(--md-default-bg-color);border-radius:1.6rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color--light);cursor:pointer;display:block;font-size:.7rem;outline:none;padding:.4rem .8rem;position:fixed;top:3.2rem;transform:translate(-50%);transition:color 125ms,background-color 125ms,transform 125ms cubic-bezier(.4,0,.2,1),opacity 125ms;z-index:2}@media print{.md-top{display:none}}[dir=rtl] .md-top{transform:translate(50%)}.md-top[hidden]{opacity:0;pointer-events:none;transform:translate(-50%,.2rem);transition-duration:0ms}[dir=rtl] .md-top[hidden]{transform:translate(50%,.2rem)}.md-top:focus,.md-top:hover{background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-top svg{display:inline-block;vertical-align:-.5em}@keyframes hoverfix{0%{pointer-events:none}}:root{--md-version-icon:url('data:image/svg+xml;charset=utf-8,')}.md-version{flex-shrink:0;font-size:.8rem;height:2.4rem}[dir=ltr] .md-version__current{margin-left:1.4rem;margin-right:.4rem}[dir=rtl] .md-version__current{margin-left:.4rem;margin-right:1.4rem}.md-version__current{color:inherit;cursor:pointer;outline:none;position:relative;top:.05rem}[dir=ltr] .md-version__current:after{margin-left:.4rem}[dir=rtl] .md-version__current:after{margin-right:.4rem}.md-version__current:after{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-image:var(--md-version-icon);mask-image:var(--md-version-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.4rem}.md-version__alias{margin-left:.3rem;opacity:.7}.md-version__list{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);list-style-type:none;margin:.2rem .8rem;max-height:0;opacity:0;overflow:auto;padding:0;position:absolute;scroll-snap-type:y mandatory;top:.15rem;transition:max-height 0ms .5s,opacity .25s .25s;z-index:3}.md-version:focus-within .md-version__list,.md-version:hover .md-version__list{max-height:10rem;opacity:1;transition:max-height 0ms,opacity .25s}@media (hover:none),(pointer:coarse){.md-version:hover .md-version__list{animation:hoverfix .25s forwards}.md-version:focus-within .md-version__list{animation:none}}.md-version__item{line-height:1.8rem}[dir=ltr] .md-version__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-version__link{padding-left:1.2rem;padding-right:.6rem}.md-version__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:color .25s,background-color .25s;white-space:nowrap;width:100%}.md-version__link:focus,.md-version__link:hover{color:var(--md-accent-fg-color)}.md-version__link:focus{background-color:var(--md-default-fg-color--lightest)}:root{--md-admonition-icon--note:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--abstract:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--info:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--tip:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--success:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--question:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--warning:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--failure:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--danger:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--bug:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--quote:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .admonition,.md-typeset details{background-color:var(--md-admonition-bg-color);border:.075rem solid #448aff;border-radius:.2rem;box-shadow:var(--md-shadow-z1);color:var(--md-admonition-fg-color);display:flow-root;font-size:.64rem;margin:1.5625em 0;padding:0 .6rem;page-break-inside:avoid;transition:box-shadow 125ms}@media print{.md-typeset .admonition,.md-typeset details{box-shadow:none}}.md-typeset .admonition:focus-within,.md-typeset details:focus-within{box-shadow:0 0 0 .2rem #448aff1a}.md-typeset .admonition>*,.md-typeset details>*{box-sizing:border-box}.md-typeset .admonition .admonition,.md-typeset .admonition details,.md-typeset details .admonition,.md-typeset details details{margin-bottom:1em;margin-top:1em}.md-typeset .admonition .md-typeset__scrollwrap,.md-typeset details .md-typeset__scrollwrap{margin:1em -.6rem}.md-typeset .admonition .md-typeset__table,.md-typeset details .md-typeset__table{padding:0 .6rem}.md-typeset .admonition>.tabbed-set:only-child,.md-typeset details>.tabbed-set:only-child{margin-top:0}html .md-typeset .admonition>:last-child,html .md-typeset details>:last-child{margin-bottom:.6rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{padding-left:2rem;padding-right:.6rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{padding-left:.6rem;padding-right:2rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{border-left-width:.2rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-right-width:.2rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{border-top-left-radius:.1rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary,[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-top-right-radius:.1rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-top-left-radius:.1rem}.md-typeset .admonition-title,.md-typeset summary{background-color:#448aff1a;border:none;font-weight:700;margin:0 -.6rem;padding-bottom:.4rem;padding-top:.4rem;position:relative}html .md-typeset .admonition-title:last-child,html .md-typeset summary:last-child{margin-bottom:0}[dir=ltr] .md-typeset .admonition-title:before,[dir=ltr] .md-typeset summary:before{left:.6rem}[dir=rtl] .md-typeset .admonition-title:before,[dir=rtl] .md-typeset summary:before{right:.6rem}.md-typeset .admonition-title:before,.md-typeset summary:before{background-color:#448aff;content:"";height:1rem;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;width:1rem}.md-typeset .admonition-title code,.md-typeset summary code{box-shadow:0 0 0 .05rem var(--md-default-fg-color--lightest)}.md-typeset .admonition.note,.md-typeset details.note{border-color:#448aff}.md-typeset .admonition.note:focus-within,.md-typeset details.note:focus-within{box-shadow:0 0 0 .2rem #448aff1a}.md-typeset .note>.admonition-title,.md-typeset .note>summary{background-color:#448aff1a}.md-typeset .note>.admonition-title:before,.md-typeset .note>summary:before{background-color:#448aff;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note)}.md-typeset .note>.admonition-title:after,.md-typeset .note>summary:after{color:#448aff}.md-typeset .admonition.abstract,.md-typeset details.abstract{border-color:#00b0ff}.md-typeset .admonition.abstract:focus-within,.md-typeset details.abstract:focus-within{box-shadow:0 0 0 .2rem #00b0ff1a}.md-typeset .abstract>.admonition-title,.md-typeset .abstract>summary{background-color:#00b0ff1a}.md-typeset .abstract>.admonition-title:before,.md-typeset .abstract>summary:before{background-color:#00b0ff;-webkit-mask-image:var(--md-admonition-icon--abstract);mask-image:var(--md-admonition-icon--abstract)}.md-typeset .abstract>.admonition-title:after,.md-typeset .abstract>summary:after{color:#00b0ff}.md-typeset .admonition.info,.md-typeset details.info{border-color:#00b8d4}.md-typeset .admonition.info:focus-within,.md-typeset details.info:focus-within{box-shadow:0 0 0 .2rem #00b8d41a}.md-typeset .info>.admonition-title,.md-typeset .info>summary{background-color:#00b8d41a}.md-typeset .info>.admonition-title:before,.md-typeset .info>summary:before{background-color:#00b8d4;-webkit-mask-image:var(--md-admonition-icon--info);mask-image:var(--md-admonition-icon--info)}.md-typeset .info>.admonition-title:after,.md-typeset .info>summary:after{color:#00b8d4}.md-typeset .admonition.tip,.md-typeset details.tip{border-color:#00bfa5}.md-typeset .admonition.tip:focus-within,.md-typeset details.tip:focus-within{box-shadow:0 0 0 .2rem #00bfa51a}.md-typeset .tip>.admonition-title,.md-typeset .tip>summary{background-color:#00bfa51a}.md-typeset .tip>.admonition-title:before,.md-typeset .tip>summary:before{background-color:#00bfa5;-webkit-mask-image:var(--md-admonition-icon--tip);mask-image:var(--md-admonition-icon--tip)}.md-typeset .tip>.admonition-title:after,.md-typeset .tip>summary:after{color:#00bfa5}.md-typeset .admonition.success,.md-typeset details.success{border-color:#00c853}.md-typeset .admonition.success:focus-within,.md-typeset details.success:focus-within{box-shadow:0 0 0 .2rem #00c8531a}.md-typeset .success>.admonition-title,.md-typeset .success>summary{background-color:#00c8531a}.md-typeset .success>.admonition-title:before,.md-typeset .success>summary:before{background-color:#00c853;-webkit-mask-image:var(--md-admonition-icon--success);mask-image:var(--md-admonition-icon--success)}.md-typeset .success>.admonition-title:after,.md-typeset .success>summary:after{color:#00c853}.md-typeset .admonition.question,.md-typeset details.question{border-color:#64dd17}.md-typeset .admonition.question:focus-within,.md-typeset details.question:focus-within{box-shadow:0 0 0 .2rem #64dd171a}.md-typeset .question>.admonition-title,.md-typeset .question>summary{background-color:#64dd171a}.md-typeset .question>.admonition-title:before,.md-typeset .question>summary:before{background-color:#64dd17;-webkit-mask-image:var(--md-admonition-icon--question);mask-image:var(--md-admonition-icon--question)}.md-typeset .question>.admonition-title:after,.md-typeset .question>summary:after{color:#64dd17}.md-typeset .admonition.warning,.md-typeset details.warning{border-color:#ff9100}.md-typeset .admonition.warning:focus-within,.md-typeset details.warning:focus-within{box-shadow:0 0 0 .2rem #ff91001a}.md-typeset .warning>.admonition-title,.md-typeset .warning>summary{background-color:#ff91001a}.md-typeset .warning>.admonition-title:before,.md-typeset .warning>summary:before{background-color:#ff9100;-webkit-mask-image:var(--md-admonition-icon--warning);mask-image:var(--md-admonition-icon--warning)}.md-typeset .warning>.admonition-title:after,.md-typeset .warning>summary:after{color:#ff9100}.md-typeset .admonition.failure,.md-typeset details.failure{border-color:#ff5252}.md-typeset .admonition.failure:focus-within,.md-typeset details.failure:focus-within{box-shadow:0 0 0 .2rem #ff52521a}.md-typeset .failure>.admonition-title,.md-typeset .failure>summary{background-color:#ff52521a}.md-typeset .failure>.admonition-title:before,.md-typeset .failure>summary:before{background-color:#ff5252;-webkit-mask-image:var(--md-admonition-icon--failure);mask-image:var(--md-admonition-icon--failure)}.md-typeset .failure>.admonition-title:after,.md-typeset .failure>summary:after{color:#ff5252}.md-typeset .admonition.danger,.md-typeset details.danger{border-color:#ff1744}.md-typeset .admonition.danger:focus-within,.md-typeset details.danger:focus-within{box-shadow:0 0 0 .2rem #ff17441a}.md-typeset .danger>.admonition-title,.md-typeset .danger>summary{background-color:#ff17441a}.md-typeset .danger>.admonition-title:before,.md-typeset .danger>summary:before{background-color:#ff1744;-webkit-mask-image:var(--md-admonition-icon--danger);mask-image:var(--md-admonition-icon--danger)}.md-typeset .danger>.admonition-title:after,.md-typeset .danger>summary:after{color:#ff1744}.md-typeset .admonition.bug,.md-typeset details.bug{border-color:#f50057}.md-typeset .admonition.bug:focus-within,.md-typeset details.bug:focus-within{box-shadow:0 0 0 .2rem #f500571a}.md-typeset .bug>.admonition-title,.md-typeset .bug>summary{background-color:#f500571a}.md-typeset .bug>.admonition-title:before,.md-typeset .bug>summary:before{background-color:#f50057;-webkit-mask-image:var(--md-admonition-icon--bug);mask-image:var(--md-admonition-icon--bug)}.md-typeset .bug>.admonition-title:after,.md-typeset .bug>summary:after{color:#f50057}.md-typeset .admonition.example,.md-typeset details.example{border-color:#7c4dff}.md-typeset .admonition.example:focus-within,.md-typeset details.example:focus-within{box-shadow:0 0 0 .2rem #7c4dff1a}.md-typeset .example>.admonition-title,.md-typeset .example>summary{background-color:#7c4dff1a}.md-typeset .example>.admonition-title:before,.md-typeset .example>summary:before{background-color:#7c4dff;-webkit-mask-image:var(--md-admonition-icon--example);mask-image:var(--md-admonition-icon--example)}.md-typeset .example>.admonition-title:after,.md-typeset .example>summary:after{color:#7c4dff}.md-typeset .admonition.quote,.md-typeset details.quote{border-color:#9e9e9e}.md-typeset .admonition.quote:focus-within,.md-typeset details.quote:focus-within{box-shadow:0 0 0 .2rem #9e9e9e1a}.md-typeset .quote>.admonition-title,.md-typeset .quote>summary{background-color:#9e9e9e1a}.md-typeset .quote>.admonition-title:before,.md-typeset .quote>summary:before{background-color:#9e9e9e;-webkit-mask-image:var(--md-admonition-icon--quote);mask-image:var(--md-admonition-icon--quote)}.md-typeset .quote>.admonition-title:after,.md-typeset .quote>summary:after{color:#9e9e9e}:root{--md-footnotes-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .footnote{color:var(--md-default-fg-color--light);font-size:.64rem}[dir=ltr] .md-typeset .footnote>ol{margin-left:0}[dir=rtl] .md-typeset .footnote>ol{margin-right:0}.md-typeset .footnote>ol>li{transition:color 125ms}.md-typeset .footnote>ol>li:target{color:var(--md-default-fg-color)}.md-typeset .footnote>ol>li:focus-within .footnote-backref{opacity:1;transform:translateX(0);transition:none}.md-typeset .footnote>ol>li:hover .footnote-backref,.md-typeset .footnote>ol>li:target .footnote-backref{opacity:1;transform:translateX(0)}.md-typeset .footnote>ol>li>:first-child{margin-top:0}.md-typeset .footnote-ref{font-size:.75em;font-weight:700}html .md-typeset .footnote-ref{outline-offset:.1rem}.md-typeset [id^="fnref:"]:target>.footnote-ref{outline:auto}.md-typeset .footnote-backref{color:var(--md-typeset-a-color);display:inline-block;font-size:0;opacity:0;transform:translateX(.25rem);transition:color .25s,transform .25s .25s,opacity 125ms .25s;vertical-align:text-bottom}@media print{.md-typeset .footnote-backref{color:var(--md-typeset-a-color);opacity:1;transform:translateX(0)}}[dir=rtl] .md-typeset .footnote-backref{transform:translateX(-.25rem)}.md-typeset .footnote-backref:hover{color:var(--md-accent-fg-color)}.md-typeset .footnote-backref:before{background-color:currentcolor;content:"";display:inline-block;height:.8rem;-webkit-mask-image:var(--md-footnotes-icon);mask-image:var(--md-footnotes-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.8rem}[dir=rtl] .md-typeset .footnote-backref:before svg{transform:scaleX(-1)}[dir=ltr] .md-typeset .headerlink{margin-left:.5rem}[dir=rtl] .md-typeset .headerlink{margin-right:.5rem}.md-typeset .headerlink{color:var(--md-default-fg-color--lighter);display:inline-block;opacity:0;transition:color .25s,opacity 125ms}@media print{.md-typeset .headerlink{display:none}}.md-typeset .headerlink:focus,.md-typeset :hover>.headerlink,.md-typeset :target>.headerlink{opacity:1;transition:color .25s,opacity 125ms}.md-typeset .headerlink:focus,.md-typeset .headerlink:hover,.md-typeset :target>.headerlink{color:var(--md-accent-fg-color)}.md-typeset :target{--md-scroll-margin:3.6rem;--md-scroll-offset:0rem;scroll-margin-top:calc(var(--md-scroll-margin) - var(--md-scroll-offset))}@media screen and (min-width:76.25em){.md-header--lifted~.md-container .md-typeset :target{--md-scroll-margin:6rem}}.md-typeset h1:target,.md-typeset h2:target,.md-typeset h3:target{--md-scroll-offset:0.2rem}.md-typeset h4:target{--md-scroll-offset:0.15rem}.md-typeset div.arithmatex{overflow:auto}@media screen and (max-width:44.984375em){.md-typeset div.arithmatex{margin:0 -.8rem}.md-typeset div.arithmatex>*{width:min-content}}.md-typeset div.arithmatex>*{margin-left:auto!important;margin-right:auto!important;padding:0 .8rem;touch-action:auto}.md-typeset div.arithmatex>* mjx-container{margin:0!important}.md-typeset div.arithmatex mjx-assistive-mml{height:0}.md-typeset del.critic{background-color:var(--md-typeset-del-color)}.md-typeset del.critic,.md-typeset ins.critic{-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset ins.critic{background-color:var(--md-typeset-ins-color)}.md-typeset .critic.comment{-webkit-box-decoration-break:clone;box-decoration-break:clone;color:var(--md-code-hl-comment-color)}.md-typeset .critic.comment:before{content:"/* "}.md-typeset .critic.comment:after{content:" */"}.md-typeset .critic.block{box-shadow:none;display:block;margin:1em 0;overflow:auto;padding-left:.8rem;padding-right:.8rem}.md-typeset .critic.block>:first-child{margin-top:.5em}.md-typeset .critic.block>:last-child{margin-bottom:.5em}:root{--md-details-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset details{display:flow-root;overflow:visible;padding-top:0}.md-typeset details[open]>summary:after{transform:rotate(90deg)}.md-typeset details:not([open]){box-shadow:none;padding-bottom:0}.md-typeset details:not([open])>summary{border-radius:.1rem}[dir=ltr] .md-typeset summary{padding-right:1.8rem}[dir=rtl] .md-typeset summary{padding-left:1.8rem}[dir=ltr] .md-typeset summary{border-top-left-radius:.1rem}[dir=ltr] .md-typeset summary,[dir=rtl] .md-typeset summary{border-top-right-radius:.1rem}[dir=rtl] .md-typeset summary{border-top-left-radius:.1rem}.md-typeset summary{cursor:pointer;display:block;min-height:1rem;overflow:hidden}.md-typeset summary.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset summary:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[dir=ltr] .md-typeset summary:after{right:.4rem}[dir=rtl] .md-typeset summary:after{left:.4rem}.md-typeset summary:after{background-color:currentcolor;content:"";height:1rem;-webkit-mask-image:var(--md-details-icon);mask-image:var(--md-details-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;transform:rotate(0deg);transition:transform .25s;width:1rem}[dir=rtl] .md-typeset summary:after{transform:rotate(180deg)}.md-typeset summary::marker{display:none}.md-typeset summary::-webkit-details-marker{display:none}.md-typeset .emojione,.md-typeset .gemoji,.md-typeset .twemoji{--md-icon-size:1.125em;display:inline-flex;height:var(--md-icon-size);vertical-align:text-top}.md-typeset .emojione svg,.md-typeset .gemoji svg,.md-typeset .twemoji svg{fill:currentcolor;max-height:100%;width:var(--md-icon-size)}.md-typeset .lg,.md-typeset .xl,.md-typeset .xxl,.md-typeset .xxxl{vertical-align:text-bottom}.md-typeset .middle{vertical-align:middle}.md-typeset .lg{--md-icon-size:1.5em}.md-typeset .xl{--md-icon-size:2.25em}.md-typeset .xxl{--md-icon-size:3em}.md-typeset .xxxl{--md-icon-size:4em}.highlight .o,.highlight .ow{color:var(--md-code-hl-operator-color)}.highlight .p{color:var(--md-code-hl-punctuation-color)}.highlight .cpf,.highlight .l,.highlight .s,.highlight .s1,.highlight .s2,.highlight .sb,.highlight .sc,.highlight .si,.highlight .ss{color:var(--md-code-hl-string-color)}.highlight .cp,.highlight .se,.highlight .sh,.highlight .sr,.highlight .sx{color:var(--md-code-hl-special-color)}.highlight .il,.highlight .m,.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:var(--md-code-hl-number-color)}.highlight .k,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr,.highlight .kt{color:var(--md-code-hl-keyword-color)}.highlight .kc,.highlight .n{color:var(--md-code-hl-name-color)}.highlight .bp,.highlight .nb,.highlight .no{color:var(--md-code-hl-constant-color)}.highlight .nc,.highlight .ne,.highlight .nf,.highlight .nn{color:var(--md-code-hl-function-color)}.highlight .nd,.highlight .ni,.highlight .nl,.highlight .nt{color:var(--md-code-hl-keyword-color)}.highlight .c,.highlight .c1,.highlight .ch,.highlight .cm,.highlight .cs,.highlight .sd{color:var(--md-code-hl-comment-color)}.highlight .na,.highlight .nv,.highlight .vc,.highlight .vg,.highlight .vi{color:var(--md-code-hl-variable-color)}.highlight .ge,.highlight .gh,.highlight .go,.highlight .gp,.highlight .gr,.highlight .gs,.highlight .gt,.highlight .gu{color:var(--md-code-hl-generic-color)}.highlight .gd,.highlight .gi{border-radius:.1rem;margin:0 -.125em;padding:0 .125em}.highlight .gd{background-color:var(--md-typeset-del-color)}.highlight .gi{background-color:var(--md-typeset-ins-color)}.highlight .hll{background-color:var(--md-code-hl-color--light);box-shadow:2px 0 0 0 var(--md-code-hl-color) inset;display:block;margin:0 -1.1764705882em;padding:0 1.1764705882em}.highlight span.filename{background-color:var(--md-code-bg-color);border-bottom:.05rem solid var(--md-default-fg-color--lightest);border-top-left-radius:.1rem;border-top-right-radius:.1rem;display:flow-root;font-size:.85em;font-weight:700;margin-top:1em;padding:.6617647059em 1.1764705882em;position:relative}.highlight span.filename+pre{margin-top:0}.highlight span.filename+pre>code{border-top-left-radius:0;border-top-right-radius:0}.highlight [data-linenos]:before{background-color:var(--md-code-bg-color);box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset;color:var(--md-default-fg-color--light);content:attr(data-linenos);float:left;left:-1.1764705882em;margin-left:-1.1764705882em;margin-right:1.1764705882em;padding-left:1.1764705882em;position:sticky;-webkit-user-select:none;user-select:none;z-index:3}.highlight code a[id]{position:absolute;visibility:hidden}.highlight code[data-md-copying]{display:initial}.highlight code[data-md-copying] .hll{display:contents}.highlight code[data-md-copying] .md-annotation{display:none}.highlighttable{display:flow-root}.highlighttable tbody,.highlighttable td{display:block;padding:0}.highlighttable tr{display:flex}.highlighttable pre{margin:0}.highlighttable th.filename{flex-grow:1;padding:0;text-align:left}.highlighttable th.filename span.filename{margin-top:0}.highlighttable .linenos{background-color:var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-top-left-radius:.1rem;font-size:.85em;padding:.7720588235em 0 .7720588235em 1.1764705882em;-webkit-user-select:none;user-select:none}.highlighttable .linenodiv{box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset;padding-right:.5882352941em}.highlighttable .linenodiv pre{color:var(--md-default-fg-color--light);text-align:right}.highlighttable .code{flex:1;min-width:0}.linenodiv a{color:inherit}.md-typeset .highlighttable{direction:ltr;margin:1em 0}.md-typeset .highlighttable>tbody>tr>.code>div>pre>code{border-bottom-left-radius:0;border-top-left-radius:0}.md-typeset .highlight+.result{border:.05rem solid var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-bottom-right-radius:.1rem;border-top-width:.1rem;margin-top:-1.125em;overflow:visible;padding:0 1em}.md-typeset .highlight+.result:after{clear:both;content:"";display:block}@media screen and (max-width:44.984375em){.md-content__inner>.highlight{margin:1em -.8rem}.md-content__inner>.highlight>.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.code>div>pre>code,.md-content__inner>.highlight>.highlighttable>tbody>tr>.filename span.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.linenos,.md-content__inner>.highlight>pre>code{border-radius:0}.md-content__inner>.highlight+.result{border-left-width:0;border-radius:0;border-right-width:0;margin-left:-.8rem;margin-right:-.8rem}}.md-typeset .keys kbd:after,.md-typeset .keys kbd:before{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;color:inherit;margin:0;position:relative}.md-typeset .keys span{color:var(--md-default-fg-color--light);padding:0 .2em}.md-typeset .keys .key-alt:before,.md-typeset .keys .key-left-alt:before,.md-typeset .keys .key-right-alt:before{content:"⎇";padding-right:.4em}.md-typeset .keys .key-command:before,.md-typeset .keys .key-left-command:before,.md-typeset .keys .key-right-command:before{content:"⌘";padding-right:.4em}.md-typeset .keys .key-control:before,.md-typeset .keys .key-left-control:before,.md-typeset .keys .key-right-control:before{content:"⌃";padding-right:.4em}.md-typeset .keys .key-left-meta:before,.md-typeset .keys .key-meta:before,.md-typeset .keys .key-right-meta:before{content:"◆";padding-right:.4em}.md-typeset .keys .key-left-option:before,.md-typeset .keys .key-option:before,.md-typeset .keys .key-right-option:before{content:"⌥";padding-right:.4em}.md-typeset .keys .key-left-shift:before,.md-typeset .keys .key-right-shift:before,.md-typeset .keys .key-shift:before{content:"⇧";padding-right:.4em}.md-typeset .keys .key-left-super:before,.md-typeset .keys .key-right-super:before,.md-typeset .keys .key-super:before{content:"❖";padding-right:.4em}.md-typeset .keys .key-left-windows:before,.md-typeset .keys .key-right-windows:before,.md-typeset .keys .key-windows:before{content:"⊞";padding-right:.4em}.md-typeset .keys .key-arrow-down:before{content:"↓";padding-right:.4em}.md-typeset .keys .key-arrow-left:before{content:"←";padding-right:.4em}.md-typeset .keys .key-arrow-right:before{content:"→";padding-right:.4em}.md-typeset .keys .key-arrow-up:before{content:"↑";padding-right:.4em}.md-typeset .keys .key-backspace:before{content:"⌫";padding-right:.4em}.md-typeset .keys .key-backtab:before{content:"⇤";padding-right:.4em}.md-typeset .keys .key-caps-lock:before{content:"⇪";padding-right:.4em}.md-typeset .keys .key-clear:before{content:"⌧";padding-right:.4em}.md-typeset .keys .key-context-menu:before{content:"☰";padding-right:.4em}.md-typeset .keys .key-delete:before{content:"⌦";padding-right:.4em}.md-typeset .keys .key-eject:before{content:"⏏";padding-right:.4em}.md-typeset .keys .key-end:before{content:"⤓";padding-right:.4em}.md-typeset .keys .key-escape:before{content:"⎋";padding-right:.4em}.md-typeset .keys .key-home:before{content:"⤒";padding-right:.4em}.md-typeset .keys .key-insert:before{content:"⎀";padding-right:.4em}.md-typeset .keys .key-page-down:before{content:"⇟";padding-right:.4em}.md-typeset .keys .key-page-up:before{content:"⇞";padding-right:.4em}.md-typeset .keys .key-print-screen:before{content:"⎙";padding-right:.4em}.md-typeset .keys .key-tab:after{content:"⇥";padding-left:.4em}.md-typeset .keys .key-num-enter:after{content:"⌤";padding-left:.4em}.md-typeset .keys .key-enter:after{content:"⏎";padding-left:.4em}:root{--md-tabbed-icon--prev:url('data:image/svg+xml;charset=utf-8,');--md-tabbed-icon--next:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .tabbed-set{border-radius:.1rem;display:flex;flex-flow:column wrap;margin:1em 0;position:relative}.md-typeset .tabbed-set>input{height:0;opacity:0;position:absolute;width:0}.md-typeset .tabbed-set>input:target{--md-scroll-offset:0.625em}.md-typeset .tabbed-set>input.focus-visible~.tabbed-labels:before{background-color:var(--md-accent-fg-color)}.md-typeset .tabbed-labels{-ms-overflow-style:none;box-shadow:0 -.05rem var(--md-default-fg-color--lightest) inset;display:flex;max-width:100%;overflow:auto;scrollbar-width:none}@media print{.md-typeset .tabbed-labels{display:contents}}@media screen{.js .md-typeset .tabbed-labels{position:relative}.js .md-typeset .tabbed-labels:before{background:var(--md-default-fg-color);bottom:0;content:"";display:block;height:2px;left:0;position:absolute;transform:translateX(var(--md-indicator-x));transition:width 225ms,background-color .25s,transform .25s;transition-timing-function:cubic-bezier(.4,0,.2,1);width:var(--md-indicator-width)}}.md-typeset .tabbed-labels::-webkit-scrollbar{display:none}.md-typeset .tabbed-labels>label{border-bottom:.1rem solid #0000;border-radius:.1rem .1rem 0 0;color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;font-size:.64rem;font-weight:700;padding:.78125em 1.25em .625em;scroll-margin-inline-start:1rem;transition:background-color .25s,color .25s;white-space:nowrap;width:auto}@media print{.md-typeset .tabbed-labels>label:first-child{order:1}.md-typeset .tabbed-labels>label:nth-child(2){order:2}.md-typeset .tabbed-labels>label:nth-child(3){order:3}.md-typeset .tabbed-labels>label:nth-child(4){order:4}.md-typeset .tabbed-labels>label:nth-child(5){order:5}.md-typeset .tabbed-labels>label:nth-child(6){order:6}.md-typeset .tabbed-labels>label:nth-child(7){order:7}.md-typeset .tabbed-labels>label:nth-child(8){order:8}.md-typeset .tabbed-labels>label:nth-child(9){order:9}.md-typeset .tabbed-labels>label:nth-child(10){order:10}.md-typeset .tabbed-labels>label:nth-child(11){order:11}.md-typeset .tabbed-labels>label:nth-child(12){order:12}.md-typeset .tabbed-labels>label:nth-child(13){order:13}.md-typeset .tabbed-labels>label:nth-child(14){order:14}.md-typeset .tabbed-labels>label:nth-child(15){order:15}.md-typeset .tabbed-labels>label:nth-child(16){order:16}.md-typeset .tabbed-labels>label:nth-child(17){order:17}.md-typeset .tabbed-labels>label:nth-child(18){order:18}.md-typeset .tabbed-labels>label:nth-child(19){order:19}.md-typeset .tabbed-labels>label:nth-child(20){order:20}}.md-typeset .tabbed-labels>label:hover{color:var(--md-default-fg-color)}.md-typeset .tabbed-labels>label>[href]:first-child{color:inherit}.md-typeset .tabbed-labels--linked>label{padding:0}.md-typeset .tabbed-labels--linked>label>a{display:block;padding:.78125em 1.25em .625em}.md-typeset .tabbed-content{width:100%}@media print{.md-typeset .tabbed-content{display:contents}}.md-typeset .tabbed-block{display:none}@media print{.md-typeset .tabbed-block{display:block}.md-typeset .tabbed-block:first-child{order:1}.md-typeset .tabbed-block:nth-child(2){order:2}.md-typeset .tabbed-block:nth-child(3){order:3}.md-typeset .tabbed-block:nth-child(4){order:4}.md-typeset .tabbed-block:nth-child(5){order:5}.md-typeset .tabbed-block:nth-child(6){order:6}.md-typeset .tabbed-block:nth-child(7){order:7}.md-typeset .tabbed-block:nth-child(8){order:8}.md-typeset .tabbed-block:nth-child(9){order:9}.md-typeset .tabbed-block:nth-child(10){order:10}.md-typeset .tabbed-block:nth-child(11){order:11}.md-typeset .tabbed-block:nth-child(12){order:12}.md-typeset .tabbed-block:nth-child(13){order:13}.md-typeset .tabbed-block:nth-child(14){order:14}.md-typeset .tabbed-block:nth-child(15){order:15}.md-typeset .tabbed-block:nth-child(16){order:16}.md-typeset .tabbed-block:nth-child(17){order:17}.md-typeset .tabbed-block:nth-child(18){order:18}.md-typeset .tabbed-block:nth-child(19){order:19}.md-typeset .tabbed-block:nth-child(20){order:20}}.md-typeset .tabbed-block>.highlight:first-child>pre,.md-typeset .tabbed-block>pre:first-child{margin:0}.md-typeset .tabbed-block>.highlight:first-child>pre>code,.md-typeset .tabbed-block>pre:first-child>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child>.filename{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable{margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.filename span.filename,.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.linenos{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.code>div>pre>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child+.result{margin-top:-.125em}.md-typeset .tabbed-block>.tabbed-set{margin:0}.md-typeset .tabbed-button{align-self:center;border-radius:100%;color:var(--md-default-fg-color--light);cursor:pointer;display:block;height:.9rem;margin-top:.1rem;pointer-events:auto;transition:background-color .25s;width:.9rem}.md-typeset .tabbed-button:hover{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-typeset .tabbed-button:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-tabbed-icon--prev);mask-image:var(--md-tabbed-icon--prev);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color .25s,transform .25s;width:100%}.md-typeset .tabbed-control{background:linear-gradient(to right,var(--md-default-bg-color) 60%,#0000);display:flex;height:1.9rem;justify-content:start;pointer-events:none;position:absolute;transition:opacity 125ms;width:1.2rem}[dir=rtl] .md-typeset .tabbed-control{transform:rotate(180deg)}.md-typeset .tabbed-control[hidden]{opacity:0}.md-typeset .tabbed-control--next{background:linear-gradient(to left,var(--md-default-bg-color) 60%,#0000);justify-content:end;right:0}.md-typeset .tabbed-control--next .tabbed-button:after{-webkit-mask-image:var(--md-tabbed-icon--next);mask-image:var(--md-tabbed-icon--next)}@media screen and (max-width:44.984375em){[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels{padding-right:.8rem}.md-content__inner>.tabbed-set .tabbed-labels{margin:0 -.8rem;max-width:100vw;scroll-padding-inline-start:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-left:.8rem}.md-content__inner>.tabbed-set .tabbed-labels:after{content:""}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-right:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-left:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-right:-.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{width:2rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-left:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-right:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-left:-.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{width:2rem}}@media screen{.md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){color:var(--md-default-fg-color)}.md-typeset .no-js .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .no-js .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .no-js .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .no-js .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .no-js .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .no-js .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .no-js .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .no-js .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .no-js .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .no-js .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .no-js .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .no-js .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .no-js .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .no-js .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .no-js .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .no-js .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .no-js .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .no-js .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .no-js .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .no-js .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9),.no-js .md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.no-js .md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.no-js .md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.no-js .md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.no-js .md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.no-js .md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.no-js .md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.no-js .md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.no-js .md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.no-js .md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.no-js .md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.no-js .md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.no-js .md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.no-js .md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.no-js .md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.no-js .md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.no-js .md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.no-js .md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.no-js .md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.no-js .md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){border-color:var(--md-default-fg-color)}}.md-typeset .tabbed-set>input:first-child.focus-visible~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10).focus-visible~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11).focus-visible~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12).focus-visible~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13).focus-visible~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14).focus-visible~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15).focus-visible~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16).focus-visible~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17).focus-visible~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18).focus-visible~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19).focus-visible~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2).focus-visible~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20).focus-visible~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3).focus-visible~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4).focus-visible~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5).focus-visible~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6).focus-visible~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7).focus-visible~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8).focus-visible~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9).focus-visible~.tabbed-labels>:nth-child(9){color:var(--md-accent-fg-color)}.md-typeset .tabbed-set>input:first-child:checked~.tabbed-content>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-content>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-content>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-content>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-content>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-content>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-content>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-content>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-content>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-content>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-content>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-content>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-content>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-content>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-content>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-content>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-content>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-content>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-content>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-content>:nth-child(9){display:block}:root{--md-tasklist-icon:url('data:image/svg+xml;charset=utf-8,');--md-tasklist-icon--checked:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .task-list-item{list-style-type:none;position:relative}[dir=ltr] .md-typeset .task-list-item [type=checkbox]{left:-2em}[dir=rtl] .md-typeset .task-list-item [type=checkbox]{right:-2em}.md-typeset .task-list-item [type=checkbox]{position:absolute;top:.45em}.md-typeset .task-list-control [type=checkbox]{opacity:0;z-index:-1}[dir=ltr] .md-typeset .task-list-indicator:before{left:-1.5em}[dir=rtl] .md-typeset .task-list-indicator:before{right:-1.5em}.md-typeset .task-list-indicator:before{background-color:var(--md-default-fg-color--lightest);content:"";height:1.25em;-webkit-mask-image:var(--md-tasklist-icon);mask-image:var(--md-tasklist-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.15em;width:1.25em}.md-typeset [type=checkbox]:checked+.task-list-indicator:before{background-color:#00e676;-webkit-mask-image:var(--md-tasklist-icon--checked);mask-image:var(--md-tasklist-icon--checked)}:root>*{--md-mermaid-font-family:var(--md-text-font-family),sans-serif;--md-mermaid-edge-color:var(--md-code-fg-color);--md-mermaid-node-bg-color:var(--md-accent-fg-color--transparent);--md-mermaid-node-fg-color:var(--md-accent-fg-color);--md-mermaid-label-bg-color:var(--md-default-bg-color);--md-mermaid-label-fg-color:var(--md-code-fg-color);--md-mermaid-sequence-actor-bg-color:var(--md-mermaid-label-bg-color);--md-mermaid-sequence-actor-fg-color:var(--md-mermaid-label-fg-color);--md-mermaid-sequence-actor-border-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-actor-line-color:var(--md-default-fg-color--lighter);--md-mermaid-sequence-actorman-bg-color:var(--md-mermaid-label-bg-color);--md-mermaid-sequence-actorman-line-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-box-bg-color:var(--md-mermaid-node-bg-color);--md-mermaid-sequence-box-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-label-bg-color:var(--md-mermaid-node-bg-color);--md-mermaid-sequence-label-fg-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-loop-bg-color:var(--md-mermaid-node-bg-color);--md-mermaid-sequence-loop-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-loop-border-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-message-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-message-line-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-note-bg-color:var(--md-mermaid-label-bg-color);--md-mermaid-sequence-note-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-note-border-color:var(--md-mermaid-label-fg-color);--md-mermaid-sequence-number-bg-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-number-fg-color:var(--md-accent-bg-color)}.mermaid{line-height:normal;margin:1em 0}.md-typeset .grid{grid-gap:.4rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));margin:1em 0}.md-typeset .grid.cards>ol,.md-typeset .grid.cards>ul{display:contents}.md-typeset .grid.cards>ol>li,.md-typeset .grid.cards>ul>li,.md-typeset .grid>.card{border:.05rem solid var(--md-default-fg-color--lightest);border-radius:.1rem;display:block;margin:0;padding:.8rem;transition:border .25s,box-shadow .25s}.md-typeset .grid.cards>ol>li:focus-within,.md-typeset .grid.cards>ol>li:hover,.md-typeset .grid.cards>ul>li:focus-within,.md-typeset .grid.cards>ul>li:hover,.md-typeset .grid>.card:focus-within,.md-typeset .grid>.card:hover{border-color:#0000;box-shadow:var(--md-shadow-z2)}.md-typeset .grid.cards>ol>li>hr,.md-typeset .grid.cards>ul>li>hr,.md-typeset .grid>.card>hr{margin-bottom:1em;margin-top:1em}.md-typeset .grid.cards>ol>li>:first-child,.md-typeset .grid.cards>ul>li>:first-child,.md-typeset .grid>.card>:first-child{margin-top:0}.md-typeset .grid.cards>ol>li>:last-child,.md-typeset .grid.cards>ul>li>:last-child,.md-typeset .grid>.card>:last-child{margin-bottom:0}.md-typeset .grid>*,.md-typeset .grid>.admonition,.md-typeset .grid>.highlight>*,.md-typeset .grid>.highlighttable,.md-typeset .grid>.md-typeset details,.md-typeset .grid>details,.md-typeset .grid>pre{margin-bottom:0;margin-top:0}.md-typeset .grid>.highlight>pre:only-child,.md-typeset .grid>.highlight>pre>code,.md-typeset .grid>.highlighttable,.md-typeset .grid>.highlighttable>tbody,.md-typeset .grid>.highlighttable>tbody>tr,.md-typeset .grid>.highlighttable>tbody>tr>.code,.md-typeset .grid>.highlighttable>tbody>tr>.code>.highlight,.md-typeset .grid>.highlighttable>tbody>tr>.code>.highlight>pre,.md-typeset .grid>.highlighttable>tbody>tr>.code>.highlight>pre>code{height:100%}.md-typeset .grid>.tabbed-set{margin-bottom:0;margin-top:0}@media screen and (min-width:45em){[dir=ltr] .md-typeset .inline{float:left}[dir=rtl] .md-typeset .inline{float:right}[dir=ltr] .md-typeset .inline{margin-right:.8rem}[dir=rtl] .md-typeset .inline{margin-left:.8rem}.md-typeset .inline{margin-bottom:.8rem;margin-top:0;width:11.7rem}[dir=ltr] .md-typeset .inline.end{float:right}[dir=rtl] .md-typeset .inline.end{float:left}[dir=ltr] .md-typeset .inline.end{margin-left:.8rem;margin-right:0}[dir=rtl] .md-typeset .inline.end{margin-left:0;margin-right:.8rem}} \ No newline at end of file diff --git a/assets/stylesheets/main.76a95c52.min.css.map b/assets/stylesheets/main.76a95c52.min.css.map deleted file mode 100644 index ee35967..0000000 --- a/assets/stylesheets/main.76a95c52.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["src/templates/assets/stylesheets/main/components/_meta.scss","../../../../src/templates/assets/stylesheets/main.scss","src/templates/assets/stylesheets/main/_resets.scss","src/templates/assets/stylesheets/main/_colors.scss","src/templates/assets/stylesheets/main/_icons.scss","src/templates/assets/stylesheets/main/_typeset.scss","src/templates/assets/stylesheets/utilities/_break.scss","src/templates/assets/stylesheets/main/components/_author.scss","src/templates/assets/stylesheets/main/components/_banner.scss","src/templates/assets/stylesheets/main/components/_base.scss","src/templates/assets/stylesheets/main/components/_clipboard.scss","src/templates/assets/stylesheets/main/components/_code.scss","src/templates/assets/stylesheets/main/components/_consent.scss","src/templates/assets/stylesheets/main/components/_content.scss","src/templates/assets/stylesheets/main/components/_dialog.scss","src/templates/assets/stylesheets/main/components/_feedback.scss","src/templates/assets/stylesheets/main/components/_footer.scss","src/templates/assets/stylesheets/main/components/_form.scss","src/templates/assets/stylesheets/main/components/_header.scss","node_modules/material-design-color/material-color.scss","src/templates/assets/stylesheets/main/components/_nav.scss","src/templates/assets/stylesheets/main/components/_pagination.scss","src/templates/assets/stylesheets/main/components/_post.scss","src/templates/assets/stylesheets/main/components/_progress.scss","src/templates/assets/stylesheets/main/components/_search.scss","src/templates/assets/stylesheets/main/components/_select.scss","src/templates/assets/stylesheets/main/components/_sidebar.scss","src/templates/assets/stylesheets/main/components/_source.scss","src/templates/assets/stylesheets/main/components/_status.scss","src/templates/assets/stylesheets/main/components/_tabs.scss","src/templates/assets/stylesheets/main/components/_tag.scss","src/templates/assets/stylesheets/main/components/_tooltip.scss","src/templates/assets/stylesheets/main/components/_tooltip2.scss","src/templates/assets/stylesheets/main/components/_top.scss","src/templates/assets/stylesheets/main/components/_version.scss","src/templates/assets/stylesheets/main/extensions/markdown/_admonition.scss","src/templates/assets/stylesheets/main/extensions/markdown/_footnotes.scss","src/templates/assets/stylesheets/main/extensions/markdown/_toc.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_arithmatex.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_critic.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_details.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_emoji.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_highlight.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_keys.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_tabbed.scss","src/templates/assets/stylesheets/main/extensions/pymdownx/_tasklist.scss","src/templates/assets/stylesheets/main/integrations/_mermaid.scss","src/templates/assets/stylesheets/main/modifiers/_grid.scss","src/templates/assets/stylesheets/main/modifiers/_inline.scss"],"names":[],"mappings":"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","file":"main.css"} \ No newline at end of file diff --git a/community.html b/community.html index efc437e..4e11642 100644 --- a/community.html +++ b/community.html @@ -16,7 +16,7 @@ - + @@ -24,7 +24,7 @@ - + @@ -205,7 +205,7 @@
- +
GitHub @@ -440,7 +440,7 @@
- +
GitHub diff --git a/competition/rules/index.html b/competition/rules/index.html index 8d25f11..1740479 100644 --- a/competition/rules/index.html +++ b/competition/rules/index.html @@ -14,7 +14,7 @@ - + @@ -22,7 +22,7 @@ - + @@ -203,7 +203,7 @@
- +
GitHub @@ -436,7 +436,7 @@
- +
GitHub diff --git a/course/avoidance.html b/course/avoidance.html index ae2feb3..5fc1d9e 100644 --- a/course/avoidance.html +++ b/course/avoidance.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub @@ -1227,6 +1227,63 @@ + + @@ -1327,6 +1384,63 @@ + + @@ -1395,11 +1509,81 @@

03-01. lidarから点群を取得し障害物検知をす

imple_lidar_sim2

03-02. 点群情報に基づいて経路・軌道計画し車両を追従させる

-
-

Warning

-

作成中

+

取得した点群を元に障害物を回避することを考えます。 +障害物を回避するには様々なものがありますが、今回はstate lattice plannerについて説明し実装します。

+

State Lattice Planner のアルゴリズム

+

State lattice plannerとは、車両の現在の状態と目標状態の間に一連の軌道候補を生成し、それぞれの軌道を評価して最適な経路を選択するアルゴリズムです。 +以下の画像に軌道を生成するフローを示します。

+
+ flow +
+ state lattice plannerのフロー +
+ +

1. 目標状態をサンプリング

+

車両の現在の状態からゴールまでの経路上に複数の目標状態をサンプリングします。 +今回は予め分かっているゴールまでの軌道に垂直に等間隔に並ぶように目標状態をサンプリングします。

+
+ target_state_sampling +
+ 目標状態を複数サンプリング +
+ +

2. 各目標状態に対して軌道生成

+

現在の状態から各目標状態への軌道を生成します。 +今回はベジエ曲線を用いて軌道を生成します。

+
+ generate_trajectory +
+ 現在の状態から各目標状態への軌道を生成 +
+ +

3. コストマップを生成

+

取得した点群データから周囲の障害物情報を反映したコストマップを生成します。コストマップは、各セルに通行の難易度を示す値を持ちます。 +今回は点群が存在するセルのコストは100を設定し、点群が存在するセルに隣接するセルのコストは50を設定しました。 +また障害物がない場合、予め予め分かっているゴールまでの軌道に戻るようにするために、ゴールまでの軌道のウェイポイントが存在するセルのコストを-1に設定しました。 +上記のルールに基づいて各セルのコストを計算します。

+

例)ゴールまでの軌道のウェイポイントと点群が存在するセルのコストは、-1+100で99となります。

+
+ generate_costmap +
+ コストマップの生成 +
+ +

4. コストマップを用いて各軌道を評価

+

各軌道のウェイポイントが存在するセルのコストの総和を軌道のコストとし、最もコストが低い軌道を選択します。

+
+ evaluate_trajectory +
+ コストマップを用いて各軌道を評価
+

今回は以下のようにtrajectory_plannerノードにstate lattice plannerを作成しました。

+

alt text

+

src/autoware_practice_lidar_simulator/config/object_centers.csvを修正して障害物の位置を変更します。

+
x_center,y_center
+-  7.0,0.0
+-  10.0,5.0
+-  5.0,-3.0
++  47.0,-1.0
++  30.0,1.0
++  15.0,-1.0
+
+

以下のコマンドを別々のターミナルで実行して画像のように障害物を適切に回避できるか確かめましょう。

+
ros2 launch autoware_practice_launch practice.launch.xml
+
+
ros2 run autoware_practice_course trajectory_loader --ros-args -p path_file:=src/autoware_practice_course/config/trajectory.csv --remap /planning/scenario_planning/trajectory:=/planning/trajectory_loader/trajectory
+
+
ros2 run autoware_practice_course trajectory_follower --ros-args -p kp:=5.0 -p lookahead_distance:=5.0
+
+
ros2 run autoware_practice_course trajectory_planner --ros-args -p state_num:=9 -p target_interval:=1.0
+
+

state_numは経路上にサンプリングする目標状態の数、target_intervalはサンプリングする目標位置の間隔です。 +trajectory_plannerを起動する際に他のパラメータも指定できるので是非変更してみてください。ノード起動時に設定できるパラメータはsrc/autoware_practice_course/src/avoidance/trajectory_planner.cppで確認することができます。

+

alt text

+

参考: +State Lattice Plannerの概要とPythonサンプルコード

+ diff --git a/course/images/3-2/evaluate_trajectory.jpg b/course/images/3-2/evaluate_trajectory.jpg new file mode 100644 index 0000000..1d5ccab Binary files /dev/null and b/course/images/3-2/evaluate_trajectory.jpg differ diff --git a/course/images/3-2/flow.jpg b/course/images/3-2/flow.jpg new file mode 100644 index 0000000..6a45230 Binary files /dev/null and b/course/images/3-2/flow.jpg differ diff --git a/course/images/3-2/generate_costmap.jpg b/course/images/3-2/generate_costmap.jpg new file mode 100644 index 0000000..436909e Binary files /dev/null and b/course/images/3-2/generate_costmap.jpg differ diff --git a/course/images/3-2/generate_trajectory.jpg b/course/images/3-2/generate_trajectory.jpg new file mode 100644 index 0000000..b2ee876 Binary files /dev/null and b/course/images/3-2/generate_trajectory.jpg differ diff --git a/course/images/3-2/nodemap.jpg b/course/images/3-2/nodemap.jpg new file mode 100644 index 0000000..c4237a4 Binary files /dev/null and b/course/images/3-2/nodemap.jpg differ diff --git a/course/images/3-2/rviz_image.png b/course/images/3-2/rviz_image.png new file mode 100644 index 0000000..5afd49f Binary files /dev/null and b/course/images/3-2/rviz_image.png differ diff --git a/course/images/3-2/target_state_sampling.jpg b/course/images/3-2/target_state_sampling.jpg new file mode 100644 index 0000000..33dabf6 Binary files /dev/null and b/course/images/3-2/target_state_sampling.jpg differ diff --git a/course/index.html b/course/index.html index 1765cf6..230744e 100644 --- a/course/index.html +++ b/course/index.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/course/path_planning.html b/course/path_planning.html index 36b8f84..2677f44 100644 --- a/course/path_planning.html +++ b/course/path_planning.html @@ -14,7 +14,7 @@ - + @@ -22,7 +22,7 @@ - + @@ -203,7 +203,7 @@
- +
GitHub @@ -436,7 +436,7 @@
- +
GitHub diff --git a/course/vehicle.html b/course/vehicle.html index 530f552..eaf1bb7 100644 --- a/course/vehicle.html +++ b/course/vehicle.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/course/velocity_planning.html b/course/velocity_planning.html index 1bec424..de8a1a2 100644 --- a/course/velocity_planning.html +++ b/course/velocity_planning.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/development/main-module.html b/development/main-module.html index f8b6454..135e60f 100644 --- a/development/main-module.html +++ b/development/main-module.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/development/reference.html b/development/reference.html index d2298e6..b0c32f1 100644 --- a/development/reference.html +++ b/development/reference.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/development/requirements/index.html b/development/requirements/index.html index de2fd2b..2659584 100644 --- a/development/requirements/index.html +++ b/development/requirements/index.html @@ -14,7 +14,7 @@ - + @@ -22,7 +22,7 @@ - + @@ -203,7 +203,7 @@
- +
GitHub @@ -436,7 +436,7 @@
- +
GitHub diff --git a/development/workspace-usage.html b/development/workspace-usage.html index a0f419b..fddc236 100644 --- a/development/workspace-usage.html +++ b/development/workspace-usage.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/en/community.html b/en/community.html index 5ad5010..1c6e643 100644 --- a/en/community.html +++ b/en/community.html @@ -16,7 +16,7 @@ - + @@ -24,7 +24,7 @@ - + @@ -205,7 +205,7 @@
- +
GitHub @@ -440,7 +440,7 @@
- +
GitHub diff --git a/en/competition/rules/index.html b/en/competition/rules/index.html index 3d5a5f9..bcec77e 100644 --- a/en/competition/rules/index.html +++ b/en/competition/rules/index.html @@ -14,7 +14,7 @@ - + @@ -22,7 +22,7 @@ - + @@ -203,7 +203,7 @@
- +
GitHub @@ -436,7 +436,7 @@
- +
GitHub diff --git a/en/course/avoidance.html b/en/course/avoidance.html index 8ea826d..8cbad03 100644 --- a/en/course/avoidance.html +++ b/en/course/avoidance.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub @@ -1227,6 +1227,63 @@ + + @@ -1327,6 +1384,63 @@ + + @@ -1395,11 +1509,81 @@

03-01. lidarから点群を取得し障害物検知をす

imple_lidar_sim2

03-02. 点群情報に基づいて経路・軌道計画し車両を追従させる

-
-

Warning

-

作成中

+

取得した点群を元に障害物を回避することを考えます。 +障害物を回避するには様々なものがありますが、今回はstate lattice plannerについて説明し実装します。

+

State Lattice Planner のアルゴリズム

+

State lattice plannerとは、車両の現在の状態と目標状態の間に一連の軌道候補を生成し、それぞれの軌道を評価して最適な経路を選択するアルゴリズムです。 +以下の画像に軌道を生成するフローを示します。

+
+ flow +
+ state lattice plannerのフロー +
+ +

1. 目標状態をサンプリング

+

車両の現在の状態からゴールまでの経路上に複数の目標状態をサンプリングします。 +今回は予め分かっているゴールまでの軌道に垂直に等間隔に並ぶように目標状態をサンプリングします。

+
+ target_state_sampling +
+ 目標状態を複数サンプリング +
+ +

2. 各目標状態に対して軌道生成

+

現在の状態から各目標状態への軌道を生成します。 +今回はベジエ曲線を用いて軌道を生成します。

+
+ generate_trajectory +
+ 現在の状態から各目標状態への軌道を生成 +
+ +

3. コストマップを生成

+

取得した点群データから周囲の障害物情報を反映したコストマップを生成します。コストマップは、各セルに通行の難易度を示す値を持ちます。 +今回は点群が存在するセルのコストは100を設定し、点群が存在するセルに隣接するセルのコストは50を設定しました。 +また障害物がない場合、予め予め分かっているゴールまでの軌道に戻るようにするために、ゴールまでの軌道のウェイポイントが存在するセルのコストを-1に設定しました。 +上記のルールに基づいて各セルのコストを計算します。

+

例)ゴールまでの軌道のウェイポイントと点群が存在するセルのコストは、-1+100で99となります。

+
+ generate_costmap +
+ コストマップの生成 +
+ +

4. コストマップを用いて各軌道を評価

+

各軌道のウェイポイントが存在するセルのコストの総和を軌道のコストとし、最もコストが低い軌道を選択します。

+
+ evaluate_trajectory +
+ コストマップを用いて各軌道を評価
+

今回は以下のようにtrajectory_plannerノードにstate lattice plannerを作成しました。

+

alt text

+

src/autoware_practice_lidar_simulator/config/object_centers.csvを修正して障害物の位置を変更します。

+
x_center,y_center
+-  7.0,0.0
+-  10.0,5.0
+-  5.0,-3.0
++  47.0,-1.0
++  30.0,1.0
++  15.0,-1.0
+
+

以下のコマンドを別々のターミナルで実行して画像のように障害物を適切に回避できるか確かめましょう。

+
ros2 launch autoware_practice_launch practice.launch.xml
+
+
ros2 run autoware_practice_course trajectory_loader --ros-args -p path_file:=src/autoware_practice_course/config/trajectory.csv --remap /planning/scenario_planning/trajectory:=/planning/trajectory_loader/trajectory
+
+
ros2 run autoware_practice_course trajectory_follower --ros-args -p kp:=5.0 -p lookahead_distance:=5.0
+
+
ros2 run autoware_practice_course trajectory_planner --ros-args -p state_num:=9 -p target_interval:=1.0
+
+

state_numは経路上にサンプリングする目標状態の数、target_intervalはサンプリングする目標位置の間隔です。 +trajectory_plannerを起動する際に他のパラメータも指定できるので是非変更してみてください。ノード起動時に設定できるパラメータはsrc/autoware_practice_course/src/avoidance/trajectory_planner.cppで確認することができます。

+

alt text

+

参考: +State Lattice Plannerの概要とPythonサンプルコード

+ diff --git a/en/course/index.html b/en/course/index.html index 274a696..4025357 100644 --- a/en/course/index.html +++ b/en/course/index.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/en/course/path_planning.html b/en/course/path_planning.html index d09a16c..73a8c2b 100644 --- a/en/course/path_planning.html +++ b/en/course/path_planning.html @@ -14,7 +14,7 @@ - + @@ -22,7 +22,7 @@ - + @@ -203,7 +203,7 @@
- +
GitHub @@ -436,7 +436,7 @@
- +
GitHub diff --git a/en/course/vehicle.html b/en/course/vehicle.html index 086bbe5..47c77ee 100644 --- a/en/course/vehicle.html +++ b/en/course/vehicle.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/en/course/velocity_planning.html b/en/course/velocity_planning.html index be1cd8a..40475cb 100644 --- a/en/course/velocity_planning.html +++ b/en/course/velocity_planning.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/en/development/main-module.html b/en/development/main-module.html index a83b0b5..27cb51e 100644 --- a/en/development/main-module.html +++ b/en/development/main-module.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/en/development/reference.html b/en/development/reference.html index 54eff56..cd34a19 100644 --- a/en/development/reference.html +++ b/en/development/reference.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/en/development/requirements/index.html b/en/development/requirements/index.html index 964dc88..697a66c 100644 --- a/en/development/requirements/index.html +++ b/en/development/requirements/index.html @@ -14,7 +14,7 @@ - + @@ -22,7 +22,7 @@ - + @@ -203,7 +203,7 @@
- +
GitHub @@ -436,7 +436,7 @@
- +
GitHub diff --git a/en/development/workspace-usage.html b/en/development/workspace-usage.html index acb5b4e..21e9660 100644 --- a/en/development/workspace-usage.html +++ b/en/development/workspace-usage.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/en/faq.html b/en/faq.html index 298af75..5d50dba 100644 --- a/en/faq.html +++ b/en/faq.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/en/getting-started.html b/en/getting-started.html index b36d27d..f50db5e 100644 --- a/en/getting-started.html +++ b/en/getting-started.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/en/index.html b/en/index.html index b9647d5..911da82 100644 --- a/en/index.html +++ b/en/index.html @@ -16,7 +16,7 @@ - + @@ -24,7 +24,7 @@ - + @@ -205,7 +205,7 @@
- +
GitHub @@ -440,7 +440,7 @@
- +
GitHub diff --git a/en/information/rules.html b/en/information/rules.html index 9f2fd44..20f9156 100644 --- a/en/information/rules.html +++ b/en/information/rules.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/en/information/schedule.html b/en/information/schedule.html index 44a5e3f..c4db30e 100644 --- a/en/information/schedule.html +++ b/en/information/schedule.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/en/preliminaries/check-results.html b/en/preliminaries/check-results.html index 25932b2..5694b6a 100644 --- a/en/preliminaries/check-results.html +++ b/en/preliminaries/check-results.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/en/preliminaries/submission.html b/en/preliminaries/submission.html index 9d22411..1f707d2 100644 --- a/en/preliminaries/submission.html +++ b/en/preliminaries/submission.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/en/setup/build-docker.html b/en/setup/build-docker.html index 1dfa935..504a64a 100644 --- a/en/setup/build-docker.html +++ b/en/setup/build-docker.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/en/setup/docker.html b/en/setup/docker.html index 7afe8dc..78e4129 100644 --- a/en/setup/docker.html +++ b/en/setup/docker.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/en/setup/headless-simulation.html b/en/setup/headless-simulation.html index 2a7a127..28c298f 100644 --- a/en/setup/headless-simulation.html +++ b/en/setup/headless-simulation.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/en/setup/requirements.html b/en/setup/requirements.html index 1b956a5..1db995a 100644 --- a/en/setup/requirements.html +++ b/en/setup/requirements.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/en/setup/visible-simulation.html b/en/setup/visible-simulation.html index f0e9c26..7f5f5f0 100644 --- a/en/setup/visible-simulation.html +++ b/en/setup/visible-simulation.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/en/setup/workspace-setup.html b/en/setup/workspace-setup.html index 5271463..8a67ff6 100644 --- a/en/setup/workspace-setup.html +++ b/en/setup/workspace-setup.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/en/specifications/hardware.html b/en/specifications/hardware.html index 70a2f07..4f1dd84 100644 --- a/en/specifications/hardware.html +++ b/en/specifications/hardware.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/en/specifications/interface.html b/en/specifications/interface.html index 70a6618..f0f0271 100644 --- a/en/specifications/interface.html +++ b/en/specifications/interface.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/en/specifications/simulator.html b/en/specifications/simulator.html index e5271b6..06c7b1e 100644 --- a/en/specifications/simulator.html +++ b/en/specifications/simulator.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/faq.html b/faq.html index 3a91d51..10e561f 100644 --- a/faq.html +++ b/faq.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/getting-started.html b/getting-started.html index f56951d..9585426 100644 --- a/getting-started.html +++ b/getting-started.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/index.html b/index.html index 96ab095..c7fc37b 100644 --- a/index.html +++ b/index.html @@ -16,7 +16,7 @@ - + @@ -24,7 +24,7 @@ - + @@ -205,7 +205,7 @@
- +
GitHub @@ -440,7 +440,7 @@
- +
GitHub diff --git a/information/rules.html b/information/rules.html index 7e1b35c..7e28391 100644 --- a/information/rules.html +++ b/information/rules.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/information/schedule.html b/information/schedule.html index 1ed484c..501af57 100644 --- a/information/schedule.html +++ b/information/schedule.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/preliminaries/check-results.html b/preliminaries/check-results.html index af9e3c5..ee62172 100644 --- a/preliminaries/check-results.html +++ b/preliminaries/check-results.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/preliminaries/submission.html b/preliminaries/submission.html index 071d324..589b02f 100644 --- a/preliminaries/submission.html +++ b/preliminaries/submission.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/search/search_index.json b/search/search_index.json index e3420c7..113921e 100644 --- a/search/search_index.json +++ b/search/search_index.json @@ -1 +1 @@ -{"config":{"lang":["en","ja"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"community.html","title":"Community","text":""},{"location":"community.html#ai-2024","title":"\u81ea\u52d5\u904b\u8ee2AI\u30c1\u30e3\u30ec\u30f3\u30b8\u30a2\u30c9\u30d9\u30f3\u30c8\u30ab\u30ec\u30f3\u30c0\u30fc 2024","text":"

https://qiita.com/advent-calendar/2023/jidounten-ai

"},{"location":"community.html#ai","title":"\u81ea\u52d5\u904b\u8ee2AI\u30c1\u30e3\u30ec\u30f3\u30b8\u306e\u53d6\u308a\u7d44\u307f\u306e\u8a18\u4e8b","text":"

https://automotive.panasonic.com/feature/jaaic

https://www.ritsumei.ac.jp/ise/suki_ict/story01.html/

\u7d76\u8cdb\u52df\u96c6\u4e2d\uff01\uff01\uff01

"},{"location":"faq.html","title":"FAQ","text":"

Warning

\u57fa\u672c\u7684\u306b\u306f\u3001ChatGPT\u3084Google\u691c\u7d22\u3067\u89e3\u6c7a\u3067\u304d\u308b\u9805\u76ee\u306f\u591a\u3044\u3067\u3059\u3002\u305d\u308c\u3067\u3082\u89e3\u6c7a\u3057\u306a\u3044\u8cea\u554f\u306b\u3064\u3044\u3066\u306f\u3001\u30a8\u30e9\u30fc\u306e\u30ed\u30b0\u306e\u629c\u7c8b\u3068\u6dfb\u4ed8\u3092\u304a\u9858\u3044\u3057\u307e\u3059\u3002

"},{"location":"faq.html#_1","title":"\u74b0\u5883\u69cb\u7bc9","text":""},{"location":"faq.html#awsim-and-autoware","title":"AWSIM and Autoware\u9593\u306e\u901a\u4fe1\u304c\u5b89\u5b9a\u3057\u307e\u305b\u3093\u3002","text":"

local \u3067\u30c6\u30b9\u30c8\u3059\u308b\u969b\u3001\u3059\u3079\u3066\u306e terminal \u3067ROS_LOCALHOST_ONLY=1\u306b\u8a2d\u5b9a\u3059\u308b\u3068\u901a\u4fe1\u901f\u5ea6\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002 .bashrc \u306b\u4ee5\u4e0b\u306e\u884c\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002

export ROS_LOCALHOST_ONLY=1\nexport RMW_IMPLEMENTATION=rmw_cyclonedds_cpp\n\nif [ ! -e /tmp/cycloneDDS_configured ]; then\n    sudo sysctl -w net.core.rmem_max=2147483647\n    sudo ip link set lo multicast on\n    touch /tmp/cycloneDDS_configured\n

\u306a\u304a\u3001\u4eca\u56de\u306e\u5927\u4f1a\u3067\u306fPC2 \u53f0\u69cb\u6210\u306e Windows+Linux\u3001Linux+Linux\u306e\u4e8c\u53f0\u69cb\u6210\u3082\u8003\u616e\u3057\u3066\u3044\u307e\u3059\u3002 \u305d\u306e\u5834\u5408\u306f\u3001 ROS_LOCALHOST_ONLY=0\u3068\u3057\u3066\u304f\u3060\u3055\u3044\u3002

\u6ce8\u610f:

  • OS \u306e\u8d77\u52d5\u5f8c\u3001\u30bf\u30fc\u30df\u30ca\u30eb\u306e\u8d77\u52d5\u6642\u306b\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u8981\u6c42\u3055\u308c\u3001\u521d\u56de\u306b\u306f sudo ip link set lo multicast on \u304c\u5fc5\u8981\u3067\u3059\u3002
  • \u4e00\u5ea6\u4e0a\u8a18\u306e\u3088\u3046\u306b.bashrc \u306b\u66f8\u304d\u8fbc\u3093\u3067\u5909\u66f4\u3057\u305f\u3053\u3068\u3092\u5fd8\u308c\u308b\u3068\u5e38\u306b\u9069\u7528\u3055\u308c\u3066\u3057\u307e\u3046\u3053\u3068\u306b\u306a\u308b\u305f\u3081\u3001echo $ROS_LOCALHOST_ONLY\u3067\u78ba\u8a8d\u3059\u308b\u306a\u3069\u5fc5\u305a\u5909\u66f4\u70b9\u306f\u8ffd\u3063\u3066\u304f\u3060\u3055\u3044\u3002
  • ROS_LOCALHOST_ONLY=1\u3068ROS_LOCALHOST_ONLY=0\u304c\u6df7\u5728\u3057\u3066\u3044\u308b\u3068 container \u9593\u306e\u901a\u4fe1\u304c\u3067\u304d\u307e\u305b\u3093\u3002
  • ROS_LOCALHOST_ONLY\u304c\u5b9f\u884c\u30d5\u30a1\u30a4\u30eb\u306b\u8a18\u8f09\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u306b\u306f\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"faq.html#ros2-topic-list","title":"ros2 topic list \u304c\u8868\u793a\u3055\u308c\u307e\u305b\u3093\u3002","text":"

\u3042\u306a\u305f\u306e\u30de\u30b7\u30f3\u306eROS_DOMAIN_ID\u304c\u4e00\u81f4\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\uff08ROS_DOMAIN_ID \u3092\u8a2d\u5b9a\u3057\u3066\u3044\u306a\u3044\u65b9\u306f\u554f\u984c\u306a\u3044\u3067\u3059\uff09 \u307e\u305f\u3001ROS2 \u304c\u30bd\u30fc\u30b9\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u306e\u78ba\u8a8d\u3092\u304a\u9858\u3044\u3057\u307e\u3059\u3002

"},{"location":"faq.html#windowsawsimubuntuautoware-ros2-topic-list","title":"Windows\u306eAWSIM\u3068Ubuntu\u306eAutoware\u3092\u4f7f\u7528\u3057\u3066\u304a\u308a\u3001$ ros2 topic list \u304c\u8868\u793a\u3055\u308c\u307e\u305b\u3093\u3002","text":"

Windows Firewall\u3067\u306e\u901a\u4fe1\u3092\u8a31\u53ef\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u307e\u305f\u3001ros2 daemon stop\u3068ros2 daemon start\u3092\u5b9f\u884c\u3057\u3066\u3001\u4e0d\u8981\u306a\u30d7\u30ed\u30bb\u30b9\u304c\u6b8b\u3063\u3066\u3044\u306a\u3044\u304b\u78ba\u8a8d\u3057\u3001\u518d\u8d77\u52d5\u3092\u304a\u9858\u3044\u3057\u307e\u3059\u3002

"},{"location":"faq.html#rocker","title":"Rocker\u304c\u8d77\u52d5\u3057\u307e\u305b\u3093\u3002","text":"

\u307e\u305a\u3001rocker\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u304b\u306e\u78ba\u8a8d\u3092\u304a\u9858\u3044\u3057\u307e\u3059\u3002 \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u306b\u3082\u95a2\u308f\u3089\u305a\u3001\u8d77\u52d5\u3057\u306a\u3044\u5834\u5408\u306f\u6a29\u9650\u3092\u3054\u78ba\u8a8d\u304f\u3060\u3055\u3044\u3002\u904e\u53bb\u306e\u4e8b\u4f8b\u3067\u3059\u3068\u3001\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3057\u305f\u30a2\u30ab\u30a6\u30f3\u30c8\u3068\u5b9f\u884c\u3059\u308b\u969b\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u7a2e\u985e\u30fb\u6a29\u9650\u304c\u7570\u306a\u308b\u3068\u5b9f\u884c\u3067\u304d\u306a\u3044\u3053\u3068\u304c\u5831\u544a\u3055\u308c\u3066\u3044\u307e\u3059\u3002

"},{"location":"faq.html#awsim","title":"AWSIM\u304c\u30b3\u30a2\u30c0\u30f3\u30d7\u3067\u7d42\u4e86\u3057\u307e\u3059\u3002","text":"

AWSIM\u3092\u8d77\u52d5\u3057\u305f\u76f4\u5f8c\u306bcoredump\u3067\u7d42\u4e86\u3059\u308b\u5834\u5408\u3001GPU\u306e\u30e1\u30e2\u30ea\u304c\u4e0d\u8db3\u3057\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001nvidia-smi\u3067GPU\u30e1\u30e2\u30ea\u306e\u5229\u7528\u7387\u304c\u9650\u754c\u306b\u9054\u3057\u3066\u3044\u306a\u3044\u304b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u306a\u304a\u3001GPU\u306e\u30e1\u30e2\u30ea\u306f11GB\u4ee5\u4e0a\u3092\u63a8\u5968\u3057\u3066\u3044\u307e\u3059\u3002

"},{"location":"faq.html#gpuwindowspc","title":"GPU\u642d\u8f09\u306eWindowsPC\u3057\u304b\u7528\u610f\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002","text":"

\u672c\u5927\u4f1a\u306e\u30b5\u30dd\u30fc\u30c8\u5bfe\u8c61\u306fHP\u8a18\u8f09\u306e\u69cb\u6210\u306b\u306a\u308a\u307e\u3059\u305f\u3081\u3001\u8a73\u7d30\u306e\u3054\u6848\u5185\u306f\u3067\u304d\u307e\u305b\u3093\u304c\u3001\u4e00\u822c\u7684\u306b\u4e0b\u8a18\u306e\u3088\u3046\u306a\u65b9\u6cd5\u304c\u3042\u308b\u3068\u601d\u308f\u308c\u307e\u3059\u3002

\u53c2\u52a0\u3059\u308b\u305f\u3081\u306b\u306f\u3001Autoware\u74b0\u5883\u304c\u554f\u984c\u3067\u3059\u3002 \u305d\u306e\u305f\u3081\u3001\u3044\u304b\u306b\u300cAutoware\u3092\u52d5\u304b\u3059\u305f\u3081\u306e\u74b0\u5883\u3092\u7528\u610f\u300d\u3059\u308b\u304b\u304c\u30dd\u30a4\u30f3\u30c8\u306b\u306a\u308b\u305f\u3081\u3001 \u6027\u80fd\u3084\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u6709\u7121\u3001\u30db\u30b9\u30c8-\u30b3\u30f3\u30c6\u30ca\u5185\u306e\u901a\u4fe1\u8a2d\u5b9a\u306a\u3069\u306e\u554f\u984c\u304c\u8d77\u304d\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u4ee5\u4e0b\u306e\u65b9\u6cd5\u304c\u3042\u308b\u3068\u601d\u3044\u307e\u3059\u3002

  • \u30c7\u30e5\u30a2\u30eb\u30d6\u30fc\u30c8\u3067Ubuntu\u3092\u7528\u610f
  • Windows\u4e0a\u306bVM\u3067Ubuntu\u3092\u7528\u610f (Hyper-V\u3001VirtualBox\u3001VMware\u306a\u3069)
  • WSL2\u4e0a\u306bUbuntu\u3092\u7528\u610f
  • Windows\u4e0a\u306bdocker\u74b0\u5883\u3092\u7528\u610f\uff08\u76f4\u63a5\u3001Autoware\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u5165\u308c\u308b\uff09
  • \u30af\u30e9\u30a6\u30c9\u306b\u74b0\u5883\u3092\u69cb\u7bc9 (\u904e\u53bb\u306e\u5927\u4f1a\u3067\u306fAWS\u3092\u5229\u7528\u3057\u3066\u53c2\u52a0\u3055\u308c\u3066\u3044\u308b\u65b9\u3082\u3044\u3089\u3063\u3057\u3083\u3044\u307e\u3057\u305f)
"},{"location":"faq.html#awsawsimrviz","title":"AWS\u3067\u74b0\u5883\u69cb\u7bc9\u3057\u305f\u3068\u3053\u308d\u3001AWSIM\u306f\u8868\u793a\u3055\u308c\u305f\u304c\u3001Rviz\u304c\u30d6\u30e9\u30c3\u30af\u30b9\u30af\u30ea\u30fc\u30f3\u3068\u306a\u308a\u307e\u3057\u305f\u3002","text":"

sudo apt upgrade\u3067\u6cbb\u3063\u305f\u3068\u3044\u3046\u4e8b\u4f8b\u304c\u3042\u308a\u307e\u3059\u306e\u3067\u3001\u5185\u5bb9\u3092\u78ba\u8a8d\u306e\u4e0a\u3001\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002 \u307e\u305f\u3001\u904e\u53bbIssue\u306b\u3066\u3054\u8cea\u554f\u5185\u5bb9\u3068\u4f3c\u305f\u8cea\u554f\u304c\u3042\u308a\u307e\u3057\u305f\u306e\u3067\u3001\u3053\u3061\u3089\u3082\u5408\u308f\u305b\u3066\u3054\u78ba\u8a8d\u304f\u3060\u3055\u3044\u3002

"},{"location":"faq.html#docker_runsh-35-rocker","title":"docker_run.sh: \u884c 35: rocker: \u30b3\u30de\u30f3\u30c9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u304c\u51fa\u307e\u3059\u3002","text":"

rocker\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u304a\u9858\u3044\u3057\u307e\u3059\u3002

"},{"location":"faq.html#warning-unable-to-detect-os-for-base-image-aichallenge-2024-dev-maybe-the-base-image-does-not-exist","title":"WARNING unable to detect os for base image 'aichallenge-2024-dev', maybe the base image does not exist\u304c\u51fa\u307e\u3059\u3002","text":"

Docker\u30a4\u30e1\u30fc\u30b8\u306e\u30d3\u30eb\u30c9\u3092\u304a\u9858\u3044\u3057\u307e\u3059\u3002

"},{"location":"faq.html#dockerpull","title":"Docker\u304cpull\u3067\u304d\u307e\u305b\u3093","text":"

newgrp docker\u304bsudo service docker restart\u3067docker\u306e\u518d\u8d77\u52d5\u307e\u305f\u306fUbuntu\u306e\u518d\u8d77\u52d5\u3092\u304a\u9858\u3044\u3057\u307e\u3059\u3002

"},{"location":"faq.html#_2","title":"\u64cd\u4f5c","text":""},{"location":"faq.html#ros","title":"ROS","text":""},{"location":"faq.html#python-no-module-named-error","title":"python\u3067\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u4f5c\u6210\u3059\u308b\u3068\u5b9f\u884c\u6642 no module named * \u306eerror\u304c\u8d77\u304d\u307e\u3059\u3002","text":"

\u3053\u3061\u3089\u3092\u53c2\u8003\u306b\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002

"},{"location":"faq.html#_3","title":"\u30c8\u30d4\u30c3\u30af\u306e\u578b\u3092\u8abf\u3079\u308b\u306b\u306f\u3001\u3069\u306e\u3088\u3046\u306a\u30b3\u30de\u30f3\u30c9\u3092\u6253\u3066\u3070\u3088\u308d\u3057\u3044\u3067\u3057\u3087\u3046\u304b\u3002","text":"

topic\u306e\u578b\u3092\u8abf\u3079\u308b\u969b\u306fros2 topic info -v fuga_topic\u3082\u3057\u304f\u306fnode\u304c\u7279\u5b9a\u3067\u304d\u308c\u3070\u3001ros2 node info hoge-node\u3067\u8abf\u3079\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u305d\u306e\u4ed6\u306b\u3082ROS\u306b\u95a2\u3059\u308b\u60c5\u5831\u3092\u8abf\u3079\u305f\u3044\u5834\u5408\u306f\u300cROS2\u3000\u30b3\u30de\u30f3\u30c9\u300d\u3067\u3001\u30cd\u30c3\u30c8\u691c\u7d22\u3059\u308b\u3068\u826f\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002

"},{"location":"faq.html#autoware","title":"Autoware","text":""},{"location":"faq.html#rviz","title":"Rviz\u4e0a\u3067\u5730\u56f3\u30fb\u30eb\u30fc\u30c8\u304c\u8868\u793a\u3055\u308c\u307e\u305b\u3093\u3002","text":"

\u4f7f\u7528\u3057\u3066\u3044\u308b\u30de\u30c3\u30d7\u30c7\u30fc\u30bf\u304c\u9069\u5207\u306a\u5834\u6240\u306b\u914d\u7f6e\u3055\u308c\u3044\u308b\u304b\u30fb\u6b63\u3057\u3044\u304b\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002

"},{"location":"faq.html#autoware_1","title":"\u3069\u306e\u3088\u3046\u306b\u3057\u3066Autoware\u3092\u6539\u826f\u3057\u3066\u53c2\u52a0\u3059\u308c\u3070\u3088\u3044\u304b\u304c\u5206\u304b\u308a\u307e\u305b\u3093\u3002","text":"

Autoware\u306e\u30ce\u30fc\u30c9\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u8abf\u6574\u3084\u30ce\u30fc\u30c9\u6539\u826f\u30fb\u7f6e\u304d\u63db\u3048\u306a\u3069\u304c\u65b9\u6cd5\u3068\u3057\u3066\u3042\u308a\u307e\u3059\u3002 Autoware\u306e\u57fa\u672c\u69cb\u6210\u306a\u3069\u3092\u672c\u30b5\u30a4\u30c8\u306e\u5225\u30bf\u30d6\u3084\u3053\u3061\u3089\u306b\u5c11\u3057\u307e\u3068\u3081\u3066\u304a\u308a\u307e\u3059\u306e\u3067\u3001\u3054\u6d3b\u7528\u304f\u3060\u3055\u3044\u3002 \u307e\u305f\u3001\u5916\u90e8\u306e\u65b9\u306e\u8a18\u4e8b\u3067\u3059\u304c\u3001\u3053\u3061\u3089\u3082\u53c2\u8003\u306b\u306a\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002

"},{"location":"faq.html#behavior-pathmotion-planner","title":"\u7d4c\u8def\u751f\u6210\uff08Behavior Path/Motion Planner\uff09\u306b\u95a2\u3057\u3066\u6559\u3048\u3066\u304f\u3060\u3055\u3044\u3002","text":"

behavior planner\u306f\u3001\u4e3b\u306bODD3\u4ee5\u4e0a\u306e\u3044\u308f\u3086\u308b\u4e00\u822c\u9053\u3067\u306e\u8d70\u884c\u3092\u884c\u3046\u306e\u306b\u5fc5\u8981\u306a\u6a5f\u80fd\uff08\u4e00\u6642\u505c\u6b62\u7dda\u3001\u6a2a\u65ad\u6b69\u9053\u3001\u4fe1\u53f7\u505c\u6b62\uff09\u306a\u3069\u7834\u3063\u3066\u306f\u3044\u3051\u306a\u3044\u4ea4\u901a\u30eb\u30fc\u30eb\u3092\u52a0\u5473\u3057\u305fplanning\u3092\u884c\u3046\u3082\u306e\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002 \u305d\u308c\u6545\u3001\u56de\u907f\u6a5f\u80fd\u3082\u30eb\u30fc\u30eb\u30d9\u30fc\u30b9\u306e\u56de\u907f\u3067\u6700\u9069\u5316\u3092\u884c\u3063\u3066\u3044\u307e\u305b\u3093\u3002 \u4e00\u65b9\u3067motion\u306fODD2\u4ee5\u4e0b\u306e\u3044\u308f\u3086\u308b\u9650\u5b9a\u533a\u57df\u3084\u9650\u5b9a\u7a7a\u9593\u3067\u306e\u8d70\u884c\u3092\u5b9f\u73fe\u3059\u308b\u3082\u306e\u3067\u3001\u4f8b\u3048\u3070\u4fe1\u53f7\u3084\u3001\u5730\u56f3\u306e\u60c5\u5831\u7b49\u3068\u3044\u3063\u305f\u60c5\u5831\u3092\u6271\u3046\u3082\u306e\u306f\u3042\u308a\u307e\u305b\u3093\u3002 \u969c\u5bb3\u7269\u306e\u56de\u907f\u3084\u3001\u505c\u6b62\u3001\u901f\u5ea6\u306e\u6700\u9069\u5316\u306a\u3069\u3001\u901a\u5e38\u8d70\u884c\u306b\u5fc5\u8981\u306a\u6a5f\u80fd\u3092\u62c5\u3046\u3082\u306e\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002

"},{"location":"faq.html#autoware_2","title":"Autoware\u306e\u56de\u907f\u884c\u52d5\u306b\u3064\u3044\u3066\u6559\u3048\u3066\u4e0b\u3055\u3044","text":"

\u56de\u907f\u306b\u306f\u4e8c\u7a2e\u985e\u3042\u308a\u3001behavior path\u3068obstacle avoidance\u304c\u3042\u308a\u307e\u3059\u3002 \u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306fobstacle avoidabce\u306e\u56de\u907f\u306foff\u3067\u3001\u7d4c\u8def\u306e\u5e73\u6ed1\u5316\u306e\u307f\u884c\u308f\u308c\u308b\u8a2d\u5b9a\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002 \u307e\u305f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306fbehavior path\u3067\u56de\u907f\u3059\u308b\u8a2d\u5b9a\u306b\u306f\u306a\u3063\u3066\u3044\u307e\u3059\u304c\u305d\u306e\u969b\u306e\u56de\u907f\u5bfe\u8c61\u7269\u306f\u8eca\u3068\u30c8\u30e9\u30c3\u30af\u306e\u307f\u3067\u3059\u3002

"},{"location":"faq.html#center-point","title":"center point\u306b\u3064\u3044\u3066\u6559\u3048\u3066\u4e0b\u3055\u3044\u3002","text":"

center point\u306f\u8eca\u4e21\u3068\u30c8\u30e9\u30c3\u30af\u3068\u6b69\u884c\u8005\u3092\u691c\u77e5\u3057\u3066\u304f\u308c\u307e\u3059\u304c\u3001\u30c0\u30f3\u30dc\u30fc\u30eb\u306a\u3069\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u3066\u3044\u306a\u3044\u3082\u306e\u306f\u691c\u77e5\u3067\u304d\u307e\u305b\u3093\u3002 \u305f\u3060\u3001\u73fe\u72b6\u306eautoware\u3068\u3057\u3066\u306fplanning\u304cobject\u3092\u53d7\u3051\u53d6\u3089\u306a\u3044\u3068\u52d5\u304b\u306a\u3044\u3088\u3046\u306b\u306a\u3063\u3066\u304a\u308a\u3001object\u3092\u53d7\u3051\u53d6\u308b\u6bb5\u968e\u3067center point\u3092\u4f7f\u3046\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u69cb\u6210\u306b\u3057\u3066\u3044\u308b\u3068\u3001\u4ee5\u4e0b\u306e2\u3064\u306e\u539f\u56e0\u306b\u3088\u308a\u4e0d\u5177\u5408\u304c\u8d77\u3053\u308a\u307e\u3059\u3002

  1. center point\u304c\u6b7b\u3093\u3060\u3068\u304d\u306bplanning\u304c\u7d4c\u8def\u3092\u751f\u6210\u3067\u304d\u306a\u304f\u306a\u308b
  2. data association\u3067clustering\u306b\u3088\u308b\u969c\u5bb3\u7269\u691c\u77e5\u7d50\u679c\u304c\u6d88\u3055\u308c\u308b

\u305d\u306e\u305f\u3081\u3001perception\u306e\u69cb\u6210\u306fautoware mini\u304c\u7406\u60f3\u7684\u3067\u3059\u304c\u3001\u3053\u306e\u3042\u305f\u308a\u3092\u7406\u89e3\u3057\u3066\u30ce\u30fc\u30c9\u306e\u8db3\u3057\u5f15\u304d\u3001\u53d6\u6368\u9078\u629e\u3092\u3057\u3066\u5b9f\u88c5\u3059\u308b\u3053\u3068\u306f\u306f\u306a\u304b\u306a\u304b\u96e3\u3057\u3044\u305f\u3081\u3001center point\u304c\u554f\u984c\u306a\u304f\u52d5\u304f\u3088\u3046\u306b\u3059\u308b\u3053\u3068\u306f\u91cd\u8981\u306b\u306a\u3063\u3066\u304f\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002 \u53c2\u8003

"},{"location":"faq.html#awsim_1","title":"AWSIM","text":""},{"location":"faq.html#_4","title":"\u8eca\u3092\u521d\u671f\u4f4d\u7f6e\u306b\u30ea\u30bb\u30c3\u30c8\u3059\u308b\u306b\u306f\u3069\u3046\u3059\u308c\u3070\u3044\u3044\u3067\u3057\u3087\u3046\u304b\u3002","text":"

\u73fe\u72b6\u3001AWSIM\u3092\u518d\u8d77\u52d5\u3059\u308b\u65b9\u6cd5\u3057\u304b\u3054\u3056\u3044\u307e\u305b\u3093\u3002

"},{"location":"faq.html#awsim_2","title":"AWSIM\u306e\u52d5\u4f5c\u304c\u5b89\u5b9a\u3057\u307e\u305b\u3093\u3002","text":"

GPU\u306e\u6027\u80fd\u4e0d\u8db3\u304c\u539f\u56e0\u306e\u4e00\u3064\u306b\u306a\u308a\u307e\u3059\u3002 \u9ad8\u6027\u80fdGPU\u306e\u5229\u7528\u304c\u96e3\u3057\u3044\u5834\u5408\u306f\u3001awsim\u306e\u753b\u9762\u306e\u4e0b\u90e8\u306b\u30b9\u30e9\u30a4\u30c9\u30d0\u30fc\u3067time scale\u30920.5\u304f\u3089\u3044\u306b\u8a2d\u5b9a\u3059\u308b\u3068\u5b89\u5b9a\u3057\u3066\u52d5\u4f5c\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002

"},{"location":"faq.html#mpcawsim","title":"mpc\u306e\u30c1\u30e5\u30fc\u30cb\u30f3\u30b0\u3092\u3057\u305f\u3044\u306e\u3067\u3059\u304c\uff0c\u4eca\u56deAWSIM\u3067\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u30e2\u30c7\u30eb\u30d1\u30e9\u30e1\u30fc\u30bf\uff08\u9045\u308c\u3084\u6642\u5b9a\u6570\u306a\u3069\uff09\u306f\u516c\u958b\u3055\u308c\u3066\u3044\u306a\u3044\u3067\u3057\u3087\u3046\u304b\uff0e","text":"

\u9045\u308c\u3084\u6642\u5b9a\u6570\u306b\u3064\u3044\u3066\u306f\u8a08\u6e2c\u3082\u516c\u958b\u3082\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u304c\u3001\u57fa\u672c\u7684\u306a\u4ed5\u69d8\u306b\u3064\u3044\u3066\u306f\u3053\u3061\u3089\u306b\u516c\u958b\u3055\u308c\u3066\u3044\u307e\u3059\u3002

"},{"location":"faq.html#_5","title":"\u5927\u4f1a\u5168\u822c","text":""},{"location":"faq.html#_6","title":"\u30bb\u30f3\u30b5\u306e\u8ffd\u52a0\u53d6\u308a\u4ed8\u3051\u306f\u53ef\u80fd\u3067\u3059\u304b\u3002","text":"

\u540c\u4e00\u6761\u4ef6\u30fb\u96e3\u6613\u5ea6\u3067\u8ab2\u984c\u306b\u53d6\u308a\u7d44\u3093\u3067\u3044\u305f\u3060\u304f\u305f\u3081\u306b\u3001\u65b0\u305f\u306a\u30bb\u30f3\u30b5\u306e\u53d6\u308a\u4ed8\u3051\u306f\u4e0d\u53ef\u3068\u3057\u3066\u3044\u307e\u3059\u3002

"},{"location":"getting-started.html","title":"\u306f\u3058\u3081\u65b9","text":"

\u3053\u306e\u30da\u30fc\u30b8\u3067\u306fAI\u30c1\u30e3\u30ec\u30f3\u30b8\u3067\u306e\u4e00\u9023\u306e\u6d41\u308c\u3092\u8a18\u8f09\u3057\u307e\u3059\u3002

\u672c\u5927\u4f1a\u3067\u306fUbuntu 22.04\u3092\u642d\u8f09\u3057\u305fPC\u4e00\u53f0\u306e\u307f\u3067\u53c2\u52a0\u304c\u3067\u304d\u307e\u3059\u3002

\u307e\u305a\u30aa\u30f3\u30e9\u30a4\u30f3\u63a1\u70b9\u74b0\u5883\u306e\u5229\u7528\u3092\u884c\u3044\u3001\u305d\u306e\u5f8c\u74b0\u5883\u69cb\u7bc9\u30fb\u958b\u767a\u3068\u9032\u3093\u3067\u3044\u304d\u307e\u3059\u3002

"},{"location":"getting-started.html#ai2024","title":"\u81ea\u52d5\u904b\u8ee2AI\u30c1\u30e3\u30ec\u30f3\u30b82024\u3078\u306e\u53c2\u52a0\u767b\u9332","text":"

\u53c2\u52a0\u767b\u9332\u304c\u6e08\u3093\u3067\u3044\u306a\u3044\u65b9\u306f\u4e0a\u8a18\u30ea\u30f3\u30af\u304b\u3089\u767b\u9332\u3092\u304a\u9858\u3044\u3057\u307e\u3059\u3002

"},{"location":"getting-started.html#_2","title":"\u30aa\u30f3\u30e9\u30a4\u30f3\u63a1\u70b9\u74b0\u5883\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3068\u63d0\u51fa","text":"

\u672c\u5927\u4f1a\u3067\u306f\u3001\u30aa\u30f3\u30e9\u30a4\u30f3\u74b0\u5883\u306b\u63d0\u51fa\u30d5\u30a1\u30a4\u30eb\uff08\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306e\u5727\u7e2e\u30d5\u30a1\u30a4\u30eb\uff09\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b\u3053\u3068\u3067\u81ea\u52d5\u63a1\u70b9\u304c\u884c\u308f\u308c\u3001\u9806\u4f4d\u304c\u6c7a\u5b9a\u3055\u308c\u307e\u3059\u3002

\u6b21\u306e4\u30b9\u30c6\u30c3\u30d7\u3067\u307e\u305a\u306f\u30aa\u30f3\u30e9\u30a4\u30f3\u63a1\u70b9\u74b0\u5883\u3092\u4f7f\u3063\u3066\u307f\u307e\u3057\u3087\u3046\uff01

Info

\u30aa\u30f3\u30e9\u30a4\u30f3\u63a1\u70b9\u74b0\u5883\u3078\u306e\u30a2\u30af\u30bb\u30b9\u304b\u3089\u63d0\u51fa\u307e\u3067\u306e\u6240\u8981\u6642\u9593\u306f\uff15\u5206\u7a0b\u5ea6\u3067\u3059

  1. \u81ea\u52d5\u904b\u8ee2AI\u30c1\u30e3\u30ec\u30f3\u30b8\u306e\u53c2\u52a0\u767b\u9332\u5f8c\u3002\u30ed\u30b0\u30a4\u30f3\u60c5\u5831\u304c\u767b\u9332\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306b\u9001\u3089\u308c\u3066\u304d\u307e\u3059\uff0e

  2. \u30aa\u30f3\u30e9\u30a4\u30f3\u63a1\u70b9\u74b0\u5883\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3001\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u8a18\u8f09\u306e\u8cc7\u683c\u60c5\u5831\u3092\u7528\u3044\u3066\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044\u3002

  3. \u30a2\u30af\u30bb\u30b9\u304c\u51fa\u6765\u305f\u3089\u3001\u4e00\u5ea6\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306e\u63d0\u51fa\u3092\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002 \u4e0b\u306e\u8d64\u30dc\u30bf\u30f3\u304b\u3089\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u306e\u5727\u7e2e\u30d5\u30a1\u30a4\u30eb\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u307e\u3059\u3002

  4. \u30aa\u30f3\u30e9\u30a4\u30f3\u63a1\u70b9\u74b0\u5883\u306e\u300cUPLOAD\u300d\u30dc\u30bf\u30f3\u304b\u3089\u305d\u306e\u307e\u307e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b\u3053\u3068\u3067\u63d0\u51fa\u304c\u3067\u304d\u307e\u3059\u3002

\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u306e\u5727\u7e2e\u30d5\u30a1\u30a4\u30eb\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9

"},{"location":"getting-started.html#ai","title":"AI\u30c1\u30e3\u30ec\u30f3\u30b8\u306e\u74b0\u5883\u69cb\u7bc9","text":"

\u4e0a\u8a18\u30ea\u30f3\u30af\u3088\u308a\u74b0\u5883\u69cb\u7bc9\u3092\u884c\u3063\u3066\u4e0b\u3055\u3044\u3002

Info

\u672c\u5927\u4f1a\u3067\u306fUbuntu 22.04\u3092\u642d\u8f09\u3057\u305fPC\u4e00\u53f0\u306e\u307f\u3067\u53c2\u52a0\u304c\u3067\u304d\u307e\u3059\u3002

"},{"location":"getting-started.html#ai_1","title":"AI\u30c1\u30e3\u30ec\u30f3\u30b8\u3067\u306e\u958b\u767a\u306e\u9032\u3081\u65b9","text":"

\u4e0a\u8a18\u30ea\u30f3\u30af\u3088\u308a\u3001\u5b9f\u969b\u306b\u958b\u767a\u3057\u3066\u307f\u307e\u3057\u3087\u3046\uff01

"},{"location":"getting-started.html#_3","title":"\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306e\u63d0\u51fa","text":"

\u5b8c\u6210\u3057\u305f\u30b3\u30fc\u30c9\u306e\u63d0\u51fa\u306f\u30aa\u30f3\u30e9\u30a4\u30f3\u63a1\u70b9\u74b0\u5883\u304b\u3089\u884c\u3044\u307e\u3059\u3002 \u4e0a\u8a18\u30ea\u30f3\u30af\u3088\u308a\u63d0\u51fa\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3092\u884c\u3063\u3066\u304f\u3060\u3055\u3044\u3002

"},{"location":"index.html","title":"Japan Automotive AI Challenge 2024","text":""},{"location":"index.html#_1","title":"\u30b3\u30f3\u30bb\u30d7\u30c8","text":"

Info

\u672c\u5927\u4f1a\u306f\u3001CASE\u3001MaaS\u3068\u547c\u3070\u308c\u308b\u65b0\u305f\u306a\u6280\u8853\u9818\u57df\u306b\u304a\u3044\u3066\u3001\u3053\u308c\u304b\u3089\u306e\u81ea\u52d5\u8eca\u696d\u754c\u3092\u727d\u5f15\u3059\u308b\u6280\u8853\u8005\u306e\u767a\u6398\u80b2\u6210\u306e\u305f\u3081\u306e\u65b0\u305f\u306a\u53d6\u308a\u7d44\u307f\u3068\u3057\u3066\u5b9f\u65bd\u3057\u3066\u3044\u307e\u3059\u3002

\u672c\u5927\u4f1a\u3067\u306f\u81ea\u52d5\u8d70\u884c\u30e2\u30d3\u30ea\u30c6\u30a3\u306b\u958b\u767a\u3057\u305f\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u642d\u8f09\u3055\u305b\u308b\u8d70\u884c\u7af6\u6280\u307e\u3067\u884c\u3044\u307e\u3059\u3002\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc\u30b5\u30a4\u30a8\u30f3\u30b9\u3001AI\u3001\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3084\u60c5\u5831\u51e6\u7406\u306b\u95a2\u308f\u308b\u6280\u8853\u8005\u30fb\u7814\u7a76\u8005\u30fb\u5b66\u751f\u7b49\u306e\u30c1\u30e3\u30ec\u30f3\u30b8\u306e\u5834\u3001\u307e\u305f\u5b66\u7fd2\u53ca\u6a5f\u4f1a\u3092\u63d0\u4f9b\u3057\u3001\u6709\u6a5f\u7684\u306a\u7e4b\u304c\u308a\u3092\u5b9f\u73fe\u3059\u308b\u5834\u3092\u76ee\u6307\u3057\u307e\u3059\u3002

"},{"location":"index.html#_2","title":"\u76ee\u7684","text":""},{"location":"index.html#_3","title":"\u6280\u8853\u7684\u306a\u89b3\u70b9\u304b\u3089\u306e\u5927\u4f1a\u306e\u5f79\u5272","text":"
  • \u30cf\u30fc\u30c9\u30a6\u30a7\u30a2\u3092\u7406\u89e3\u3057\u306a\u304c\u3089\u306e\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u901a\u3057\u3066SDV\u958b\u767a\u3092\u5b66\u3076
  • \u7d99\u7d9a\u7684\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3 / \u7d99\u7d9a\u7684\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\uff08CI/CD\uff09\u3092\u5b66\u3076
  • \u958b\u767a\u3092Open Source Software\uff08OSS\uff09\u3067\u884c\u3044\u793e\u4f1a\u5b9f\u88c5\u306b\u5411\u3051\u305f\u30a4\u30ce\u30d9\u30fc\u30b7\u30e7\u30f3\u306e\u5834\u3068\u3059\u308b
"},{"location":"index.html#_4","title":"\u4eba\u6750\u80b2\u6210\u3068\u3057\u3066\u306e\u5927\u4f1a\u306e\u5f79\u5272","text":"
  • \u5e45\u5e83\u3044\u5206\u91ce\u306e\u30a8\u30f3\u30b8\u30cb\u30a2\u53c2\u52a0\u306e\u4fc3\u9032
  • \u6559\u80b2\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u63d0\u4f9b\u306b\u3088\u308b\u30b9\u30ad\u30eb\u958b\u767a\u306e\u52a0\u901f
  • \u5b9f\u6a5f\u3068\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u306e\u3059\u308a\u5408\u308f\u305b\u3092\u884c\u3044\u306a\u304c\u3089SDV\u306e\u958b\u767a\u306e\u4ed5\u65b9\u3092\u5b66\u3076
  • \u30c7\u30b8\u30bf\u30eb\u30c4\u30a4\u30f3\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u901a\u3058\u305f\u6280\u8853\u9769\u65b0
  • \u6280\u8853\u30b3\u30f3\u30da\u00d7\u30a8\u30f3\u30bf\u30e1=\u30e2\u30fc\u30bf\u30fc\u30b9\u30dd\u30fc\u30c4\u3092\u984c\u6750\u3068\u3057\u305f\u300c\u61a7\u308c\u300d\u3084\u300c\u60c5\u71b1\u30fb\u8208\u596e\u300d\u306e\u5275\u51fa
"},{"location":"index.html#_5","title":"\u6982\u8981","text":""},{"location":"index.html#_6","title":"\u4e88\u9078","text":"

\u30aa\u30f3\u30e9\u30a4\u30f3\u306e\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u3067\u5b9f\u65bd\u3057\u307e\u3059\u3002\u4e88\u9078\u306e\u7af6\u6280\u306f\u30c7\u30b8\u30bf\u30eb\u30c4\u30a4\u30f3\u6307\u5411\u306eAWSIM\u3092\u7528\u3044\u3066\u30b3\u30fc\u30b9\u3092\u3088\u308a\u901f\u304f\u8d70\u884c\u3059\u308b\u3053\u3068\u3092\u76ee\u6307\u3057\u307e\u3059\u3002\u53c2\u52a0\u8005\u306f\u3001Autoware\u203b\u306e\u69cb\u9020\u3092\u5b66\u3076\u3060\u3051\u3067\u306a\u304f\u3001\u5b9f\u969b\u306b\u884c\u52d5\u3001\u5224\u65ad\u306e\u90e8\u5206\u306b\u3064\u3044\u3066\u30d1\u30e9\u30e1\u30fc\u30bf\u8abf\u6574\u3092\u884c\u3044\u3001\u307e\u305f\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u65b0\u3057\u3044\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u958b\u767a\u3082\u884c\u3044\u307e\u3059\u3002

"},{"location":"index.html#_7","title":"\u6c7a\u52dd","text":"

\u7af6\u6280\u8eca\u4e21\u3067\u3042\u308bEV\u30ec\u30fc\u30b7\u30f3\u30b0\u30ab\u30fc\u30c8\u3092\u4f7f\u7528\u3057\u305f\u5927\u4f1a\u3092\u884c\u3044\u307e\u3059\u3002\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u3067\u5f97\u305f\u77e5\u898b\u3092\u5b9f\u8eca\u4e21\u306b\u6d3b\u304b\u3057\u3064\u3064\u3001AWSIM\u3067\u306f\u518d\u73fe\u3067\u304d\u306a\u3044\u5b9f\u8eca\u306a\u3089\u3067\u306f\u306e\u8ab2\u984c\u306b\u3082\u30c1\u30e3\u30ec\u30f3\u30b8\u3057\u307e\u3059\u3002

\u4f8b\u3048\u3070\u53c2\u52a0\u8005\u306b\u306f\u5b9f\u8eca\u4e21\u306b\u9069\u7528\u3059\u308b\u305f\u3081\u3001\u30d1\u30e9\u30e1\u30fc\u30bf\u8abf\u6574\u306b\u3082\u6311\u6226\u3057\u3066\u3082\u3089\u3044\u307e\u3059\u3002\u307e\u305f\u3001\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u518d\u73fe\u3067\u304d\u306a\u3044\u30ce\u30a4\u30ba\u51e6\u7406\u3001\u9045\u5ef6\u5bfe\u7b56\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u958b\u767a\u3082\u884c\u3044\u307e\u3059\u3002

"},{"location":"index.html#_8","title":"\u8868\u5f70","text":"

\u8cde\u91d1\u306e\u7dcf\u984d\u306f100\u4e07\u5186\u4ee5\u4e0a\u3068\u306a\u3063\u3066\u304a\u308a\u307e\u3059\u3002 \u8a73\u7d30\u306f2024\u5e74\u5ea6\u81ea\u52d5\u904b\u8ee2AI\u30c1\u30e3\u30ec\u30f3\u30b8\u306e\u958b\u50ac\u6982\u8981\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002

"},{"location":"index.html#_9","title":"\u8d70\u884c\u30b3\u30fc\u30b9","text":""},{"location":"index.html#_10","title":"\u4f7f\u7528\u8eca\u4e21","text":""},{"location":"index.html#_11","title":"\u6311\u6226\u8ab2\u984c","text":""},{"location":"competition/rules/index.html","title":"Redirect","text":"Redirect"},{"location":"course/avoidance.html","title":"03. \u969c\u5bb3\u7269\u56de\u907f","text":"

\u5b89\u5168\u306a\u81ea\u52d5\u904b\u8ee2\u3092\u884c\u3046\u305f\u3081\u306b\u3001\u969c\u5bb3\u7269\u3092\u8a8d\u8b58\u3057\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u56de\u907f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u3053\u3067\u306f\u56f3\u306e\u3088\u3046\u306b\u3001\u969c\u5bb3\u7269\u3092\u8a8d\u8b58\u3057\u3066\u56de\u907f\u3057\u306a\u304c\u3089\u76ee\u6a19\u5730\u70b9\u306b\u5230\u9054\u3059\u308b\u3053\u3068\u3092\u76ee\u6307\u3057\u307e\u3059\u3002

"},{"location":"course/avoidance.html#03-01-lidar","title":"03-01. lidar\u304b\u3089\u70b9\u7fa4\u3092\u53d6\u5f97\u3057\u969c\u5bb3\u7269\u691c\u77e5\u3092\u3059\u308b","text":"

\u81ea\u52d5\u904b\u8ee2\u8eca\u4e21\u3067\u306f\u3001\u969c\u5bb3\u7269\u3092\u8a8d\u8b58\u3059\u308b\u305f\u3081\u306b\u69d8\u3005\u306a\u30bb\u30f3\u30b5\u30fc\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u4ee3\u8868\u7684\u306a\u30bb\u30f3\u30b5\u30fc\u306b\u306f\u4ee5\u4e0b\u306e\u3082\u306e\u304c\u3042\u308a\u307e\u3059\uff1a

  1. LiDAR\uff08Light Detection and Ranging\uff09:
    • \u30ec\u30fc\u30b6\u30fc\u5149\u3092\u767a\u5c04\u3057\u3001\u7269\u4f53\u306b\u5f53\u305f\u3063\u3066\u623b\u3063\u3066\u304f\u308b\u307e\u3067\u306e\u6642\u9593\u3092\u6e2c\u5b9a\u3059\u308b\u3053\u3068\u3067\u8ddd\u96e2\u3092\u8a08\u6e2c\u3057\u307e\u3059\u3002
    • \u9ad8\u7cbe\u5ea6\u306a3D\u70b9\u7fa4\u30c7\u30fc\u30bf\u3092\u751f\u6210\u3057\u3001\u5468\u56f2\u306e\u74b0\u5883\u3092\u8a73\u7d30\u306b\u628a\u63e1\u3067\u304d\u307e\u3059\u3002
  2. \u30ab\u30e1\u30e9:
    • \u5149\u5b66\u30bb\u30f3\u30b5\u30fc\u3092\u4f7f\u7528\u3057\u3066\u753b\u50cf\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002
    • \u753b\u50cf\u3092\u7528\u3044\u3066\u7269\u4f53\u8a8d\u8b58\u3001\u8eca\u7dda\u691c\u51fa\u3001\u4ea4\u901a\u6a19\u8b58\u8a8d\u8b58\u306a\u3069\u3092\u884c\u3044\u307e\u3059\u3002
  3. \u30ec\u30fc\u30c0\u30fc\uff08Radio Detection and Ranging\uff09:
    • \u96fb\u6ce2\u3092\u767a\u5c04\u3057\u3001\u53cd\u5c04\u3057\u3066\u623b\u3063\u3066\u304f\u308b\u307e\u3067\u306e\u6642\u9593\u3092\u6e2c\u5b9a\u3057\u307e\u3059\u3002
    • \u9577\u8ddd\u96e2\u306e\u969c\u5bb3\u7269\u691c\u51fa\u306b\u512a\u308c\u3001\u60aa\u5929\u5019\u3067\u3082\u5b89\u5b9a\u3057\u305f\u6027\u80fd\u3092\u767a\u63ee\u3057\u307e\u3059\u3002
  4. \u8d85\u97f3\u6ce2\u30bb\u30f3\u30b5\u30fc:
    • \u8d85\u97f3\u6ce2\u3092\u767a\u5c04\u3057\u3001\u53cd\u5c04\u3057\u3066\u623b\u3063\u3066\u304f\u308b\u307e\u3067\u306e\u6642\u9593\u3092\u6e2c\u5b9a\u3057\u307e\u3059\u3002
    • \u8fd1\u8ddd\u96e2\u306e\u969c\u5bb3\u7269\u691c\u51fa\u306b\u9069\u3057\u3066\u304a\u308a\u3001\u99d0\u8eca\u652f\u63f4\u30b7\u30b9\u30c6\u30e0\u306a\u3069\u306b\u5229\u7528\u3055\u308c\u307e\u3059\u3002

\u4eca\u56de\u3001lidar\u3092\u7528\u3044\u305f\u969c\u5bb3\u7269\u691c\u77e5\u3092\u6271\u3046\u305f\u3081\u306b\u7c21\u6613lidar\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002

\u5b9f\u969b\u306elidar\u306f\u89b3\u6e2c\u7269\u4f53\u306e\u88cf\u5074\u307e\u3067\u898b\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u304c\u3001 \u3053\u306e\u7c21\u6613lidar\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u306f\u7269\u4f53\u306e\u8f2a\u90ed\u3092\u70b9\u7fa4\u5316\u3057\u3001\u8eca\u4e21\u306e\u4e00\u5b9a\u7bc4\u56f2\u5185\u306e\u70b9\u7fa4\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002

src/autoware_practice_lidar_simulator/config/object_centers.csv\u3067\u5ea7\u6a19\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u3067\u81ea\u7531\u306b\u969c\u5bb3\u7269\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 3\u3064\u306e\u969c\u5bb3\u7269\u3092\u914d\u7f6e\u3059\u308b\u305f\u3081\u306b\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306bobejct_centers.csv\u3092\u7de8\u96c6\u3057\u307e\u3059\u3002

+  x_center,y_center\n+  7.0,0.0\n+  10.0,5.0\n+  5.0,-3.0\n

\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u3092\u8d77\u52d5\u3057\u3001\u4e00\u5b9a\u7bc4\u56f2\u5185\u306b\u3042\u308b\u969c\u5bb3\u7269\u306e\u70b9\u7fa4\u304c\u8868\u793a\u3055\u308c\u308b\u304b\u78ba\u8a8d\u3057\u307e\u3057\u3087\u3046\u3002

ros2 launch autoware_practice_launch practice.launch.xml\n

\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5225\u3005\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u5b9f\u884c\u3057\u3066\u3001\u8eca\u4e21\u306e\u4f4d\u7f6e\u304c\u5909\u5316\u3059\u308b\u306e\u306b\u4f34\u3063\u3066\u53d6\u5f97\u3067\u304d\u308b\u70b9\u7fa4\u304c\u5909\u5316\u3059\u308b\u306e\u3092\u78ba\u8a8d\u3057\u307e\u3057\u3087\u3046\u3002

ros2 run autoware_practice_course trajectory_loader --ros-args -p path_file:=src/autoware_practice_course/config/trajectory_zigzag.csv\n
ros2 run autoware_practice_course trajectory_follower --ros-args -p kp:=5.0 -p lookahead_distance:=5.0\n

"},{"location":"course/avoidance.html#03-02","title":"03-02. \u70b9\u7fa4\u60c5\u5831\u306b\u57fa\u3065\u3044\u3066\u7d4c\u8def\u30fb\u8ecc\u9053\u8a08\u753b\u3057\u8eca\u4e21\u3092\u8ffd\u5f93\u3055\u305b\u308b","text":"

Warning

\u4f5c\u6210\u4e2d

"},{"location":"course/index.html","title":"Autoware \u5165\u9580\u8b1b\u5ea7","text":""},{"location":"course/index.html#_1","title":"\u306f\u3058\u3081\u306b","text":"

\u3053\u306e\u8b1b\u5ea7\u3067\u306f Autoware \u306e\u57fa\u672c\u7684\u306a\u958b\u767a\u65b9\u6cd5\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002 \u8b1b\u5ea7\u306f\u6f14\u7fd2\u5f62\u5f0f\u3068\u306a\u3063\u3066\u304a\u308a\u3001\u8ab2\u984c\u3092\u9054\u6210\u3059\u308b\u305f\u3081\u306e\u30b3\u30fc\u30c9\u3092\u30bc\u30ed\u304b\u3089\u958b\u767a\u3057\u306a\u304c\u3089 Autoware \u306e\u4ed5\u7d44\u307f\u3092\u5b66\u3079\u308b\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002 \u5404\u8b1b\u5ea7\u306e\u30da\u30fc\u30b8\u306b\u306f\u30e1\u30cb\u30e5\u30fc\u304b\u3089\u79fb\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002

"},{"location":"course/index.html#_2","title":"\u74b0\u5883\u69cb\u7bc9","text":"

\u307e\u305a\uff64 Autoware \u306e\u52d5\u4f5c\u306b\u5fc5\u8981\u306a ROS 2 \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\uff61 ROS 2 Documentation \u306e\u624b\u9806\u306b\u3057\u305f\u304c\u3063\u3066Environment setup\u307e\u3067\u3092\u5b8c\u4e86\u3055\u305b\u3066\u304f\u3060\u3055\u3044\uff61

\u3064\u3065\u3051\u3066\uff64\u3044\u304f\u3064\u304b\u306e\u958b\u767a\u652f\u63f4\u30c4\u30fc\u30eb\u30bb\u30c3\u30c8\u3082\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\uff61

# Install rosdep\nsudo apt install python3-rosdep\n# Install vcstool\nsudo apt install python3-vcstool\n# Install colcon\nsudo apt install python3-colcon-common-extensions\n

\u4efb\u610f\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u3066\u5165\u9580\u8b1b\u5ea7\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u30af\u30ed\u30fc\u30f3\u3057\u3001\u30d3\u30eb\u30c9\u3092\u884c\u3063\u3066\u304f\u3060\u3055\u3044\u3002

git clone https://github.com/AutomotiveAIChallenge/autoware-practice.git\ncd autoware-practice\nvcs import src < autoware.repos\nrosdep install -y --from-paths src --ignore-src --rosdistro humble\ncolcon build --symlink-install\n

\u30d3\u30eb\u30c9\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u30d3\u30eb\u30c9\u3055\u308c\u305f\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002 \u307e\u305f\u3001\u4eca\u5f8c\u8b1b\u5ea7\u306e\u4e2d\u3067\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u969b\u306f\u3001\u4e8b\u524d\u306b\u3053\u3061\u3089\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304a\u3044\u3066\u304f\u3060\u3055\u3044\u3002

source install/setup.bash\n
"},{"location":"course/path_planning.html","title":"03. \u7d4c\u8def\u8a08\u753b","text":""},{"location":"course/path_planning.html#03-01","title":"03-01. \u969c\u5bb3\u7269\u306b\u885d\u7a81\u3057\u306a\u3044\u3088\u3046\u306b\u7d4c\u8def\u8a08\u753b\u3092\u884c\u3046","text":"

Warning

\u4f5c\u6210\u4e2d

"},{"location":"course/path_planning.html#03-02","title":"03-02. \u7d4c\u8def\u3092\u57fa\u306b\u8ecc\u9053\u8a08\u753b\u3092\u884c\u3046","text":"

Warning

\u4f5c\u6210\u4e2d

"},{"location":"course/path_planning.html#03-03-pidpure-pursuit","title":"03-03. PID\u3068pure pursuit\u3067\u8eca\u4e21\u3092\u8ecc\u9053\u306b\u8ffd\u5f93\u3055\u305b\u308b","text":"

Warning

\u4f5c\u6210\u4e2d

"},{"location":"course/vehicle.html","title":"01. \u8eca\u4e21\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9","text":""},{"location":"course/vehicle.html#01-01","title":"01-01. \u8eca\u4e21\u306e\u76f4\u9032","text":"

\u4e0b\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3001\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u30fc\u3092\u8d77\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u8d77\u52d5\u304c\u5b8c\u4e86\u3059\u308b\u3068\u3001\u56f3\u306e\u3088\u3046\u306b Rviz \u306b\u8eca\u4e21\u3068\u7dd1\u8272\u306e\u30a8\u30ea\u30a2\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002 \u3053\u306e\u7dd1\u8272\u306e\u30a8\u30ea\u30a2\u306b\u8eca\u4e21\u304c\u5165\u308c\u3070\u8ab2\u984c\u9054\u6210\u3068\u306a\u308b\u305f\u3081\u3001\u307e\u305a\u306f\u8eca\u4e21\u3092\u76f4\u9032\u3055\u305b\u308b\u30ce\u30fc\u30c9\u3092\u4f5c\u6210\u3057\u3066\u3044\u304d\u307e\u3059\u3002

ros2 launch autoware_practice_launch practice.launch.xml problem:=vehicle_forward\n

\u8eca\u4e21\u3092\u52d5\u304b\u3059\u305f\u3081\u306e\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3068\u3057\u3066 /control/command/control_cmd \u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u3053\u308c\u306f AckermannControlCommand \u3068\u3044\u3046\u30e1\u30c3\u30bb\u30fc\u30b8\u3067\u3001\u5404\u30d5\u30a3\u30fc\u30eb\u30c9\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u610f\u5473\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002

Field Name Type Description stamp time \u30b3\u30de\u30f3\u30c9\u306e\u9001\u4fe1\u6642\u523b longitudinal.speed float \u8eca\u4e21\u306e\u76ee\u6a19\u901f\u5ea6 longitudinal.acceleration float \u8eca\u4e21\u306e\u76ee\u6a19\u52a0\u901f\u5ea6 longitudinal.jerk float \u8eca\u4e21\u306e\u76ee\u6a19\u52a0\u52a0\u901f\u5ea6 (\u30b8\u30e3\u30fc\u30af) lateral.steering_tire_angle float \u30b9\u30c6\u30a2\u30ea\u30f3\u30b0\u306e\u76ee\u6a19\u89d2\u5ea6 lateral.steering_tire_rotation_rate float \u30b9\u30c6\u30a2\u30ea\u30f3\u30b0\u306e\u56de\u8ee2\u901f\u5ea6

\u4ee5\u4e0b\u306b\u30b3\u30de\u30f3\u30c9\u3092\u9001\u4fe1\u3059\u308b\u30ce\u30fc\u30c9\u306e\u30b5\u30f3\u30d7\u30eb\u3092\u7528\u610f\u3057\u307e\u3057\u305f\u3002\u30b5\u30f3\u30d7\u30eb\u3067\u306f\u505c\u6b62\u4fdd\u6301\u3059\u308b\u30b3\u30de\u30f3\u30c9\u3092\u9001\u4fe1\u3057\u7d9a\u3051\u308b\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u308b\u306e\u3067\u3001\u30c7\u30fc\u30bf\u3092\u5909\u66f4\u3057\u3066\u8eca\u4e21\u304c\u767a\u9032\u3059\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002

  • vehicle/forward.hpp
  • vehicle/forward.cpp
-  command.longitudinal.speed = 0.0;\n-  command.longitudinal.acceleration = -2.5;\n+  command.longitudinal.speed = 3.0;\n+  command.longitudinal.acceleration = 1.0;\n

\u30b3\u30fc\u30c9\u3092\u66f8\u304d\u63db\u3048\u305f\u3089\u30d3\u30eb\u30c9\u3057\u3066\u5b9f\u884c\u3057\u307e\u3059\u3002\u65b0\u3057\u3044\u7aef\u672b\u3092\u8d77\u52d5\u3057\u3066\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u4e0a\u624b\u304f\u51fa\u6765\u3066\u3044\u308c\u3070\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u30fc\u306e\u8eca\u4e21\u304c\u52d5\u304d\u3001\u6761\u4ef6\u3092\u6e80\u305f\u3057\u3066\u7d50\u679c\u304c SUCCESS \u306b\u306a\u308a\u307e\u3059\u3002

colcon build --symlink-install --packages-select autoware_practice_course\nros2 run autoware_practice_course vehicle_forward\n

"},{"location":"course/vehicle.html#01-02","title":"01-02. \u8eca\u4e21\u306e\u65cb\u56de","text":"

\u5148\u7a0b\u3068\u540c\u69d8\u306b\u4e0b\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3001\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u30fc\u3092\u8d77\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u7dd1\u8272\u306e\u30a8\u30ea\u30a2\u306b\u8eca\u4e21\u304c\u5165\u308c\u3070\u8ab2\u984c\u9054\u6210\u3068\u306a\u308b\u305f\u3081\u3001\u8eca\u4e21\u3092\u65cb\u56de\u3055\u305b\u308b\u30ce\u30fc\u30c9\u3092\u4f5c\u6210\u3057\u3066\u3044\u304d\u307e\u3059\u3002

ros2 launch autoware_practice_launch practice.launch.xml problem:=vehicle_turning\n

\u5148\u7a0b\u5229\u7528\u3057\u305f\u30b5\u30f3\u30d7\u30eb\u306e\u30c7\u30fc\u30bf\u3092\u5909\u66f4\u3057\u3066\u3001\u8eca\u4e21\u304c\u65cb\u56de\u3059\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002

  • vehicle/forward.hpp
  • vehicle/forward.cpp
-  command.lateral.steering_tire_angle = 0.0;\n+  command.lateral.steering_tire_angle = 2.0;\n

\u30b3\u30fc\u30c9\u3092\u66f8\u304d\u63db\u3048\u305f\u3089\u30d3\u30eb\u30c9\u3057\u3066\u5b9f\u884c\u3057\u307e\u3059\u3002\u65b0\u3057\u3044\u7aef\u672b\u3092\u8d77\u52d5\u3057\u3066\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u4e0a\u624b\u304f\u51fa\u6765\u3066\u3044\u308c\u3070\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u30fc\u306e\u8eca\u4e21\u304c\u52d5\u304d\u3001\u6761\u4ef6\u3092\u6e80\u305f\u3057\u3066\u7d50\u679c\u304c SUCCESS \u306b\u306a\u308a\u307e\u3059\u3002

colcon build --symlink-install --packages-select autoware_practice_course\nros2 run autoware_practice_course vehicle_forward\n

"},{"location":"course/vehicle.html#01-03","title":"01-03. \u8eca\u4e21\u306e\u5f8c\u9000","text":"

\u4e0b\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3001\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u30fc\u3092\u8d77\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u306e\u7dd1\u8272\u306e\u30a8\u30ea\u30a2\u306b\u8eca\u4e21\u304c\u5165\u308c\u3070\u8ab2\u984c\u9054\u6210\u3068\u306a\u308b\u305f\u3081\u3001\u307e\u305a\u306f\u8eca\u4e21\u3092\u5f8c\u9000\u3055\u305b\u308b\u30ce\u30fc\u30c9\u3092\u4f5c\u6210\u3057\u3066\u3044\u304d\u307e\u3059\u3002

ros2 launch autoware_practice_launch practice.launch.xml problem:=vehicle_backward\n

\u4ee5\u4e0b\u306b\u5f8c\u9000\u3059\u308b\u305f\u3081\u306e\u30b3\u30de\u30f3\u30c9\u3092\u9001\u4fe1\u3059\u308b\u30ce\u30fc\u30c9\u306e\u30b5\u30f3\u30d7\u30eb\u3092\u7528\u610f\u3057\u307e\u3057\u305f\u3002\u76f4\u9032\u3059\u308b\u305f\u3081\u306e\u30b3\u30fc\u30c9\u3068\u7570\u306a\u308a\u3001\u30ae\u30a2\u3092\u5236\u5fa1\u3059\u308b\u30b3\u30fc\u30c9\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\u30b5\u30f3\u30d7\u30eb\u3067\u306f\u505c\u6b62\u4fdd\u6301\u3059\u308b\u30b3\u30de\u30f3\u30c9\u3092\u9001\u4fe1\u3057\u7d9a\u3051\u308b\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u308b\u306e\u3067\u3001\u30c7\u30fc\u30bf\u3092\u5909\u66f4\u3057\u3066\u8eca\u4e21\u304c\u5f8c\u9000\u3059\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002 \u30ae\u30a2\u304cREVERSE\u306e\u3068\u304d\u306f\u3001\u76ee\u6a19\u52a0\u901f\u5ea6\u3092\u6b63\u3001\u76ee\u6a19\u901f\u5ea6\u3092\u8ca0\u306b\u3057\u307e\u3059\u3002

  • vehicle/backward.hpp
  • vehicle/backward.cpp
-  command.longitudinal.speed = 0.0;\n-  command.longitudinal.acceleration = -2.5;\n+  command.longitudinal.speed = -3.0;\n+  command.longitudinal.acceleration = 1.0;\n

\u30b3\u30fc\u30c9\u3092\u66f8\u304d\u63db\u3048\u305f\u3089\u30d3\u30eb\u30c9\u3057\u3066\u5b9f\u884c\u3057\u307e\u3059\u3002\u65b0\u3057\u3044\u7aef\u672b\u3092\u8d77\u52d5\u3057\u3066\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u4e0a\u624b\u304f\u51fa\u6765\u3066\u3044\u308c\u3070\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u30fc\u306e\u8eca\u4e21\u304c\u52d5\u304d\u3001\u6761\u4ef6\u3092\u6e80\u305f\u3057\u3066\u7d50\u679c\u304c SUCCESS \u306b\u306a\u308a\u307e\u3059\u3002

colcon build --symlink-install --packages-select autoware_practice_course\nros2 run autoware_practice_course vehicle_backward\n

"},{"location":"course/velocity_planning.html","title":"02. \u901f\u5ea6\u8a08\u753b","text":"

\u5b89\u5168\u306a\u81ea\u52d5\u904b\u8ee2\u3092\u884c\u3046\u305f\u3081\u306b\u306f\u5e38\u306b\u901f\u5ea6\u3092\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u3053\u3053\u3067\u306f\u901f\u5ea6\u8a08\u753b\u3092\u884c\u3063\u3066\u76ee\u6a19\u5730\u70b9\u3067\u8eca\u4e21\u3092\u505c\u6b62\u3055\u305b\u308b\u3053\u3068\u3092\u76ee\u6307\u3057\u307e\u3059\u3002

"},{"location":"course/velocity_planning.html#02-01","title":"02-01. \u8eca\u901f\u3092\u53d6\u5f97\u3059\u308b","text":"

\u307e\u305a\u3001\u8eca\u4e21\u306e\u901f\u5ea6\u3092\u53d6\u5f97\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002

\u8eca\u4e21\u306e\u901f\u5ea6\u306f/localization/kinematic_state\u3068\u3044\u3046\u30c8\u30d4\u30c3\u30af\u3067\u30d1\u30d6\u30ea\u30c3\u30b7\u30e5\u3055\u308c\u307e\u3059\u3002 /localization/kinematic_state\u306b\u306f\u81ea\u8eca\u4e21\u306e\u4f4d\u7f6e\u3001\u59ff\u52e2\u3001\u901f\u5ea6\u3001\u89d2\u901f\u5ea6\u3068\u305d\u308c\u3089\u306e\u5171\u5206\u6563\u884c\u5217\u306e\u60c5\u5831\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002

\u672c\u6765Autoware\u3067\u306f\u4ee5\u4e0b\u306e\u30ce\u30fc\u30c9\u30c0\u30a4\u30a2\u30b0\u30e9\u30e0\u306e\u3088\u3046\u306b\u3001GNSS\u3001Lidar\u3001IMU\u306a\u3069\u306e\u60c5\u5831\u3092\u3082\u3068\u306bekf_localizer\u304c/localization/kinematic_state\u3092\u8a08\u7b97\u3057\u307e\u3059\u3002

Autoware\u306elocalizer\u5468\u308a\u306e\u30ce\u30fc\u30c9\u30c0\u30a4\u30a2\u30b0\u30e9\u30e0

\u3057\u304b\u3057\u521d\u5fc3\u8005\u306bAutoware\u306e\u8aac\u660e\u3092\u3059\u308b\u306e\u306b\u3053\u306e\u69cb\u6210\u306f\u304b\u306a\u308a\u8907\u96d1\u306a\u306e\u3067\u3001\u4eca\u56de\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u30b7\u30f3\u30d7\u30eb\u306adummy_localizer\u3092\u7528\u610f\u3057\u307e\u3057\u305f\u3002

autoware-practice\u306edummy_localizer\u5468\u308a\u306e\u30ce\u30fc\u30c9\u30c0\u30a4\u30a2\u30b0\u30e9\u30e0

01-01\u3068\u540c\u69d8\u306b\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u3092\u8d77\u52d5\u3057\u3066\u304b\u3089\u3001

ros2 launch autoware_practice_launch practice.launch.xml\n

\u5225\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u30c8\u30d4\u30c3\u30af\u304b\u3089\u8eca\u4e21\u306e\u901f\u5ea6\u3092\u53d6\u5f97\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002

ros2 topic echo /localization/kinematic_state\n

\u8eca\u4e21\u306e\u521d\u671f\u901f\u5ea6\u306f0\u306a\u306e\u3067\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306btwist: linear: x: 0.0\u3068\u8868\u793a\u3055\u308c\u307e\u3059\u3002

header:\n  stamp:\n    sec: 1713775224\n    nanosec: 319370472\n  frame_id: odom\nchild_frame_id: base_link\npose:\n  pose:\n    position:\n      x: 0.0\n      y: 0.0\n      z: 0.0\n    orientation:\n      x: 0.0\n      y: 0.0\n      z: 0.0\n      w: 1.0\n  covariance:\n  - 0.1\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.1\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.1\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.01\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.01\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.01\ntwist:\n  twist:\n    linear:\n      x: 0.0\n      y: 0.0\n      z: 0.0\n    angular:\n      x: 0.0\n      y: 0.0\n      z: 0.0\n  covariance:\n  - 0.01\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.01\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.01\n---\n

/localization/kinematic_state\u3068\u3044\u3046\u30c8\u30d4\u30c3\u30af\u306f nav_msgs/msgs/Odometry \u3068\u3044\u3046ROS2\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u578b\u3092\u5229\u7528\u3057\u3066\u3044\u307e\u3059\u3002

"},{"location":"course/velocity_planning.html#02-02","title":"02-02. \u8eca\u4e21\u901f\u5ea6\u3092\u76ee\u6a19\u901f\u5ea6\u306b\u53ce\u675f\u3055\u305b\u308b","text":"

\u6b21\u306b\u3001\u8eca\u4e21\u304c\u76ee\u6a19\u306e\u901f\u5ea6\u306b\u306a\u308b\u3088\u3046\u306b\u8eca\u4e21\u306e\u901f\u5ea6\u3092\u5236\u5fa1\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002 \u73fe\u5728\u306e\u901f\u5ea6v_now\u3068\u76ee\u6a19\u306e\u901f\u5ea6v_target\u306e\u5dee\u306b\u30b2\u30a4\u30f3k_p\u3092\u304b\u3051\u305f\u3082\u306e\u3092\u52a0\u901f\u5ea6\u5165\u529ba\u3068\u3059\u308b\u6bd4\u4f8b\u5236\u5fa1\u3092\u7528\u3044\u308b\u3053\u3068\u3092\u8003\u3048\u307e\u3059\u3002

$$ a = k_{\\text{p}} \\cdot (v_{\\text{target}} - v_{\\text{now}}) $$

\u4ee5\u4e0b\u306b\u901f\u5ea6\u306e\u6bd4\u4f8b\u5236\u5fa1\u3092\u884c\u3046\u30ce\u30fc\u30c9\u306e\u30b5\u30f3\u30d7\u30eb\u3092\u7528\u610f\u3057\u307e\u3057\u305f\u3002

  • velocity_planning/p_controller.hpp
  • velocity_planning/p_controller.cpp

\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u6bd4\u4f8b\u5236\u5fa1\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306e\u30ce\u30fc\u30c9\u3092\u8d77\u52d5\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u8eca\u4e21\u304c\u52d5\u304d\u59cb\u3081\u307e\u3059\u3002kp\u306b\u6bd4\u4f8b\u30b2\u30a4\u30f3\u3001target_velocity\u306b\u901f\u5ea6[m/s]\u3092\u683c\u7d0d\u3057\u307e\u3059\u3002

ros2 run autoware_practice_course p_controller --ros-args -p kp:=0.5 -p target_velocity:=1.0\n

\u901f\u5ea6\u306e\u6642\u9593\u63a8\u79fb\u3092\u30b0\u30e9\u30d5\u3067\u78ba\u8a8d\u3059\u308b\u305f\u3081\u306b\u3001\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u30c7\u30fc\u30bf\u3092rosbag\u306b\u4fdd\u5b58\u3057\u3066PlotJuggler\u3067\u56f3\u793a\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002

\u65b0\u3057\u3044\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304a\u304f\u3053\u3068\u3067\u7279\u5b9a\u306e\u30c8\u30d4\u30c3\u30af\u306e\u6642\u7cfb\u5217\u30c7\u30fc\u30bf\u3092rosbag\u5f62\u5f0f\u3067\u4fdd\u5b58\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

ros2 bag record -o velocity.bag /localization/kinematic_state\n

PlotJuggler\u306f\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

sudo apt install ros-humble-plotjuggler-ros\n

\u305d\u3057\u3066\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067PlotJuggler\u3092\u8d77\u52d5\u3057\u307e\u3059\u3002

ros2 run plotjuggler plotjuggler\n

\u5de6\u4e0a\u306eData\u3092\u30af\u30ea\u30c3\u30af\u3057\u3001\u5148\u7a0b\u4fdd\u5b58\u3057\u305fautoware-practice/velocity.bag/metadata.yaml\u3092\u9078\u629e\u3057\u53f3\u4e0a\u306eOpen\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002

/localization/kinematic_stat\u3092\u30af\u30ea\u30c3\u30af\u3057\u53f3\u4e0b\u306eOK\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002

\u5de6\u4e0b\u306eTimeseries.List\u304b\u3089localization > kinematic_state > twist > twist > linear > x \u3092\u9078\u629e\u3057\u3001\u53f3\u5074\u306b\u30c9\u30e9\u30c3\u30b0\uff06\u30c9\u30ed\u30c3\u30d7\u3092\u3059\u308b\u3068\u901f\u5ea6\u306e\u6642\u9593\u63a8\u79fb\u3092\u8868\u3059\u30b0\u30e9\u30d5\u3092\u8868\u793a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

\u6700\u5f8c\u306b\u4ee5\u4e0b\u306e\u6bd4\u4f8b\u30b2\u30a4\u30f3k_p\u30920.5\u304b\u30895.0\u306b\u4fee\u6b63\u3057\u3066\u3001\u8eca\u4e21\u901f\u5ea6\u306e\u53ce\u675f\u901f\u5ea6\u3092\u6bd4\u3079\u3066\u307f\u307e\u3057\u3087\u3046\u3002

$$ a = k_{\\text{p}} \\cdot (v_{\\text{target}} - v_{\\text{now}}) $$

ros2 run autoware_practice_course p_controller --ros-args -p kp:=5.0 -p target_velocity:=1.0\n

\u4eca\u56de\u306f\u6bd4\u4f8b\u30b2\u30a4\u30f3K\u3092\u5927\u304d\u304f\u3059\u308b\u3053\u3068\u3067\u3001\u65e9\u304f\u76ee\u6a19\u901f\u5ea6\u306b\u53ce\u675f\u3059\u308b\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3059\uff08\u5de6: k_p=0.5, \u53f3: k_p=5.0\uff09\u3002

"},{"location":"course/velocity_planning.html#02-03","title":"02-03. \u30b4\u30fc\u30eb\u3067\u505c\u6b62\u3059\u308b\u305f\u3081\u306e\u901f\u5ea6\u8a08\u753b\u3092\u884c\u3046","text":"

\u56f3\u306e\u3088\u3046\u306a\u3001\u505c\u6b62\u72b6\u614b\u304b\u308950m\u5730\u70b9\u307e\u3067\u52a0\u901f\u3057\u300150m\u5730\u70b9\u3092\u904e\u304e\u305f\u3089\u6e1b\u901f\u3057100m\u5730\u70b9\u3067\u505c\u6b62\u3059\u308b\u3088\u3046\u306a\u901f\u5ea6\u8a08\u753b\u3092\u884c\u3046\u3053\u3068\u3092\u8003\u3048\u307e\u3059\u3002

\u901f\u5ea6\u8a08\u753b\u3092\u884c\u3046\u305f\u3081\u306b\u8eca\u4e21\u304b\u3089\u76ee\u6a19\u5730\u70b9\u307e\u3067\u306e\u9593\u306b1m\u304a\u304d\u306b\u4e2d\u7d99\u5730\u70b9\u3068\u306a\u308b\u30a6\u30a7\u30a4\u30dd\u30a4\u30f3\u30c8\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u5404\u30a6\u30a7\u30a4\u30dd\u30a4\u30f3\u30c8\u306b\u76ee\u6a19\u901f\u5ea6\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u901f\u5ea6\u8a08\u753b\u3092\u884c\u3044\u307e\u3059\u3002

\u5404\u30a6\u30a7\u30a4\u30dd\u30a4\u30f3\u30c8\u306e\u76ee\u6a19\u901f\u5ea6\u3092csv\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u8aad\u307f\u53d6\u308btrajectory_loader\u30ce\u30fc\u30c9\u3068\u3001\u5404\u30a6\u30a7\u30a4\u30dd\u30a4\u30f3\u30c8\u3092\u57fa\u306b\u5236\u5fa1\u5165\u529b\u3092\u6c7a\u5b9a\u3059\u308blongitudinal_controller\u30ce\u30fc\u30c9\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002 \u4eca\u56de\u306f\u4ee5\u4e0b\u306etrajectory.csv\u3092\u8aad\u307f\u53d6\u308a\u307e\u3059\u3002csv\u30d5\u30a1\u30a4\u30eb\u306b\u306f\u5404\u30a6\u30a7\u30a4\u30dd\u30a4\u30f3\u30c8\u3067\u306e\u76ee\u6a19\u901f\u5ea6\u304c\u8a18\u8f09\u3055\u308c\u3066\u3044\u307e\u3059\u3002

  • velocity_planning/trajectory_loader.hpp
  • velocity_planning/trajectory_loader.cpp
  • config/trajectory.csv
  • velocity_planning/longitudinal_controller.hpp
  • velocity_planning/longitudinal_controller.cpp

autoware-practice\u306etrajectory_loader\u5468\u308a\u306e\u30ce\u30fc\u30c9\u30c0\u30a4\u30a2\u30b0\u30e9\u30e0

trajectory_loader\u30ce\u30fc\u30c9\u304c\u30b9\u30bf\u30fc\u30c8\u304b\u3089\u30b4\u30fc\u30eb\u307e\u3067\u306e\u5404\u30a6\u30a7\u30a4\u30dd\u30a4\u30f3\u30c8\u306e\u76ee\u6a19\u901f\u5ea6\u3092csv\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u8aad\u307f\u53d6\u308a\u307e\u3059\u3002 longitudinal_controller\u30ce\u30fc\u30c9\u304c\u8eca\u4e21\u306b\u6700\u3082\u8fd1\u3044\u30a6\u30a7\u30a4\u30dd\u30a4\u30f3\u30c8\u3092\u63a2\u7d22\u3057\u3001\u30a6\u30a7\u30a4\u30dd\u30a4\u30f3\u30c8\u3067\u306e\u76ee\u6a19\u901f\u5ea6\u3068\u73fe\u5728\u306e\u8eca\u4e21\u306e\u901f\u5ea6\u3092\u57fa\u306b\u5236\u5fa1\u5165\u529b\u3092\u6c7a\u5b9a\u3057\u307e\u3059\u3002

\u5404\u30ce\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5225\u3005\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u5b9f\u884c\u3059\u308b\u3053\u3068\u3067\u8d77\u52d5\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

ros2 launch autoware_practice_launch practice.launch.xml\n
ros2 run autoware_practice_course trajectory_loader --ros-args -p path_file:=src/autoware_practice_course/config/trajectory.csv\n
ros2 run autoware_practice_course longitudinal_controller --ros-args -p kp:=5.0\n

\u8eca\u4e21\u306e\u4f4d\u7f6e\u3068\u901f\u5ea6\u306e\u95a2\u4fc2\u3092PlotJuggler\u3092\u7528\u3044\u3066\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u3067\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002 \u5168\u90e8\u30674\u679a\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u30a6\u30a3\u30f3\u30c9\u30a6\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 \u307e\u305a\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u3092\u8d77\u52d5\u3057\u307e\u3059\u3002

ros2 launch autoware_practice_launch practice.launch.xml\n

\u6b21\u306b\u5225\u30bf\u30fc\u30df\u30ca\u30eb\u3067PlotJuggler\u3092\u8d77\u52d5\u3057\u307e\u3059\u3002

ros2 run plotjuggler plotjuggler\n

PlotJuggler\u304c\u8d77\u52d5\u3057\u305f\u3089Start\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u307e\u3059\u3002

/localization/kinematic_state\u3092\u9078\u629e\u3057\u3001OK\u3092\u62bc\u3057\u307e\u3059\u3002

/localization/kinematic_state/pose/pose/position/x\u3068/localization/kinematic_state/twist/twist/linear/x\u3092\u8907\u6570\u9078\u629e\u3057\u3066\u53f3\u30af\u30ea\u30c3\u30af\u3067\u30c9\u30e9\u30c3\u30b0\uff06\u30c9\u30ed\u30c3\u30d7\u3059\u308b\u3053\u3068\u3067\u3001\u4f4d\u7f6e\u3068\u901f\u5ea6\u306e\u95a2\u4fc2\u306e\u30b0\u30e9\u30d5\u3092\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

\u521d\u3081\u306f\u8eca\u4e21\u306e\u4f4d\u7f6e\u3068\u901f\u5ea6\u304c\u3069\u3061\u3089\u30820\u306a\u306e\u3067\u4ee5\u4e0b\u306e\u56f3\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002

\u9577\u6642\u9593\u8a18\u9332\u3059\u308b\u305f\u3081\u306bBuffer\u3092100\u306b\u5909\u66f4\u3057\u307e\u3059\u3002

\u6b21\u306btrajectory_loader\u30ce\u30fc\u30c9\u3068longitudinal_controller\u30ce\u30fc\u30c9\u3092\u305d\u308c\u305e\u308c\u5225\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u8d77\u52d5\u3057\u307e\u3059\u3002

ros2 run autoware_practice_course trajectory_loader --ros-args -p path_file:=src/autoware_practice_course/config/trajectory.csv\n
ros2 run autoware_practice_course longitudinal_controller --ros-args -p kp:=5.0\n

\u305d\u308c\u305e\u308c\u306e\u30ce\u30fc\u30c9\u304c\u8d77\u52d5\u3059\u308b\u3068\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u30fc\u4e0a\u3067\u8eca\u4e21\u304c\u52d5\u304d\u59cb\u3081\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30b0\u30e9\u30d5\u304c\u5f97\u3089\u308c\u307e\u3059\u3002

\u30b0\u30e9\u30d5\u3088\u308a\u3001\u5927\u4f5350m\u4ed8\u8fd1\u306710m/s\u306b\u9054\u3057100m\u4ed8\u8fd1\u3067\u505c\u6b62\u3067\u304d\u3066\u3044\u308b\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3059\u3002

"},{"location":"course/velocity_planning.html#02-04","title":"02-04. \u6a2a\u65b9\u5411\u5236\u5fa1\u3092\u884c\u3046","text":"

\u56f3\u306e\u3088\u3046\u306a\u3001\u76f4\u9032\u30fb90\u5ea6\u65cb\u56de\u30fb\u76f4\u9032\u30fb90\u5ea6\u65cb\u56de\u30fb\u76f4\u9032\u3068\u306a\u308b\u3088\u3046\u306a\u7d4c\u8def\u306b\u8ffd\u5f93\u3059\u308b\u3053\u3068\u3092\u8003\u3048\u307e\u3059\u3002

\u4eca\u56de\u306e\u76ee\u6a19\u7d4c\u8def

\u3053\u306e\u7d4c\u8def\u306b\u8ffd\u5f93\u3059\u308b\u305f\u3081\u306b\u306f\u65cb\u56de\u3067\u9069\u5207\u306b\u30b9\u30c6\u30a2\u30ea\u30f3\u30b0\u3092\u64cd\u4f5c\u3057\u6a2a\u5236\u5fa1\u3092\u884c\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u305d\u3053\u3067\u3001P\u5236\u5fa1\u306b\u3088\u308b\u7e26\u65b9\u5411\u5236\u5fa1\u3068pure puresuit\u306b\u3088\u308b\u6a2a\u65b9\u5411\u5236\u5fa1\u3092\u542b\u3093\u3060trajectroy_follower\u30ce\u30fc\u30c9\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002

  • velocity_planning/trajectory_follower.hpp
  • velocity_planning/trajectory_follower.cpp

autoware-practice\u306etrajectory_follower\u5468\u308a\u306e\u30ce\u30fc\u30c9\u30c0\u30a4\u30a2\u30b0\u30e9\u30e0

pure pursuit\u306f\u3001\u8eca\u4e21\u306e\u73fe\u5728\u4f4d\u7f6e\u3068\u76ee\u6a19\u7d4c\u8def\u4e0a\u306e\u8ffd\u5f93\u70b9\uff08\u30eb\u30c3\u30af\u30a2\u30d8\u30c3\u30c9\u30dd\u30a4\u30f3\u30c8\uff09\u3068\u306e\u8ddd\u96e2\u3068\u65b9\u5411\u3092\u57fa\u306b\u30eb\u30c3\u30af\u30a2\u30d8\u30c3\u30c9\u30dd\u30a4\u30f3\u30c8\u306b\u5230\u9054\u3059\u308b\u305f\u3081\u306e\u66f2\u7387\u3092\u8a08\u7b97\u3059\u308b\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u3059\u3002\u4ee5\u4e0b\u306bpure pursuit\u306e\u57fa\u672c\u7684\u306a\u52d5\u4f5c\u3092\u8aac\u660e\u3057\u307e\u3059\u3002

  1. \u8ffd\u5f93\u70b9\u306e\u8a2d\u5b9a: \u76ee\u6a19\u7d4c\u8def\u4e0a\u306b\u8eca\u4e21\u306e\u73fe\u5728\u4f4d\u7f6e\u304b\u3089\u4e00\u5b9a\u306e\u8ddd\u96e2\u5148\u306b\u8ffd\u5f93\u70b9\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u3053\u306e\u8ddd\u96e2\u306f\u30eb\u30c3\u30af\u30a2\u30d8\u30c3\u30c9\u8ddd\u96e2\u3068\u547c\u3070\u308c\u307e\u3059\u3002

  2. \u65b9\u5411\u30d9\u30af\u30c8\u30eb\u306e\u8a08\u7b97: \u8eca\u4e21\u306e\u73fe\u5728\u4f4d\u7f6e\u3068\u8ffd\u5f93\u70b9\u3068\u306e\u9593\u306e\u65b9\u5411\u30d9\u30af\u30c8\u30eb\u3092\u8a08\u7b97\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u8eca\u4e21\u304c\u3069\u306e\u65b9\u5411\u306b\u9032\u3080\u3079\u304d\u304b\u304c\u308f\u304b\u308a\u307e\u3059\u3002

  3. \u30b9\u30c6\u30a2\u30ea\u30f3\u30b0\u89d2\u5ea6\u306e\u8a08\u7b97: \u8a08\u7b97\u3055\u308c\u305f\u65b9\u5411\u30d9\u30af\u30c8\u30eb\u306b\u57fa\u3065\u304d\u66f2\u7387\u3092\u8a08\u7b97\u3057\u3001\u8eca\u4e21\u306e\u30b9\u30c6\u30a2\u30ea\u30f3\u30b0\u89d2\u5ea6\u3092\u6c42\u3081\u307e\u3059\u3002

$$ \\theta = \\arctan\\left(\\frac{2 L \\sin(\\alpha)}{d}\\right) $$ $$ \\theta: \u8a08\u7b97\u3055\u308c\u305f\u30b9\u30c6\u30a2\u30ea\u30f3\u30b0\u89d2\u5ea6 \\ $$ $$ L: \u8eca\u4e21\u306e\u30db\u30a4\u30fc\u30eb\u30d9\u30fc\u30b9\u306e\u9577\u3055 \\ $$ $$ \\alpha: \u73fe\u5728\u306e\u8eca\u4e21\u306e\u5411\u304d\u3068\u30eb\u30c3\u30af\u30a2\u30d8\u30c3\u30c9\u30dd\u30a4\u30f3\u30c8\u3078\u306e\u65b9\u5411\u30d9\u30af\u30c8\u30eb\u306e\u9593\u306e\u89d2\u5ea6\u5dee \\ $$ $$ d: \u30eb\u30c3\u30af\u30a2\u30d8\u30c3\u30c9\u8ddd\u96e2 $$

pure pursuit\u306e\u57fa\u672c\u52d5\u4f5c

pure pursuit\u306e\u5229\u70b9\u306f\u3001\u305d\u306e\u30b7\u30f3\u30d7\u30eb\u3055\u3068\u5b9f\u88c5\u306e\u5bb9\u6613\u3055\u306b\u3042\u308a\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u9ad8\u901f\u8d70\u884c\u3084\u6025\u30ab\u30fc\u30d6\u306e\u591a\u3044\u7d4c\u8def\u3067\u306f\u3001\u5225\u306e\u5236\u5fa1\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3068\u306e\u7d44\u307f\u5408\u308f\u305b\u304c\u5fc5\u8981\u306b\u306a\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002

P\u5236\u5fa1\u3068pure pursuit\u5236\u5fa1\u306b\u3088\u3063\u3066\u6b63\u3057\u304f\u7d4c\u8def\u306b\u8ffd\u5f93\u3067\u304d\u3066\u3044\u308b\u304b\u3092PlotJuggler\u3067\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002

\u3053\u308c\u307e\u3067\u3068\u540c\u69d8\u306b\u5225\u3005\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u3068PlotJuggler\u3092\u8d77\u52d5\u3057\u307e\u3059\u3002

ros2 launch autoware_practice_launch practice.launch.xml\n
ros2 run plotjuggler plotjuggler\n

PlotJuggler\u4e0a\u3067/localization/kinematic_state/pose/pose/position/x\u3068/localization/kinematic_state/pose/pose/position/y\u3092\u8907\u6570\u9078\u629e\u3057\u53f3\u30af\u30ea\u30c3\u30af\u3067\u30c9\u30e9\u30c3\u30b0\uff06\u30c9\u30ed\u30c3\u30d7\u3057\u307e\u3059\u3002

rviz\u3068\u8ef8\u306e\u5411\u304d\u3092\u5408\u308f\u305b\u307e\u3059\u3002\u30c9\u30e9\u30c3\u30b0\uff06\u30c9\u30ed\u30c3\u30d7\u3057\u305f\u5f8c\u306b\u8868\u793a\u3055\u308c\u308b\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u3067Swap\u3092\u9078\u629e\u3057\u3066\u8ef8\u3092\u5165\u308c\u66ff\u3048\u3066OK\u3092\u9078\u629e\u3057\u307e\u3059\u3002\u305d\u306e\u5f8c\u30b0\u30e9\u30d5\u4e0a\u3067\u53f3\u30af\u30ea\u30c3\u30af\u3057\u3066Flip Horizontal Axis\u3092\u9078\u629e\u3057\u3066\u6a2a\u8ef8\u3092\u53cd\u8ee2\u3055\u305b\u307e\u3059\u3002

PlotJuggler\u306e\u8a2d\u5b9a\u304c\u3067\u304d\u305f\u3089\u3001\u5225\u3005\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066trajectory_loader\u30ce\u30fc\u30c9\u3068trajectory_follower\u30ce\u30fc\u30c9\u3092\u8d77\u52d5\u3057\u307e\u3059\u3002

ros2 run autoware_practice_course trajectory_loader --ros-args -p path_file:=src/autoware_practice_course/config/trajectory_zigzag.csv\n
ros2 run autoware_practice_course trajectory_follower --ros-args -p kp:=5.0 -p lookahead_distance:=5.0\n

\u9069\u5207\u306b\u8d77\u52d5\u3067\u304d\u308b\u3068\u8a2d\u5b9a\u3055\u308c\u305f\u7d4c\u8def\u306b\u8ffd\u5f93\u3067\u304d\u3066\u3044\u308b\u3053\u3068\u304cPlotJuggler\u4e0a\u3067\u308f\u304b\u308a\u307e\u3059\u3002

"},{"location":"development/main-module.html","title":"\u30e1\u30a4\u30f3\u30e2\u30b8\u30e5\u30fc\u30eb","text":""},{"location":"development/main-module.html#autoware","title":"Autoware\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba","text":"

\u672c\u5927\u4f1a\u3067\u306f\u3001\u81ea\u52d5\u904b\u8ee2\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2Autoware\u3092\u30d9\u30fc\u30b9\u3068\u3057\u305f\u5b9f\u88c5\u3092\u7528\u610f\u3057\u3066\u304a\u308a\u307e\u3059\uff0e \u672c\u30da\u30fc\u30b8\u3067\u306f\u3001\u305d\u306e\u80cc\u666f\u3068\u8aac\u660e\u306b\u52a0\u3048\u3066\u3001\u3069\u306e\u3088\u3046\u306b\u672c\u5b9f\u88c5\u3092\u6d3b\u7528\u3067\u304d\u308b\u304b\u306e\u7d39\u4ecb\u3092\u884c\u3044\u307e\u3059\uff0e

\u524d\u56de\u306e\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u5927\u4f1a\u3067\u306f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306eAutoware\u304b\u3089\u6a5f\u80fd\u3092\u7d5e\u308a\u3001\u30ce\u30fc\u30c9\u6570\u3092\u6e1b\u3089\u3057\u305f\u7e2e\u5c0f\u69cb\u6210\u306eAutoware\u3092\u8d77\u52d5\u3067\u304d\u308bLaunch\u30d5\u30a1\u30a4\u30eb\u3092\u63d0\u4f9b\u3057\u307e\u3057\u305f\uff0e\u305d\u306e\u969b\u306e\u3001\u80cc\u666f\u3084\u7528\u610f\u3057\u305f\u610f\u56f3\u306b\u3064\u3044\u3066\u306f\u3001\u524d\u5927\u4f1a\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\uff0e

\u4eca\u56de\u306e\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u5927\u4f1a\u3067\u306f\u3001\u524d\u5927\u4f1a\u3068\u540c\u69d8\u306bAutoware\u306e\u90e8\u5206\u7684\u306a\u6d3b\u7528\u3084\u81ea\u7531\u81ea\u5728\u306a\u53d6\u308a\u8fbc\u307f\u3092\u53ef\u80fd\u306b\u3059\u308b\u305f\u3081\u3001AWSIM\u3068\u306e\u5229\u7528\u3092\u60f3\u5b9a\u3057\u305f\u7e2e\u5c0f\u69cb\u6210\u306eAutoware\u3092\u7528\u610f\u3057\u307e\u3057\u305f\uff0e

"},{"location":"development/main-module.html#autoware_1","title":"\u7e2e\u5c0f\u69cb\u6210\u306eAutoware\u3092\u7528\u610f\u3057\u305f\u80cc\u666f","text":""},{"location":"development/main-module.html#autoware_2","title":"Autoware\u3092\u5229\u7528\u3059\u308b\u6642\u306e\u8ab2\u984c","text":"

\u30c7\u30d5\u30a9\u30eb\u30c8\u306eAutoware\u3067\u306f\u69d8\u3005\u306a\u8d70\u884c\u74b0\u5883\u306b\u5bfe\u5fdc\u3059\u308b\u305f\u3081\u3001\u305f\u304f\u3055\u3093\u306e\u30ce\u30fc\u30c9\u304b\u3089\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u3059\uff0e

Autoware\u306e\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u3001Autoware\u3092\u69cb\u6210\u3059\u308bROS\u30ce\u30fc\u30c9\u306e\u69cb\u6210\u56f3\u3092\u898b\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\uff0e\u4ee5\u4e0b\u306b\u73fe\u6642\u70b9\u306e\u56f3\u3092\u793a\u3057\u307e\u3059\uff0e

\u81ea\u52d5\u904b\u8ee2\u306b\u95a2\u308f\u308b\u5404\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3067\u591a\u7a2e\u591a\u69d8\u306a\u6a5f\u80fd\u3092\u63c3\u3048\u3066\u304a\u308a\u3001\u96e3\u6613\u5ea6\u306e\u9ad8\u3044\u8d70\u884c\u74b0\u5883\u306b\u3082\u5bfe\u5fdc\u3067\u304d\u308b\u3088\u3046\u306b\u4f5c\u3089\u308c\u3066\u3044\u307e\u3059\uff0e

\u4e00\u65b9\u3001\u305d\u306e\u8907\u96d1\u306a\u69cb\u6210\u3092\u7406\u89e3\u3057\u3001\u5404\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u610f\u5473\u3084\u8abf\u6574\u306e\u4ed5\u65b9\u3001\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u5207\u308a\u66ff\u3048\u30fb\u5165\u308c\u66ff\u3048\u306a\u3069\u3092\u884c\u3046\u3053\u3068\u304c\u5fc5\u305a\u3057\u3082\u5bb9\u6613\u3067\u306f\u306a\u304f\u306a\u3063\u3066\u3044\u307e\u3059\uff0e

"},{"location":"development/main-module.html#autoware-micro","title":"\u7e2e\u5c0f\u69cb\u6210\u306eAutoware-Micro\u306e\u7528\u610f","text":"

\u305d\u306e\u305f\u3081\u3001\u524d\u56de\u306e\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u5927\u4f1a\u3067\u306f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306eAutoware\u304b\u3089\u6a5f\u80fd\u3092\u7d5e\u308a\u3001\u30ce\u30fc\u30c9\u6570\u3092\u6e1b\u3089\u3057\u305fAutoware\u3092\u7528\u610f\u3057\u307e\u3057\u305f\uff0e

Autoware-Micro\u306e\u30ce\u30fc\u30c9\u56f3\u3092\u4ee5\u4e0b\u306b\u793a\u3057\u307e\u3059\uff0e\u30ce\u30fc\u30c9\u6570\u304c\u683c\u6bb5\u3068\u6e1b\u308a\u3001\u57fa\u672c\u7684\u306a\u81ea\u52d5\u8d70\u884c\u3092\u53ef\u80fd\u3068\u3059\u308b\u6a5f\u80fd\u306e\u307f\u304c\u63c3\u3063\u3066\u3044\u308b\u3053\u3068\u304c\u5206\u304b\u308a\u307e\u3059\uff0e

Autoware-Micro\u306e\u7279\u5fb4\u3068\u3057\u3066\u306f\u3001\u4ee5\u4e0b\u304c\u6319\u3052\u3089\u308c\u307e\u3059\uff0e

  • \u307b\u307c\u5168\u3066\u306e\u30ce\u30fc\u30c9\u306e\u8d77\u52d5\u3092\u76f4\u63a51\u3064\u306eLaunch\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u884c\u3063\u3066\u3044\u308b\uff0e
  • \u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u76f4\u63a5\u30ce\u30fc\u30c9\u8d77\u52d5\u6642\u306b\u66f8\u304d\u8fbc\u3093\u3067\u3044\u308b\u305f\u3081\u3001\u3069\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u304c\u3069\u306e\u30ce\u30fc\u30c9\u3067\u5fc5\u8981\u306a\u306e\u304b\u3092\u7c21\u5358\u306b\u8ffd\u3046\u3053\u3068\u304c\u3067\u304d\u308b\uff0e
  • \u5404\u30ce\u30fc\u30c9\u306e\u5165\u51fa\u529b\u3068\u306a\u308bROS\u30c8\u30d4\u30c3\u30af\u540d\u3082\u76f4\u63a5\u30ce\u30fc\u30c9\u8d77\u52d5\u6642\u306bremap\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u30c8\u30d4\u30c3\u30af\u540d\u3082\u7c21\u5358\u306b\u5909\u3048\u3089\u308c\u308b\uff0e

\u3053\u306eAutoware\u3092\u30d9\u30fc\u30b9\u306b\u81ea\u52d5\u904b\u8ee2\u30bd\u30d5\u30c8\u3092\u66f8\u304f\u3053\u3068\u3067\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff0e

  • \u30b7\u30f3\u30d7\u30eb\u306a\u69cb\u6210\u3068\u306a\u3063\u3066\u3044\u308b\u305f\u3081\u3001Autoware\u306e\u4e2d\u8eab\u3092\u3088\u308a\u6df1\u304f\u7406\u89e3\u3067\u304d\u308b
  • \u81ea\u4f5c\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u3092Autoware\u306e\u3082\u306e\u3068\u7c21\u5358\u306b\u5165\u308c\u66ff\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u6a5f\u80fd\u306e\u6539\u5584\u306b\u53d6\u308a\u7d44\u3081\u308b
  • \u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u5909\u66f4\u3057\u305f\u5834\u5408\u306e\u30b7\u30b9\u30c6\u30e0\u5168\u4f53\u306e\u52d5\u4f5c\u3078\u306e\u5f71\u97ff\u304c\u5206\u304b\u308a\u3084\u3059\u3044
  • \u4eca\u56de\u306eAutoware\u306b\u306f\u542b\u307e\u308c\u3066\u3044\u306a\u3044\u65e2\u5b58\u306eAutoware\u306e\u30ce\u30fc\u30c9\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u308b

\u5404\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u5909\u66f4\u70b9\u30fb\u7279\u5fb4\u3068\u3057\u3066\u306f\u3001\u4ee5\u4e0b\u304c\u6319\u3052\u3089\u308c\u307e\u3059\uff0e

  • Localization\uff1aGNSS\u3001IMU\u53ca\u3073\u8eca\u8f2a\u901f\u306b\u3088\u308b\u81ea\u5df1\u4f4d\u7f6e\u63a8\u5b9a
  • Planning\uff1abehavior_velocity_planner\u3084obstacle_stop_planner\u306a\u3069\u3092\u7701\u7565\u3057\u3001\u51fa\u529b\u7d4c\u8def\u304b\u3089\u8d70\u884ctrajectory\u3092\u76f4\u63a5\u51fa\u529b\u3059\u308b\u3088\u3046\u306b\u5909\u66f4\uff0e
  • Control\uff1a\u5236\u5fa1\u306e1\u3064\u306e\u5b9f\u88c5\u4f8b\u3068\u3057\u3066simple_pure_pursuit\u3092\u7528\u610f\uff0e
"},{"location":"development/main-module.html#autoware-micro_1","title":"Autoware-Micro\u306e\u6d3b\u7528\u65b9\u6cd5","text":"

Autoware-Micro\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u306b\u3088\u308a\u3001\u672c\u5927\u4f1a\u3067\u306e\u8ab2\u984c\u3068\u306a\u308b\uff1a

  1. \u30ab\u30fc\u30d6\u306a\u3069\u306e\u6226\u7565\u7684\u306a\u7d4c\u8def\u8a08\u753b
  2. \u9ad8\u901f\u3067\u306e\u8eca\u4e21\u5236\u5fa1

\u306b\u96c6\u4e2d\u3057\u3066\u53d6\u308a\u7d44\u3080\u3053\u3068\u304c\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\uff0e

\u307e\u305f\u3001Autoware-Micro\u306e\u5b9f\u88c5\u4f8b\u3092\u53c2\u8003\u306b\u3057\u306a\u304c\u3089\u3001Autoware\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3068\u306f\u5c11\u3057\u7570\u306a\u308b\u5b9f\u88c5\u65b9\u6cd5\u3092\u8a66\u3057\u305f\u308a\u3001\u65b0\u3057\u304f\u30ab\u30b9\u30bf\u30e0\u306e\u30ce\u30fc\u30c9\u3092\u4f5c\u6210\u30fb\u5c0e\u5165\u3057\u305f\u308a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff0e

\u72ec\u81ea\u306e\u30ce\u30fc\u30c9\u306e\u5b9f\u88c5\u3092\u53d6\u308a\u5165\u308c\u308b\u3053\u3068\u306b\u3088\u308a\u3001\u8d70\u884c\u6027\u80fd\u3092\u5411\u4e0a\u3055\u305b\u70b9\u6570\u3092\u4f38\u3070\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff0e

\u4f8b\u3048\u3070\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u69cb\u6210\u3092\u8003\u3048\u3001\u300cPlanning\u300d\u3068\u300cControl\u300d\u3092\u305d\u308c\u305e\u308c\u5b9f\u88c5\u3057\u3066\u53d6\u308a\u7d44\u3093\u3060\u308a\u3001\u300cPlanning & Control\u300d\u3092\u4e21\u65b9\u62c5\u3046\u30ce\u30fc\u30c9\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\uff0e

\u30eb\u30fc\u30c8\u306e\u5165\u529b\u3068\u8eca\u4e21\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9\u51fa\u529b\u306eROS\u30c8\u30d4\u30c3\u30af\u3055\u3048\u5408\u3063\u3066\u3044\u308c\u3070\u81ea\u7531\u306b\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3057\u3066\u9802\u3051\u307e\u3059\uff0e

"},{"location":"development/main-module.html#_2","title":"\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u306e\u69cb\u6210","text":"

\u53c2\u8003\u307e\u3067\u306b\u672c\u5927\u4f1a\u3067\u4f7f\u7528\u3057\u3066\u3044\u308b\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u306e\u69cb\u6210\u306f\u4ee5\u4e0b\u3068\u306a\u308a\u307e\u3059\u3002

docker-dev

docker-eval

"},{"location":"development/main-module.html#nextstep","title":"NextStep:\u53c2\u8003","text":""},{"location":"development/reference.html","title":"\u53c2\u8003","text":""},{"location":"development/reference.html#_2","title":"\u5909\u66f4\u70b9\u306e\u53d6\u308a\u8fbc\u307f","text":"

\u5927\u4f1a\u74b0\u5883\u306e\u91cd\u5927\u306a\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u304c\u3042\u3063\u305f\u969b\u306b\u306f\u9069\u5b9c\u30a2\u30ca\u30a6\u30f3\u30b9\u304c\u3042\u308a\u307e\u3059\u3002 \u53c2\u8003\u307e\u3067\u306b\u3053\u3061\u3089\u306b\u8a18\u8f09\u3057\u3066\u3044\u307e\u3059\u3002\u4ee5\u4e0b\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002

Docker\u306eupdate

docker pull ghcr.io/automotiveaichallenge/autoware-universe:humble-latest\n

Repository\u306eupdate

cd aichallenge2024 # path to aichallenge2024\ngit pull origin/main\n
"},{"location":"development/reference.html#awsim","title":"\u63cf\u753b\u3042\u308aAWSIM\u306e\u5c0e\u5165","text":"

AWSIM\u306e\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u753b\u9762\u3092\u78ba\u8a8d\u3057\u305f\u3044\u65b9\u306f\u3001\u3053\u3061\u3089\u306e\u624b\u9806\u306b\u5f93\u3063\u3066\u63cf\u753b\u3042\u308aAWSIM\u306e\u5c0e\u5165\u3092\u884c\u3063\u3066\u304f\u3060\u3055\u3044\u3002

"},{"location":"development/reference.html#debugterminal3","title":"Debug\u7528\u306bTerminal\u30923\u3064\u7528\u610f\u3057\u3066\u958b\u767a\u3057\u305f\u3044\u5834\u5408 (\u53c2\u8003)","text":"

Alt+Ctrl+T\u3067\uff11\u3064\u76ee\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u3092\u7acb\u3061\u4e0a\u3052\u3066\u304b\u3089\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9Ctrl+Shift+P\u3067\u8cbc\u308a\u4ed8\u3051\u305f\u5f8c\u306bEnter\u3067\u5b9f\u884c\u3057\u307e\u3059\u3002

cd ~/aichallenge-2024\n./docker_run.sh dev cpu\n
cd /aichallenge\nbash run_simulator.bash\n

Alt+Ctrl+T\u30672\u3064\u76ee\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u3092\u7acb\u3061\u4e0a\u3052\u3066\u304b\u3089\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9Ctrl+Shift+P\u3067\u8cbc\u308a\u4ed8\u3051\u305f\u5f8c\u306bEnter\u3067\u5b9f\u884c\u3057\u307e\u3059\u3002

cd ~/aichallenge-2024\n./docker_run.sh dev cpu\n
cd /aichallenge\nbash run_autoware.bash\n

Alt+Ctrl+T\u30673\u3064\u76ee\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u3092\u7acb\u3061\u4e0a\u3052\u3066\u304b\u3089\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9Ctrl+Shift+P\u3067\u8cbc\u308a\u4ed8\u3051\u305f\u5f8c\u306bEnter\u3067\u5b9f\u884c\u3057\u307e\u3059\u3002

cd ~/aichallenge-2024\n./docker_run.sh dev cpu\n
cd /aichallenge\nros2 topic pub --once /control/control_mode_request_topic std_msgs/msg/Bool '{data: true}' >/dev/null\n

\u4e0b\u8a18\u306e\u69d8\u306a\u753b\u9762\u304c\u8868\u793a\u3055\u308c\u305f\u3089\u8d77\u52d5\u5b8c\u4e86\u3067\u3059\u3002\u7d42\u4e86\u3059\u308b\u306b\u306f\u5404\u30bf\u30fc\u30df\u30ca\u30eb\u4e0a\u3067CTRL + C\u3092\u5165\u529b\u3057\u307e\u3059\u3002

"},{"location":"development/workspace-usage.html","title":"AI\u30c1\u30e3\u30ec\u30f3\u30b8\u306e\u9032\u3081\u65b9","text":"

AI\u30c1\u30e3\u30ec\u30f3\u30b8\u3067\u306f\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3092\u99c6\u4f7f\u3057\u3066\u3044\u307e\u3059\u3002\u904b\u55b6\u304b\u3089\u63d0\u4f9b\u3055\u308c\u308b\u30b3\u30fc\u30c9\u3068\u30a6\u30a7\u30d6\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3092\u5229\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u521d\u671f\u958b\u767a\u30d5\u30a7\u30fc\u30ba\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u3001\u7af6\u6280\u306e\u30c6\u30fc\u30de\u306b\u5408\u308f\u305b\u305f\u958b\u767a\u3092\u3059\u3050\u306b\u958b\u59cb\u3067\u304d\u307e\u3059\u3002 \u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306b\u306f\u3001\u300c\u8eca\u8f2a\u306e\u518d\u767a\u660e\u300d\u3092\u907f\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3068\u3044\u3046\u5927\u304d\u306a\u5229\u70b9\u304c\u3042\u308a\u307e\u3059\u3002\u3055\u3089\u306b\u3001\u8ab0\u3067\u3082\u6c17\u8efd\u306b\u5927\u4f1a\u306b\u53c2\u52a0\u3067\u304d\u3001\u4e00\u8cab\u3057\u305f\u8a55\u4fa1\u57fa\u6e96\u3067\u5927\u4f1a\u3092\u904b\u55b6\u3067\u304d\u308b\u3068\u3044\u3046\u30e1\u30ea\u30c3\u30c8\u3082\u3042\u308a\u307e\u3059\u3002

\u521d\u3081\u3066\u53c2\u52a0\u3055\u308c\u308b\u65b9\u3005\u306f\u3001\u5148\u4eba\u305f\u3061\u304c\u7bc9\u304d\u4e0a\u3052\u305f\u57fa\u76e4\u306e\u4e0a\u306b\u7acb\u3061\u3001\u81ea\u52d5\u904b\u8ee2\u306b\u5fc5\u8981\u306a\u6a5f\u80fd\u304c\u307b\u3068\u3093\u3069\u63c3\u3063\u3066\u3044\u308b\u72b6\u614b\u304b\u3089\u30b9\u30bf\u30fc\u30c8\u3057\u307e\u3059\u3002\u3053\u308c\u304b\u3089\u306f\u3001\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306b\u3088\u308b\u300c\u53d6\u308a\u7d44\u307f\u306e\u516c\u958b\u300d\u3092\u901a\u3058\u3066\u3001\u7af6\u6280\u9818\u57df\u3067\u306e\u72ec\u81ea\u306e\u958b\u767a\u3092\u6df1\u3081\u308b\u30c1\u30e3\u30f3\u30b9\u3067\u3059\u3002 \u3055\u3089\u306b\u3001\u81ea\u52d5\u904b\u8ee2\u306e\u7406\u89e3\u3092\u6df1\u3081\u308b\u305f\u3081\u306b\u3001\u904b\u55b6\u304c\u7528\u610f\u3057\u305f\u300cAutoware Practice\u300d\u3084ROS 2\u306e\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u304c\u63d0\u4f9b\u3059\u308b\u300cROS 2\u300d\u306e\u5b66\u7fd2\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002

\u65e2\u306b\u30c1\u30e3\u30ec\u30f3\u30b8\u306b\u53c2\u52a0\u3055\u308c\u305f\u65b9\u3005\u306b\u306f\u3001\u3054\u81ea\u8eab\u306e\u7d4c\u9a13\u3092\u516c\u958b\u3057\u3001\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306b\u8ca2\u732e\u3057\u3066\u5927\u4f1a\u306e\u767a\u5c55\u306b\u5bc4\u4e0e\u3057\u3066\u3044\u305f\u3060\u3051\u308c\u3070\u3068\u601d\u3044\u307e\u3059\u3002\u7686\u3055\u3093\u306e\u7a4d\u6975\u7684\u306a\u53c2\u52a0\u304c\u3001\u5927\u4f1a\u3092\u3055\u3089\u306b\u5145\u5b9f\u3055\u305b\u308b\u3053\u3068\u306b\u7e4b\u304c\u308a\u307e\u3059\u3002

\u203bAI\u30c1\u30e3\u30ec\u30f3\u30b8\u3067\u958b\u767a\u3059\u308b\u4e0a\u3067\u30d9\u30fc\u30b9\u3068\u306a\u308b\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306f\u5927\u4f1a\u7528\u30ea\u30dd\u30b8\u30c8\u30ea\u5185\u3067\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u3059\u3002

\u53c2\u52a0\u8005\u306e\u7686\u69d8\u306b\u306f\u3053\u3061\u3089\u306e\u30b3\u30fc\u30c9\u3084\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b\u3053\u3068\u3067\u958b\u767a\u3092\u9032\u3081\u3066\u3044\u305f\u3060\u304d\u307e\u3059\u304c\u3001Autoware\u306b\u4e0d\u6163\u308c\u306a\u65b9\u306f\u307e\u305a\u306f\u5165\u9580\u8b1b\u5ea7\u3092\u4e00\u901a\u308a\u3084\u3063\u3066\u3044\u305f\u3060\u304f\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002

\u203b\u30ea\u30dd\u30b8\u30c8\u30ea\u5185\u306e\u30b3\u30fc\u30c9\u3092\u4f7f\u308f\u305a\u72ec\u81ea\u306b\u958b\u767a\u3059\u308b\u65b9\u306a\u3069\u3001\u5404\u7a2e\u4ed5\u69d8\u306b\u3064\u3044\u3066\u77e5\u308a\u305f\u3044\u65b9\u306f\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u4ed5\u69d8\u3001\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u4ed5\u69d8\u306e\u30da\u30fc\u30b8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002

"},{"location":"development/workspace-usage.html#_1","title":"\u53c2\u52a0\u8005\u6709\u5fd7\u306e\u53c2\u8003\u8a18\u4e8b\u3092\u8aad\u3093\u3067\u307f\u308b","text":"

\u53c2\u52a0\u8005\u6709\u5fd7\u304c\u53d6\u308a\u7d44\u3093\u3067\u304f\u3060\u3055\u3063\u305f\u53d6\u308a\u7d44\u307f\u306fAdvent Calendar\u306b\u307e\u3068\u3081\u3089\u308c\u3066\u3044\u307e\u3059\u306e\u3067\u53c2\u8003\u306b\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002

\u3069\u308c\u304b\u3089\u8aad\u3082\u3046\u304b\u8ff7\u3063\u305f\u65b9\u306f2023\u5e74\u5ea6\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u8ca2\u732e\u8cde\u3092\u53d7\u8cde\u3057\u305f\u7530\u4e2d\u65b0\u592a\u3055\u3093\u304c\u8a18\u8f09\u3057\u3066\u304f\u308c\u305f\u3053\u3061\u3089\u306e\u8a18\u4e8b\u304b\u3089\u8aad\u307f\u9032\u3081\u308b\u3068\u826f\u3044\u3068\u601d\u3044\u307e\u3059\u3002

"},{"location":"development/workspace-usage.html#_2","title":"\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u5909\u66f4\u3057\u3066\u307f\u308b","text":"

\u74b0\u5883\u69cb\u7bc9\u5f8c\u4f55\u3092\u3057\u3066\u826f\u3044\u306e\u304b\u308f\u304b\u3089\u306a\u3044\u65b9\u5411\u3051\u306b\u3001\u307e\u305a\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u8abf\u6574\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002 \u4eca\u56de\u306f\u5236\u5fa1\u30e2\u30b8\u30e5\u30fc\u30eb\u306esimple_pure_pursuit\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u5909\u66f4\u3057\u3066\u307f\u308b\u3053\u3068\u306b\u3057\u307e\u3059\u3002

$HOME/aichallenge-2024/aichallenge/workspace/src/aichallenge_submit/aichallenge_submit_launch/launch/reference.launch.xml\u5185\u306e\u4ee5\u4e0b\u306evalue\u5024\u3092\u8abf\u6574\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002

<node pkg=\"simple_pure_pursuit\" exec=\"simple_pure_pursuit\" name=\"simple_pure_pursuit_node\" output=\"screen\">\n    <param name=\"use_external_target_vel\" value=\"true\"/>\n    <param name=\"external_target_vel\" value=\"8.0\"/>\n    <param name=\"lookahead_gain\" value=\"0.4\"/>\n    <param name=\"lookahead_min_distance\" value=\"5.0\"/>\n    <param name=\"speed_proportional_gain\" value=\"1.0\"/>\n

\u8abf\u6574\u304c\u7d42\u308f\u3063\u305f\u3089\u518d\u3073\u30d3\u30eb\u30c9\u30fb\u5b9f\u884c\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002\u6319\u52d5\u304c\u5909\u308f\u3063\u305f\u3053\u3068\u304c\u78ba\u8a8d\u3067\u304d\u305f\u304b\u3068\u601d\u3044\u307e\u3059\u3002

"},{"location":"development/workspace-usage.html#_3","title":"\u65b0\u898f\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u4f5c\u6210\u3057\u3066\u307f\u308b","text":"

\u65b0\u305f\u306b\u81ea\u4f5c\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u4f5c\u6210\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002\u307e\u305a\u306f\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u3084autoware practice\u3092\u30b3\u30d4\u30fc\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002 \u4ee5\u4e0b\u306e\u3088\u3046\u306b\u9032\u3081\u308b\u3068\u826f\u3044\u3068\u601d\u3044\u307e\u3059\u3002

  1. \u5143\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30b3\u30d4\u30fc\u3057\u3066\u3001\u4e0b\u8a18\u3092\u5909\u66f4
    • \u30d1\u30c3\u30b1\u30fc\u30b8\u540d
    • \u30d5\u30a9\u30eb\u30c0\u540d
    • \u30b3\u30fc\u30c9
    • package.xml
    • CMakeLists.txt
  2. aichallenge_submit\u306e\u4e2d\u306b\u914d\u7f6e
  3. aichallenge_submit_launch\u5185\u306elaunch\u30d5\u30a1\u30a4\u30eb(reference.launch.xml)\u3092\u5909\u66f4

\u203b\u30b3\u30d4\u30fc\u5143\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30e9\u30a4\u30bb\u30f3\u30b9\u3092\u9055\u53cd\u3057\u306a\u3044\u3088\u3046\u5404\u81ea\u78ba\u8a8d\u304a\u9858\u3044\u3044\u305f\u3057\u307e\u3059\u3002

"},{"location":"development/workspace-usage.html#map","title":"[\u4efb\u610f]Map\u306e\u7de8\u96c6\u3092\u3057\u3066\u307f\u308b","text":"

2024\u5e74\u5ea6\u306eAI\u30c1\u30e3\u30ec\u30f3\u30b8\u3067\u306fVectorMapBuilder\u306a\u3069\u306e\u30c4\u30fc\u30eb\u3092\u4f7f\u3063\u3066point cloud map , lanelet2 map\u306a\u3069\u306e\u5730\u56f3\u306e\u7de8\u96c6\u3092\u63a8\u5968\u3057\u3066\u3044\u307e\u3059\u3002

Map\u306e\u30d5\u30a1\u30a4\u30eb\u7f6e\u304d\u5834\u304b\u3089pointcloud map lanelet2 map\u306a\u3069\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u7de8\u96c6\u3057\u3066\u307f\u307e\u3057\u3087\u3046\uff01

VectorMapBuilder\u306e\u4f7f\u3044\u65b9\u52d5\u753b\u306b\u30b9\u30c6\u30c3\u30d7\u30d0\u30a4\u30b9\u30c6\u30c3\u30d7\u306e\u30a4\u30f3\u30b9\u30c8\u30e9\u30af\u30b7\u30e7\u30f3\u306a\u3069\u304c\u3042\u308b\u306e\u3067\u53c2\u8003\u306b\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002

\u4f5c\u6210\u3057\u305flanelet2 map\u306faichallenge/workspace/src/aichallenge_submit/aichallenge_submit_launch/map\u306b\u683c\u7d0d\u3057\u3066\u304f\u3060\u3055\u3044\u3002

"},{"location":"development/workspace-usage.html#_4","title":"\u63d0\u51fa\u3057\u3066\u307f\u308b","text":"

\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3092\u884c\u3063\u305f\u3089\u3053\u3053\u3092\u53c2\u8003\u306b\u63d0\u51fa\u3092\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002

"},{"location":"development/workspace-usage.html#next-step","title":"Next Step:\u30e1\u30a4\u30f3\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u3064\u3044\u3066\u77e5\u308b","text":""},{"location":"development/requirements/index.html","title":"Redirect","text":"Redirect"},{"location":"information/rules.html","title":"\u30eb\u30fc\u30eb","text":""},{"location":"information/rules.html#_2","title":"\u6982\u8981","text":"

\u6307\u5b9a\u3055\u308c\u305f\u30b3\u30fc\u30b9\u3092\u8d70\u884c\u3057\u3001\u898f\u5b9a\u306e\u5468\u56de\u6570\u306b\u5230\u9054\u3059\u308b\u307e\u3067\u8d70\u884c\u6642\u9593\u3092\u7af6\u3044\u307e\u3059\u3002

"},{"location":"information/rules.html#_3","title":"\u74b0\u5883","text":"

\u30b3\u30fc\u30b9\u306b\u306f\u300c\u30b9\u30bf\u30fc\u30c8\u30a8\u30ea\u30a2\u300d\u300c\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u30e9\u30a4\u30f3\u300d\u300c\u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u30a8\u30ea\u30a2\u300d\u304c\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002\u8eca\u4e21\u306f\u30b9\u30bf\u30fc\u30c8\u30a8\u30ea\u30a2\u304b\u3089\u8d70\u884c\u3092\u958b\u59cb\u3057\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u30e9\u30a4\u30f3\u306b\u89e6\u308c\u305f\u30bf\u30a4\u30df\u30f3\u30b0\u3067\u8d70\u884c\u6642\u9593\u306e\u8a08\u6e2c\u304c\u884c\u308f\u308c\u307e\u3059\u3002\u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u30a8\u30ea\u30a2\u3064\u3044\u3066\u306f\u5f8c\u8ff0\u3059\u308b\u300c\u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u300d\u306e\u7ae0\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u307e\u305f\u3001\u8d70\u884c\u306f\u30c1\u30fc\u30e0\u6bce\u306b\u500b\u5225\u306b\u884c\u3044\u3001\u30b3\u30fc\u30b9\u4e0a\u3092\u540c\u6642\u306b\u4ed6\u306e\u8eca\u4e21\u304c\u8d70\u884c\u3057\u305f\u308a\u3001\u969c\u5bb3\u7269\u304c\u8a2d\u7f6e\u3055\u308c\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002

"},{"location":"information/rules.html#_4","title":"\u9032\u884c","text":"

\u5404\u30c1\u30fc\u30e0\u306b\u306f\u3001\u8eca\u4e21\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3092\u884c\u3046\u6e96\u5099\u30bb\u30c3\u30b7\u30e7\u30f3\u3068\u3001\u8eca\u4e21\u3092\u8d70\u884c\u3055\u305b\u3066\u8a08\u6e2c\u3092\u884c\u3046\u8a18\u9332\u30bb\u30c3\u30b7\u30e7\u30f3\u304c\u305d\u308c\u305e\u308c\u5272\u308a\u5f53\u3066\u3089\u308c\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u4e88\u9078\u5927\u4f1a\u3067\u306f\u8eca\u4e21\u3092\u4f7f\u7528\u3057\u306a\u3044\u305f\u3081\u6e96\u5099\u30bb\u30c3\u30b7\u30e7\u30f3\u306f\u9069\u7528\u3055\u308c\u307e\u305b\u3093\u3002\u307e\u305f\u3001\u30a2\u30c9\u30d0\u30f3\u30b9\u30c8\u30af\u30e9\u30b9\u306e\u30c1\u30fc\u30e0\u306b\u3064\u3044\u3066\u3082\u5e38\u306b\u8eca\u4e21\u306e\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u304c\u53ef\u80fd\u3067\u3042\u308b\u305f\u3081\u6e96\u5099\u30bb\u30c3\u30b7\u30e7\u30f3\u306f\u9069\u7528\u3055\u308c\u307e\u305b\u3093\u3002

\u9805\u76ee \u6c7a\u52dd\u5927\u4f1a \u4e88\u9078\u5927\u4f1a \u6e96\u5099\u30bb\u30c3\u30b7\u30e7\u30f3 \u672a\u5b9a \u306a\u3057 \u8a18\u9332\u30bb\u30c3\u30b7\u30e7\u30f3 \u672a\u5b9a 7:00 \u5468\u56de\u6570 \u672a\u5b9a 6"},{"location":"information/rules.html#_5","title":"\u8d70\u884c\u958b\u59cb","text":"

\u8eca\u4e21\u306f\u30b9\u30bf\u30fc\u30c8\u30a8\u30ea\u30a2\u304b\u3089\u8d70\u884c\u3092\u958b\u59cb\u3057\u3001\u521d\u3081\u3066\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u30e9\u30a4\u30f3\u3092\u89e6\u308c\u305f\u6642\u70b9\u304b\u3089\u8d70\u884c\u6642\u9593\u306e\u8a08\u6e2c\u304c\u958b\u59cb\u3055\u308c\u307e\u3059\u3002\u4e88\u9078\u5927\u4f1a\u3067\u306f\u4e8b\u524d\u306b\u5b9a\u3081\u3089\u308c\u305f\u59ff\u52e2\u3067\u8eca\u4e21\u304c\u914d\u7f6e\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u6c7a\u52dd\u5927\u4f1a\u3067\u306f\u30b9\u30bf\u30fc\u30c8\u30a8\u30ea\u30a2\u5185\u306b\u4efb\u610f\u306e\u59ff\u52e2\u3067\u8eca\u4e21\u3092\u914d\u7f6e\u3067\u304d\u307e\u3059\u304c\u3001\u8eca\u4e21\u306b\u5bfe\u3059\u308b\u64cd\u4f5c\u306f\u30b9\u30bf\u30fc\u30c8\u30a8\u30ea\u30a2\u306e\u4e2d\u3067\u306e\u307f\u8a8d\u3081\u3089\u308c\u3066\u3044\u307e\u3059\u3002

"},{"location":"information/rules.html#_6","title":"\u8d70\u884c\u7d42\u4e86","text":"

\u4ee5\u4e0b\u306e\u3044\u305a\u308c\u304b\u306e\u6761\u4ef6\u3092\u6e80\u305f\u3057\u305f\u6642\u70b9\u3067\u8d70\u884c\u7d42\u4e86\u3068\u306a\u308a\u3001\u8d70\u884c\u7d50\u679c\u3068\u3057\u3066\u8a18\u9332\u3055\u308c\u307e\u3059\u3002

  • \u898f\u5b9a\u306e\u5468\u56de\u6570\u306b\u5230\u9054\u3057\u305f\u3002
  • \u8a18\u9332\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u5272\u308a\u5f53\u3066\u6642\u9593\u304c\u7d4c\u904e\u3057\u305f\u3002
  • \u8eca\u4e21\u306b\u89e6\u308c\u3066\u64cd\u4f5c\u3092\u884c\u3063\u305f\u3002
  • \u305d\u306e\u4ed6\u3001\u200b\u4f55\u3089\u304b\u306e\u7406\u7531\u3067\u8d70\u884c\u7d42\u4e86\u306b\u76f8\u5f53\u3059\u308b\u3068\u904b\u55b6\u304c\u5224\u65ad\u3057\u305f\u5834\u5408\u3002
"},{"location":"information/rules.html#_7","title":"\u8d70\u884c\u4e2d\u6b62","text":"

\u4ee5\u4e0b\u306e\u3044\u305a\u308c\u304b\u306e\u6761\u4ef6\u3092\u6e80\u305f\u3057\u305f\u6642\u70b9\u3067\u8d70\u884c\u7d42\u4e86\u3068\u306a\u308a\u3001\u5f53\u8a72\u306e\u8d70\u884c\u306f\u7121\u52b9\u3068\u306a\u308a\u307e\u3059\u3002

  • (\u4e88\u9078\u306e\u307f)\u8a18\u9332\u30bb\u30c3\u30b7\u30e7\u30f3\u958b\u59cb\u304b\u30892\u5206\u4ee5\u5185\u306b\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u30e9\u30a4\u30f3\u3092\u901a\u904e\u3057\u3066\u3044\u306a\u3044\u3002
  • (\u4e88\u9078\u306e\u307f)\u30b3\u30fc\u30b9\u304b\u3089\u5927\u304d\u304f\u9038\u8131\u3057\u305f\u3002
  • \u30b3\u30fc\u30b9\u306e\u58c1\u3092\u52d5\u304b\u3057\u305f\u3002
  • \u305d\u306e\u4ed6\u3001\u200b\u4f55\u3089\u304b\u306e\u7406\u7531\u3067\u8d70\u884c\u4e2d\u6b62\u306b\u76f8\u5f53\u3059\u308b\u3068\u904b\u55b6\u304c\u5224\u65ad\u3057\u305f\u5834\u5408\u3002
"},{"location":"information/rules.html#_8","title":"\u9806\u4f4d","text":"

\u9806\u4f4d\u306f\u4ee5\u4e0b\u306e\u57fa\u6e96\u306b\u5f93\u3063\u3066\u6c7a\u5b9a\u3057\u307e\u3059\u3002

  • \u898f\u5b9a\u306e\u5468\u56de\u6570\u306b\u5230\u9054\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u8d70\u884c\u6642\u9593\u306e\u77ed\u3044\u30c1\u30fc\u30e0\u3002
  • \u898f\u5b9a\u306e\u5468\u56de\u6570\u306b\u5230\u9054\u3057\u3066\u3044\u306a\u3044\u5834\u5408\u3001
  • \u5468\u56de\u6570\u304c\u591a\u3044\u30c1\u30fc\u30e0\u3002
  • \u5468\u56de\u6570\u304c\u540c\u3058\u5834\u5408\u3001\u6700\u7d42\u5468\u307e\u3067\u306e\u8d70\u884c\u6642\u9593\u304c\u77ed\u3044\u30c1\u30fc\u30e0\u3002
"},{"location":"information/rules.html#_9","title":"\u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7","text":"

\u8eca\u4e21\u306b\u306f\u30b3\u30f3\u30c7\u30a3\u30b7\u30e7\u30f3\u3068\u547c\u3070\u308c\u308b\u4eee\u60f3\u7684\u306a\u5024\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u304a\u308a\u3001\u3053\u306e\u5024\u304c\u5897\u52a0\u3059\u308b\u3068\u901f\u5ea6\u306b\u5236\u9650\u304c\u639b\u304b\u308a\u307e\u3059\u3002\u30b3\u30f3\u30c7\u30a3\u30b7\u30e7\u30f3\u306f\u8eca\u4e21\u304c\u8d70\u884c\u3059\u308b\u3068\u5897\u52a0\u3059\u308b\u307b\u304b\u3001\u5f8c\u8ff0\u3059\u308b\u4eee\u60f3\u7684\u306a\u969c\u5bb3\u7269\u306b\u885d\u7a81\u3057\u305f\u5834\u5408\u3082\u5897\u52a0\u3057\u307e\u3059\u3002\u30b3\u30f3\u30c7\u30a3\u30b7\u30e7\u30f3\u306f\u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u30a8\u30ea\u30a2\u306b\u898f\u5b9a\u306e\u79d2\u6570\u505c\u6b62\u3059\u308b\u3053\u3068\u3067\u521d\u671f\u5024\u306b\u30ea\u30bb\u30c3\u30c8\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

\u8a2d\u5b9a\u9805\u76ee \u8a2d\u5b9a\u5024 \u88dc\u8db3\u4e8b\u9805 \u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u6210\u7acb\u6642\u9593 3.0 \u79d2 \u2015 \u901f\u5ea6\u5236\u9650\u6709\u52b9\u5316 1000 \u6700\u5927\u901f\u5ea6\u304c 20 km/h \u306b\u5236\u9650\u3055\u308c\u308b \u30bb\u30af\u30b7\u30e7\u30f3\u901a\u904e\u6642 30 \u2015 \u4eee\u60f3\u969c\u5bb3\u7269\u885d\u7a81\u6642 20 - 380 \u885d\u7a81\u306e\u4ed5\u65b9\u306b\u3088\u308a\u5909\u52d5"},{"location":"information/rules.html#_10","title":"\u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u30a8\u30ea\u30a2","text":"

\u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u30a8\u30ea\u30a2\u306f\u4ee5\u4e0b\u306e\u753b\u50cf\u306e\u3088\u3046\u306b\u7dd1\u8272\u306e\u67a0\u3067\u8868\u793a\u3055\u308c\u3066\u3044\u307e\u3059\u3002

"},{"location":"information/rules.html#_11","title":"\u30b3\u30f3\u30c7\u30a3\u30b7\u30e7\u30f3\u306e\u5897\u52a0","text":"

\u30b3\u30fc\u30b9\u306f\u4eee\u60f3\u7684\u306b\u8907\u6570\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u306b\u5206\u3051\u3066\u7ba1\u7406\u3055\u308c\u3066\u304a\u308a\u3001\u30bb\u30af\u30b7\u30e7\u30f3\u304b\u3089\u51fa\u308b\u305f\u3073\u306b\u30b3\u30f3\u30c7\u30a3\u30b7\u30e7\u30f3\u304c\u4e00\u5b9a\u5024\u5897\u52a0\u3057\u307e\u3059\u3002\u307e\u305f\u3001\u30b3\u30fc\u30b9\u306b\u306f\u4ee5\u4e0b\u306e\u753b\u50cf\u306e\u3088\u3046\u306b\u7d2b\u8272\u306e\u67a0\u3067\u8868\u793a\u3055\u308c\u305f\u4eee\u60f3\u7684\u306a\u969c\u5bb3\u7269\u304c\u8a2d\u7f6e\u3055\u308c\u3066\u304a\u308a\u3001\u3053\u308c\u306b\u885d\u7a81\u3057\u305f\u5834\u5408\u3082\u30b3\u30f3\u30c7\u30a3\u30b7\u30e7\u30f3\u304c\u5897\u52a0\u3057\u307e\u3059\uff08\u4eee\u60f3\u969c\u5bb3\u7269\u306f\u8eca\u4e21\u306e\u7269\u7406\u7684\u306a\u6319\u52d5\u306b\u306f\u4e00\u5207\u5f71\u97ff\u3092\u53ca\u307c\u3057\u307e\u305b\u3093\uff09\u3002

\u4eee\u60f3\u969c\u5bb3\u7269\u306f\u8eca\u4e21\u304c\u30bb\u30af\u30b7\u30e7\u30f3\u304b\u3089\u51fa\u308b\u30bf\u30a4\u30df\u30f3\u30b0\u3067\u30bb\u30af\u30b7\u30e7\u30f3\u5185\u306e\u30e9\u30f3\u30c0\u30e0\u306a\u4f4d\u7f6e\u306b\u751f\u6210\u3055\u308c\u307e\u3059\u3002\u4e8c\u5468\u76ee\u4ee5\u964d\u306f\u30bb\u30af\u30b7\u30e7\u30f3\u5185\u306e\u4eee\u60f3\u969c\u5bb3\u7269\u3092\u524a\u9664\u3057\u305f\u4e0a\u3067\u518d\u5ea6\u751f\u6210\u3059\u308b\u305f\u3081\u3001\u540c\u3058\u30bb\u30af\u30b7\u30e7\u30f3\u306e\u4e2d\u306b\u8907\u6570\u306e\u4eee\u60f3\u969c\u5bb3\u7269\u304c\u8a2d\u7f6e\u3055\u308c\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u307e\u305f\u3001\u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u30a8\u30ea\u30a2\u306e\u4ed8\u8fd1\u306b\u306f\u4eee\u60f3\u969c\u5bb3\u7269\u306f\u751f\u6210\u3055\u308c\u307e\u305b\u3093\u3002

"},{"location":"information/schedule.html","title":"\u5927\u4f1a\u60c5\u5831","text":""},{"location":"information/schedule.html#_2","title":"\u5168\u4f53\u306e\u6d41\u308c","text":""},{"location":"information/schedule.html#_3","title":"\u65e5\u7a0b","text":"\u30a4\u30d9\u30f3\u30c8 \u65e5\u4ed8 \u53c2\u52a0\u8005\u767b\u9332 2024\u5e745\u670827\u65e5\uff5e7\u67081\u65e5 \u4ea4\u6d41\u4f1a 2024\u5e746\u670821\u65e5 \u4e88\u9078 2024\u5e747\u67082\u65e5\uff5e9\u67082\u65e5 \u4e88\u9078\u8868\u5f70\u5f0f 2024\u5e749\u6708\u9803\uff08\u4e88\u5b9a\uff09 \u4e8b\u524d\u7df4\u7fd2\u65e5 2024\u5e7410\u670810\u65e5\u301c11\u65e5 \u4e8b\u524d\u7df4\u7fd2\u65e5 2024\u5e7411\u67081\u65e5 \u6e96\u6c7a\u52dd 2024\u5e7411\u67082\u65e5 \u6c7a\u52dd 2024\u5e7411\u67083\u65e5 \u6c7a\u52dd\u8868\u5f70\u5f0f\u30fb\u4ea4\u6d41\u4f1a 2024\u5e7412\u6708\u9803"},{"location":"preliminaries/check-results.html","title":"\u7d50\u679c\u306e\u78ba\u8a8d","text":"

\u3053\u306e\u30da\u30fc\u30b8\u3067\u306f\u672c\u5927\u4f1a\u306e\u30eb\u30fc\u30eb\u30fb\u9806\u4f4d\u4ed8\u3051\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002\u306a\u304a\u3001\u3053\u306e\u30da\u30fc\u30b8\u306e\u5185\u5bb9\u306f\u5927\u4f1a\u671f\u9593\u4e2d\u306b\u5909\u66f4\u3055\u308c\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002

"},{"location":"preliminaries/check-results.html#ranking-system","title":"Ranking System","text":"

\u4ee5\u4e0b\u306e\u624b\u9806\u3067\u30b9\u30b3\u30a2\u306e\u8a08\u7b97\u304c\u884c\u308f\u308c\u307e\u3059\u3002\u8907\u6570\u56de\u306e\u8d70\u884c\u3092\u884c\u3063\u305f\u5834\u5408\u306f\u3088\u308a\u30b9\u30b3\u30a2\u306e\u9ad8\u3044\u65b9\u3092\u63a1\u7528\u3059\u308b\u3082\u306e\u3068\u3057\u307e\u3059\u3002 \u8d70\u884c\u4e2d\u6b62\u3068\u306a\u3063\u305f\u5834\u5408\u306f\u5468\u56de\u6570=0\u3068\u3057\u3066\u6271\u3044\u307e\u3059\u3002

  1. \u8d70\u884c\u7d42\u4e86\u6642\u70b9\u3067\u306e\u5468\u56de\u6570\u306e\u591a\u3055

  2. \u6700\u7d42\u5468\u307e\u3067\u306e\u30e9\u30c3\u30d7\u30bf\u30a4\u30e0\u306e\u5408\u8a08\u306e\u77ed\u3055

\u7279\u5225\u8cde\uff1a\u4e88\u9078\u306f\u30b7\u30fc\u30c9\u67a0\u3092\u8a2d\u3051\u3066\u3001\u6c7a\u52dd\u306f\u8868\u5f70

  • Best Lap Time : \u4e88\u9078\u306fSIM\u3067\u8a08\u6e2c\u3001\u6c7a\u52dd\u306fTOM\u2019S\u306e\u30b7\u30b9\u30c6\u30e0\u3092\u4f7f\u7528

  • Best Comfortable Ride\uff1a\u4e88\u9078\u306fSIM\u3067\u8a08\u6e2c\u3001\u6c7a\u52dd\u306f\u6c34\u3092\u30b0\u30e9\u30b9\u306b\u5165\u308c\u3066\u8a08\u91cf\u3059\u308b\u3053\u3068\u3067\u5bfe\u5fdc

  • \u30a4\u30f3\u30bf\u30e9\u30af\u30b7\u30e7\u30f3\u30fb\u5e45\u5e83\u3044\u5206\u91ce\u306e\u30a8\u30f3\u30b8\u30cb\u30a2\u3092\u8868\u5f70

\u30e9\u30f3\u30ad\u30f3\u30b0\u4f8b

Lap Time Gap \u9806\u4f4d 7 04:41.000 \u2015 1 7 04:47.000 +00:06.000 2 7 04:54.000 +00:13.000 3 6 04:18.000 \u2015 4 6 04:29.000 +00:11.000 5 6 04:42.000 +00:24.000 6 6 04:56.000 +00:38.000 7 5 04:05.000 \u2015 8 5 04:23.000 +00:18.000 9"},{"location":"preliminaries/check-results.html#submission","title":"Submission","text":"

\u53c2\u52a0\u8005\u306e\u7686\u69d8\u306b\u306f\u3001\u958b\u767a\u3057\u305f\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3092\u63d0\u51fa\u7528\u306e\u30da\u30fc\u30b8\u304b\u3089\u8a55\u4fa1\u30b7\u30b9\u30c6\u30e0\u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u3066\u3044\u305f\u3060\u304d\u307e\u3059\u3002\u8a73\u7d30\u306f\u3053\u3061\u3089\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002

"},{"location":"preliminaries/check-results.html#how-to-check-results","title":"How to check results","text":"

\u7d50\u679c\u306e\u30b9\u30b3\u30a2\u306fresult-summary.json\u306b\u9001\u3089\u308c\u307e\u3059\u3002

"},{"location":"preliminaries/check-results.html#_2","title":"\u7d50\u679c\u306e\u30ed\u30b0\u5f62\u5f0f","text":"

\u7d50\u679c\u306f./output/result-summary.json \u306b\u4ee5\u4e0b\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3067\u51fa\u529b\u3055\u308c\u307e\u3059\u3002

{\n  \"laps\": [50.12, 50.34, 50.56, 50.78, 50.90],\n  \"min_time\": 50.12,\n  \"max_jerk\": 32.10\n}\n
"},{"location":"preliminaries/submission.html","title":"\u63d0\u51fa","text":""},{"location":"preliminaries/submission.html#_2","title":"\u30aa\u30f3\u30e9\u30a4\u30f3\u74b0\u5883","text":"

\u672c\u5927\u4f1a\u3067\u306f\u3001\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u30fc\u3068\u81ea\u52d5\u63a1\u70b9\u6a5f\u80fd\u3092\u5099\u3048\u305f\u30aa\u30f3\u30e9\u30a4\u30f3\u74b0\u5883\u3092\u4f7f\u7528\u3057\u3066\u63a1\u70b9\u304c\u884c\u308f\u308c\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u624b\u9806\u306b\u5f93\u3063\u3066\u3001\u4f5c\u6210\u3057\u305f\u30d1\u30c3\u30b1\u30fc\u30b8\u7fa4\u3092\u30aa\u30f3\u30e9\u30a4\u30f3\u74b0\u5883\u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u5f8c\u3001\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u304c\u81ea\u52d5\u3067\u958b\u59cb\u3055\u308c\u3001\u7d50\u679c\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002

\u63d0\u51fa\u306f\u4ee5\u4e0b\u306e\u624b\u9806\u3067\u884c\u3044\u307e\u3059\u3002

  1. \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306e\u5727\u7e2e
  2. \u30ed\u30fc\u30ab\u30eb\u8a55\u4fa1\u74b0\u5883\u3067\u306e\u52d5\u4f5c\u78ba\u8a8d
  3. \u30aa\u30f3\u30e9\u30a4\u30f3\u63a1\u70b9\u74b0\u5883\u3078\u306e\u63d0\u51fa
"},{"location":"preliminaries/submission.html#_3","title":"\u30aa\u30f3\u30e9\u30a4\u30f3\u74b0\u5883\u3078\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u624b\u9806","text":"
  1. \u52d5\u4f5c\u78ba\u8a8d

    1.1. \u4e8b\u524d\u6e96\u5099

    • aichallenge_submit\u3092\u5727\u7e2e\u3057\u3001\u7d50\u679c\u51fa\u529b\u7528\u306e\u30d5\u30a9\u30eb\u30c0\u3092\u751f\u6210\u3057\u307e\u3059\u3002
    • ./create_submit_file.bash

    1.2. Docker\u30a4\u30e1\u30fc\u30b8\u306e\u30d3\u30eb\u30c9

    • ./docker_build.sh eval

    1.3. Docker\u30b3\u30f3\u30c6\u30ca\u306e\u8d77\u52d5

    • \u8d77\u52d5\u5f8c\u3001\u81ea\u52d5\u3067Autoware\u304c\u7acb\u3061\u4e0a\u304c\u308a\u3001\u81ea\u52d5\u904b\u8ee2\u304c\u958b\u59cb\u3055\u308c\u307e\u3059\u3002
    • GPU\u7248AWSIM\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408: ./docker_run.sh eval gpu
    • CPU\u7248AWSIM\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408: ./docker_run.sh eval cpu

    1.4. result.json\u306e\u78ba\u8a8d

    • \u8a55\u4fa1\u5b8c\u4e86\u5f8c\u3001output/latest\u30d5\u30a9\u30eb\u30c0\u306b\u4ee5\u4e0b\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u683c\u7d0d\u3055\u308c\u307e\u3059\u3002
      • autoware.log
      • rosbag2_autoware
      • capture
      • result-summary.json
      • result-details.json
  2. \u30aa\u30f3\u30e9\u30a4\u30f3\u74b0\u5883\u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9

    \u30aa\u30f3\u30e9\u30a4\u30f3\u74b0\u5883\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3001\u53f3\u4e0a\u300cLOG IN\u300d\u30dc\u30bf\u30f3\u304b\u3089\u30ed\u30b0\u30a4\u30f3\u3057\u307e\u3059\u3002

    \u30ed\u30b0\u30a4\u30f3\u304c\u5b8c\u4e86\u3057\u305f\u3089\u7dd1\u8272\u306e\u300cUPLOAD\u300d\u30dc\u30bf\u30f3\u304b\u3089aichallenge_submit.tar.gz\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u5f8c\u3001\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306e\u30d3\u30eb\u30c9\u3068\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u304c\u9806\u306b\u5b9f\u65bd\u3055\u308c\u307e\u3059\u3002

    • \u6b63\u5e38\u306b\u7d42\u4e86\u3057\u305f\u5834\u5408\u3001\u63a1\u70b9\u5b8c\u4e86\u3068\u8868\u793a\u3055\u308c\u3001result.json\u304c\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u3001\u5404\u30e9\u30c3\u30d7\u30bf\u30a4\u30e0\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002
    • \u30b7\u30ca\u30ea\u30aa\u5b9f\u884c\u5f8c\u3001launch\u306b\u5931\u6557\u3057\u305f\u7b49\u3067\u30b9\u30b3\u30a2\u304c\u51fa\u529b\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u300c\u7d50\u679c\u7121\u3057\u300d\u3068\u8868\u793a\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u5834\u5408\u3001\u30b5\u30fc\u30d0\u30fc\u30b5\u30a4\u30c9\u3067\u306e\u5185\u90e8\u30a8\u30e9\u30fc\u306e\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u518d\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3092\u304a\u9858\u3044\u3057\u307e\u3059\u3002\u554f\u984c\u304c\u7d9a\u304f\u5834\u5408\u306f\u304a\u554f\u3044\u5408\u308f\u305b\u304f\u3060\u3055\u3044\u3002
    • \u30d3\u30eb\u30c9\u306b\u5931\u6557\u3057\u305f\u5834\u5408\u306f\u300c\u30d3\u30eb\u30c9\u5931\u6557\u300d\u3068\u8868\u793a\u3055\u308c\u307e\u3059\u3002\u624b\u9806\u306e\u78ba\u8a8d\u5f8c\u3001\u518d\u5ea6\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u3066\u304f\u3060\u3055\u3044\u3002
    • \u30e9\u30f3\u30ad\u30f3\u30b0\u306f\u3053\u308c\u307e\u3067\u306e\u63a1\u70b9\u3067\u306e\u6700\u9ad8\u70b9\u304c\u9069\u7528\u3055\u308c\u307e\u3059\u3002
    • \u63a1\u70b9\u5b9f\u884c\u4e2d\u306f\u65b0\u305f\u306a\u30bd\u30fc\u30b9\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u306f\u3067\u304d\u307e\u305b\u3093\u3002
    • \u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u306f1\u65e5\u306b10\u56de\u307e\u3067\u53ef\u80fd\u3067\u3001\u65e5\u672c\u6642\u95930\u6642\u306b\u56de\u6570\u304c\u30ea\u30bb\u30c3\u30c8\u3055\u308c\u307e\u3059\u3002
  3. \u7d50\u679c\u306e\u78ba\u8a8d

    \u30aa\u30f3\u30e9\u30a4\u30f3\u74b0\u5883\u3067\u8a55\u4fa1\u304c\u7d42\u308f\u308b\u3068\u3001result.json\u304c\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u7d50\u679c\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002

  4. \u7d50\u679c\u306a\u3057\u306e\u5834\u5408

    4.1. package\u306e\u4f9d\u5b58\u95a2\u4fc2\u306b\u554f\u984c\u304c\u306a\u3044\u304b\u78ba\u8a8d

    • \u4f7f\u7528\u8a00\u8a9e\u306b\u5fdc\u3058\u3066\u3001package.xml\u3001setup.py\u3001\u307e\u305f\u306fCMakeLists.txt\u306b\u4f9d\u5b58\u95a2\u4fc2\u306e\u6f0f\u308c\u304c\u306a\u3044\u304b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    4.2. docker\u306e\u78ba\u8a8d

    • \u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067Docker\u5185\u3092\u78ba\u8a8d\u3057\u3001\u5fc5\u8981\u306a\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u6b63\u3057\u304f\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30fb\u30d3\u30eb\u30c9\u3055\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002

      • docker run -it aichallenge-2024-eval:latest /bin/bash
    • \u78ba\u8a8d\u3059\u308b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea:

      • /aichallenge/workspace/*
      • /autoware/install/*
"},{"location":"setup/build-docker.html","title":"\u5927\u4f1a\u7528\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u30d3\u30eb\u30c9\u30fb\u5b9f\u884c","text":"

\u5927\u4f1a\u7528\u30ea\u30dd\u30b8\u30c8\u30ea\u3067\u306f\u3001\u5b9f\u969b\u306e\u52d5\u4f5c\u74b0\u5883\u306f\u3059\u3079\u3066Docker\u5185\u3067\u5b8c\u7d50\u3057\u3066\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u5229\u7528\u306f\u4ee5\u4e0b\u306e\u6d41\u308c\u3067\u884c\u3044\u307e\u3059\u3002

  1. \u5927\u4f1a\u74b0\u5883\u306eDocker\u30a4\u30e1\u30fc\u30b8\u306e\u30d3\u30eb\u30c9
  2. Docker\u30b3\u30f3\u30c6\u30ca\u4e0a\u3067\u306eAutoware\u306e\u30d3\u30eb\u30c9
  3. Docker\u30b3\u30f3\u30c6\u30ca\u4e0a\u3067\u306eAutoware\u3068\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u306e\u540c\u6642\u8d77\u52d5
"},{"location":"setup/build-docker.html#docker","title":"\u5927\u4f1a\u74b0\u5883\u306eDocker\u30a4\u30e1\u30fc\u30b8\u306e\u30d3\u30eb\u30c9","text":"

\u518d\u5ea6Alt+Ctrl+T\u3067\u30bf\u30fc\u30df\u30ca\u30eb\u3092\u7acb\u3061\u4e0a\u3052\u3066\u4e0b\u3055\u3044\u3002\u4ee5\u4e0b\u306b\u5f93\u3063\u3066\u30b3\u30de\u30f3\u30c9\u3092Ctrl+Shift+P\u3067\u8cbc\u308a\u4ed8\u3051Enter\u3067\u5b9f\u884c\u3057\u307e\u3059\u3002

\u307e\u305a\u5927\u4f1a\u7528\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u5165\u308a\u307e\u3059\u3002

cd ~/aichallenge-2024\n

Docker\u30a4\u30e1\u30fc\u30b8\u306e\u30d3\u30eb\u30c9\u3092\u884c\u3044\u307e\u3059\u3002

./docker_build.sh dev\n
docker images\n

\u3067\u4ee5\u4e0b\u306e\u30a4\u30e1\u30fc\u30b8\u304c\u751f\u6210\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3057\u3087\u3046\u3002

aichallenge-2024-dev   latest   df2e83a20349   33 minutes ago   8.9GB\n
"},{"location":"setup/build-docker.html#dockerautoware","title":"Docker\u30b3\u30f3\u30c6\u30ca\u4e0a\u3067\u306eAutoware\u306e\u30d3\u30eb\u30c9","text":"

\u4ee5\u4e0b\u3092\u5b9f\u884c\u3057\u3066Docker\u30b3\u30f3\u30c6\u30ca\u3092\u7acb\u3061\u4e0a\u3052\u307e\u3059\u3002

cd ~/aichallenge-2024\n./docker_run.sh dev cpu\n

\u7279\u306b\u4f55\u3082\u5909\u308f\u3063\u3066\u3044\u306a\u3044\u3088\u3046\u306b\u898b\u3048\u307e\u3059\u304c\u3001\u4e0a\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3068\u74b0\u5883\u304cDocker\u30b3\u30f3\u30c6\u30ca\u5185\u90e8\u306b\u79fb\u884c\u3057\u307e\u3059\u3002\u4eca\u306e\u74b0\u5883\u304cDocker\u30b3\u30f3\u30c6\u30ca\u5185\u304b\u3069\u3046\u304b\u306f\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u4f55\u3082\u8868\u793a\u3055\u308c\u3066\u3044\u306a\u3044\u304b\u3092\u78ba\u8a8d\u3059\u308b\u306e\u304c\u308f\u304b\u308a\u3084\u3059\u3044\u3067\u3059\u3002

ls ~\n

Docker\u30b3\u30f3\u30c6\u30ca\u5185\u3067\u4ee5\u4e0b\u3092\u5b9f\u884c\u3057\u3066Autoware\u3092\u30d3\u30eb\u30c9\u3057\u307e\u3059\u3002

cd /aichallenge\n./build_autoware.bash\n
"},{"location":"setup/build-docker.html#dockerautowaresimulator","title":"Docker\u30b3\u30f3\u30c6\u30ca\u4e0a\u3067\u306eAutoware\u3068Simulator\u306e\u5b9f\u884c","text":"

Autoware\u306e\u30d3\u30eb\u30c9\u5f8c\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002

./run_evaluation.bash\n

\u4e0b\u8a18\u306e\u69d8\u306a\u753b\u9762\u304c\u8868\u793a\u3055\u308c\u305f\u3089\u8d77\u52d5\u5b8c\u4e86\u3067\u3059\u3002\u7d42\u4e86\u3059\u308b\u306b\u306f\u30bf\u30fc\u30df\u30ca\u30eb\u4e0a\u3067CTRL + C\u3092\u5165\u529b\u3057\u307e\u3059\u3002

"},{"location":"setup/build-docker.html#next-step","title":"Next Step: \u958b\u767a\u3092\u3057\u3066\u307f\u308b","text":"

\u4ee5\u4e0a\u3067\u74b0\u5883\u69cb\u7bc9\u306f\u7d42\u4e86\u3067\u3059\uff01\u6b21\u306f\u5b9f\u969b\u306b\u958b\u767a\u3092\u884c\u3063\u3066\u307f\u307e\u3057\u3087\u3046\u3002

"},{"location":"setup/docker.html","title":"\u4eee\u60f3\u74b0\u5883\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":""},{"location":"setup/docker.html#_2","title":"\u4f9d\u5b58\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":"

\u307e\u305a\u306f\u5fc5\u8981\u306a\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002

sudo apt update\nsudo apt install -y python3-pip ca-certificates curl gnupg\n
"},{"location":"setup/docker.html#docker","title":"Docker\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":"

\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u901a\u308a\u306b\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002

sudo install -m 0755 -d /etc/apt/keyrings\ncurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg\nsudo chmod a+r /etc/apt/keyrings/docker.gpg\necho \\\n  \"deb [arch=\"$(dpkg --print-architecture)\" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \\\n  \"$(. /etc/os-release && echo \"$VERSION_CODENAME\")\" stable\" | \\\n  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null\n\nsudo apt-get update\nsudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin\nsudo usermod -aG docker $USER\nnewgrp docker\n

\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u6b63\u5e38\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002

sudo docker run hello-world\n

Hello from Docker!\u3068\u8868\u793a\u3055\u308c\u308c\u3070\u6b63\u5e38\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u51fa\u6765\u3066\u3044\u307e\u3059\u3002

"},{"location":"setup/docker.html#rocker","title":"rocker\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":"

rocker\u306fDocker\u30b3\u30f3\u30c6\u30ca\u306eGUI\u30a2\u30d7\u30ea\u3092\u7c21\u5358\u306b\u8d77\u52d5\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u30c4\u30fc\u30eb\u3067\u3059\u3002

\u516c\u5f0fREADME\u3067\u306fapt\u304b\u3089\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304c\u63a8\u5968\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u3001\u624b\u9806\u3068\u74b0\u5883\u3092\u30b7\u30f3\u30d7\u30eb\u306b\u3059\u308b\u305f\u3081\u306b\u3053\u3053\u3067\u306fpip\u304b\u3089\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002

pip install rocker\n

\u30c7\u30d5\u30a9\u30eb\u30c8\u8a2d\u5b9a\u3067\u306frocker\u306e\u5b9f\u884c\u30d5\u30a1\u30a4\u30eb\u3078\u306e\u30d1\u30b9\u304c\u901a\u3063\u3066\u3044\u306a\u3044\u306e\u3067\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067.bashrc\u306b\u8ffd\u52a0\u3057\u3066\u304a\u304d\u307e\u3059\u3002

echo export PATH='$HOME/.local/bin:$PATH' >> ~/.bashrc\nsource ~/.bashrc\n
"},{"location":"setup/docker.html#autowaredocker","title":"Autoware\u74b0\u5883\u306eDocker\u30a4\u30e1\u30fc\u30b8\u53d6\u5f97","text":"

AI\u30c1\u30e3\u30ec\u30f3\u30b8\u3067\u4f7f\u7528\u3059\u308bautoware\u74b0\u5883\u306eDocker\u30a4\u30e1\u30fc\u30b8\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002

Docker\u30a4\u30e1\u30fc\u30b8\u306f10GB\u7a0b\u5ea6\u306e\u30b5\u30a4\u30ba\u304c\u3042\u308a\u3001\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u306b\u306f\u6642\u9593\u304c\u639b\u304b\u308b\u305f\u3081\u6709\u7ddaLAN\u3067\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3092\u63a8\u5968\u3057\u307e\u3059\u3002

docker pull ghcr.io/automotiveaichallenge/autoware-universe:humble-latest\n

\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3057\u307e\u3059\u3002

docker images\n

Docker\u30a4\u30e1\u30fc\u30b8\u304c\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u3066\u3044\u308c\u3070\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u51fa\u529b\u304c\u5f97\u3089\u308c\u307e\u3059\u3002

REPOSITORY                                        TAG                       IMAGE ID       CREATED         SIZE\nghcr.io/automotiveaichallenge/autoware-universe   humble-latest             30c59f3fb415   13 days ago     8.84GB\n
"},{"location":"setup/docker.html#next-step","title":"Next Step","text":"

2\u7a2e\u985e\u306eAWSIM\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002

\u521d\u3081\u3066\u306e\u65b9\u306f\u63cf\u753b\u306a\u3057AWSIM\u3078\u3001GPU\u642d\u8f09\u306ePC\u3092\u304a\u6301\u3061\u306e\u65b9\u3067\u3088\u308a\u30ea\u30c3\u30c1\u306a\u958b\u767a\u74b0\u5883\u3092\u3054\u7528\u610f\u3055\u308c\u305f\u3044\u65b9\u306f\u63cf\u753b\u3042\u308aAWSIM\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u304a\u9032\u307f\u4e0b\u3055\u3044\u3002

\u63cf\u753b\u306a\u3057AWSIM\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9

\u63cf\u753b\u3042\u308aAWSIM\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9

"},{"location":"setup/headless-simulation.html","title":"\u63cf\u753b\u306a\u3057AWSIM\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9","text":""},{"location":"setup/headless-simulation.html#awsim_1","title":"AWSIM\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9","text":"
  1. Google Drive \u304b\u3089\u6700\u65b0\u306e AWSIM.zip \u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3001aichallenge-2024/aichallenge/simulator \u306b\u5c55\u958b\u3057\u307e\u3059\u3002

  2. \u5b9f\u884c\u30d5\u30a1\u30a4\u30eb\u304caichallenge-2024/aichallenge/simulator/AWSIM/AWSIM.x86_64\u306b\u5b58\u5728\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002

\u4ee5\u4e0a\u3067\u74b0\u5883\u69cb\u7bc9\u306f\u7d42\u4e86\u3068\u306a\u308a\u307e\u3059\uff01

"},{"location":"setup/headless-simulation.html#next-step","title":"Next Step: \u5927\u4f1a\u7528\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u30d3\u30eb\u30c9\u30fb\u5b9f\u884c","text":""},{"location":"setup/requirements.html","title":"\u63a8\u5968\u74b0\u5883","text":"

\u672c\u5927\u4f1a\u3067\u4f7f\u7528\u3057\u3066\u3044\u305f\u3060\u304fPC\u306e\u52d5\u4f5c\u74b0\u5883\u3068\u3057\u3066\u4ee5\u4e0b\u3092\u63a8\u5968\u3057\u3066\u304a\u308a\u307e\u3059\u3002 \u63a8\u5968\u3068\u66f8\u304b\u308c\u3066\u3044\u308b\u3082\u306e\u306b\u95a2\u3057\u3066\u306f\u6e80\u305f\u3057\u3066\u3044\u306a\u304f\u3066\u3082\u52d5\u4f5c\u3059\u308b\u3053\u3068\u306f\u53ef\u80fd\u3067\u3059\u3002\u305f\u3060\u3057\u3001\u63a8\u5968\u3088\u308a\u3082\u4f4e\u3044\u30b9\u30da\u30c3\u30af\u3067\u52d5\u4f5c\u3055\u305b\u308b\u5834\u5408ROS 2\u5074\u3067\u306e\u5b9f\u884c\u901f\u5ea6\u304c\u5b89\u5b9a\u305b\u305a\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u5b9f\u884c\u306e\u5ea6\u306b\u6319\u52d5\u304c\u5927\u304d\u304f\u5909\u308f\u3063\u3066\u3057\u307e\u3046\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002

Warning

Windows\u74b0\u5883\u3057\u304b\u304a\u6301\u3061\u3067\u306a\u3044\u65b9\u306f\u3001Ubuntu22.04\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u304a\u9858\u3044\u3044\u305f\u3057\u307e\u3059\u3002Windows\u74b0\u5883\u3068\u540c\u3058\u30c7\u30a3\u30b9\u30af\u306bUbuntu\u74b0\u5883\u3092\u5165\u308c\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u304c\u3001\u4e0d\u6163\u308c\u306a\u5834\u5408Windows\u74b0\u5883\u3092\u7834\u58ca\u3057\u3066\u3057\u307e\u3046\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u65b0\u3057\u304f\u5916\u4ed8\u3051\u307e\u305f\u306f\u5185\u8535SSD\u3092\u8cfc\u5165\u3057\u305f\u3046\u3048\u3067\u305d\u3061\u3089\u3078\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u3059\u308b\u3053\u3068\u3092\u5f37\u304f\u304a\u52e7\u3081\u3057\u307e\u3059\u3002

Info

Ubuntu\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3053\u3061\u3089\u306e\u8a18\u4e8b\u304c\u53c2\u8003\u306b\u306a\u308a\u307e\u3059\u3002

"},{"location":"setup/requirements.html#awsim","title":"\u63cf\u753b\u306a\u3057\u306eAWSIM\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408","text":"
  • OS: Ubuntu 22.04
  • CPU: Intel Core i5\uff084\u30b3\u30a2\uff09\u4ee5\u4e0a\uff08\u63a8\u5968\uff09
  • \u30e1\u30e2\u30ea:
  • 8GB\u4ee5\u4e0a\uff08\u6700\u4f4e\uff09
  • 16GB\u4ee5\u4e0a\uff08\u63a8\u5968\uff09
  • SSD: 60GB\u4ee5\u4e0a
"},{"location":"setup/requirements.html#awsim_1","title":"\u63cf\u753b\u3042\u308a\u306eAWSIM\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408","text":"
  • OS: Ubuntu 22.04
  • CPU: Intel Corei7 (8 cores) or higher
  • GPU: NVIDIA Geforce VRAM 8 GB
  • Memory: 16 GB or more
  • Storage: SSD 60 GB or higher
"},{"location":"setup/requirements.html#next-step","title":"Next Step: \u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u306e\u30af\u30ed\u30fc\u30f3","text":""},{"location":"setup/visible-simulation.html","title":"\u63cf\u753b\u3042\u308aAWSIM\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 (\u53c2\u8003)","text":"

\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u63cf\u753b\u306a\u3057\u306eAWSIM\u3092\u914d\u5e03\u3057\u3066\u304a\u308a\u307e\u3059\u304c\u3001\u63cf\u753b\u3042\u308a\u3092\u5e0c\u671b\u3055\u308c\u308b\u65b9\u306e\u74b0\u5883\u69cb\u7bc9\u65b9\u6cd5\u3082\u8a18\u8f09\u3057\u3066\u304a\u308a\u307e\u3059\u3002GPU\u3092\u4f7f\u7528\u3059\u308b\u74b0\u5883\u69cb\u7bc9\u3067\u306f\u8a70\u307e\u3063\u3066\u9032\u307e\u306a\u304f\u306a\u308b\u4e8b\u4f8b\u304c\u591a\u3005\u3042\u308a\u307e\u3057\u305f\u306e\u3067\u3001\u63a8\u5968\u74b0\u5883\u3092\u6e80\u305f\u3059\u306e\u30b9\u30da\u30c3\u30af\u306ePC\u304c\u7528\u610f\u3067\u304d\u306a\u3044\u65b9\u3084\u521d\u3081\u3066\u306e\u3054\u53c2\u52a0\u306e\u65b9\u306f\u3042\u304f\u307e\u3067\u3082\u53c2\u8003\u7a0b\u5ea6\u3068\u3057\u3066\u304f\u3060\u3055\u3044\u3002

"},{"location":"setup/visible-simulation.html#nvidia","title":"NVIDIA\u30c9\u30e9\u30a4\u30d0\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":"
# \u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u8ffd\u52a0\nsudo add-apt-repository ppa:graphics-drivers/ppa\n\n# \u30d1\u30c3\u30b1\u30fc\u30b8\u30ea\u30b9\u30c8\u306e\u66f4\u65b0\nsudo apt update\n\n# \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\nsudo ubuntu-drivers autoinstall\n\n# \u518d\u8d77\u52d5\nreboot\n\n# \u518d\u8d77\u52d5\u306e\u5f8c\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\nnvidia-smi\n
"},{"location":"setup/visible-simulation.html#nvidia-container-toolkit","title":"NVIDIA Container Toolkit","text":"

NVIDIA Container Toolkit\u3092\u53c2\u8003\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u884c\u3044\u307e\u3059\u3002

# \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306e\u4e0b\u6e96\u5099\ndistribution=$(. /etc/os-release;echo $ID$VERSION_ID) \\\n      && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \\\n      && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \\\n            sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \\\n            sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list\n\n# \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\nsudo apt-get update\nsudo apt-get install -y nvidia-container-toolkit\nsudo nvidia-ctk runtime configure --runtime=docker\nsudo systemctl restart docker\n\n#\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u3066\u3044\u308b\u304b\u3092\u30c6\u30b9\u30c8\nsudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi\n\n#\u6700\u5f8c\u306e\u30b3\u30de\u30f3\u30c9\u3067\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u51fa\u529b\u3055\u308c\u308c\u3070\u6210\u529f\u3067\u3059\u3002\n#\uff08\u4e0b\u8a18\u306fNVIDIA\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u304b\u3089\u306e\u5f15\u7528\u3067\u3059\uff09\n#\n# +-----------------------------------------------------------------------------+\n# | NVIDIA-SMI 450.51.06    Driver Version: 450.51.06    CUDA Version: 11.0     |\n# |-------------------------------+----------------------+----------------------+\n# | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |\n# | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |\n# |                               |                      |               MIG M. |\n# |===============================+======================+======================|\n# |   0  Tesla T4            On   | 00000000:00:1E.0 Off |                    0 |\n# | N/A   34C    P8     9W /  70W |      0MiB / 15109MiB |      0%      Default |\n# |                               |                      |                  N/A |\n# +-------------------------------+----------------------+----------------------+\n# +-----------------------------------------------------------------------------+\n# | Processes:                                                                  |\n# |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |\n# |        ID   ID                                                   Usage      |\n# |=============================================================================|\n# |  No running processes found                                                 |\n# +-----------------------------------------------------------------------------+\n
"},{"location":"setup/visible-simulation.html#vulkun","title":"Vulkun\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":"
sudo apt update\nsudo apt install -y libvulkan1\n
"},{"location":"setup/visible-simulation.html#awsim_1","title":"AWSIM\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9","text":"

Google Drive \u304b\u3089\u6700\u65b0\u306e AWSIM_GPU_**.zip \u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3001aichallenge-2024/aichallenge/simulator \u306b\u5c55\u958b\u3057\u307e\u3059\u3002

\u5b9f\u884c\u30d5\u30a1\u30a4\u30eb\u304c`aichallenge-2024/aichallenge/simulator/AWSIM_GPU_**/AWSIM.x86_64`\u306b\u5b58\u5728\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n
"},{"location":"setup/visible-simulation.html#awsim_2","title":"AWSIM\u306e\u8d77\u52d5\u78ba\u8a8d","text":"

\u63cf\u753b\u3042\u308a\u306eAWSIM\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u30b3\u30f3\u30c6\u30ca\u3092\u8d77\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002

cd aichallenge-2024\n./docker_build.sh dev\n./docker_run.sh dev gpu\n

\u30b3\u30f3\u30c6\u30ca\u3092\u8d77\u52d5\u3057\u305f\u30bf\u30fc\u30df\u30ca\u30eb(\u30b3\u30f3\u30c6\u30ca\u5185)\u3067\u4ee5\u4e0b\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002

cd /aichallenge\n./build_autoware.bash\n

Autoware\u306e\u30d3\u30eb\u30c9\u5f8c\u3001run_simulator.bash\u3092\u5909\u66f4\u3057\u307e\u3059\u3002AISIM_GPU_**\u306b\u306f\u5148\u7a0b\u5c55\u958b\u3057\u305f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002

#!/bin/bash\n\n# shellcheck disable=SC1091\nsource /aichallenge/workspace/install/setup.bash\nsudo ip link set multicast on lo\n/aichallenge/simulator/AWSIM_GPU_**/AWSIM.x86_64\n

run_evaluetion.bash\u306b\u5bfe\u3057\u3066\u3082\u540c\u69d8\u306b\u6b21\u306e\u5909\u66f4\u3092\u52a0\u3048\u307e\u3059\u3002

# AWSIM_DIRECTORY=/aichallenge/simulator/AWSIM\nAWSIM_DIRECTORY=/aichallenge/simulator/AWSIM_GPU_**\n

\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002

./run_evaluation.bash\n

\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u753b\u9762\u304c\u73fe\u308c\u305f\u3089\u6210\u529f\u3067\u3059\u3002

\u4ee5\u4e0a\u3067\u74b0\u5883\u69cb\u7bc9\u306f\u7d42\u4e86\u3068\u306a\u308a\u307e\u3059\uff01

"},{"location":"setup/visible-simulation.html#next-step","title":"Next Step: \u958b\u767a\u3092\u3057\u3066\u307f\u308b","text":"

\u306f\u3058\u3081\u65b9\u304b\u3089\u958b\u767a\u3092\u3057\u3066\u307f\u307e\u3057\u3087\u3046\uff01

"},{"location":"setup/workspace-setup.html","title":"\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u306e\u30af\u30ed\u30fc\u30f3","text":""},{"location":"setup/workspace-setup.html#_2","title":"\u4f9d\u5b58\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":"

Alt+Ctrl+T\u3067\u30bf\u30fc\u30df\u30ca\u30eb\u3092\u7acb\u3061\u4e0a\u3052\u3066\u304b\u3089\u3001\u4ee5\u4e0b\u306b\u5f93\u3063\u3066\u30b3\u30de\u30f3\u30c9\u3092Ctrl+Shift+P\u3067\u8cbc\u308a\u4ed8\u3051\u3001Enter\u3067\u5b9f\u884c\u3057\u307e\u3059\u3002 \u307e\u305a\u306f\u5fc5\u8981\u306a\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002

sudo apt update\nsudo apt install -y git\n
"},{"location":"setup/workspace-setup.html#_3","title":"\u5927\u4f1a\u7528\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u30af\u30ed\u30fc\u30f3","text":"

\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u7528\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u30af\u30ed\u30fc\u30f3\u3057\u307e\u3059\u3002\u3053\u3053\u3067\u306f\u30db\u30fc\u30e0\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u6307\u5b9a\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u304a\u597d\u304d\u306a\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u914d\u7f6e\u3057\u3066\u3044\u305f\u3060\u3044\u3066\u69cb\u3044\u307e\u305b\u3093\u3002

cd ~\ngit clone https://github.com/AutomotiveAIChallenge/aichallenge-2024.git\n
"},{"location":"setup/workspace-setup.html#next-step","title":"Next Step: \u4eee\u60f3\u74b0\u5883\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":""},{"location":"specifications/hardware.html","title":"\u30cf\u30fc\u30c9\u30a6\u30a7\u30a2","text":""},{"location":"specifications/interface.html","title":"\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9","text":""},{"location":"specifications/interface.html#_2","title":"\u4e00\u89a7","text":"Interface Name Type Service /control/control_mode_request autoware_auto_vehicle_msgs/srv/ControlModeCommand Publisher /vehicle/status/control_mode autoware_auto_vehicle_msgs/msg/ControlModeReport Subscription /control/command/control_cmd autoware_auto_control_msgs/msg/AckermannControlCommand Publisher /vehicle/status/velocity_status autoware_auto_vehicle_msgs/msg/VelocityReport Publisher /vehicle/status/steering_status autoware_auto_vehicle_msgs/msg/SteeringReport Subscription /control/command/gear_cmd autoware_auto_vehicle_msgs/msg/GearCommand Publisher /vehicle/status/gear_status autoware_auto_vehicle_msgs/msg/GearReport Publisher /sensing/gnss/pose_with_covariance geometry_msgs/msg/PoseWithCovarianceStamped Publisher /sensing/imu/imu_raw sensor_msgs/msg/Imu Publisher /aichallenge/objects std_msgs.msg.Float64MultiArray Publisher /aichallenge/pitstop/area std_msgs.msg.Float64MultiArray Publisher /aichallenge/pitstop/condition std_msgs.msg.Int32 Publisher /aichallenge/pitstop/status std_msgs.msg.Float32"},{"location":"specifications/interface.html#controlcommandcontrol_cmd","title":"/control/command/control_cmd","text":"Name Description stamp \u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u9001\u4fe1\u6642\u523b lateral.stamp \u672a\u4f7f\u7528 lateral.steering_tire_angle \u76ee\u6a19\u64cd\u8235\u89d2 lateral.steering_tire_rotation_rate \u672a\u4f7f\u7528 longitudinal.stamp \u672a\u4f7f\u7528 longitudinal.speed \u672a\u4f7f\u7528 longitudinal.acceleration \u76ee\u6a19\u52a0\u901f\u5ea6 longitudinal.jerk \u672a\u4f7f\u7528"},{"location":"specifications/interface.html#vehiclestatusvelocity_status","title":"/vehicle/status/velocity_status","text":"Name Description header.stamp \u30c7\u30fc\u30bf\u306e\u53d6\u5f97\u6642\u523b header.frame_id \u30d5\u30ec\u30fc\u30e0ID (base_link) longitudinal_velocity \u7e26\u901f\u5ea6 lateral_velocity \u6a2a\u901f\u5ea6 heading_rate \u89d2\u901f\u5ea6"},{"location":"specifications/interface.html#vehiclestatussteering_status","title":"/vehicle/status/steering_status","text":"Name Description stamp \u30c7\u30fc\u30bf\u306e\u53d6\u5f97\u6642\u523b steering_tire_angle \u64cd\u8235\u89d2"},{"location":"specifications/interface.html#controlcommandgear_cmd","title":"/control/command/gear_cmd","text":"Name Description stamp \u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u9001\u4fe1\u6642\u523b command \u30ae\u30a2\u306e\u7a2e\u985e"},{"location":"specifications/interface.html#vehiclestatusgear_status","title":"/vehicle/status/gear_status","text":"Name Description stamp \u30c7\u30fc\u30bf\u306e\u53d6\u5f97\u6642\u523b report \u30ae\u30a2\u306e\u7a2e\u985e"},{"location":"specifications/interface.html#sensinggnsspose_with_covariance","title":"/sensing/gnss/pose_with_covariance","text":"Name Description header.stamp \u30c7\u30fc\u30bf\u306e\u53d6\u5f97\u6642\u523b header.frame_id \u30d5\u30ec\u30fc\u30e0ID (map) pose.pose.position \u8eca\u4e21\u4f4d\u7f6e (base_link \u539f\u70b9\u306e\u4f4d\u7f6e) pose.pose.orientation \u672a\u4f7f\u7528 pose.covariance \u4f4d\u7f6e\u7cbe\u5ea6"},{"location":"specifications/interface.html#sensingimuimu_raw","title":"/sensing/imu/imu_raw","text":"Name Description header.stamp \u30c7\u30fc\u30bf\u306e\u53d6\u5f97\u6642\u523b header.frame_id \u30d5\u30ec\u30fc\u30e0ID (imu_link) orientation \u65b9\u4f4d angular_velocity \u89d2\u901f\u5ea6 linear_acceleration \u52a0\u901f\u5ea6"},{"location":"specifications/interface.html#aichallengeobjects","title":"/aichallenge/objects","text":"Name Description data[N * 4 + 0] N\u756a\u76ee\u306e\u4eee\u60f3\u969c\u5bb3\u7269\u306eX\u5ea7\u6a19 data[N * 4 + 1] N\u756a\u76ee\u306e\u4eee\u60f3\u969c\u5bb3\u7269\u306eY\u5ea7\u6a19 data[N * 4 + 2] N\u756a\u76ee\u306e\u4eee\u60f3\u969c\u5bb3\u7269\u306eZ\u5ea7\u6a19 data[N * 4 + 3] N\u756a\u76ee\u306e\u4eee\u60f3\u969c\u5bb3\u7269\u306e\u534a\u5f84"},{"location":"specifications/interface.html#aichallengepitstoparea","title":"/aichallenge/pitstop/area","text":"Name Description data[0] \u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u30a8\u30ea\u30a2\u4e2d\u5fc3\u306eX\u5ea7\u6a19 data[1] \u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u30a8\u30ea\u30a2\u4e2d\u5fc3\u306eY\u5ea7\u6a19 data[2] \u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u30a8\u30ea\u30a2\u4e2d\u5fc3\u306eZ\u5ea7\u6a19 data[3] \u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u30a8\u30ea\u30a2\u306e\u65b9\u5411\u306e\u30af\u30aa\u30fc\u30bf\u30cb\u30aa\u30f3X\u5024 data[4] \u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u30a8\u30ea\u30a2\u306e\u65b9\u5411\u306e\u30af\u30aa\u30fc\u30bf\u30cb\u30aa\u30f3Y\u5024 data[5] \u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u30a8\u30ea\u30a2\u306e\u65b9\u5411\u306e\u30af\u30aa\u30fc\u30bf\u30cb\u30aa\u30f3Z\u5024 data[6] \u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u30a8\u30ea\u30a2\u306e\u65b9\u5411\u306e\u30af\u30aa\u30fc\u30bf\u30cb\u30aa\u30f3W\u5024 data[7] \u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u30a8\u30ea\u30a2\u306eX\u65b9\u5411\u306e\u30b5\u30a4\u30ba data[8] \u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u30a8\u30ea\u30a2\u306eY\u65b9\u5411\u306e\u30b5\u30a4\u30ba"},{"location":"specifications/interface.html#aichallengepitstopcondition","title":"/aichallenge/pitstop/condition","text":"Name Description data \u8eca\u4e21\u306e\u30b3\u30f3\u30c7\u30a3\u30b7\u30e7\u30f3\u5024"},{"location":"specifications/interface.html#aichallengepitstopstatus","title":"/aichallenge/pitstop/status","text":"Name Description data \u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u306e\u5224\u5b9a\u304c\u6210\u7acb\u3057\u3066\u3044\u308b\u79d2\u6570"},{"location":"specifications/simulator.html","title":"\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u30fc","text":""},{"location":"specifications/simulator.html#_2","title":"\u6982\u8981","text":"

\u3053\u306e\u30da\u30fc\u30b8\u3067\u306fAI\u30c1\u30e3\u30ec\u30f3\u30b8\u3067\u4f7f\u7528\u3055\u308c\u308b\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u30fc\u306e\u4ed5\u69d8\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002

\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u30fc\u306f\u3001Autoware\u306e\u305f\u3081\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u81ea\u52d5\u904b\u8ee2\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u30fc\u300cAWSIM\u300d\u3092\u30d9\u30fc\u30b9\u3068\u3057\u3066\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002

"},{"location":"specifications/simulator.html#_3","title":"\u8d77\u52d5\u30aa\u30d7\u30b7\u30e7\u30f3","text":"\u30aa\u30d7\u30b7\u30e7\u30f3 \u578b \u30c7\u30d5\u30a9\u30eb\u30c8 \u8aac\u660e --timeout float 420.0 \u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002 --endless bool false \u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u306e\u6709\u52b9/\u7121\u52b9\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002 --pit-stop bool true \u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u95a2\u9023\u306e\u6a5f\u80fd\u306e\u6709\u52b9/\u7121\u52b9\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002 --replay0 string \u4ee5\u524d\u306e\u8d70\u884c\u30ed\u30b0\u3092\u8aad\u307f\u8fbc\u307f\u5225\u8eca\u4e21\u3068\u3057\u3066\u518d\u751f\u3057\u307e\u3059\u3002

\u30ea\u30d7\u30ec\u30a4\u306e\u30ed\u30b0\u306b\u306f result-details.json \u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u307e\u305f\u3001\u30ea\u30d7\u30ec\u30a4\u306f --replay0 \u304b\u3089 --replay9 \u307e\u306710\u53f0\u306e\u8eca\u4e21\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u3059\u3002

"},{"location":"specifications/simulator.html#_4","title":"\u30ad\u30fc\u30dc\u30fc\u30c9\u64cd\u4f5c","text":"\u64cd\u4f5c \u30ad\u30fc \u7d42\u4e86 Esc \u30ea\u30bb\u30c3\u30c8 Space \u30ab\u30e1\u30e9\u5207\u308a\u66ff\u3048 C \u30a2\u30af\u30bb\u30eb Arrow Up \u30d6\u30ec\u30fc\u30ad Arrow Down \u30b9\u30c6\u30a2\u30ea\u30f3\u30b0 Arrow Left, Right \u30ae\u30a2 (D) D \u30ae\u30a2 (R) R \u30ae\u30a2 (N) N \u30ae\u30a2 (P) P"},{"location":"specifications/simulator.html#_5","title":"\u30c8\u30d4\u30c3\u30af\u64cd\u4f5c","text":"\u30c8\u30d4\u30c3\u30af \u578b \u8aac\u660e /aichallenge/awsim/status std_msgs.msg.Float32MultiArray \u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u5404\u7a2e\u72b6\u614b\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002 /aichallenge/awsim/change_time_scale std_msgs.msg.Float32 \u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u30bf\u30a4\u30e0\u30b9\u30b1\u30fc\u30eb\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002 /aichallenge/awsim/reset std_msgs.msg.Empty \u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u30ea\u30bb\u30c3\u30c8\u3057\u307e\u3059\u3002

\u4e0a\u8a18\u306e /aichallenge/awsim/status \u306f\u4ee5\u4e0b\u306e\u69cb\u9020\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002

\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 \u5024 0 \u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8 1 \u30e9\u30c3\u30d7\u6570 2 \u30e9\u30c3\u30d7\u30bf\u30a4\u30e0 3 \u30bb\u30af\u30b7\u30e7\u30f3 4 \u30bf\u30a4\u30e0\u30b9\u30b1\u30fc\u30eb"},{"location":"specifications/simulator.html#_6","title":"\u8eca\u4e21\uff08\u30ec\u30fc\u30b7\u30f3\u30b0\u30ab\u30fc\u30c8\uff09","text":"

\u8eca\u4e21\u306fAWSIM\u306b\u304a\u3051\u308bEGO Vehicle\u306e\u4ed5\u69d8\u306b\u6e96\u62e0\u3057\u3066\u304a\u308a\u3001\u5b9f\u969b\u306e\u30ec\u30fc\u30b7\u30f3\u30b0\u30ab\u30fc\u30c8\u306b\u8fd1\u3044\u30b9\u30da\u30c3\u30af\u3067\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002

"},{"location":"specifications/simulator.html#_7","title":"\u30d1\u30e9\u30e1\u30fc\u30bf","text":"

\u8eca\u4e21\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u4ee5\u4e0b\u306e\u8868\u306b\u307e\u3068\u3081\u3066\u3044\u307e\u3059\u3002

\u9805\u76ee \u5024 \u8eca\u4e21\u91cd\u91cf 160 kg \u5168\u9577 200 cm \u5168\u5e45 145 cm \u30db\u30a4\u30fc\u30eb\u30d9\u30fc\u30b9 108.7 cm \u524d\u8f2a\u30bf\u30a4\u30e4\u76f4\u5f84 24 cm \u524d\u8f2a\u30bf\u30a4\u30e4\u5e45 13 cm \u524d\u8f2a\u30db\u30a4\u30fc\u30eb\u30c8\u30ec\u30c3\u30c9 93 cm \u5f8c\u8f2a\u30bf\u30a4\u30e4\u76f4\u5f84 24 cm \u5f8c\u8f2a\u30bf\u30a4\u30e4\u5e45 18 cm \u5f8c\u8f2a\u30db\u30a4\u30fc\u30eb\u30c8\u30ec\u30c3\u30c9 112 cm \u6700\u5927\u30b9\u30c6\u30a2\u30ea\u30f3\u30b0\u8ee2\u8235\u89d2 80 \u00b0 \u99c6\u52d5\u6642\u6700\u5927\u52a0\u901f\u5ea6 3.2 m/s^2"},{"location":"specifications/simulator.html#vehicle","title":"Vehicle\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8","text":"

Vehicle\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u8a2d\u5b9a\u5185\u5bb9\u3092\u4ee5\u4e0b\u306e\u8868\u306b\u307e\u3068\u3081\u3066\u3044\u307e\u3059\u3002\u5404\u9805\u76ee\u306e\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3053\u3061\u3089\u306e\u30de\u30cb\u30e5\u30a2\u30eb\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002

\u9805\u76ee \u5024 Use Inertia Off Physics Settings (experimental) Sleep Velocity Threshold 0.02 Sleep Time Threshold 0 Skidding Cancel Rate 0.236 Input Settings Max Steer Angle Input 80 Max Acceleration Input 3.2"},{"location":"specifications/simulator.html#rigidbody","title":"Rigidbody\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8","text":"

Rigidbody\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u8a2d\u5b9a\u5185\u5bb9\u3092\u4ee5\u4e0b\u306e\u8868\u306b\u307e\u3068\u3081\u3066\u3044\u307e\u3059\u3002\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3053\u3061\u3089\u306e\u30de\u30cb\u30e5\u30a2\u30eb\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002

\u9805\u76ee \u5024 Mass 160 Drag 0 Angular Drag 0"},{"location":"specifications/simulator.html#com","title":"CoM\u4f4d\u7f6e","text":"

CoM(Center of Mass)\u306f\u3001\u8eca\u4e21Rigidbody\u306e\u8cea\u91cf\u4e2d\u5fc3\u3067\u3059\u3002CoM\u4f4d\u7f6e\u306f\u3001\u8eca\u4e21\u306e\u4e2d\u5fc3\u304b\u3064\u8eca\u8f2a\u8ef8\u306e\u9ad8\u3055\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002

"},{"location":"specifications/simulator.html#_8","title":"\u8eca\u4e21\u30b3\u30e9\u30a4\u30c0\u30fc","text":"

\u8eca\u4e21\u30b3\u30e9\u30a4\u30c0\u30fc\u306f\u3001\u8eca\u4e21\u3068\u4ed6\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3084\u30c1\u30a7\u30c3\u30af\u30dd\u30a4\u30f3\u30c8\u3068\u306e\u63a5\u89e6\u5224\u5b9a\u306b\u5229\u7528\u3055\u308c\u307e\u3059\u3002\u8eca\u4e21\u30b3\u30e9\u30a4\u30c0\u30fc\u306f\u8eca\u4e21\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30e1\u30c3\u30b7\u30e5\u3092\u30d9\u30fc\u30b9\u3068\u3057\u3066\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002

"},{"location":"specifications/simulator.html#_9","title":"\u30db\u30a4\u30fc\u30eb\u30b3\u30e9\u30a4\u30c0\u30fc","text":"

\u8eca\u4e21\u306b\u306f\u5404\u8eca\u8f2a\u306b1\u3064\u305a\u3064\u3001\u5408\u8a084\u3064\u306e\u30db\u30a4\u30fc\u30eb\u30b3\u30e9\u30a4\u30c0\u30fc\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u304a\u308a\u3001\u7b49\u4fa1\u4e8c\u8f2a\u30e2\u30c7\u30eb\u3067\u306f\u306a\u304f\u56db\u8f2a\u30e2\u30c7\u30eb\u3067\u306e\u8eca\u4e21\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059\u3002

\u30db\u30a4\u30fc\u30eb\u30b3\u30e9\u30a4\u30c0\u30fc\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u30db\u30a4\u30fc\u30eb\u30b3\u30e9\u30a4\u30c0\u30fc\u306e\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3053\u3061\u3089\u306e\u30de\u30cb\u30e5\u30a2\u30eb\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002

\u9805\u76ee \u5024 Mass 1 Radius 0.12 Wheel Damping Rate 0.25 Suspension Distance 0.001 Suspension Spring Spring (N/m) 35000 Damper (N*s/m) 3500 Target Position 0.01"},{"location":"specifications/simulator.html#_10","title":"\u30bb\u30f3\u30b5\u69cb\u6210","text":""},{"location":"specifications/simulator.html#gnss","title":"GNSS","text":"

GNSS\u306f\u8eca\u4e21\u306e\u30d9\u30fc\u30b9\u30ea\u30f3\u30af\u306b\u5bfe\u3057\u3066\u4ee5\u4e0b\u306e\u4f4d\u7f6e\u306b\u53d6\u308a\u4ed8\u3051\u3089\u308c\u3066\u3044\u307e\u3059\u3002

\u9805\u76ee \u5024 x 0.0 m y 0.0 m z 0.0 m roll 0.0 rad pitch 0.0 rad yaw 0.0 rad"},{"location":"specifications/simulator.html#imu","title":"IMU","text":"

IMU\u306f\u8eca\u4e21\u306e\u30d9\u30fc\u30b9\u30ea\u30f3\u30af\u306b\u5bfe\u3057\u3066\u4ee5\u4e0b\u306e\u4f4d\u7f6e\u306b\u53d6\u308a\u4ed8\u3051\u3089\u308c\u3066\u3044\u307e\u3059\u3002

\u9805\u76ee \u5024 x 0.0 m y 0.0 m z 0.0 m roll 0.0 rad pitch 0.0 rad yaw 0.0 rad"},{"location":"en/community.html#autonomous-driving-ai-challenge-advent-calendar-2024","title":"Autonomous Driving AI Challenge Advent Calendar 2024","text":"

https://qiita.com/advent-calendar/2023/jidounten-ai

"},{"location":"en/community.html#articles-on-autonomous-driving-ai-challenge-efforts","title":"Articles on Autonomous Driving AI Challenge Efforts","text":"

https://automotive.panasonic.com/feature/jaaic

https://www.ritsumei.ac.jp/ise/suki_ict/story01.html/

We are actively seeking contributions!!!

"},{"location":"en/faq.html","title":"FAQ","text":"

Warning

Many issues can be resolved using ChatGPT or Google search. For questions that cannot be resolved, please include and attach excerpts of error logs.

"},{"location":"en/faq.html#environment-setup","title":"Environment Setup","text":""},{"location":"en/faq.html#the-communication-between-awsim-and-autoware-is-unstable","title":"The communication between AWSIM and Autoware is unstable.","text":"

When testing locally, setting ROS_LOCALHOST_ONLY=1 in all terminals can improve communication speed. Add the following lines to your .bashrc.

export ROS_LOCALHOST_ONLY=1\nexport RMW_IMPLEMENTATION=rmw_cyclonedds_cpp\n\nif [ ! -e /tmp/cycloneDDS_configured ]; then\n    sudo sysctl -w net.core.rmem_max=2147483647\n    sudo ip link set lo multicast on\n    touch /tmp/cycloneDDS_configured\nfi\n

For a dual-PC setup (Windows+Linux or Linux+Linux), set ROS_LOCALHOST_ONLY=0.

Note:

  • After OS startup, you will need to enter the password when starting the terminal and execute sudo ip link set lo multicast on for the first time.
  • Always track changes by using commands like echo $ROS_LOCALHOST_ONLY to avoid forgetting modifications in .bashrc.
  • Mixed use of ROS_LOCALHOST_ONLY=1 and ROS_LOCALHOST_ONLY=0 will prevent container communication.
  • Ensure that ROS_LOCALHOST_ONLY is not hard-coded in the executable.
"},{"location":"en/faq.html#ros2-topic-list-does-not-display","title":"ros2 topic list does not display.","text":"

Ensure that the ROS_DOMAIN_ID matches on your machine (this is not an issue if you haven't set ROS_DOMAIN_ID). Also, ensure ROS2 is sourced correctly.

"},{"location":"en/faq.html#using-awsim-on-windows-and-autoware-on-ubuntu-ros2-topic-list-does-not-display","title":"Using AWSIM on Windows and Autoware on Ubuntu, ros2 topic list does not display.","text":"

Allow communication through the Windows Firewall. Also, execute ros2 daemon stop and ros2 daemon start to ensure no unnecessary processes are running, then restart.

"},{"location":"en/faq.html#rocker-does-not-start","title":"Rocker does not start.","text":"

First, verify that Rocker is installed. If it is installed but does not start, check the permissions. It has been reported that differing account types and permissions when building and running the image can cause issues.

"},{"location":"en/faq.html#awsim-terminates-with-a-core-dump","title":"AWSIM terminates with a core dump.","text":"

If AWSIM terminates with a core dump immediately after startup, your GPU may be out of memory. Check the GPU memory usage with nvidia-smi to ensure it is not at its limit. A GPU with at least 11GB of memory is recommended.

"},{"location":"en/faq.html#i-only-have-a-windows-pc-with-a-gpu","title":"I only have a Windows PC with a GPU.","text":"

The official support is for the configuration listed on the HP website, so detailed guidance cannot be provided, but generally, the following methods are possible:

The key is to \"prepare an environment to run Autoware,\" which may involve issues related to performance, package availability, and host-container communication settings. Possible solutions include:

  • Setting up Ubuntu in a dual-boot configuration.
  • Using a VM on Windows to run Ubuntu (Hyper-V, VirtualBox, VMware, etc.).
  • Setting up Ubuntu on WSL2.
  • Setting up a Docker environment on Windows and running the Autoware image directly.
  • Building the environment in the cloud (some past participants used AWS).
"},{"location":"en/faq.html#awsim-appears-but-rviz-shows-a-black-screen-when-set-up-on-aws","title":"AWSIM appears but Rviz shows a black screen when set up on AWS.","text":"

There have been cases where running sudo apt upgrade resolved the issue. Additionally, there is a similar question in a past issue that might be helpful.

"},{"location":"en/faq.html#docker_runsh-line-35-rocker-command-not-found-appears","title":"docker_run.sh: line 35: rocker: command not found appears.","text":"

Please install Rocker as described here.

"},{"location":"en/faq.html#warning-unable-to-detect-os-for-base-image-aichallenge-2024-dev-maybe-the-base-image-does-not-exist-appears","title":"WARNING unable to detect os for base image 'aichallenge-2024-dev', maybe the base image does not exist appears.","text":"

Please build the Docker image.

"},{"location":"en/faq.html#unable-to-pull-docker","title":"Unable to pull Docker.","text":"

Please restart Docker with newgrp docker or sudo service docker restart, or restart Ubuntu.

"},{"location":"en/faq.html#operations","title":"Operations","text":""},{"location":"en/faq.html#i-get-a-no-module-named-error-when-creating-a-package-with-python-and-running-it","title":"I get a no module named * error when creating a package with Python and running it.","text":"

Refer to this guide.

"},{"location":"en/faq.html#what-command-should-i-use-to-check-the-type-of-a-topic","title":"What command should I use to check the type of a topic?","text":"

Use ros2 topic info -v fuga_topic to check the type of a topic, or if you can identify the node, use ros2 node info hoge-node. For more information about ROS commands, searching for \"ROS2 commands\" online may also help.

"},{"location":"en/faq.html#maps-and-routes-are-not-displayed-in-rviz","title":"Maps and routes are not displayed in Rviz.","text":"

Ensure that the map data is placed in the correct location and is valid.

"},{"location":"en/faq.html#i-dont-know-how-to-improve-autoware-for-participation","title":"I don't know how to improve Autoware for participation.","text":"

Methods include adjusting parameters, improving nodes, or replacing nodes in Autoware. Basic configurations of Autoware can be found on the website or here. Additionally, this external article might be helpful.

"},{"location":"en/faq.html#please-explain-about-behavior-pathmotion-planner","title":"Please explain about Behavior Path/Motion Planner.","text":"

The behavior planner primarily functions for general roads (ODD3 and above), considering traffic rules like stop lines, crosswalks, and signal stops. It does not optimize avoidance functions. On the other hand, the motion planner functions for limited areas (ODD2 and below), handling basic driving functionalities such as obstacle avoidance, stopping, and speed optimization without using signals or map information.

"},{"location":"en/faq.html#please-explain-autowares-avoidance-behavior","title":"Please explain Autoware's avoidance behavior.","text":"

There are two types of avoidance: behavior path and obstacle avoidance. By default, obstacle avoidance is off and only path smoothing is performed. The default setting is to avoid using the behavior path, but the default avoidance targets are only cars and trucks.

"},{"location":"en/faq.html#please-explain-the-center-point","title":"Please explain the center point.","text":"

The center point detects cars, trucks, and pedestrians, but not untagged objects like cardboard boxes. Currently, Autoware requires object data for planning, and the default configuration using center point can lead to two issues:

  1. If the center point fails, planning cannot generate a path.
  2. Clustering-based obstacle detection results are erased during data association.

Although Autoware mini is the ideal perception configuration, understanding these issues and selectively implementing nodes is challenging. Ensuring the center point functions correctly may be important. Reference

"},{"location":"en/faq.html#awsim","title":"AWSIM","text":""},{"location":"en/faq.html#how-can-i-reset-the-car-to-the-initial-position","title":"How can I reset the car to the initial position?","text":"

Currently, the only way to do this is by restarting AWSIM.

"},{"location":"en/faq.html#awsim-operation-is-unstable","title":"AWSIM operation is unstable.","text":"

This may be due to insufficient GPU performance. If using a high-performance GPU is not feasible, setting the time scale to about 0.5 using the slider at the bottom of the AWSIM screen may stabilize operation.

"},{"location":"en/faq.html#i-want-to-tune-the-mpc-are-the-model-parameters-delay-and-time-constants-used-in-this-awsim-disclosed","title":"I want to tune the MPC. Are the model parameters (delay and time constants) used in this AWSIM disclosed?","text":"

The delay and time constants are neither measured nor disclosed, but the basic specifications are available here.

"},{"location":"en/faq.html#general-competition-questions","title":"General Competition Questions","text":""},{"location":"en/faq.html#is-it-possible-to-add-extra-sensors","title":"Is it possible to add extra sensors?","text":"

To ensure all participants face the same conditions and difficulty, the addition of new sensors is not allowed.

"},{"location":"en/getting-started.html","title":"Getting Started","text":"

This page outlines the steps to participate in the AI Challenge.

You can participate in this competition with a single PC running Ubuntu 22.04.

First, use the online scoring environment, then proceed with environment setup and development.

"},{"location":"en/getting-started.html#register-for-the-autonomous-driving-ai-challenge-2024","title":"Register for the Autonomous Driving AI Challenge 2024","text":"

If you haven't registered yet, please do so using the link above.

"},{"location":"en/getting-started.html#accessing-and-submitting-to-the-online-scoring-environment","title":"Accessing and Submitting to the Online Scoring Environment","text":"

In this competition, you will upload submission files (compressed source code files) to the online environment, where they will be automatically scored and ranked.

Let's try using the online scoring environment with these four steps!

Info

Accessing the online scoring environment and submitting a file should take about 5 minutes.

  1. After registering for the Autonomous Driving AI Challenge, login information will be sent to your registered email address.

  2. Access the online scoring environment and log in using the credentials provided in the email.

  3. Once you have access, try submitting a source code file. Download the sample code compressed file from the red button below.

  4. Upload the file directly through the \"UPLOAD\" button in the online scoring environment to submit it.

Download the sample code compressed file

"},{"location":"en/getting-started.html#setting-up-the-ai-challenge-environment","title":"Setting Up the AI Challenge Environment","text":"

Please follow the link above to set up the environment.

Info

You can participate in this competition with a single PC running Ubuntu 22.04.

"},{"location":"en/getting-started.html#how-to-proceed-with-development-in-the-ai-challenge","title":"How to Proceed with Development in the AI Challenge","text":"

Let's start developing by following the link above!

"},{"location":"en/getting-started.html#submitting-your-source-code","title":"Submitting Your Source Code","text":"

Submit your completed code via the online scoring environment. Set up your submission using the link above.

"},{"location":"en/index.html#concept","title":"Concept","text":"

Info

This competition is a new initiative aimed at discovering and nurturing engineers who will lead the future automotive industry in the new technological domains known as CASE and MaaS.

The competition involves not only developing programs for autonomous driving mobility but also competing in driving competitions with these developed programs. It aims to provide a platform for engineers, researchers, and students involved in computer science, AI, software, and information processing to challenge themselves, learn, and create organic connections.

"},{"location":"en/index.html#objectives","title":"Objectives","text":""},{"location":"en/index.html#the-role-of-the-competition-from-a-technical-perspective","title":"The Role of the Competition from a Technical Perspective","text":"
  • Learn SDV (Software Defined Vehicle) development through software integration while understanding hardware
  • Learn Continuous Integration / Continuous Deployment (CI/CD)
  • Conduct development using Open Source Software (OSS) as a platform for innovation towards social implementation
"},{"location":"en/index.html#the-role-of-the-competition-in-human-resource-development","title":"The Role of the Competition in Human Resource Development","text":"
  • Promote participation of engineers from various fields
  • Accelerate skill development through the provision of educational content
  • Learn how to develop SDVs by reconciling real machines and simulators
  • Innovate through digital twin simulations
  • Create \"aspirations\" and \"passion and excitement\" by combining technical competition with entertainment, using motorsport as a theme
"},{"location":"en/index.html#overview","title":"Overview","text":""},{"location":"en/index.html#preliminary-round","title":"Preliminary Round","text":"

The preliminary round will be conducted through online simulations. The competition aims to achieve faster lap times on the course using AWSIM, which is oriented towards digital twin simulations. Participants will not only learn the structure of Autoware but also adjust parameters for behavior and decision-making parts and develop new algorithms as needed.

"},{"location":"en/index.html#final-round","title":"Final Round","text":"

The final competition will be conducted using an EV racing kart as the competition vehicle. Participants will apply the knowledge gained from simulations to real vehicles and tackle challenges unique to real vehicles that cannot be replicated in AWSIM.

For example, participants will be challenged to adjust parameters for application to real vehicles and develop algorithms for noise handling and delay countermeasures that cannot be replicated in simulations.

"},{"location":"en/index.html#awards","title":"Awards","text":"

The total prize money is over 1 million yen. For details, please refer to the 2024 Autonomous Driving AI Challenge Overview.

"},{"location":"en/index.html#course","title":"Course","text":""},{"location":"en/index.html#vehicle","title":"Vehicle","text":""},{"location":"en/index.html#challenges","title":"Challenges","text":""},{"location":"en/course/index.html","title":"Autoware Introduction Course","text":"

Warning

This page is under construction. Japanese pages may be available.

"},{"location":"en/development/main-module.html","title":"Main Module","text":""},{"location":"en/development/main-module.html#customizing-autoware","title":"Customizing Autoware","text":"

For this competition, we have prepared an implementation based on the autonomous driving software Autoware. This page provides background information and explanations on how to utilize this implementation effectively.

In the previous simulation competition, we provided a launch file that could start a reduced configuration of Autoware by limiting functions and reducing the number of nodes from the default Autoware. For the background and purpose of this setup, please refer to the previous competition's documentation.

For this simulation competition, we have similarly prepared a reduced configuration of Autoware designed for use with AWSIM to enable partial use and flexible integration of Autoware.

"},{"location":"en/development/main-module.html#background-of-the-reduced-configuration-of-autoware","title":"Background of the Reduced Configuration of Autoware","text":""},{"location":"en/development/main-module.html#challenges-of-using-autoware","title":"Challenges of Using Autoware","text":"

The default Autoware is composed of many nodes to accommodate various driving environments.

You can also view the configuration diagram of ROS nodes that constitute Autoware in the official Autoware documentation. The current diagram is shown below.

Autoware is equipped with a wide range of functions in each component related to autonomous driving, designed to handle complex driving environments.

However, understanding this complex configuration, the meaning and adjustment of each parameter, and switching or replacing modules is not necessarily easy.

"},{"location":"en/development/main-module.html#preparing-a-reduced-configuration-of-autoware-micro","title":"Preparing a Reduced Configuration of Autoware-Micro","text":"

Therefore, in the previous simulation competition, we prepared a reduced configuration of Autoware by limiting functions and reducing the number of nodes from the default Autoware.

The node diagram of Autoware-Micro is shown below. You can see that the number of nodes has significantly decreased, and only the functions necessary for basic autonomous driving are included.

Features of Autoware-Micro include:

  • Almost all nodes are started directly from a single launch file.
  • Parameters are written directly at the node startup, making it easy to track which parameters are needed for which nodes.
  • The ROS topic names used for input and output of each node are directly remapped at the node startup, making it easy to change the topic names.

By writing autonomous driving software based on this Autoware, you can:

  • Understand the inner workings of Autoware more deeply due to its simple configuration.
  • Easily replace Autoware modules with your custom modules to work on functionality improvements.
  • Clearly see the impact of parameter changes on the overall system operation.
  • Add existing Autoware nodes that are not included in this version of Autoware.

Changes and features of each component include:

  • Localization: Self-position estimation using GNSS, IMU, and wheel speed.
  • Planning: Simplified by omitting behavior_velocity_planner and obstacle_stop_planner, directly outputting a driving trajectory from the output route.
  • Control: A simple implementation example of control with simple_pure_pursuit.
"},{"location":"en/development/main-module.html#utilizing-autoware-micro","title":"Utilizing Autoware-Micro","text":"

By utilizing Autoware-Micro, you can focus on the challenges of this competition:

  1. Strategic route planning for curves.
  2. Vehicle control at high speeds.

Moreover, while referring to the implementation example of Autoware-Micro, you can try implementation methods slightly different from Autoware's architecture or create and introduce new custom nodes.

By incorporating your custom nodes, you can improve driving performance and increase your score.

For example, you can consider the following configuration, implement \"Planning\" and \"Control\" separately, or implement a node that handles both \"Planning & Control.\"

You are free to customize as long as the ROS topics for route input and vehicle interface output match.

"},{"location":"en/development/main-module.html#workspace-structure","title":"Workspace Structure","text":"

For reference, the workspace structure used in this competition is as follows:

docker-dev

docker-eval

"},{"location":"en/development/main-module.html#nextstep-reference","title":"NextStep: Reference","text":""},{"location":"en/development/reference.html","title":"Reference","text":""},{"location":"en/development/reference.html#incorporating-changes","title":"Incorporating Changes","text":"

When there are significant updates to the competition environment, announcements will be made accordingly. For reference, the following instructions are provided.

Update Docker

docker pull ghcr.io/automotiveaichallenge/autoware-universe:humble-latest\n

Update Repository

cd aichallenge2024 # path to aichallenge2024\ngit pull origin/main\n
"},{"location":"en/development/reference.html#installing-awsim-with-visualization","title":"Installing AWSIM with Visualization","text":"

If you want to check the simulation screen of AWSIM, follow the steps in this guide to install AWSIM with visualization.

"},{"location":"en/development/reference.html#setting-up-three-terminals-for-debugging-reference","title":"Setting up Three Terminals for Debugging (Reference)","text":"

To develop with three terminals for debugging, open the first terminal using Alt+Ctrl+T and then execute the following commands by pasting them with Ctrl+Shift+P and pressing Enter.

cd ~/aichallenge-2024\n./docker_run.sh dev cpu\n
cd /aichallenge\nbash run_simulator.bash\n

Open the second terminal using Alt+Ctrl+T and then execute the following commands by pasting them with Ctrl+Shift+P and pressing Enter.

cd ~/aichallenge-2024\n./docker_run.sh dev cpu\n
cd /aichallenge\nbash run_autoware.bash\n

Open the third terminal using Alt+Ctrl+T and then execute the following commands by pasting them with Ctrl+Shift+P and pressing Enter.

cd ~/aichallenge-2024\n./docker_run.sh dev cpu\n
cd /aichallenge\nros2 topic pub --once /control/control_mode_request_topic std_msgs/msg/Bool '{data: true}' >/dev/null\n

When the screen below appears, the startup is complete. To terminate, press CTRL + C in each terminal.

"},{"location":"en/development/workspace-usage.html","title":"How to Proceed with the AI Challenge","text":"

The AI Challenge leverages open-source software. By utilizing the code and web platform provided by the organizers, you can skip the initial development phase and immediately start developing in line with the competition theme. This approach has the significant advantage of avoiding \"reinventing the wheel.\" Additionally, it allows anyone to easily participate in the competition and enables the competition to be run with consistent evaluation criteria.

For first-time participants, you will start from a state where most of the functions necessary for autonomous driving are already in place, standing on the foundation built by your predecessors. From here, you have the opportunity to deepen your unique development in the competition field through the community's \"publication of efforts.\" Furthermore, to deepen your understanding of autonomous driving, we recommend using the \" Autoware Practice \" prepared by the organizers and the learning programs provided by the ROS 2 community, such as \" ROS 2 \".

For those who have already participated in the challenge, we encourage you to share your experiences, contribute to the community, and help the competition evolve. Your active participation will contribute to making the competition even more fulfilling.

  • The source code that forms the basis for development in the AI Challenge is provided in the competition repository .

Participants will proceed with development by customizing this code and parameters. However, if you are unfamiliar with Autoware, we recommend going through the introductory course first.

  • For those who want to know the specifications, such as those developing independently without using the repository's code, refer to the interface specifications and simulator specifications pages.
"},{"location":"en/development/workspace-usage.html#read-the-reference-articles-by-voluntary-participants","title":"Read the reference articles by voluntary participants","text":"

The efforts of voluntary participants are summarized in the Advent Calendar , so please refer to them.

If you are unsure where to start, we recommend starting with this article written by Mr. Arata Tanaka, who won the Community Contribution Award in 2023.

"},{"location":"en/development/workspace-usage.html#try-changing-the-parameters","title":"Try changing the parameters","text":"

For those who are unsure what to do after setting up the environment, try adjusting the parameters first. This time, let's change the parameters of the control module simple_pure_pursuit.

Let's adjust the value values below in $HOME/aichallenge-2024/aichallenge/workspace/src/aichallenge_submit/aichallenge_submit_launch/launch/reference.launch.xml.

<node pkg=\"simple_pure_pursuit\" exec=\"simple_pure_pursuit\" name=\"simple_pure_pursuit_node\" output=\"screen\">\n    <param name=\"use_external_target_vel\" value=\"true\"/>\n    <param name=\"external_target_vel\" value=\"8.0\"/>\n    <param name=\"lookahead_gain\" value=\"0.4\"/>\n    <param name=\"lookahead_min_distance\" value=\"5.0\"/>\n    <param name=\"speed_proportional_gain\" value=\"1.0\"/>\n

After making adjustments, try building and running again. You should be able to confirm that the behavior has changed.

"},{"location":"en/development/workspace-usage.html#try-creating-a-new-package","title":"Try creating a new package","text":"

Try creating a new custom package. First, copy open-source packages or the autoware practice. It would be best if you proceed as follows.

  1. Copy the original package and change the following
    • Package name
    • Folder name
    • Code
    • package.xml
    • CMakeLists.txt
  2. Place it in aichallenge_submit
  3. Change the launch file (reference.launch.xml) in aichallenge_submit_launch

  4. Please ensure that you do not violate the license of the copied package.

"},{"location":"en/development/workspace-usage.html#optional-try-editing-the-map","title":"[Optional] Try editing the map","text":"

For the 2024 AI Challenge, we recommend editing maps such as point cloud maps and lanelet2 maps using tools like VectorMapBuilder .

Download and edit the point cloud map, lanelet2 map, etc., from the Map file storage !

Refer to the VectorMapBuilder usage video for step-by-step instructions.

Store the created lanelet2 map in aichallenge/workspace/src/aichallenge_submit/aichallenge_submit_launch/map.

"},{"location":"en/development/workspace-usage.html#try-submitting","title":"Try submitting","text":"

After customizing the workspace, refer to this to submit.

"},{"location":"en/development/workspace-usage.html#next-step-learn-about-the-main-module","title":"Next Step: Learn about the Main Module","text":""},{"location":"en/information/rules.html","title":"Rules","text":""},{"location":"en/information/rules.html#overview","title":"Overview","text":"

Teams will compete to achieve the shortest driving time while completing the specified number of laps on a designated course.

"},{"location":"en/information/rules.html#environment","title":"Environment","text":"

The course will have a \"Start Area,\" \"Control Line,\" and \"Pit Stop Area.\" Vehicles will start from the Start Area, and the driving time will be measured when they touch the Control Line. For details on the Pit Stop Area, refer to the \"Pit Stop\" section below. Each team will drive individually, without other vehicles or obstacles on the course simultaneously.

"},{"location":"en/information/rules.html#progress","title":"Progress","text":"

Each team will have a preparation session to set up their vehicle and a recording session to measure driving times. However, in the preliminary competition, vehicles will not be used, so there will be no preparation session. Advanced class teams can always perform vehicle maintenance, so they do not have a preparation session either.

Item Final Competition Preliminary Competition Preparation Session TBD None Recording Session TBD 7:00 Number of Laps TBD 6"},{"location":"en/information/rules.html#starting-the-drive","title":"Starting the Drive","text":"

Vehicles will start from the Start Area, and the driving time will begin when they first touch the Control Line. In the preliminary competition, vehicles will be pre-positioned in a predetermined posture. In the final competition, vehicles can be placed in any posture within the Start Area, but operations on the vehicle are only allowed within the Start Area.

"},{"location":"en/information/rules.html#ending-the-drive","title":"Ending the Drive","text":"

The drive will end and be recorded as a result under the following conditions:

  • The specified number of laps is completed.
  • The allotted time for the recording session has elapsed.
  • The vehicle is touched and operated.
  • Any other reason deemed appropriate by the organizers.
"},{"location":"en/information/rules.html#stopping-the-drive","title":"Stopping the Drive","text":"

The drive will end and be invalidated under the following conditions:

  • (Preliminary only) The vehicle has not passed the Control Line within 2 minutes from the start of the recording session.
  • (Preliminary only) The vehicle has significantly deviated from the course.
  • The course walls are moved.
  • Any other reason deemed appropriate by the organizers.
"},{"location":"en/information/rules.html#ranking","title":"Ranking","text":"

The ranking will be determined based on the following criteria:

  • If the specified number of laps is completed, the team with the shortest driving time.
  • If the specified number of laps is not completed:
  • The team with the most laps.
  • If the lap count is the same, the team with the shortest time to the last lap.
"},{"location":"en/information/rules.html#pit-stop","title":"Pit Stop","text":"

Vehicles have a virtual value called \"Condition,\" which, when increased, restricts their speed. Condition increases as the vehicle drives and also when it collides with virtual obstacles described below. The Condition can be reset to its initial value by stopping in the Pit Stop Area for a specified number of seconds.

Setting Item Value Additional Notes Pit Stop Time 3.0 seconds \u2015 Speed Limit Activation 1000 Maximum speed is limited to 20 km/h Section Pass 30 \u2015 Virtual Obstacle Collision 20 - 380 Varies depending on the collision"},{"location":"en/information/rules.html#pit-stop-area","title":"Pit Stop Area","text":"

The Pit Stop Area is indicated by a green frame as shown in the image below.

"},{"location":"en/information/rules.html#increasing-condition","title":"Increasing Condition","text":"

The course is virtually divided into multiple sections, and Condition increases by a fixed amount each time the vehicle exits a section. Additionally, virtual obstacles displayed with a purple frame, as shown in the image below, are placed on the course, and Condition increases if the vehicle collides with them (virtual obstacles do not affect the physical behavior of the vehicle).

Virtual obstacles are generated at random positions within a section each time the vehicle exits a section. After the first lap, virtual obstacles are removed and regenerated in the section, so multiple virtual obstacles will not be placed within the same section. Also, no virtual obstacles are generated near the Pit Stop Area.

"},{"location":"en/information/schedule.html","title":"Competition Information","text":""},{"location":"en/information/schedule.html#overall-flow","title":"Overall Flow","text":""},{"location":"en/information/schedule.html#schedule","title":"Schedule","text":"Event Date Participant Registration May 27, 2024 - July 1, 2024 Networking Event June 21, 2024 Preliminary Round July 2, 2024 - September 2, 2024 Preliminary Awards Ceremony Around September 2024 (tentative) Practice Day October 10-11, 2024 Practice Day November 1, 2024 Semifinals November 2, 2024 Finals November 3, 2024 Finals Awards Ceremony & Networking Event Around December 2024"},{"location":"en/preliminaries/check-results.html","title":"Checking Results","text":"

This page explains the rules and ranking system for the competition. Please note that the content of this page may change during the competition period.

"},{"location":"en/preliminaries/check-results.html#ranking-system","title":"Ranking System","text":"

Scores will be calculated based on the following steps. If multiple runs are made, the higher score will be adopted. If a run is stopped, it will be treated as having completed 0 laps.

  1. The number of laps completed at the end of the run.

  2. The shortest total lap time up to the final lap.

Special Awards: Preliminary rounds will have a seeding system, and finals will have awards.

  • Best Lap Time: Measured using SIM in the preliminaries and TOM\u2019S system in the finals.

  • Best Comfortable Ride: Measured using SIM in the preliminaries and by measuring the water in a glass in the finals.

  • Interaction and recognition of engineers from various fields.

Ranking Example

Lap Time Gap Rank 7 04:41.000 \u2015 1 7 04:47.000 +00:06.000 2 7 04:54.000 +00:13.000 3 6 04:18.000 \u2015 4 6 04:29.000 +00:11.000 5 6 04:42.000 +00:24.000 6 6 04:56.000 +00:38.000 7 5 04:05.000 \u2015 8 5 04:23.000 +00:18.000 9"},{"location":"en/preliminaries/check-results.html#submission","title":"Submission","text":"

Participants are required to upload their developed software to the evaluation system via the submission page. For details, please refer to this link.

"},{"location":"en/preliminaries/check-results.html#how-to-check-results","title":"How to Check Results","text":"

The result scores will be sent to result-summary.json.

"},{"location":"en/preliminaries/check-results.html#result-log-format","title":"Result Log Format","text":"

Results will be output in the following format in ./output/result-summary.json.

{\n  \"laps\": [50.12, 50.34, 50.56, 50.78, 50.90],\n  \"min_time\": 50.12,\n  \"max_jerk\": 32.10\n}\n
"},{"location":"en/preliminaries/submission.html","title":"Submission","text":""},{"location":"en/preliminaries/submission.html#online-environment","title":"Online Environment","text":"

In this competition, scoring will be conducted using an online environment equipped with a simulator and automatic scoring functions. Please follow the steps below to upload your created packages to the online environment. Once uploaded, the simulation will automatically start, and the results will be displayed.

Submit your work by following these steps:

  1. Compress the source code.
  2. Verify the operation in the local evaluation environment.
  3. Submit to the online scoring environment.
"},{"location":"en/preliminaries/submission.html#upload-procedure-to-the-online-environment","title":"Upload Procedure to the Online Environment","text":"
  1. Operation Verification

    1.1. Preparation

    • Compress aichallenge_submit and generate a folder for result output.
    • Run: ./create_submit_file.bash

    1.2. Build Docker Image

    • Run: ./docker_build.sh eval

    1.3. Start Docker Container

    • After startup, Autoware will automatically launch, and autonomous driving will begin.
    • For GPU version of AWSIM: ./docker_run.sh eval gpu
    • For CPU version of AWSIM: ./docker_run.sh eval cpu

    1.4. Check result.json

    • After evaluation is complete, the following files will be stored in the output/latest folder:
      • autoware.log
      • rosbag2_autoware
      • capture
      • result-summary.json
      • result-details.json
  2. Upload to the Online Environment

    Access the online environment and log in from the \u201cLOG IN\u201d button in the top right corner.

    Once logged in, upload aichallenge_submit.tar.gz from the green \u201cUPLOAD\u201d button. After uploading, the source code will be built, and the simulation will be executed in sequence.

    • If it completes successfully, it will display \"Scoring Completed,\" and you can download result.json, with each lap time displayed.
    • If the scenario execution fails, such as a launch failure, resulting in no score output, it will display \"No Results.\" In this case, please re-upload, as it might be an internal server error. Contact support if the problem persists.
    • If the build fails, it will display \"Build Failed.\" Check the steps and re-upload.
    • The highest score from all previous scorings will be applied to the ranking.
    • You cannot upload new source code while scoring is in progress.
    • You can upload up to 10 times per day, with the count reset at midnight Japan time.
  3. Check Results

    After evaluation in the online environment, you can download result.json. Download and check the results.

  4. If There Are No Results

    4.1. Check for package dependency issues

    • Verify that there are no missing dependencies in package.xml, setup.py, or CMakeLists.txt, depending on the language used.

    4.2. Check Docker

    • Check inside Docker with the following command to ensure everything is correctly installed and built in the required directories.

      • Run: docker run -it aichallenge-2024-eval:latest /bin/bash
    • Verify the following directories:

      • /aichallenge/workspace/*
      • /autoware/install/*
"},{"location":"en/setup/build-docker.html","title":"Building and Running the Competition Repository","text":"

In the competition repository, the actual runtime environment is provided entirely within Docker. The steps to use the repository are as follows:

  1. Build the Docker image for the competition environment
  2. Build Autoware within the Docker container
  3. Run Autoware and the simulator simultaneously within the Docker container
"},{"location":"en/setup/build-docker.html#building-the-docker-image-for-the-competition-environment","title":"Building the Docker Image for the Competition Environment","text":"

Open a terminal again using Alt+Ctrl+T. Follow the commands below by pasting them with Ctrl+Shift+P and pressing Enter.

First, navigate to the competition repository.

cd ~/aichallenge-2024\n

Build the Docker image.

./docker_build.sh dev\n

Check if the following image has been generated by running:

docker images\n

You should see an image like this:

aichallenge-2024-dev   latest   df2e83a20349   33 minutes ago   8.9GB\n
"},{"location":"en/setup/build-docker.html#building-autoware-within-the-docker-container","title":"Building Autoware within the Docker Container","text":"

Start the Docker container by executing the following:

cd ~/aichallenge-2024\n./docker_run.sh dev cpu\n

Although it may not look like anything has changed, the above command moves the environment inside the Docker container. To confirm that you are inside the Docker container, you can run the following command and check if nothing is displayed.

ls ~\n

Within the Docker container, build Autoware by executing:

cd /aichallenge\n./build_autoware.bash\n
"},{"location":"en/setup/build-docker.html#running-autoware-and-the-simulator-within-the-docker-container","title":"Running Autoware and the Simulator within the Docker Container","text":"

After building Autoware, run the following command:

./run_evaluation.bash\n

When the screen shown below appears, the startup is complete. To terminate, press CTRL + C in the terminal.

"},{"location":"en/setup/build-docker.html#next-step-start-development","title":"Next Step: Start Development","text":"

This concludes the environment setup! Next, let's proceed to actual development.

"},{"location":"en/setup/docker.html","title":"Installing the Virtual Environment","text":""},{"location":"en/setup/docker.html#installing-dependencies","title":"Installing Dependencies","text":"

First, install the necessary libraries.

sudo apt update\nsudo apt install -y python3-pip ca-certificates curl gnupg\n
"},{"location":"en/setup/docker.html#installing-docker","title":"Installing Docker","text":"

Install Docker using the commands from the official documentation.

sudo install -m 0755 -d /etc/apt/keyrings\ncurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg\nsudo chmod a+r /etc/apt/keyrings/docker.gpg\necho \\\n  \"deb [arch=\"$(dpkg --print-architecture)\" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \\\n  \"$(. /etc/os-release && echo \"$VERSION_CODENAME\")\" stable\" | \\\n  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null\n\nsudo apt-get update\nsudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin\nsudo usermod -aG docker $USER\nnewgrp docker\n

Verify that Docker is installed correctly with the following command:

sudo docker run hello-world\n

If you see Hello from Docker!, Docker is installed correctly.

"},{"location":"en/setup/docker.html#installing-rocker","title":"Installing Rocker","text":"

Rocker is a tool that simplifies running GUI applications inside Docker containers.

Although the official README recommends installing via apt, we will use pip for simplicity.

pip install rocker\n

By default, the path to the rocker executable is not included in the PATH, so add it to .bashrc with the following commands:

echo export PATH='$HOME/.local/bin:$PATH' >> ~/.bashrc\nsource ~/.bashrc\n
"},{"location":"en/setup/docker.html#obtaining-the-docker-image-for-the-autoware-environment","title":"Obtaining the Docker Image for the Autoware Environment","text":"

Download the Docker image for the Autoware environment used in the AI Challenge.

The Docker image is approximately 10GB in size, so it is recommended to use a wired LAN for downloading.

docker pull ghcr.io/automotiveaichallenge/autoware-universe:humble-latest\n

Check if the download was successful with the following command:

docker images\n

If the Docker image was downloaded correctly, you will see output similar to the following:

REPOSITORY                                        TAG                       IMAGE ID       CREATED         SIZE\nghcr.io/automotiveaichallenge/autoware-universe   humble-latest             30c59f3fb415   13 days ago     8.84GB\n
"},{"location":"en/setup/docker.html#next-step","title":"Next Step","text":"

Two types of AWSIM are provided.

For first-time users, proceed to the documentation for headless AWSIM. If you have a PC with a GPU and want a richer development environment, proceed to the documentation for AWSIM with visualization.

Download headless AWSIM

Download AWSIM with visualization

"},{"location":"en/setup/headless-simulation.html","title":"Downloading Headless AWSIM","text":""},{"location":"en/setup/headless-simulation.html#download-awsim","title":"Download AWSIM","text":"
  1. Download the latest AWSIM.zip from Google Drive and extract it to aichallenge-2024/aichallenge/simulator.

  2. Verify that the executable file exists at aichallenge-2024/aichallenge/simulator/AWSIM/AWSIM.x86_64.

With this, the environment setup is complete!

"},{"location":"en/setup/headless-simulation.html#next-step-building-and-running-the-competition-repository","title":"Next Step: Building and Running the Competition Repository","text":""},{"location":"en/setup/requirements.html","title":"Recommended Environment","text":"

For the PC used in this competition, we recommend the following specifications. While it is possible to run with lower specifications, it may result in unstable execution speeds on the ROS 2 side, causing significant variations in behavior during simulations.

Warning

If you only have a Windows environment, please install Ubuntu 22.04. While it is possible to install Ubuntu on the same disk as your Windows environment, if you are not familiar with the process, you may accidentally damage your Windows environment. Therefore, we strongly recommend purchasing a new external or internal SSD and installing Ubuntu there.

Info

For guidance on installing Ubuntu, this article may be helpful.

"},{"location":"en/setup/requirements.html#using-headless-awsim","title":"Using Headless AWSIM","text":"
  • OS: Ubuntu 22.04
  • CPU: Intel Core i5 (4 cores) or higher (recommended)
  • Memory:
  • Minimum: 8 GB
  • Recommended: 16 GB or more
  • SSD: 60 GB or more
"},{"location":"en/setup/requirements.html#using-awsim-with-visualization","title":"Using AWSIM with Visualization","text":"
  • OS: Ubuntu 22.04
  • CPU: Intel Core i7 (8 cores) or higher
  • GPU: NVIDIA GeForce with 8 GB VRAM
  • Memory: 16 GB or more
  • Storage: SSD 60 GB or more
"},{"location":"en/setup/requirements.html#next-step-clone-the-workspace","title":"Next Step: Clone the Workspace","text":""},{"location":"en/setup/visible-simulation.html","title":"Downloading AWSIM with Visualization (Reference)","text":"

By default, we distribute a headless version of AWSIM, but we also provide instructions for setting up an environment with visualization for those who wish to use it. Note that setting up a GPU-based environment can often lead to issues, so if you cannot meet the recommended environment specifications or if this is your first time participating, please consider this as a reference.

"},{"location":"en/setup/visible-simulation.html#installing-nvidia-drivers","title":"Installing NVIDIA Drivers","text":"
# Add repository\nsudo add-apt-repository ppa:graphics-drivers/ppa\n\n# Update package list\nsudo apt update\n\n# Install drivers\nsudo ubuntu-drivers autoinstall\n\n# Reboot\nreboot\n\n# After reboot, check the installation\nnvidia-smi\n
"},{"location":"en/setup/visible-simulation.html#installing-nvidia-container-toolkit","title":"Installing NVIDIA Container Toolkit","text":"

Refer to the NVIDIA Container Toolkit for installation.

# Prepare for installation\ndistribution=$(. /etc/os-release;echo $ID$VERSION_ID) \\\n      && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \\\n      && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \\\n            sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \\\n            sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list\n\n# Install\nsudo apt-get update\nsudo apt-get install -y nvidia-container-toolkit\nsudo nvidia-ctk runtime configure --runtime=docker\nsudo systemctl restart docker\n\n# Test the installation\nsudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi\n\n# If the following output is displayed, the installation was successful:\n# (The output below is quoted from the NVIDIA website)\n#\n# +-----------------------------------------------------------------------------+\n# | NVIDIA-SMI 450.51.06    Driver Version: 450.51.06    CUDA Version: 11.0     |\n# |-------------------------------+----------------------+----------------------+\n# | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |\n# | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |\n# |                               |                      |               MIG M. |\n# |===============================+======================+======================|\n# |   0  Tesla T4            On   | 00000000:00:1E.0 Off |                    0 |\n# | N/A   34C    P8     9W /  70W |      0MiB / 15109MiB |      0%      Default |\n# |                               |                      |                  N/A |\n# +-------------------------------+----------------------+----------------------+\n# +-----------------------------------------------------------------------------+\n# | Processes:                                                                  |\n# |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |\n# |        ID   ID                                                   Usage      |\n# |=============================================================================|\n# |  No running processes found                                                 |\n# +-----------------------------------------------------------------------------+\n
"},{"location":"en/setup/visible-simulation.html#installing-vulkan","title":"Installing Vulkan","text":"
sudo apt update\nsudo apt install -y libvulkan1\n
"},{"location":"en/setup/visible-simulation.html#downloading-awsim","title":"Downloading AWSIM","text":"

Download the latest AWSIM_GPU_**.zip from Google Drive and extract it to aichallenge-2024/aichallenge/simulator.

Verify that the executable file exists at aichallenge-2024/aichallenge/simulator/AWSIM_GPU_**/AWSIM.x86_64.

"},{"location":"en/setup/visible-simulation.html#verifying-awsim-startup","title":"Verifying AWSIM Startup","text":"

If you are using AWSIM with visualization, start the container with the following commands:

cd aichallenge-2024\n./docker_build.sh dev\n./docker_run.sh dev gpu\n

Within the terminal where the container is running (inside the container), execute the following:

cd /aichallenge\n./build_autoware.bash\n

After building Autoware, modify run_simulator.bash. Specify the directory you just extracted for AISIM_GPU_**.

#!/bin/bash\n\n# shellcheck disable=SC1091\nsource /aichallenge/workspace/install/setup.bash\nsudo ip link set multicast on lo\n/aichallenge/simulator/AWSIM_GPU_**/AWSIM.x86_64\n

Make the following changes to run_evaluation.bash as well.

# AWSIM_DIRECTORY=/aichallenge/simulator/AWSIM\nAWSIM_DIRECTORY=/aichallenge/simulator/AWSIM_GPU_**\n

Execute the following command:

./run_evaluation.bash\n

If the following screen appears, it was successful.

This concludes the environment setup!

"},{"location":"en/setup/visible-simulation.html#next-step-start-development","title":"Next Step: Start Development","text":"

Let's start development from Getting Started!

"},{"location":"en/setup/workspace-setup.html","title":"Cloning the Workspace","text":""},{"location":"en/setup/workspace-setup.html#installing-dependencies","title":"Installing Dependencies","text":"

Open a terminal with Alt+Ctrl+T, then paste the following commands using Ctrl+Shift+P and press Enter. First, install the necessary libraries.

sudo apt update\nsudo apt install -y git\n
"},{"location":"en/setup/workspace-setup.html#cloning-the-competition-repository","title":"Cloning the Competition Repository","text":"

Clone the workspace repository. Here, we specify the home directory, but you can place it in any directory of your choice.

cd ~\ngit clone https://github.com/AutomotiveAIChallenge/aichallenge-2024.git\n
"},{"location":"en/setup/workspace-setup.html#next-step-installing-the-virtual-environment","title":"Next Step: Installing the Virtual Environment","text":""},{"location":"en/specifications/hardware.html","title":"Hardware","text":""},{"location":"en/specifications/interface.html","title":"Interface","text":""},{"location":"en/specifications/interface.html#list","title":"List","text":"Interface Name Type Service /control/control_mode_request autoware_auto_vehicle_msgs/srv/ControlModeCommand Publisher /vehicle/status/control_mode autoware_auto_vehicle_msgs/msg/ControlModeReport Subscription /control/command/control_cmd autoware_auto_control_msgs/msg/AckermannControlCommand Publisher /vehicle/status/velocity_status autoware_auto_vehicle_msgs/msg/VelocityReport Publisher /vehicle/status/steering_status autoware_auto_vehicle_msgs/msg/SteeringReport Subscription /control/command/gear_cmd autoware_auto_vehicle_msgs/msg/GearCommand Publisher /vehicle/status/gear_status autoware_auto_vehicle_msgs/msg/GearReport Publisher /sensing/gnss/pose_with_covariance geometry_msgs/msg/PoseWithCovarianceStamped Publisher /sensing/imu/imu_raw sensor_msgs/msg/Imu Publisher /aichallenge/objects sstd_msgs/msg/Float64MultiArray Publisher /aichallenge/pitstop/area std_msgs.msg.Float64MultiArray Publisher /aichallenge/pitstop/condition std_msgs.msg.Int32 Publisher /aichallenge/pitstop/status std_msgs.msg.Float32"},{"location":"en/specifications/interface.html#controlcommandcontrol_cmd","title":"/control/command/control_cmd","text":"Name Description stamp Message timestamp lateral.stamp Unused lateral.steering_tire_angle Target steering angle lateral.steering_tire_rotation_rate Unused longitudinal.stamp Unused longitudinal.speed Unused longitudinal.acceleration Target acceleration longitudinal.jerk Unused"},{"location":"en/specifications/interface.html#vehiclestatusvelocity_status","title":"/vehicle/status/velocity_status","text":"Name Description header.stamp Data acquisition time header.frame_id Frame ID (base_link) longitudinal_velocity Longitudinal velocity lateral_velocity Lateral velocity heading_rate Angular velocity"},{"location":"en/specifications/interface.html#vehiclestatussteering_status","title":"/vehicle/status/steering_status","text":"Name Description stamp Data acquisition time steering_tire_angle Steering angle"},{"location":"en/specifications/interface.html#controlcommandgear_cmd","title":"/control/command/gear_cmd","text":"Name Description stamp Message timestamp command Gear type"},{"location":"en/specifications/interface.html#vehiclestatusgear_status","title":"/vehicle/status/gear_status","text":"Name Description stamp Data acquisition time report Gear type"},{"location":"en/specifications/interface.html#sensinggnsspose_with_covariance","title":"/sensing/gnss/pose_with_covariance","text":"Name Description header.stamp Data acquisition time header.frame_id Frame ID (map) pose.pose.position Vehicle position (origin of base_link) pose.pose.orientation Unused pose.covariance Position accuracy"},{"location":"en/specifications/interface.html#sensingimuimu_raw","title":"/sensing/imu/imu_raw","text":"Name Description header.stamp Data acquisition time header.frame_id Frame ID (imu_link) orientation Orientation angular_velocity Angular velocity linear_acceleration Linear acceleration"},{"location":"en/specifications/interface.html#aichallengeobjects","title":"/aichallenge/objects","text":"Name Description data[N * 4 + 0] X coordinate of Nth object data[N * 4 + 1] Y coordinate of Nth object data[N * 4 + 2] Z coordinate of Nth object data[N * 4 + 3] Radius of Nth object"},{"location":"en/specifications/interface.html#aichallengepitstoparea","title":"/aichallenge/pitstop/area","text":"Name Description data[0] X position of Pit Stop Area data[1] Y position of Pit Stop Area data[2] Z position of Pit Stop Area data[3] X quaternion of Pit Stop Area data[4] Y quaternion of Pit Stop Area data[5] Z quaternion of Pit Stop Area data[6] W quaternion of Pit Stop Area data[7] X size of of Pit Stop Area data[8] Y size of of Pit Stop Area"},{"location":"en/specifications/interface.html#aichallengepitstopcondition","title":"/aichallenge/pitstop/condition","text":"Name Description data Current condition value"},{"location":"en/specifications/interface.html#aichallengepitstopstatus","title":"/aichallenge/pitstop/status","text":"Name Description data Number of seconds a pit stop is valid"},{"location":"en/specifications/simulator.html","title":"Simulator","text":""},{"location":"en/specifications/simulator.html#overview","title":"Overview","text":"

This page describes the specifications of the simulator used in the AI Challenge.

The simulator is based on the open-source autonomous driving simulator \"AWSIM\" developed for Autoware.

"},{"location":"en/specifications/simulator.html#commandline-options","title":"Commandline Options","text":"Option Type Default Description --timeout float 420.0 Set session timeout seconds. --endless bool false Enable/disable session timeout. --pit-stop bool true Enable/disable features related to pit-stop. --replay0 string Load driving logs and replay as a different vehicle.

Use result-details.json for the driving log for replay. Also, replay supports 10 vehicles from --replay0 to --replay9.

"},{"location":"en/specifications/simulator.html#keyboard-operation","title":"Keyboard Operation","text":"Operation Key Quit Esc Reset Space Switch camera C Accel Arrow Up Brake Arrow Down Steering Arrow Left, Right Gear (D) D Gear (R) R Gear (N) N Gear (P) P"},{"location":"en/specifications/simulator.html#topic-operation","title":"Topic Operation","text":"Topic Type Description /aichallenge/awsim/status std_msgs.msg.Float32MultiArray Get status of the simulation. /aichallenge/awsim/change_time_scale std_msgs.msg.Float32 Set the timescale for the simulation. /aichallenge/awsim/reset std_msgs.msg.Empty Reset the simulation.

The above /aichallenge/awsim/status has the following structure.

Index Value 0 session timeout 1 lap count 2 lap time 3 section 4 timescale"},{"location":"en/specifications/simulator.html#vehicle-racing-kart","title":"Vehicle (Racing Kart)","text":"

The vehicle conforms to the specifications of the EGO Vehicle in AWSIM and is designed with specifications close to an actual racing kart.

"},{"location":"en/specifications/simulator.html#parameters","title":"Parameters","text":"

The following table summarizes the vehicle parameters.

Item Value Vehicle Weight 160 kg Length 200 cm Width 145 cm Front Wheel Diameter 24 cm Front Wheel Width 13 cm Front Wheel Tread 93 cm Rear Wheel Diameter 24 cm Rear Wheel Width 18 cm Rear Wheel Tread 112 cm Maximum Steering Angle 80\u00b0 Maximum Acceleration 3.2 m/s^2"},{"location":"en/specifications/simulator.html#vehicle-component","title":"Vehicle Component","text":"

The following table summarizes the settings of the Vehicle component. For detailed information of the setting items, see this manual.

Item Value Vehicle Settings Use Inertia Off Physics Settings (experimental) Sleep Velocity Threshold 0.02 Sleep Time Threshold 0 Skidding Cancel Rate 0.236 Input Settings Max Steer Angle Input 80 Max Acceleration Input 3.2"},{"location":"en/specifications/simulator.html#rigidbody-component","title":"Rigidbody Component","text":"

The following table summarizes the settings of the Rigidbody component. For more information, see this manual.

Item Value Mass 160 Drag 0 Angular Drag 0"},{"location":"en/specifications/simulator.html#com-position","title":"CoM Position","text":"

CoM (Center of Mass) is the mass center of the vehicle Rigidbody. The CoM position is set at the center of the vehicle and at the height of the wheel axles.

"},{"location":"en/specifications/simulator.html#vehicle-collider","title":"Vehicle Collider","text":"

Vehicle collider is used to detect collision between the vehicle and other objects or checkpoints. The vehicle collider is created based on the mesh of the vehicle object.

"},{"location":"en/specifications/simulator.html#wheel-colliders","title":"Wheel Colliders","text":"

The vehicle has a total of four wheel colliders - one for each wheel, simulating the vehicle on a four-wheel model, rather than a kinematic bicycle model.

The Wheel Collider is set as follows. For more details on wheel colliders, please refer to this manual.

Item Value Mass 1 Radius 0.12 Wheel Damping Rate 0.25 Suspension Distance 0.001 Suspension Spring Spring (N/m) 35000 Damper (N*s/m) 3500 Target Position 0.01"},{"location":"en/specifications/simulator.html#sensor-configuration","title":"Sensor Configuration","text":""},{"location":"en/specifications/simulator.html#gnss","title":"GNSS","text":"

The GNSS is mounted at the following position relative to the vehicle base link.

Item Value x 0.0 m y 0.0 m z 0.0 m roll 0.0 rad pitch 0.0 rad yaw 0.0 rad"},{"location":"en/specifications/simulator.html#imu","title":"IMU","text":"

The IMU is mounted at the following position relative to the vehicle base link.

Item Value x 0.0 m y 0.0 m z 0.0 m roll 0.0 rad pitch 0.0 rad yaw 0.0 rad"}]} \ No newline at end of file +{"config":{"lang":["en","ja"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"community.html","title":"Community","text":""},{"location":"community.html#ai-2024","title":"\u81ea\u52d5\u904b\u8ee2AI\u30c1\u30e3\u30ec\u30f3\u30b8\u30a2\u30c9\u30d9\u30f3\u30c8\u30ab\u30ec\u30f3\u30c0\u30fc 2024","text":"

https://qiita.com/advent-calendar/2023/jidounten-ai

"},{"location":"community.html#ai","title":"\u81ea\u52d5\u904b\u8ee2AI\u30c1\u30e3\u30ec\u30f3\u30b8\u306e\u53d6\u308a\u7d44\u307f\u306e\u8a18\u4e8b","text":"

https://automotive.panasonic.com/feature/jaaic

https://www.ritsumei.ac.jp/ise/suki_ict/story01.html/

\u7d76\u8cdb\u52df\u96c6\u4e2d\uff01\uff01\uff01

"},{"location":"faq.html","title":"FAQ","text":"

Warning

\u57fa\u672c\u7684\u306b\u306f\u3001ChatGPT\u3084Google\u691c\u7d22\u3067\u89e3\u6c7a\u3067\u304d\u308b\u9805\u76ee\u306f\u591a\u3044\u3067\u3059\u3002\u305d\u308c\u3067\u3082\u89e3\u6c7a\u3057\u306a\u3044\u8cea\u554f\u306b\u3064\u3044\u3066\u306f\u3001\u30a8\u30e9\u30fc\u306e\u30ed\u30b0\u306e\u629c\u7c8b\u3068\u6dfb\u4ed8\u3092\u304a\u9858\u3044\u3057\u307e\u3059\u3002

"},{"location":"faq.html#_1","title":"\u74b0\u5883\u69cb\u7bc9","text":""},{"location":"faq.html#awsim-and-autoware","title":"AWSIM and Autoware\u9593\u306e\u901a\u4fe1\u304c\u5b89\u5b9a\u3057\u307e\u305b\u3093\u3002","text":"

local \u3067\u30c6\u30b9\u30c8\u3059\u308b\u969b\u3001\u3059\u3079\u3066\u306e terminal \u3067ROS_LOCALHOST_ONLY=1\u306b\u8a2d\u5b9a\u3059\u308b\u3068\u901a\u4fe1\u901f\u5ea6\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002 .bashrc \u306b\u4ee5\u4e0b\u306e\u884c\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002

export ROS_LOCALHOST_ONLY=1\nexport RMW_IMPLEMENTATION=rmw_cyclonedds_cpp\n\nif [ ! -e /tmp/cycloneDDS_configured ]; then\n    sudo sysctl -w net.core.rmem_max=2147483647\n    sudo ip link set lo multicast on\n    touch /tmp/cycloneDDS_configured\n

\u306a\u304a\u3001\u4eca\u56de\u306e\u5927\u4f1a\u3067\u306fPC2 \u53f0\u69cb\u6210\u306e Windows+Linux\u3001Linux+Linux\u306e\u4e8c\u53f0\u69cb\u6210\u3082\u8003\u616e\u3057\u3066\u3044\u307e\u3059\u3002 \u305d\u306e\u5834\u5408\u306f\u3001 ROS_LOCALHOST_ONLY=0\u3068\u3057\u3066\u304f\u3060\u3055\u3044\u3002

\u6ce8\u610f:

  • OS \u306e\u8d77\u52d5\u5f8c\u3001\u30bf\u30fc\u30df\u30ca\u30eb\u306e\u8d77\u52d5\u6642\u306b\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u8981\u6c42\u3055\u308c\u3001\u521d\u56de\u306b\u306f sudo ip link set lo multicast on \u304c\u5fc5\u8981\u3067\u3059\u3002
  • \u4e00\u5ea6\u4e0a\u8a18\u306e\u3088\u3046\u306b.bashrc \u306b\u66f8\u304d\u8fbc\u3093\u3067\u5909\u66f4\u3057\u305f\u3053\u3068\u3092\u5fd8\u308c\u308b\u3068\u5e38\u306b\u9069\u7528\u3055\u308c\u3066\u3057\u307e\u3046\u3053\u3068\u306b\u306a\u308b\u305f\u3081\u3001echo $ROS_LOCALHOST_ONLY\u3067\u78ba\u8a8d\u3059\u308b\u306a\u3069\u5fc5\u305a\u5909\u66f4\u70b9\u306f\u8ffd\u3063\u3066\u304f\u3060\u3055\u3044\u3002
  • ROS_LOCALHOST_ONLY=1\u3068ROS_LOCALHOST_ONLY=0\u304c\u6df7\u5728\u3057\u3066\u3044\u308b\u3068 container \u9593\u306e\u901a\u4fe1\u304c\u3067\u304d\u307e\u305b\u3093\u3002
  • ROS_LOCALHOST_ONLY\u304c\u5b9f\u884c\u30d5\u30a1\u30a4\u30eb\u306b\u8a18\u8f09\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u306b\u306f\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002
"},{"location":"faq.html#ros2-topic-list","title":"ros2 topic list \u304c\u8868\u793a\u3055\u308c\u307e\u305b\u3093\u3002","text":"

\u3042\u306a\u305f\u306e\u30de\u30b7\u30f3\u306eROS_DOMAIN_ID\u304c\u4e00\u81f4\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\uff08ROS_DOMAIN_ID \u3092\u8a2d\u5b9a\u3057\u3066\u3044\u306a\u3044\u65b9\u306f\u554f\u984c\u306a\u3044\u3067\u3059\uff09 \u307e\u305f\u3001ROS2 \u304c\u30bd\u30fc\u30b9\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u306e\u78ba\u8a8d\u3092\u304a\u9858\u3044\u3057\u307e\u3059\u3002

"},{"location":"faq.html#windowsawsimubuntuautoware-ros2-topic-list","title":"Windows\u306eAWSIM\u3068Ubuntu\u306eAutoware\u3092\u4f7f\u7528\u3057\u3066\u304a\u308a\u3001$ ros2 topic list \u304c\u8868\u793a\u3055\u308c\u307e\u305b\u3093\u3002","text":"

Windows Firewall\u3067\u306e\u901a\u4fe1\u3092\u8a31\u53ef\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u307e\u305f\u3001ros2 daemon stop\u3068ros2 daemon start\u3092\u5b9f\u884c\u3057\u3066\u3001\u4e0d\u8981\u306a\u30d7\u30ed\u30bb\u30b9\u304c\u6b8b\u3063\u3066\u3044\u306a\u3044\u304b\u78ba\u8a8d\u3057\u3001\u518d\u8d77\u52d5\u3092\u304a\u9858\u3044\u3057\u307e\u3059\u3002

"},{"location":"faq.html#rocker","title":"Rocker\u304c\u8d77\u52d5\u3057\u307e\u305b\u3093\u3002","text":"

\u307e\u305a\u3001rocker\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u304b\u306e\u78ba\u8a8d\u3092\u304a\u9858\u3044\u3057\u307e\u3059\u3002 \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u306b\u3082\u95a2\u308f\u3089\u305a\u3001\u8d77\u52d5\u3057\u306a\u3044\u5834\u5408\u306f\u6a29\u9650\u3092\u3054\u78ba\u8a8d\u304f\u3060\u3055\u3044\u3002\u904e\u53bb\u306e\u4e8b\u4f8b\u3067\u3059\u3068\u3001\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3057\u305f\u30a2\u30ab\u30a6\u30f3\u30c8\u3068\u5b9f\u884c\u3059\u308b\u969b\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u7a2e\u985e\u30fb\u6a29\u9650\u304c\u7570\u306a\u308b\u3068\u5b9f\u884c\u3067\u304d\u306a\u3044\u3053\u3068\u304c\u5831\u544a\u3055\u308c\u3066\u3044\u307e\u3059\u3002

"},{"location":"faq.html#awsim","title":"AWSIM\u304c\u30b3\u30a2\u30c0\u30f3\u30d7\u3067\u7d42\u4e86\u3057\u307e\u3059\u3002","text":"

AWSIM\u3092\u8d77\u52d5\u3057\u305f\u76f4\u5f8c\u306bcoredump\u3067\u7d42\u4e86\u3059\u308b\u5834\u5408\u3001GPU\u306e\u30e1\u30e2\u30ea\u304c\u4e0d\u8db3\u3057\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001nvidia-smi\u3067GPU\u30e1\u30e2\u30ea\u306e\u5229\u7528\u7387\u304c\u9650\u754c\u306b\u9054\u3057\u3066\u3044\u306a\u3044\u304b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u306a\u304a\u3001GPU\u306e\u30e1\u30e2\u30ea\u306f11GB\u4ee5\u4e0a\u3092\u63a8\u5968\u3057\u3066\u3044\u307e\u3059\u3002

"},{"location":"faq.html#gpuwindowspc","title":"GPU\u642d\u8f09\u306eWindowsPC\u3057\u304b\u7528\u610f\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002","text":"

\u672c\u5927\u4f1a\u306e\u30b5\u30dd\u30fc\u30c8\u5bfe\u8c61\u306fHP\u8a18\u8f09\u306e\u69cb\u6210\u306b\u306a\u308a\u307e\u3059\u305f\u3081\u3001\u8a73\u7d30\u306e\u3054\u6848\u5185\u306f\u3067\u304d\u307e\u305b\u3093\u304c\u3001\u4e00\u822c\u7684\u306b\u4e0b\u8a18\u306e\u3088\u3046\u306a\u65b9\u6cd5\u304c\u3042\u308b\u3068\u601d\u308f\u308c\u307e\u3059\u3002

\u53c2\u52a0\u3059\u308b\u305f\u3081\u306b\u306f\u3001Autoware\u74b0\u5883\u304c\u554f\u984c\u3067\u3059\u3002 \u305d\u306e\u305f\u3081\u3001\u3044\u304b\u306b\u300cAutoware\u3092\u52d5\u304b\u3059\u305f\u3081\u306e\u74b0\u5883\u3092\u7528\u610f\u300d\u3059\u308b\u304b\u304c\u30dd\u30a4\u30f3\u30c8\u306b\u306a\u308b\u305f\u3081\u3001 \u6027\u80fd\u3084\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u6709\u7121\u3001\u30db\u30b9\u30c8-\u30b3\u30f3\u30c6\u30ca\u5185\u306e\u901a\u4fe1\u8a2d\u5b9a\u306a\u3069\u306e\u554f\u984c\u304c\u8d77\u304d\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u4ee5\u4e0b\u306e\u65b9\u6cd5\u304c\u3042\u308b\u3068\u601d\u3044\u307e\u3059\u3002

  • \u30c7\u30e5\u30a2\u30eb\u30d6\u30fc\u30c8\u3067Ubuntu\u3092\u7528\u610f
  • Windows\u4e0a\u306bVM\u3067Ubuntu\u3092\u7528\u610f (Hyper-V\u3001VirtualBox\u3001VMware\u306a\u3069)
  • WSL2\u4e0a\u306bUbuntu\u3092\u7528\u610f
  • Windows\u4e0a\u306bdocker\u74b0\u5883\u3092\u7528\u610f\uff08\u76f4\u63a5\u3001Autoware\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u5165\u308c\u308b\uff09
  • \u30af\u30e9\u30a6\u30c9\u306b\u74b0\u5883\u3092\u69cb\u7bc9 (\u904e\u53bb\u306e\u5927\u4f1a\u3067\u306fAWS\u3092\u5229\u7528\u3057\u3066\u53c2\u52a0\u3055\u308c\u3066\u3044\u308b\u65b9\u3082\u3044\u3089\u3063\u3057\u3083\u3044\u307e\u3057\u305f)
"},{"location":"faq.html#awsawsimrviz","title":"AWS\u3067\u74b0\u5883\u69cb\u7bc9\u3057\u305f\u3068\u3053\u308d\u3001AWSIM\u306f\u8868\u793a\u3055\u308c\u305f\u304c\u3001Rviz\u304c\u30d6\u30e9\u30c3\u30af\u30b9\u30af\u30ea\u30fc\u30f3\u3068\u306a\u308a\u307e\u3057\u305f\u3002","text":"

sudo apt upgrade\u3067\u6cbb\u3063\u305f\u3068\u3044\u3046\u4e8b\u4f8b\u304c\u3042\u308a\u307e\u3059\u306e\u3067\u3001\u5185\u5bb9\u3092\u78ba\u8a8d\u306e\u4e0a\u3001\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002 \u307e\u305f\u3001\u904e\u53bbIssue\u306b\u3066\u3054\u8cea\u554f\u5185\u5bb9\u3068\u4f3c\u305f\u8cea\u554f\u304c\u3042\u308a\u307e\u3057\u305f\u306e\u3067\u3001\u3053\u3061\u3089\u3082\u5408\u308f\u305b\u3066\u3054\u78ba\u8a8d\u304f\u3060\u3055\u3044\u3002

"},{"location":"faq.html#docker_runsh-35-rocker","title":"docker_run.sh: \u884c 35: rocker: \u30b3\u30de\u30f3\u30c9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u304c\u51fa\u307e\u3059\u3002","text":"

rocker\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u304a\u9858\u3044\u3057\u307e\u3059\u3002

"},{"location":"faq.html#warning-unable-to-detect-os-for-base-image-aichallenge-2024-dev-maybe-the-base-image-does-not-exist","title":"WARNING unable to detect os for base image 'aichallenge-2024-dev', maybe the base image does not exist\u304c\u51fa\u307e\u3059\u3002","text":"

Docker\u30a4\u30e1\u30fc\u30b8\u306e\u30d3\u30eb\u30c9\u3092\u304a\u9858\u3044\u3057\u307e\u3059\u3002

"},{"location":"faq.html#dockerpull","title":"Docker\u304cpull\u3067\u304d\u307e\u305b\u3093","text":"

newgrp docker\u304bsudo service docker restart\u3067docker\u306e\u518d\u8d77\u52d5\u307e\u305f\u306fUbuntu\u306e\u518d\u8d77\u52d5\u3092\u304a\u9858\u3044\u3057\u307e\u3059\u3002

"},{"location":"faq.html#_2","title":"\u64cd\u4f5c","text":""},{"location":"faq.html#ros","title":"ROS","text":""},{"location":"faq.html#python-no-module-named-error","title":"python\u3067\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u4f5c\u6210\u3059\u308b\u3068\u5b9f\u884c\u6642 no module named * \u306eerror\u304c\u8d77\u304d\u307e\u3059\u3002","text":"

\u3053\u3061\u3089\u3092\u53c2\u8003\u306b\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002

"},{"location":"faq.html#_3","title":"\u30c8\u30d4\u30c3\u30af\u306e\u578b\u3092\u8abf\u3079\u308b\u306b\u306f\u3001\u3069\u306e\u3088\u3046\u306a\u30b3\u30de\u30f3\u30c9\u3092\u6253\u3066\u3070\u3088\u308d\u3057\u3044\u3067\u3057\u3087\u3046\u304b\u3002","text":"

topic\u306e\u578b\u3092\u8abf\u3079\u308b\u969b\u306fros2 topic info -v fuga_topic\u3082\u3057\u304f\u306fnode\u304c\u7279\u5b9a\u3067\u304d\u308c\u3070\u3001ros2 node info hoge-node\u3067\u8abf\u3079\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u305d\u306e\u4ed6\u306b\u3082ROS\u306b\u95a2\u3059\u308b\u60c5\u5831\u3092\u8abf\u3079\u305f\u3044\u5834\u5408\u306f\u300cROS2\u3000\u30b3\u30de\u30f3\u30c9\u300d\u3067\u3001\u30cd\u30c3\u30c8\u691c\u7d22\u3059\u308b\u3068\u826f\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002

"},{"location":"faq.html#autoware","title":"Autoware","text":""},{"location":"faq.html#rviz","title":"Rviz\u4e0a\u3067\u5730\u56f3\u30fb\u30eb\u30fc\u30c8\u304c\u8868\u793a\u3055\u308c\u307e\u305b\u3093\u3002","text":"

\u4f7f\u7528\u3057\u3066\u3044\u308b\u30de\u30c3\u30d7\u30c7\u30fc\u30bf\u304c\u9069\u5207\u306a\u5834\u6240\u306b\u914d\u7f6e\u3055\u308c\u3044\u308b\u304b\u30fb\u6b63\u3057\u3044\u304b\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002

"},{"location":"faq.html#autoware_1","title":"\u3069\u306e\u3088\u3046\u306b\u3057\u3066Autoware\u3092\u6539\u826f\u3057\u3066\u53c2\u52a0\u3059\u308c\u3070\u3088\u3044\u304b\u304c\u5206\u304b\u308a\u307e\u305b\u3093\u3002","text":"

Autoware\u306e\u30ce\u30fc\u30c9\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u8abf\u6574\u3084\u30ce\u30fc\u30c9\u6539\u826f\u30fb\u7f6e\u304d\u63db\u3048\u306a\u3069\u304c\u65b9\u6cd5\u3068\u3057\u3066\u3042\u308a\u307e\u3059\u3002 Autoware\u306e\u57fa\u672c\u69cb\u6210\u306a\u3069\u3092\u672c\u30b5\u30a4\u30c8\u306e\u5225\u30bf\u30d6\u3084\u3053\u3061\u3089\u306b\u5c11\u3057\u307e\u3068\u3081\u3066\u304a\u308a\u307e\u3059\u306e\u3067\u3001\u3054\u6d3b\u7528\u304f\u3060\u3055\u3044\u3002 \u307e\u305f\u3001\u5916\u90e8\u306e\u65b9\u306e\u8a18\u4e8b\u3067\u3059\u304c\u3001\u3053\u3061\u3089\u3082\u53c2\u8003\u306b\u306a\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002

"},{"location":"faq.html#behavior-pathmotion-planner","title":"\u7d4c\u8def\u751f\u6210\uff08Behavior Path/Motion Planner\uff09\u306b\u95a2\u3057\u3066\u6559\u3048\u3066\u304f\u3060\u3055\u3044\u3002","text":"

behavior planner\u306f\u3001\u4e3b\u306bODD3\u4ee5\u4e0a\u306e\u3044\u308f\u3086\u308b\u4e00\u822c\u9053\u3067\u306e\u8d70\u884c\u3092\u884c\u3046\u306e\u306b\u5fc5\u8981\u306a\u6a5f\u80fd\uff08\u4e00\u6642\u505c\u6b62\u7dda\u3001\u6a2a\u65ad\u6b69\u9053\u3001\u4fe1\u53f7\u505c\u6b62\uff09\u306a\u3069\u7834\u3063\u3066\u306f\u3044\u3051\u306a\u3044\u4ea4\u901a\u30eb\u30fc\u30eb\u3092\u52a0\u5473\u3057\u305fplanning\u3092\u884c\u3046\u3082\u306e\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002 \u305d\u308c\u6545\u3001\u56de\u907f\u6a5f\u80fd\u3082\u30eb\u30fc\u30eb\u30d9\u30fc\u30b9\u306e\u56de\u907f\u3067\u6700\u9069\u5316\u3092\u884c\u3063\u3066\u3044\u307e\u305b\u3093\u3002 \u4e00\u65b9\u3067motion\u306fODD2\u4ee5\u4e0b\u306e\u3044\u308f\u3086\u308b\u9650\u5b9a\u533a\u57df\u3084\u9650\u5b9a\u7a7a\u9593\u3067\u306e\u8d70\u884c\u3092\u5b9f\u73fe\u3059\u308b\u3082\u306e\u3067\u3001\u4f8b\u3048\u3070\u4fe1\u53f7\u3084\u3001\u5730\u56f3\u306e\u60c5\u5831\u7b49\u3068\u3044\u3063\u305f\u60c5\u5831\u3092\u6271\u3046\u3082\u306e\u306f\u3042\u308a\u307e\u305b\u3093\u3002 \u969c\u5bb3\u7269\u306e\u56de\u907f\u3084\u3001\u505c\u6b62\u3001\u901f\u5ea6\u306e\u6700\u9069\u5316\u306a\u3069\u3001\u901a\u5e38\u8d70\u884c\u306b\u5fc5\u8981\u306a\u6a5f\u80fd\u3092\u62c5\u3046\u3082\u306e\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002

"},{"location":"faq.html#autoware_2","title":"Autoware\u306e\u56de\u907f\u884c\u52d5\u306b\u3064\u3044\u3066\u6559\u3048\u3066\u4e0b\u3055\u3044","text":"

\u56de\u907f\u306b\u306f\u4e8c\u7a2e\u985e\u3042\u308a\u3001behavior path\u3068obstacle avoidance\u304c\u3042\u308a\u307e\u3059\u3002 \u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306fobstacle avoidabce\u306e\u56de\u907f\u306foff\u3067\u3001\u7d4c\u8def\u306e\u5e73\u6ed1\u5316\u306e\u307f\u884c\u308f\u308c\u308b\u8a2d\u5b9a\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002 \u307e\u305f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306fbehavior path\u3067\u56de\u907f\u3059\u308b\u8a2d\u5b9a\u306b\u306f\u306a\u3063\u3066\u3044\u307e\u3059\u304c\u305d\u306e\u969b\u306e\u56de\u907f\u5bfe\u8c61\u7269\u306f\u8eca\u3068\u30c8\u30e9\u30c3\u30af\u306e\u307f\u3067\u3059\u3002

"},{"location":"faq.html#center-point","title":"center point\u306b\u3064\u3044\u3066\u6559\u3048\u3066\u4e0b\u3055\u3044\u3002","text":"

center point\u306f\u8eca\u4e21\u3068\u30c8\u30e9\u30c3\u30af\u3068\u6b69\u884c\u8005\u3092\u691c\u77e5\u3057\u3066\u304f\u308c\u307e\u3059\u304c\u3001\u30c0\u30f3\u30dc\u30fc\u30eb\u306a\u3069\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u3066\u3044\u306a\u3044\u3082\u306e\u306f\u691c\u77e5\u3067\u304d\u307e\u305b\u3093\u3002 \u305f\u3060\u3001\u73fe\u72b6\u306eautoware\u3068\u3057\u3066\u306fplanning\u304cobject\u3092\u53d7\u3051\u53d6\u3089\u306a\u3044\u3068\u52d5\u304b\u306a\u3044\u3088\u3046\u306b\u306a\u3063\u3066\u304a\u308a\u3001object\u3092\u53d7\u3051\u53d6\u308b\u6bb5\u968e\u3067center point\u3092\u4f7f\u3046\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u69cb\u6210\u306b\u3057\u3066\u3044\u308b\u3068\u3001\u4ee5\u4e0b\u306e2\u3064\u306e\u539f\u56e0\u306b\u3088\u308a\u4e0d\u5177\u5408\u304c\u8d77\u3053\u308a\u307e\u3059\u3002

  1. center point\u304c\u6b7b\u3093\u3060\u3068\u304d\u306bplanning\u304c\u7d4c\u8def\u3092\u751f\u6210\u3067\u304d\u306a\u304f\u306a\u308b
  2. data association\u3067clustering\u306b\u3088\u308b\u969c\u5bb3\u7269\u691c\u77e5\u7d50\u679c\u304c\u6d88\u3055\u308c\u308b

\u305d\u306e\u305f\u3081\u3001perception\u306e\u69cb\u6210\u306fautoware mini\u304c\u7406\u60f3\u7684\u3067\u3059\u304c\u3001\u3053\u306e\u3042\u305f\u308a\u3092\u7406\u89e3\u3057\u3066\u30ce\u30fc\u30c9\u306e\u8db3\u3057\u5f15\u304d\u3001\u53d6\u6368\u9078\u629e\u3092\u3057\u3066\u5b9f\u88c5\u3059\u308b\u3053\u3068\u306f\u306f\u306a\u304b\u306a\u304b\u96e3\u3057\u3044\u305f\u3081\u3001center point\u304c\u554f\u984c\u306a\u304f\u52d5\u304f\u3088\u3046\u306b\u3059\u308b\u3053\u3068\u306f\u91cd\u8981\u306b\u306a\u3063\u3066\u304f\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002 \u53c2\u8003

"},{"location":"faq.html#awsim_1","title":"AWSIM","text":""},{"location":"faq.html#_4","title":"\u8eca\u3092\u521d\u671f\u4f4d\u7f6e\u306b\u30ea\u30bb\u30c3\u30c8\u3059\u308b\u306b\u306f\u3069\u3046\u3059\u308c\u3070\u3044\u3044\u3067\u3057\u3087\u3046\u304b\u3002","text":"

\u73fe\u72b6\u3001AWSIM\u3092\u518d\u8d77\u52d5\u3059\u308b\u65b9\u6cd5\u3057\u304b\u3054\u3056\u3044\u307e\u305b\u3093\u3002

"},{"location":"faq.html#awsim_2","title":"AWSIM\u306e\u52d5\u4f5c\u304c\u5b89\u5b9a\u3057\u307e\u305b\u3093\u3002","text":"

GPU\u306e\u6027\u80fd\u4e0d\u8db3\u304c\u539f\u56e0\u306e\u4e00\u3064\u306b\u306a\u308a\u307e\u3059\u3002 \u9ad8\u6027\u80fdGPU\u306e\u5229\u7528\u304c\u96e3\u3057\u3044\u5834\u5408\u306f\u3001awsim\u306e\u753b\u9762\u306e\u4e0b\u90e8\u306b\u30b9\u30e9\u30a4\u30c9\u30d0\u30fc\u3067time scale\u30920.5\u304f\u3089\u3044\u306b\u8a2d\u5b9a\u3059\u308b\u3068\u5b89\u5b9a\u3057\u3066\u52d5\u4f5c\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002

"},{"location":"faq.html#mpcawsim","title":"mpc\u306e\u30c1\u30e5\u30fc\u30cb\u30f3\u30b0\u3092\u3057\u305f\u3044\u306e\u3067\u3059\u304c\uff0c\u4eca\u56deAWSIM\u3067\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u30e2\u30c7\u30eb\u30d1\u30e9\u30e1\u30fc\u30bf\uff08\u9045\u308c\u3084\u6642\u5b9a\u6570\u306a\u3069\uff09\u306f\u516c\u958b\u3055\u308c\u3066\u3044\u306a\u3044\u3067\u3057\u3087\u3046\u304b\uff0e","text":"

\u9045\u308c\u3084\u6642\u5b9a\u6570\u306b\u3064\u3044\u3066\u306f\u8a08\u6e2c\u3082\u516c\u958b\u3082\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u304c\u3001\u57fa\u672c\u7684\u306a\u4ed5\u69d8\u306b\u3064\u3044\u3066\u306f\u3053\u3061\u3089\u306b\u516c\u958b\u3055\u308c\u3066\u3044\u307e\u3059\u3002

"},{"location":"faq.html#_5","title":"\u5927\u4f1a\u5168\u822c","text":""},{"location":"faq.html#_6","title":"\u30bb\u30f3\u30b5\u306e\u8ffd\u52a0\u53d6\u308a\u4ed8\u3051\u306f\u53ef\u80fd\u3067\u3059\u304b\u3002","text":"

\u540c\u4e00\u6761\u4ef6\u30fb\u96e3\u6613\u5ea6\u3067\u8ab2\u984c\u306b\u53d6\u308a\u7d44\u3093\u3067\u3044\u305f\u3060\u304f\u305f\u3081\u306b\u3001\u65b0\u305f\u306a\u30bb\u30f3\u30b5\u306e\u53d6\u308a\u4ed8\u3051\u306f\u4e0d\u53ef\u3068\u3057\u3066\u3044\u307e\u3059\u3002

"},{"location":"getting-started.html","title":"\u306f\u3058\u3081\u65b9","text":"

\u3053\u306e\u30da\u30fc\u30b8\u3067\u306fAI\u30c1\u30e3\u30ec\u30f3\u30b8\u3067\u306e\u4e00\u9023\u306e\u6d41\u308c\u3092\u8a18\u8f09\u3057\u307e\u3059\u3002

\u672c\u5927\u4f1a\u3067\u306fUbuntu 22.04\u3092\u642d\u8f09\u3057\u305fPC\u4e00\u53f0\u306e\u307f\u3067\u53c2\u52a0\u304c\u3067\u304d\u307e\u3059\u3002

\u307e\u305a\u30aa\u30f3\u30e9\u30a4\u30f3\u63a1\u70b9\u74b0\u5883\u306e\u5229\u7528\u3092\u884c\u3044\u3001\u305d\u306e\u5f8c\u74b0\u5883\u69cb\u7bc9\u30fb\u958b\u767a\u3068\u9032\u3093\u3067\u3044\u304d\u307e\u3059\u3002

"},{"location":"getting-started.html#ai2024","title":"\u81ea\u52d5\u904b\u8ee2AI\u30c1\u30e3\u30ec\u30f3\u30b82024\u3078\u306e\u53c2\u52a0\u767b\u9332","text":"

\u53c2\u52a0\u767b\u9332\u304c\u6e08\u3093\u3067\u3044\u306a\u3044\u65b9\u306f\u4e0a\u8a18\u30ea\u30f3\u30af\u304b\u3089\u767b\u9332\u3092\u304a\u9858\u3044\u3057\u307e\u3059\u3002

"},{"location":"getting-started.html#_2","title":"\u30aa\u30f3\u30e9\u30a4\u30f3\u63a1\u70b9\u74b0\u5883\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3068\u63d0\u51fa","text":"

\u672c\u5927\u4f1a\u3067\u306f\u3001\u30aa\u30f3\u30e9\u30a4\u30f3\u74b0\u5883\u306b\u63d0\u51fa\u30d5\u30a1\u30a4\u30eb\uff08\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306e\u5727\u7e2e\u30d5\u30a1\u30a4\u30eb\uff09\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b\u3053\u3068\u3067\u81ea\u52d5\u63a1\u70b9\u304c\u884c\u308f\u308c\u3001\u9806\u4f4d\u304c\u6c7a\u5b9a\u3055\u308c\u307e\u3059\u3002

\u6b21\u306e4\u30b9\u30c6\u30c3\u30d7\u3067\u307e\u305a\u306f\u30aa\u30f3\u30e9\u30a4\u30f3\u63a1\u70b9\u74b0\u5883\u3092\u4f7f\u3063\u3066\u307f\u307e\u3057\u3087\u3046\uff01

Info

\u30aa\u30f3\u30e9\u30a4\u30f3\u63a1\u70b9\u74b0\u5883\u3078\u306e\u30a2\u30af\u30bb\u30b9\u304b\u3089\u63d0\u51fa\u307e\u3067\u306e\u6240\u8981\u6642\u9593\u306f\uff15\u5206\u7a0b\u5ea6\u3067\u3059

  1. \u81ea\u52d5\u904b\u8ee2AI\u30c1\u30e3\u30ec\u30f3\u30b8\u306e\u53c2\u52a0\u767b\u9332\u5f8c\u3002\u30ed\u30b0\u30a4\u30f3\u60c5\u5831\u304c\u767b\u9332\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306b\u9001\u3089\u308c\u3066\u304d\u307e\u3059\uff0e

  2. \u30aa\u30f3\u30e9\u30a4\u30f3\u63a1\u70b9\u74b0\u5883\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3001\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u8a18\u8f09\u306e\u8cc7\u683c\u60c5\u5831\u3092\u7528\u3044\u3066\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044\u3002

  3. \u30a2\u30af\u30bb\u30b9\u304c\u51fa\u6765\u305f\u3089\u3001\u4e00\u5ea6\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306e\u63d0\u51fa\u3092\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002 \u4e0b\u306e\u8d64\u30dc\u30bf\u30f3\u304b\u3089\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u306e\u5727\u7e2e\u30d5\u30a1\u30a4\u30eb\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u307e\u3059\u3002

  4. \u30aa\u30f3\u30e9\u30a4\u30f3\u63a1\u70b9\u74b0\u5883\u306e\u300cUPLOAD\u300d\u30dc\u30bf\u30f3\u304b\u3089\u305d\u306e\u307e\u307e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b\u3053\u3068\u3067\u63d0\u51fa\u304c\u3067\u304d\u307e\u3059\u3002

\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u306e\u5727\u7e2e\u30d5\u30a1\u30a4\u30eb\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9

"},{"location":"getting-started.html#ai","title":"AI\u30c1\u30e3\u30ec\u30f3\u30b8\u306e\u74b0\u5883\u69cb\u7bc9","text":"

\u4e0a\u8a18\u30ea\u30f3\u30af\u3088\u308a\u74b0\u5883\u69cb\u7bc9\u3092\u884c\u3063\u3066\u4e0b\u3055\u3044\u3002

Info

\u672c\u5927\u4f1a\u3067\u306fUbuntu 22.04\u3092\u642d\u8f09\u3057\u305fPC\u4e00\u53f0\u306e\u307f\u3067\u53c2\u52a0\u304c\u3067\u304d\u307e\u3059\u3002

"},{"location":"getting-started.html#ai_1","title":"AI\u30c1\u30e3\u30ec\u30f3\u30b8\u3067\u306e\u958b\u767a\u306e\u9032\u3081\u65b9","text":"

\u4e0a\u8a18\u30ea\u30f3\u30af\u3088\u308a\u3001\u5b9f\u969b\u306b\u958b\u767a\u3057\u3066\u307f\u307e\u3057\u3087\u3046\uff01

"},{"location":"getting-started.html#_3","title":"\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306e\u63d0\u51fa","text":"

\u5b8c\u6210\u3057\u305f\u30b3\u30fc\u30c9\u306e\u63d0\u51fa\u306f\u30aa\u30f3\u30e9\u30a4\u30f3\u63a1\u70b9\u74b0\u5883\u304b\u3089\u884c\u3044\u307e\u3059\u3002 \u4e0a\u8a18\u30ea\u30f3\u30af\u3088\u308a\u63d0\u51fa\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3092\u884c\u3063\u3066\u304f\u3060\u3055\u3044\u3002

"},{"location":"index.html","title":"Japan Automotive AI Challenge 2024","text":""},{"location":"index.html#_1","title":"\u30b3\u30f3\u30bb\u30d7\u30c8","text":"

Info

\u672c\u5927\u4f1a\u306f\u3001CASE\u3001MaaS\u3068\u547c\u3070\u308c\u308b\u65b0\u305f\u306a\u6280\u8853\u9818\u57df\u306b\u304a\u3044\u3066\u3001\u3053\u308c\u304b\u3089\u306e\u81ea\u52d5\u8eca\u696d\u754c\u3092\u727d\u5f15\u3059\u308b\u6280\u8853\u8005\u306e\u767a\u6398\u80b2\u6210\u306e\u305f\u3081\u306e\u65b0\u305f\u306a\u53d6\u308a\u7d44\u307f\u3068\u3057\u3066\u5b9f\u65bd\u3057\u3066\u3044\u307e\u3059\u3002

\u672c\u5927\u4f1a\u3067\u306f\u81ea\u52d5\u8d70\u884c\u30e2\u30d3\u30ea\u30c6\u30a3\u306b\u958b\u767a\u3057\u305f\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u642d\u8f09\u3055\u305b\u308b\u8d70\u884c\u7af6\u6280\u307e\u3067\u884c\u3044\u307e\u3059\u3002\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc\u30b5\u30a4\u30a8\u30f3\u30b9\u3001AI\u3001\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3084\u60c5\u5831\u51e6\u7406\u306b\u95a2\u308f\u308b\u6280\u8853\u8005\u30fb\u7814\u7a76\u8005\u30fb\u5b66\u751f\u7b49\u306e\u30c1\u30e3\u30ec\u30f3\u30b8\u306e\u5834\u3001\u307e\u305f\u5b66\u7fd2\u53ca\u6a5f\u4f1a\u3092\u63d0\u4f9b\u3057\u3001\u6709\u6a5f\u7684\u306a\u7e4b\u304c\u308a\u3092\u5b9f\u73fe\u3059\u308b\u5834\u3092\u76ee\u6307\u3057\u307e\u3059\u3002

"},{"location":"index.html#_2","title":"\u76ee\u7684","text":""},{"location":"index.html#_3","title":"\u6280\u8853\u7684\u306a\u89b3\u70b9\u304b\u3089\u306e\u5927\u4f1a\u306e\u5f79\u5272","text":"
  • \u30cf\u30fc\u30c9\u30a6\u30a7\u30a2\u3092\u7406\u89e3\u3057\u306a\u304c\u3089\u306e\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u901a\u3057\u3066SDV\u958b\u767a\u3092\u5b66\u3076
  • \u7d99\u7d9a\u7684\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3 / \u7d99\u7d9a\u7684\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\uff08CI/CD\uff09\u3092\u5b66\u3076
  • \u958b\u767a\u3092Open Source Software\uff08OSS\uff09\u3067\u884c\u3044\u793e\u4f1a\u5b9f\u88c5\u306b\u5411\u3051\u305f\u30a4\u30ce\u30d9\u30fc\u30b7\u30e7\u30f3\u306e\u5834\u3068\u3059\u308b
"},{"location":"index.html#_4","title":"\u4eba\u6750\u80b2\u6210\u3068\u3057\u3066\u306e\u5927\u4f1a\u306e\u5f79\u5272","text":"
  • \u5e45\u5e83\u3044\u5206\u91ce\u306e\u30a8\u30f3\u30b8\u30cb\u30a2\u53c2\u52a0\u306e\u4fc3\u9032
  • \u6559\u80b2\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u63d0\u4f9b\u306b\u3088\u308b\u30b9\u30ad\u30eb\u958b\u767a\u306e\u52a0\u901f
  • \u5b9f\u6a5f\u3068\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u306e\u3059\u308a\u5408\u308f\u305b\u3092\u884c\u3044\u306a\u304c\u3089SDV\u306e\u958b\u767a\u306e\u4ed5\u65b9\u3092\u5b66\u3076
  • \u30c7\u30b8\u30bf\u30eb\u30c4\u30a4\u30f3\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u901a\u3058\u305f\u6280\u8853\u9769\u65b0
  • \u6280\u8853\u30b3\u30f3\u30da\u00d7\u30a8\u30f3\u30bf\u30e1=\u30e2\u30fc\u30bf\u30fc\u30b9\u30dd\u30fc\u30c4\u3092\u984c\u6750\u3068\u3057\u305f\u300c\u61a7\u308c\u300d\u3084\u300c\u60c5\u71b1\u30fb\u8208\u596e\u300d\u306e\u5275\u51fa
"},{"location":"index.html#_5","title":"\u6982\u8981","text":""},{"location":"index.html#_6","title":"\u4e88\u9078","text":"

\u30aa\u30f3\u30e9\u30a4\u30f3\u306e\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u3067\u5b9f\u65bd\u3057\u307e\u3059\u3002\u4e88\u9078\u306e\u7af6\u6280\u306f\u30c7\u30b8\u30bf\u30eb\u30c4\u30a4\u30f3\u6307\u5411\u306eAWSIM\u3092\u7528\u3044\u3066\u30b3\u30fc\u30b9\u3092\u3088\u308a\u901f\u304f\u8d70\u884c\u3059\u308b\u3053\u3068\u3092\u76ee\u6307\u3057\u307e\u3059\u3002\u53c2\u52a0\u8005\u306f\u3001Autoware\u203b\u306e\u69cb\u9020\u3092\u5b66\u3076\u3060\u3051\u3067\u306a\u304f\u3001\u5b9f\u969b\u306b\u884c\u52d5\u3001\u5224\u65ad\u306e\u90e8\u5206\u306b\u3064\u3044\u3066\u30d1\u30e9\u30e1\u30fc\u30bf\u8abf\u6574\u3092\u884c\u3044\u3001\u307e\u305f\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u65b0\u3057\u3044\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u958b\u767a\u3082\u884c\u3044\u307e\u3059\u3002

"},{"location":"index.html#_7","title":"\u6c7a\u52dd","text":"

\u7af6\u6280\u8eca\u4e21\u3067\u3042\u308bEV\u30ec\u30fc\u30b7\u30f3\u30b0\u30ab\u30fc\u30c8\u3092\u4f7f\u7528\u3057\u305f\u5927\u4f1a\u3092\u884c\u3044\u307e\u3059\u3002\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u3067\u5f97\u305f\u77e5\u898b\u3092\u5b9f\u8eca\u4e21\u306b\u6d3b\u304b\u3057\u3064\u3064\u3001AWSIM\u3067\u306f\u518d\u73fe\u3067\u304d\u306a\u3044\u5b9f\u8eca\u306a\u3089\u3067\u306f\u306e\u8ab2\u984c\u306b\u3082\u30c1\u30e3\u30ec\u30f3\u30b8\u3057\u307e\u3059\u3002

\u4f8b\u3048\u3070\u53c2\u52a0\u8005\u306b\u306f\u5b9f\u8eca\u4e21\u306b\u9069\u7528\u3059\u308b\u305f\u3081\u3001\u30d1\u30e9\u30e1\u30fc\u30bf\u8abf\u6574\u306b\u3082\u6311\u6226\u3057\u3066\u3082\u3089\u3044\u307e\u3059\u3002\u307e\u305f\u3001\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u518d\u73fe\u3067\u304d\u306a\u3044\u30ce\u30a4\u30ba\u51e6\u7406\u3001\u9045\u5ef6\u5bfe\u7b56\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u958b\u767a\u3082\u884c\u3044\u307e\u3059\u3002

"},{"location":"index.html#_8","title":"\u8868\u5f70","text":"

\u8cde\u91d1\u306e\u7dcf\u984d\u306f100\u4e07\u5186\u4ee5\u4e0a\u3068\u306a\u3063\u3066\u304a\u308a\u307e\u3059\u3002 \u8a73\u7d30\u306f2024\u5e74\u5ea6\u81ea\u52d5\u904b\u8ee2AI\u30c1\u30e3\u30ec\u30f3\u30b8\u306e\u958b\u50ac\u6982\u8981\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002

"},{"location":"index.html#_9","title":"\u8d70\u884c\u30b3\u30fc\u30b9","text":""},{"location":"index.html#_10","title":"\u4f7f\u7528\u8eca\u4e21","text":""},{"location":"index.html#_11","title":"\u6311\u6226\u8ab2\u984c","text":""},{"location":"competition/rules/index.html","title":"Redirect","text":"Redirect"},{"location":"course/avoidance.html","title":"03. \u969c\u5bb3\u7269\u56de\u907f","text":"

\u5b89\u5168\u306a\u81ea\u52d5\u904b\u8ee2\u3092\u884c\u3046\u305f\u3081\u306b\u3001\u969c\u5bb3\u7269\u3092\u8a8d\u8b58\u3057\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u56de\u907f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u3053\u3067\u306f\u56f3\u306e\u3088\u3046\u306b\u3001\u969c\u5bb3\u7269\u3092\u8a8d\u8b58\u3057\u3066\u56de\u907f\u3057\u306a\u304c\u3089\u76ee\u6a19\u5730\u70b9\u306b\u5230\u9054\u3059\u308b\u3053\u3068\u3092\u76ee\u6307\u3057\u307e\u3059\u3002

"},{"location":"course/avoidance.html#03-01-lidar","title":"03-01. lidar\u304b\u3089\u70b9\u7fa4\u3092\u53d6\u5f97\u3057\u969c\u5bb3\u7269\u691c\u77e5\u3092\u3059\u308b","text":"

\u81ea\u52d5\u904b\u8ee2\u8eca\u4e21\u3067\u306f\u3001\u969c\u5bb3\u7269\u3092\u8a8d\u8b58\u3059\u308b\u305f\u3081\u306b\u69d8\u3005\u306a\u30bb\u30f3\u30b5\u30fc\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u4ee3\u8868\u7684\u306a\u30bb\u30f3\u30b5\u30fc\u306b\u306f\u4ee5\u4e0b\u306e\u3082\u306e\u304c\u3042\u308a\u307e\u3059\uff1a

  1. LiDAR\uff08Light Detection and Ranging\uff09:
    • \u30ec\u30fc\u30b6\u30fc\u5149\u3092\u767a\u5c04\u3057\u3001\u7269\u4f53\u306b\u5f53\u305f\u3063\u3066\u623b\u3063\u3066\u304f\u308b\u307e\u3067\u306e\u6642\u9593\u3092\u6e2c\u5b9a\u3059\u308b\u3053\u3068\u3067\u8ddd\u96e2\u3092\u8a08\u6e2c\u3057\u307e\u3059\u3002
    • \u9ad8\u7cbe\u5ea6\u306a3D\u70b9\u7fa4\u30c7\u30fc\u30bf\u3092\u751f\u6210\u3057\u3001\u5468\u56f2\u306e\u74b0\u5883\u3092\u8a73\u7d30\u306b\u628a\u63e1\u3067\u304d\u307e\u3059\u3002
  2. \u30ab\u30e1\u30e9:
    • \u5149\u5b66\u30bb\u30f3\u30b5\u30fc\u3092\u4f7f\u7528\u3057\u3066\u753b\u50cf\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002
    • \u753b\u50cf\u3092\u7528\u3044\u3066\u7269\u4f53\u8a8d\u8b58\u3001\u8eca\u7dda\u691c\u51fa\u3001\u4ea4\u901a\u6a19\u8b58\u8a8d\u8b58\u306a\u3069\u3092\u884c\u3044\u307e\u3059\u3002
  3. \u30ec\u30fc\u30c0\u30fc\uff08Radio Detection and Ranging\uff09:
    • \u96fb\u6ce2\u3092\u767a\u5c04\u3057\u3001\u53cd\u5c04\u3057\u3066\u623b\u3063\u3066\u304f\u308b\u307e\u3067\u306e\u6642\u9593\u3092\u6e2c\u5b9a\u3057\u307e\u3059\u3002
    • \u9577\u8ddd\u96e2\u306e\u969c\u5bb3\u7269\u691c\u51fa\u306b\u512a\u308c\u3001\u60aa\u5929\u5019\u3067\u3082\u5b89\u5b9a\u3057\u305f\u6027\u80fd\u3092\u767a\u63ee\u3057\u307e\u3059\u3002
  4. \u8d85\u97f3\u6ce2\u30bb\u30f3\u30b5\u30fc:
    • \u8d85\u97f3\u6ce2\u3092\u767a\u5c04\u3057\u3001\u53cd\u5c04\u3057\u3066\u623b\u3063\u3066\u304f\u308b\u307e\u3067\u306e\u6642\u9593\u3092\u6e2c\u5b9a\u3057\u307e\u3059\u3002
    • \u8fd1\u8ddd\u96e2\u306e\u969c\u5bb3\u7269\u691c\u51fa\u306b\u9069\u3057\u3066\u304a\u308a\u3001\u99d0\u8eca\u652f\u63f4\u30b7\u30b9\u30c6\u30e0\u306a\u3069\u306b\u5229\u7528\u3055\u308c\u307e\u3059\u3002

\u4eca\u56de\u3001lidar\u3092\u7528\u3044\u305f\u969c\u5bb3\u7269\u691c\u77e5\u3092\u6271\u3046\u305f\u3081\u306b\u7c21\u6613lidar\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002

\u5b9f\u969b\u306elidar\u306f\u89b3\u6e2c\u7269\u4f53\u306e\u88cf\u5074\u307e\u3067\u898b\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u304c\u3001 \u3053\u306e\u7c21\u6613lidar\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u306f\u7269\u4f53\u306e\u8f2a\u90ed\u3092\u70b9\u7fa4\u5316\u3057\u3001\u8eca\u4e21\u306e\u4e00\u5b9a\u7bc4\u56f2\u5185\u306e\u70b9\u7fa4\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002

src/autoware_practice_lidar_simulator/config/object_centers.csv\u3067\u5ea7\u6a19\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u3067\u81ea\u7531\u306b\u969c\u5bb3\u7269\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 3\u3064\u306e\u969c\u5bb3\u7269\u3092\u914d\u7f6e\u3059\u308b\u305f\u3081\u306b\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306bobejct_centers.csv\u3092\u7de8\u96c6\u3057\u307e\u3059\u3002

+  x_center,y_center\n+  7.0,0.0\n+  10.0,5.0\n+  5.0,-3.0\n

\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u3092\u8d77\u52d5\u3057\u3001\u4e00\u5b9a\u7bc4\u56f2\u5185\u306b\u3042\u308b\u969c\u5bb3\u7269\u306e\u70b9\u7fa4\u304c\u8868\u793a\u3055\u308c\u308b\u304b\u78ba\u8a8d\u3057\u307e\u3057\u3087\u3046\u3002

ros2 launch autoware_practice_launch practice.launch.xml\n

\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5225\u3005\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u5b9f\u884c\u3057\u3066\u3001\u8eca\u4e21\u306e\u4f4d\u7f6e\u304c\u5909\u5316\u3059\u308b\u306e\u306b\u4f34\u3063\u3066\u53d6\u5f97\u3067\u304d\u308b\u70b9\u7fa4\u304c\u5909\u5316\u3059\u308b\u306e\u3092\u78ba\u8a8d\u3057\u307e\u3057\u3087\u3046\u3002

ros2 run autoware_practice_course trajectory_loader --ros-args -p path_file:=src/autoware_practice_course/config/trajectory_zigzag.csv\n
ros2 run autoware_practice_course trajectory_follower --ros-args -p kp:=5.0 -p lookahead_distance:=5.0\n

"},{"location":"course/avoidance.html#03-02","title":"03-02. \u70b9\u7fa4\u60c5\u5831\u306b\u57fa\u3065\u3044\u3066\u7d4c\u8def\u30fb\u8ecc\u9053\u8a08\u753b\u3057\u8eca\u4e21\u3092\u8ffd\u5f93\u3055\u305b\u308b","text":"

\u53d6\u5f97\u3057\u305f\u70b9\u7fa4\u3092\u5143\u306b\u969c\u5bb3\u7269\u3092\u56de\u907f\u3059\u308b\u3053\u3068\u3092\u8003\u3048\u307e\u3059\u3002 \u969c\u5bb3\u7269\u3092\u56de\u907f\u3059\u308b\u306b\u306f\u69d8\u3005\u306a\u3082\u306e\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u4eca\u56de\u306fstate lattice planner\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u5b9f\u88c5\u3057\u307e\u3059\u3002

"},{"location":"course/avoidance.html#state-lattice-planner","title":"State Lattice Planner \u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0","text":"

State lattice planner\u3068\u306f\u3001\u8eca\u4e21\u306e\u73fe\u5728\u306e\u72b6\u614b\u3068\u76ee\u6a19\u72b6\u614b\u306e\u9593\u306b\u4e00\u9023\u306e\u8ecc\u9053\u5019\u88dc\u3092\u751f\u6210\u3057\u3001\u305d\u308c\u305e\u308c\u306e\u8ecc\u9053\u3092\u8a55\u4fa1\u3057\u3066\u6700\u9069\u306a\u7d4c\u8def\u3092\u9078\u629e\u3059\u308b\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u3059\u3002 \u4ee5\u4e0b\u306e\u753b\u50cf\u306b\u8ecc\u9053\u3092\u751f\u6210\u3059\u308b\u30d5\u30ed\u30fc\u3092\u793a\u3057\u307e\u3059\u3002

state lattice planner\u306e\u30d5\u30ed\u30fc"},{"location":"course/avoidance.html#1","title":"1. \u76ee\u6a19\u72b6\u614b\u3092\u30b5\u30f3\u30d7\u30ea\u30f3\u30b0","text":"

\u8eca\u4e21\u306e\u73fe\u5728\u306e\u72b6\u614b\u304b\u3089\u30b4\u30fc\u30eb\u307e\u3067\u306e\u7d4c\u8def\u4e0a\u306b\u8907\u6570\u306e\u76ee\u6a19\u72b6\u614b\u3092\u30b5\u30f3\u30d7\u30ea\u30f3\u30b0\u3057\u307e\u3059\u3002 \u4eca\u56de\u306f\u4e88\u3081\u5206\u304b\u3063\u3066\u3044\u308b\u30b4\u30fc\u30eb\u307e\u3067\u306e\u8ecc\u9053\u306b\u5782\u76f4\u306b\u7b49\u9593\u9694\u306b\u4e26\u3076\u3088\u3046\u306b\u76ee\u6a19\u72b6\u614b\u3092\u30b5\u30f3\u30d7\u30ea\u30f3\u30b0\u3057\u307e\u3059\u3002

\u76ee\u6a19\u72b6\u614b\u3092\u8907\u6570\u30b5\u30f3\u30d7\u30ea\u30f3\u30b0"},{"location":"course/avoidance.html#2","title":"2. \u5404\u76ee\u6a19\u72b6\u614b\u306b\u5bfe\u3057\u3066\u8ecc\u9053\u751f\u6210","text":"

\u73fe\u5728\u306e\u72b6\u614b\u304b\u3089\u5404\u76ee\u6a19\u72b6\u614b\u3078\u306e\u8ecc\u9053\u3092\u751f\u6210\u3057\u307e\u3059\u3002 \u4eca\u56de\u306f\u30d9\u30b8\u30a8\u66f2\u7dda\u3092\u7528\u3044\u3066\u8ecc\u9053\u3092\u751f\u6210\u3057\u307e\u3059\u3002

\u73fe\u5728\u306e\u72b6\u614b\u304b\u3089\u5404\u76ee\u6a19\u72b6\u614b\u3078\u306e\u8ecc\u9053\u3092\u751f\u6210"},{"location":"course/avoidance.html#3","title":"3. \u30b3\u30b9\u30c8\u30de\u30c3\u30d7\u3092\u751f\u6210","text":"

\u53d6\u5f97\u3057\u305f\u70b9\u7fa4\u30c7\u30fc\u30bf\u304b\u3089\u5468\u56f2\u306e\u969c\u5bb3\u7269\u60c5\u5831\u3092\u53cd\u6620\u3057\u305f\u30b3\u30b9\u30c8\u30de\u30c3\u30d7\u3092\u751f\u6210\u3057\u307e\u3059\u3002\u30b3\u30b9\u30c8\u30de\u30c3\u30d7\u306f\u3001\u5404\u30bb\u30eb\u306b\u901a\u884c\u306e\u96e3\u6613\u5ea6\u3092\u793a\u3059\u5024\u3092\u6301\u3061\u307e\u3059\u3002 \u4eca\u56de\u306f\u70b9\u7fa4\u304c\u5b58\u5728\u3059\u308b\u30bb\u30eb\u306e\u30b3\u30b9\u30c8\u306f100\u3092\u8a2d\u5b9a\u3057\u3001\u70b9\u7fa4\u304c\u5b58\u5728\u3059\u308b\u30bb\u30eb\u306b\u96a3\u63a5\u3059\u308b\u30bb\u30eb\u306e\u30b3\u30b9\u30c8\u306f50\u3092\u8a2d\u5b9a\u3057\u307e\u3057\u305f\u3002 \u307e\u305f\u969c\u5bb3\u7269\u304c\u306a\u3044\u5834\u5408\u3001\u4e88\u3081\u4e88\u3081\u5206\u304b\u3063\u3066\u3044\u308b\u30b4\u30fc\u30eb\u307e\u3067\u306e\u8ecc\u9053\u306b\u623b\u308b\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u306b\u3001\u30b4\u30fc\u30eb\u307e\u3067\u306e\u8ecc\u9053\u306e\u30a6\u30a7\u30a4\u30dd\u30a4\u30f3\u30c8\u304c\u5b58\u5728\u3059\u308b\u30bb\u30eb\u306e\u30b3\u30b9\u30c8\u3092-1\u306b\u8a2d\u5b9a\u3057\u307e\u3057\u305f\u3002 \u4e0a\u8a18\u306e\u30eb\u30fc\u30eb\u306b\u57fa\u3065\u3044\u3066\u5404\u30bb\u30eb\u306e\u30b3\u30b9\u30c8\u3092\u8a08\u7b97\u3057\u307e\u3059\u3002

\u4f8b\uff09\u30b4\u30fc\u30eb\u307e\u3067\u306e\u8ecc\u9053\u306e\u30a6\u30a7\u30a4\u30dd\u30a4\u30f3\u30c8\u3068\u70b9\u7fa4\u304c\u5b58\u5728\u3059\u308b\u30bb\u30eb\u306e\u30b3\u30b9\u30c8\u306f\u3001-1+100\u306799\u3068\u306a\u308a\u307e\u3059\u3002

\u30b3\u30b9\u30c8\u30de\u30c3\u30d7\u306e\u751f\u6210"},{"location":"course/avoidance.html#4","title":"4. \u30b3\u30b9\u30c8\u30de\u30c3\u30d7\u3092\u7528\u3044\u3066\u5404\u8ecc\u9053\u3092\u8a55\u4fa1","text":"

\u5404\u8ecc\u9053\u306e\u30a6\u30a7\u30a4\u30dd\u30a4\u30f3\u30c8\u304c\u5b58\u5728\u3059\u308b\u30bb\u30eb\u306e\u30b3\u30b9\u30c8\u306e\u7dcf\u548c\u3092\u8ecc\u9053\u306e\u30b3\u30b9\u30c8\u3068\u3057\u3001\u6700\u3082\u30b3\u30b9\u30c8\u304c\u4f4e\u3044\u8ecc\u9053\u3092\u9078\u629e\u3057\u307e\u3059\u3002

\u30b3\u30b9\u30c8\u30de\u30c3\u30d7\u3092\u7528\u3044\u3066\u5404\u8ecc\u9053\u3092\u8a55\u4fa1

\u4eca\u56de\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306btrajectory_planner\u30ce\u30fc\u30c9\u306bstate lattice planner\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002

src/autoware_practice_lidar_simulator/config/object_centers.csv\u3092\u4fee\u6b63\u3057\u3066\u969c\u5bb3\u7269\u306e\u4f4d\u7f6e\u3092\u5909\u66f4\u3057\u307e\u3059\u3002

x_center,y_center\n-  7.0,0.0\n-  10.0,5.0\n-  5.0,-3.0\n+  47.0,-1.0\n+  30.0,1.0\n+  15.0,-1.0\n

\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5225\u3005\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u5b9f\u884c\u3057\u3066\u753b\u50cf\u306e\u3088\u3046\u306b\u969c\u5bb3\u7269\u3092\u9069\u5207\u306b\u56de\u907f\u3067\u304d\u308b\u304b\u78ba\u304b\u3081\u307e\u3057\u3087\u3046\u3002

ros2 launch autoware_practice_launch practice.launch.xml\n
ros2 run autoware_practice_course trajectory_loader --ros-args -p path_file:=src/autoware_practice_course/config/trajectory.csv --remap /planning/scenario_planning/trajectory:=/planning/trajectory_loader/trajectory\n
ros2 run autoware_practice_course trajectory_follower --ros-args -p kp:=5.0 -p lookahead_distance:=5.0\n
ros2 run autoware_practice_course trajectory_planner --ros-args -p state_num:=9 -p target_interval:=1.0\n

state_num\u306f\u7d4c\u8def\u4e0a\u306b\u30b5\u30f3\u30d7\u30ea\u30f3\u30b0\u3059\u308b\u76ee\u6a19\u72b6\u614b\u306e\u6570\u3001target_interval\u306f\u30b5\u30f3\u30d7\u30ea\u30f3\u30b0\u3059\u308b\u76ee\u6a19\u4f4d\u7f6e\u306e\u9593\u9694\u3067\u3059\u3002 trajectory_planner\u3092\u8d77\u52d5\u3059\u308b\u969b\u306b\u4ed6\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u3082\u6307\u5b9a\u3067\u304d\u308b\u306e\u3067\u662f\u975e\u5909\u66f4\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002\u30ce\u30fc\u30c9\u8d77\u52d5\u6642\u306b\u8a2d\u5b9a\u3067\u304d\u308b\u30d1\u30e9\u30e1\u30fc\u30bf\u306fsrc/autoware_practice_course/src/avoidance/trajectory_planner.cpp\u3067\u78ba\u8a8d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

\u53c2\u8003: State Lattice Planner\u306e\u6982\u8981\u3068Python\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9

"},{"location":"course/index.html","title":"Autoware \u5165\u9580\u8b1b\u5ea7","text":""},{"location":"course/index.html#_1","title":"\u306f\u3058\u3081\u306b","text":"

\u3053\u306e\u8b1b\u5ea7\u3067\u306f Autoware \u306e\u57fa\u672c\u7684\u306a\u958b\u767a\u65b9\u6cd5\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002 \u8b1b\u5ea7\u306f\u6f14\u7fd2\u5f62\u5f0f\u3068\u306a\u3063\u3066\u304a\u308a\u3001\u8ab2\u984c\u3092\u9054\u6210\u3059\u308b\u305f\u3081\u306e\u30b3\u30fc\u30c9\u3092\u30bc\u30ed\u304b\u3089\u958b\u767a\u3057\u306a\u304c\u3089 Autoware \u306e\u4ed5\u7d44\u307f\u3092\u5b66\u3079\u308b\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002 \u5404\u8b1b\u5ea7\u306e\u30da\u30fc\u30b8\u306b\u306f\u30e1\u30cb\u30e5\u30fc\u304b\u3089\u79fb\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002

"},{"location":"course/index.html#_2","title":"\u74b0\u5883\u69cb\u7bc9","text":"

\u307e\u305a\uff64 Autoware \u306e\u52d5\u4f5c\u306b\u5fc5\u8981\u306a ROS 2 \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\uff61 ROS 2 Documentation \u306e\u624b\u9806\u306b\u3057\u305f\u304c\u3063\u3066Environment setup\u307e\u3067\u3092\u5b8c\u4e86\u3055\u305b\u3066\u304f\u3060\u3055\u3044\uff61

\u3064\u3065\u3051\u3066\uff64\u3044\u304f\u3064\u304b\u306e\u958b\u767a\u652f\u63f4\u30c4\u30fc\u30eb\u30bb\u30c3\u30c8\u3082\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\uff61

# Install rosdep\nsudo apt install python3-rosdep\n# Install vcstool\nsudo apt install python3-vcstool\n# Install colcon\nsudo apt install python3-colcon-common-extensions\n

\u4efb\u610f\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u3066\u5165\u9580\u8b1b\u5ea7\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u30af\u30ed\u30fc\u30f3\u3057\u3001\u30d3\u30eb\u30c9\u3092\u884c\u3063\u3066\u304f\u3060\u3055\u3044\u3002

git clone https://github.com/AutomotiveAIChallenge/autoware-practice.git\ncd autoware-practice\nvcs import src < autoware.repos\nrosdep install -y --from-paths src --ignore-src --rosdistro humble\ncolcon build --symlink-install\n

\u30d3\u30eb\u30c9\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u30d3\u30eb\u30c9\u3055\u308c\u305f\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002 \u307e\u305f\u3001\u4eca\u5f8c\u8b1b\u5ea7\u306e\u4e2d\u3067\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u969b\u306f\u3001\u4e8b\u524d\u306b\u3053\u3061\u3089\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304a\u3044\u3066\u304f\u3060\u3055\u3044\u3002

source install/setup.bash\n
"},{"location":"course/path_planning.html","title":"03. \u7d4c\u8def\u8a08\u753b","text":""},{"location":"course/path_planning.html#03-01","title":"03-01. \u969c\u5bb3\u7269\u306b\u885d\u7a81\u3057\u306a\u3044\u3088\u3046\u306b\u7d4c\u8def\u8a08\u753b\u3092\u884c\u3046","text":"

Warning

\u4f5c\u6210\u4e2d

"},{"location":"course/path_planning.html#03-02","title":"03-02. \u7d4c\u8def\u3092\u57fa\u306b\u8ecc\u9053\u8a08\u753b\u3092\u884c\u3046","text":"

Warning

\u4f5c\u6210\u4e2d

"},{"location":"course/path_planning.html#03-03-pidpure-pursuit","title":"03-03. PID\u3068pure pursuit\u3067\u8eca\u4e21\u3092\u8ecc\u9053\u306b\u8ffd\u5f93\u3055\u305b\u308b","text":"

Warning

\u4f5c\u6210\u4e2d

"},{"location":"course/vehicle.html","title":"01. \u8eca\u4e21\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9","text":""},{"location":"course/vehicle.html#01-01","title":"01-01. \u8eca\u4e21\u306e\u76f4\u9032","text":"

\u4e0b\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3001\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u30fc\u3092\u8d77\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u8d77\u52d5\u304c\u5b8c\u4e86\u3059\u308b\u3068\u3001\u56f3\u306e\u3088\u3046\u306b Rviz \u306b\u8eca\u4e21\u3068\u7dd1\u8272\u306e\u30a8\u30ea\u30a2\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002 \u3053\u306e\u7dd1\u8272\u306e\u30a8\u30ea\u30a2\u306b\u8eca\u4e21\u304c\u5165\u308c\u3070\u8ab2\u984c\u9054\u6210\u3068\u306a\u308b\u305f\u3081\u3001\u307e\u305a\u306f\u8eca\u4e21\u3092\u76f4\u9032\u3055\u305b\u308b\u30ce\u30fc\u30c9\u3092\u4f5c\u6210\u3057\u3066\u3044\u304d\u307e\u3059\u3002

ros2 launch autoware_practice_launch practice.launch.xml problem:=vehicle_forward\n

\u8eca\u4e21\u3092\u52d5\u304b\u3059\u305f\u3081\u306e\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3068\u3057\u3066 /control/command/control_cmd \u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u3053\u308c\u306f AckermannControlCommand \u3068\u3044\u3046\u30e1\u30c3\u30bb\u30fc\u30b8\u3067\u3001\u5404\u30d5\u30a3\u30fc\u30eb\u30c9\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u610f\u5473\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002

Field Name Type Description stamp time \u30b3\u30de\u30f3\u30c9\u306e\u9001\u4fe1\u6642\u523b longitudinal.speed float \u8eca\u4e21\u306e\u76ee\u6a19\u901f\u5ea6 longitudinal.acceleration float \u8eca\u4e21\u306e\u76ee\u6a19\u52a0\u901f\u5ea6 longitudinal.jerk float \u8eca\u4e21\u306e\u76ee\u6a19\u52a0\u52a0\u901f\u5ea6 (\u30b8\u30e3\u30fc\u30af) lateral.steering_tire_angle float \u30b9\u30c6\u30a2\u30ea\u30f3\u30b0\u306e\u76ee\u6a19\u89d2\u5ea6 lateral.steering_tire_rotation_rate float \u30b9\u30c6\u30a2\u30ea\u30f3\u30b0\u306e\u56de\u8ee2\u901f\u5ea6

\u4ee5\u4e0b\u306b\u30b3\u30de\u30f3\u30c9\u3092\u9001\u4fe1\u3059\u308b\u30ce\u30fc\u30c9\u306e\u30b5\u30f3\u30d7\u30eb\u3092\u7528\u610f\u3057\u307e\u3057\u305f\u3002\u30b5\u30f3\u30d7\u30eb\u3067\u306f\u505c\u6b62\u4fdd\u6301\u3059\u308b\u30b3\u30de\u30f3\u30c9\u3092\u9001\u4fe1\u3057\u7d9a\u3051\u308b\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u308b\u306e\u3067\u3001\u30c7\u30fc\u30bf\u3092\u5909\u66f4\u3057\u3066\u8eca\u4e21\u304c\u767a\u9032\u3059\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002

  • vehicle/forward.hpp
  • vehicle/forward.cpp
-  command.longitudinal.speed = 0.0;\n-  command.longitudinal.acceleration = -2.5;\n+  command.longitudinal.speed = 3.0;\n+  command.longitudinal.acceleration = 1.0;\n

\u30b3\u30fc\u30c9\u3092\u66f8\u304d\u63db\u3048\u305f\u3089\u30d3\u30eb\u30c9\u3057\u3066\u5b9f\u884c\u3057\u307e\u3059\u3002\u65b0\u3057\u3044\u7aef\u672b\u3092\u8d77\u52d5\u3057\u3066\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u4e0a\u624b\u304f\u51fa\u6765\u3066\u3044\u308c\u3070\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u30fc\u306e\u8eca\u4e21\u304c\u52d5\u304d\u3001\u6761\u4ef6\u3092\u6e80\u305f\u3057\u3066\u7d50\u679c\u304c SUCCESS \u306b\u306a\u308a\u307e\u3059\u3002

colcon build --symlink-install --packages-select autoware_practice_course\nros2 run autoware_practice_course vehicle_forward\n

"},{"location":"course/vehicle.html#01-02","title":"01-02. \u8eca\u4e21\u306e\u65cb\u56de","text":"

\u5148\u7a0b\u3068\u540c\u69d8\u306b\u4e0b\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3001\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u30fc\u3092\u8d77\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u7dd1\u8272\u306e\u30a8\u30ea\u30a2\u306b\u8eca\u4e21\u304c\u5165\u308c\u3070\u8ab2\u984c\u9054\u6210\u3068\u306a\u308b\u305f\u3081\u3001\u8eca\u4e21\u3092\u65cb\u56de\u3055\u305b\u308b\u30ce\u30fc\u30c9\u3092\u4f5c\u6210\u3057\u3066\u3044\u304d\u307e\u3059\u3002

ros2 launch autoware_practice_launch practice.launch.xml problem:=vehicle_turning\n

\u5148\u7a0b\u5229\u7528\u3057\u305f\u30b5\u30f3\u30d7\u30eb\u306e\u30c7\u30fc\u30bf\u3092\u5909\u66f4\u3057\u3066\u3001\u8eca\u4e21\u304c\u65cb\u56de\u3059\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002

  • vehicle/forward.hpp
  • vehicle/forward.cpp
-  command.lateral.steering_tire_angle = 0.0;\n+  command.lateral.steering_tire_angle = 2.0;\n

\u30b3\u30fc\u30c9\u3092\u66f8\u304d\u63db\u3048\u305f\u3089\u30d3\u30eb\u30c9\u3057\u3066\u5b9f\u884c\u3057\u307e\u3059\u3002\u65b0\u3057\u3044\u7aef\u672b\u3092\u8d77\u52d5\u3057\u3066\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u4e0a\u624b\u304f\u51fa\u6765\u3066\u3044\u308c\u3070\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u30fc\u306e\u8eca\u4e21\u304c\u52d5\u304d\u3001\u6761\u4ef6\u3092\u6e80\u305f\u3057\u3066\u7d50\u679c\u304c SUCCESS \u306b\u306a\u308a\u307e\u3059\u3002

colcon build --symlink-install --packages-select autoware_practice_course\nros2 run autoware_practice_course vehicle_forward\n

"},{"location":"course/vehicle.html#01-03","title":"01-03. \u8eca\u4e21\u306e\u5f8c\u9000","text":"

\u4e0b\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3001\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u30fc\u3092\u8d77\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u306e\u7dd1\u8272\u306e\u30a8\u30ea\u30a2\u306b\u8eca\u4e21\u304c\u5165\u308c\u3070\u8ab2\u984c\u9054\u6210\u3068\u306a\u308b\u305f\u3081\u3001\u307e\u305a\u306f\u8eca\u4e21\u3092\u5f8c\u9000\u3055\u305b\u308b\u30ce\u30fc\u30c9\u3092\u4f5c\u6210\u3057\u3066\u3044\u304d\u307e\u3059\u3002

ros2 launch autoware_practice_launch practice.launch.xml problem:=vehicle_backward\n

\u4ee5\u4e0b\u306b\u5f8c\u9000\u3059\u308b\u305f\u3081\u306e\u30b3\u30de\u30f3\u30c9\u3092\u9001\u4fe1\u3059\u308b\u30ce\u30fc\u30c9\u306e\u30b5\u30f3\u30d7\u30eb\u3092\u7528\u610f\u3057\u307e\u3057\u305f\u3002\u76f4\u9032\u3059\u308b\u305f\u3081\u306e\u30b3\u30fc\u30c9\u3068\u7570\u306a\u308a\u3001\u30ae\u30a2\u3092\u5236\u5fa1\u3059\u308b\u30b3\u30fc\u30c9\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\u30b5\u30f3\u30d7\u30eb\u3067\u306f\u505c\u6b62\u4fdd\u6301\u3059\u308b\u30b3\u30de\u30f3\u30c9\u3092\u9001\u4fe1\u3057\u7d9a\u3051\u308b\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u308b\u306e\u3067\u3001\u30c7\u30fc\u30bf\u3092\u5909\u66f4\u3057\u3066\u8eca\u4e21\u304c\u5f8c\u9000\u3059\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002 \u30ae\u30a2\u304cREVERSE\u306e\u3068\u304d\u306f\u3001\u76ee\u6a19\u52a0\u901f\u5ea6\u3092\u6b63\u3001\u76ee\u6a19\u901f\u5ea6\u3092\u8ca0\u306b\u3057\u307e\u3059\u3002

  • vehicle/backward.hpp
  • vehicle/backward.cpp
-  command.longitudinal.speed = 0.0;\n-  command.longitudinal.acceleration = -2.5;\n+  command.longitudinal.speed = -3.0;\n+  command.longitudinal.acceleration = 1.0;\n

\u30b3\u30fc\u30c9\u3092\u66f8\u304d\u63db\u3048\u305f\u3089\u30d3\u30eb\u30c9\u3057\u3066\u5b9f\u884c\u3057\u307e\u3059\u3002\u65b0\u3057\u3044\u7aef\u672b\u3092\u8d77\u52d5\u3057\u3066\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u4e0a\u624b\u304f\u51fa\u6765\u3066\u3044\u308c\u3070\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u30fc\u306e\u8eca\u4e21\u304c\u52d5\u304d\u3001\u6761\u4ef6\u3092\u6e80\u305f\u3057\u3066\u7d50\u679c\u304c SUCCESS \u306b\u306a\u308a\u307e\u3059\u3002

colcon build --symlink-install --packages-select autoware_practice_course\nros2 run autoware_practice_course vehicle_backward\n

"},{"location":"course/velocity_planning.html","title":"02. \u901f\u5ea6\u8a08\u753b","text":"

\u5b89\u5168\u306a\u81ea\u52d5\u904b\u8ee2\u3092\u884c\u3046\u305f\u3081\u306b\u306f\u5e38\u306b\u901f\u5ea6\u3092\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u3053\u3053\u3067\u306f\u901f\u5ea6\u8a08\u753b\u3092\u884c\u3063\u3066\u76ee\u6a19\u5730\u70b9\u3067\u8eca\u4e21\u3092\u505c\u6b62\u3055\u305b\u308b\u3053\u3068\u3092\u76ee\u6307\u3057\u307e\u3059\u3002

"},{"location":"course/velocity_planning.html#02-01","title":"02-01. \u8eca\u901f\u3092\u53d6\u5f97\u3059\u308b","text":"

\u307e\u305a\u3001\u8eca\u4e21\u306e\u901f\u5ea6\u3092\u53d6\u5f97\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002

\u8eca\u4e21\u306e\u901f\u5ea6\u306f/localization/kinematic_state\u3068\u3044\u3046\u30c8\u30d4\u30c3\u30af\u3067\u30d1\u30d6\u30ea\u30c3\u30b7\u30e5\u3055\u308c\u307e\u3059\u3002 /localization/kinematic_state\u306b\u306f\u81ea\u8eca\u4e21\u306e\u4f4d\u7f6e\u3001\u59ff\u52e2\u3001\u901f\u5ea6\u3001\u89d2\u901f\u5ea6\u3068\u305d\u308c\u3089\u306e\u5171\u5206\u6563\u884c\u5217\u306e\u60c5\u5831\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002

\u672c\u6765Autoware\u3067\u306f\u4ee5\u4e0b\u306e\u30ce\u30fc\u30c9\u30c0\u30a4\u30a2\u30b0\u30e9\u30e0\u306e\u3088\u3046\u306b\u3001GNSS\u3001Lidar\u3001IMU\u306a\u3069\u306e\u60c5\u5831\u3092\u3082\u3068\u306bekf_localizer\u304c/localization/kinematic_state\u3092\u8a08\u7b97\u3057\u307e\u3059\u3002

Autoware\u306elocalizer\u5468\u308a\u306e\u30ce\u30fc\u30c9\u30c0\u30a4\u30a2\u30b0\u30e9\u30e0

\u3057\u304b\u3057\u521d\u5fc3\u8005\u306bAutoware\u306e\u8aac\u660e\u3092\u3059\u308b\u306e\u306b\u3053\u306e\u69cb\u6210\u306f\u304b\u306a\u308a\u8907\u96d1\u306a\u306e\u3067\u3001\u4eca\u56de\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u30b7\u30f3\u30d7\u30eb\u306adummy_localizer\u3092\u7528\u610f\u3057\u307e\u3057\u305f\u3002

autoware-practice\u306edummy_localizer\u5468\u308a\u306e\u30ce\u30fc\u30c9\u30c0\u30a4\u30a2\u30b0\u30e9\u30e0

01-01\u3068\u540c\u69d8\u306b\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u3092\u8d77\u52d5\u3057\u3066\u304b\u3089\u3001

ros2 launch autoware_practice_launch practice.launch.xml\n

\u5225\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u30c8\u30d4\u30c3\u30af\u304b\u3089\u8eca\u4e21\u306e\u901f\u5ea6\u3092\u53d6\u5f97\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002

ros2 topic echo /localization/kinematic_state\n

\u8eca\u4e21\u306e\u521d\u671f\u901f\u5ea6\u306f0\u306a\u306e\u3067\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306btwist: linear: x: 0.0\u3068\u8868\u793a\u3055\u308c\u307e\u3059\u3002

header:\n  stamp:\n    sec: 1713775224\n    nanosec: 319370472\n  frame_id: odom\nchild_frame_id: base_link\npose:\n  pose:\n    position:\n      x: 0.0\n      y: 0.0\n      z: 0.0\n    orientation:\n      x: 0.0\n      y: 0.0\n      z: 0.0\n      w: 1.0\n  covariance:\n  - 0.1\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.1\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.1\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.01\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.01\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.01\ntwist:\n  twist:\n    linear:\n      x: 0.0\n      y: 0.0\n      z: 0.0\n    angular:\n      x: 0.0\n      y: 0.0\n      z: 0.0\n  covariance:\n  - 0.01\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.01\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.0\n  - 0.01\n---\n

/localization/kinematic_state\u3068\u3044\u3046\u30c8\u30d4\u30c3\u30af\u306f nav_msgs/msgs/Odometry \u3068\u3044\u3046ROS2\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u578b\u3092\u5229\u7528\u3057\u3066\u3044\u307e\u3059\u3002

"},{"location":"course/velocity_planning.html#02-02","title":"02-02. \u8eca\u4e21\u901f\u5ea6\u3092\u76ee\u6a19\u901f\u5ea6\u306b\u53ce\u675f\u3055\u305b\u308b","text":"

\u6b21\u306b\u3001\u8eca\u4e21\u304c\u76ee\u6a19\u306e\u901f\u5ea6\u306b\u306a\u308b\u3088\u3046\u306b\u8eca\u4e21\u306e\u901f\u5ea6\u3092\u5236\u5fa1\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002 \u73fe\u5728\u306e\u901f\u5ea6v_now\u3068\u76ee\u6a19\u306e\u901f\u5ea6v_target\u306e\u5dee\u306b\u30b2\u30a4\u30f3k_p\u3092\u304b\u3051\u305f\u3082\u306e\u3092\u52a0\u901f\u5ea6\u5165\u529ba\u3068\u3059\u308b\u6bd4\u4f8b\u5236\u5fa1\u3092\u7528\u3044\u308b\u3053\u3068\u3092\u8003\u3048\u307e\u3059\u3002

$$ a = k_{\\text{p}} \\cdot (v_{\\text{target}} - v_{\\text{now}}) $$

\u4ee5\u4e0b\u306b\u901f\u5ea6\u306e\u6bd4\u4f8b\u5236\u5fa1\u3092\u884c\u3046\u30ce\u30fc\u30c9\u306e\u30b5\u30f3\u30d7\u30eb\u3092\u7528\u610f\u3057\u307e\u3057\u305f\u3002

  • velocity_planning/p_controller.hpp
  • velocity_planning/p_controller.cpp

\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u6bd4\u4f8b\u5236\u5fa1\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306e\u30ce\u30fc\u30c9\u3092\u8d77\u52d5\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u8eca\u4e21\u304c\u52d5\u304d\u59cb\u3081\u307e\u3059\u3002kp\u306b\u6bd4\u4f8b\u30b2\u30a4\u30f3\u3001target_velocity\u306b\u901f\u5ea6[m/s]\u3092\u683c\u7d0d\u3057\u307e\u3059\u3002

ros2 run autoware_practice_course p_controller --ros-args -p kp:=0.5 -p target_velocity:=1.0\n

\u901f\u5ea6\u306e\u6642\u9593\u63a8\u79fb\u3092\u30b0\u30e9\u30d5\u3067\u78ba\u8a8d\u3059\u308b\u305f\u3081\u306b\u3001\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u30c7\u30fc\u30bf\u3092rosbag\u306b\u4fdd\u5b58\u3057\u3066PlotJuggler\u3067\u56f3\u793a\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002

\u65b0\u3057\u3044\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u304a\u304f\u3053\u3068\u3067\u7279\u5b9a\u306e\u30c8\u30d4\u30c3\u30af\u306e\u6642\u7cfb\u5217\u30c7\u30fc\u30bf\u3092rosbag\u5f62\u5f0f\u3067\u4fdd\u5b58\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

ros2 bag record -o velocity.bag /localization/kinematic_state\n

PlotJuggler\u306f\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

sudo apt install ros-humble-plotjuggler-ros\n

\u305d\u3057\u3066\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067PlotJuggler\u3092\u8d77\u52d5\u3057\u307e\u3059\u3002

ros2 run plotjuggler plotjuggler\n

\u5de6\u4e0a\u306eData\u3092\u30af\u30ea\u30c3\u30af\u3057\u3001\u5148\u7a0b\u4fdd\u5b58\u3057\u305fautoware-practice/velocity.bag/metadata.yaml\u3092\u9078\u629e\u3057\u53f3\u4e0a\u306eOpen\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002

/localization/kinematic_stat\u3092\u30af\u30ea\u30c3\u30af\u3057\u53f3\u4e0b\u306eOK\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002

\u5de6\u4e0b\u306eTimeseries.List\u304b\u3089localization > kinematic_state > twist > twist > linear > x \u3092\u9078\u629e\u3057\u3001\u53f3\u5074\u306b\u30c9\u30e9\u30c3\u30b0\uff06\u30c9\u30ed\u30c3\u30d7\u3092\u3059\u308b\u3068\u901f\u5ea6\u306e\u6642\u9593\u63a8\u79fb\u3092\u8868\u3059\u30b0\u30e9\u30d5\u3092\u8868\u793a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

\u6700\u5f8c\u306b\u4ee5\u4e0b\u306e\u6bd4\u4f8b\u30b2\u30a4\u30f3k_p\u30920.5\u304b\u30895.0\u306b\u4fee\u6b63\u3057\u3066\u3001\u8eca\u4e21\u901f\u5ea6\u306e\u53ce\u675f\u901f\u5ea6\u3092\u6bd4\u3079\u3066\u307f\u307e\u3057\u3087\u3046\u3002

$$ a = k_{\\text{p}} \\cdot (v_{\\text{target}} - v_{\\text{now}}) $$

ros2 run autoware_practice_course p_controller --ros-args -p kp:=5.0 -p target_velocity:=1.0\n

\u4eca\u56de\u306f\u6bd4\u4f8b\u30b2\u30a4\u30f3K\u3092\u5927\u304d\u304f\u3059\u308b\u3053\u3068\u3067\u3001\u65e9\u304f\u76ee\u6a19\u901f\u5ea6\u306b\u53ce\u675f\u3059\u308b\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3059\uff08\u5de6: k_p=0.5, \u53f3: k_p=5.0\uff09\u3002

"},{"location":"course/velocity_planning.html#02-03","title":"02-03. \u30b4\u30fc\u30eb\u3067\u505c\u6b62\u3059\u308b\u305f\u3081\u306e\u901f\u5ea6\u8a08\u753b\u3092\u884c\u3046","text":"

\u56f3\u306e\u3088\u3046\u306a\u3001\u505c\u6b62\u72b6\u614b\u304b\u308950m\u5730\u70b9\u307e\u3067\u52a0\u901f\u3057\u300150m\u5730\u70b9\u3092\u904e\u304e\u305f\u3089\u6e1b\u901f\u3057100m\u5730\u70b9\u3067\u505c\u6b62\u3059\u308b\u3088\u3046\u306a\u901f\u5ea6\u8a08\u753b\u3092\u884c\u3046\u3053\u3068\u3092\u8003\u3048\u307e\u3059\u3002

\u901f\u5ea6\u8a08\u753b\u3092\u884c\u3046\u305f\u3081\u306b\u8eca\u4e21\u304b\u3089\u76ee\u6a19\u5730\u70b9\u307e\u3067\u306e\u9593\u306b1m\u304a\u304d\u306b\u4e2d\u7d99\u5730\u70b9\u3068\u306a\u308b\u30a6\u30a7\u30a4\u30dd\u30a4\u30f3\u30c8\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u5404\u30a6\u30a7\u30a4\u30dd\u30a4\u30f3\u30c8\u306b\u76ee\u6a19\u901f\u5ea6\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u901f\u5ea6\u8a08\u753b\u3092\u884c\u3044\u307e\u3059\u3002

\u5404\u30a6\u30a7\u30a4\u30dd\u30a4\u30f3\u30c8\u306e\u76ee\u6a19\u901f\u5ea6\u3092csv\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u8aad\u307f\u53d6\u308btrajectory_loader\u30ce\u30fc\u30c9\u3068\u3001\u5404\u30a6\u30a7\u30a4\u30dd\u30a4\u30f3\u30c8\u3092\u57fa\u306b\u5236\u5fa1\u5165\u529b\u3092\u6c7a\u5b9a\u3059\u308blongitudinal_controller\u30ce\u30fc\u30c9\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002 \u4eca\u56de\u306f\u4ee5\u4e0b\u306etrajectory.csv\u3092\u8aad\u307f\u53d6\u308a\u307e\u3059\u3002csv\u30d5\u30a1\u30a4\u30eb\u306b\u306f\u5404\u30a6\u30a7\u30a4\u30dd\u30a4\u30f3\u30c8\u3067\u306e\u76ee\u6a19\u901f\u5ea6\u304c\u8a18\u8f09\u3055\u308c\u3066\u3044\u307e\u3059\u3002

  • velocity_planning/trajectory_loader.hpp
  • velocity_planning/trajectory_loader.cpp
  • config/trajectory.csv
  • velocity_planning/longitudinal_controller.hpp
  • velocity_planning/longitudinal_controller.cpp

autoware-practice\u306etrajectory_loader\u5468\u308a\u306e\u30ce\u30fc\u30c9\u30c0\u30a4\u30a2\u30b0\u30e9\u30e0

trajectory_loader\u30ce\u30fc\u30c9\u304c\u30b9\u30bf\u30fc\u30c8\u304b\u3089\u30b4\u30fc\u30eb\u307e\u3067\u306e\u5404\u30a6\u30a7\u30a4\u30dd\u30a4\u30f3\u30c8\u306e\u76ee\u6a19\u901f\u5ea6\u3092csv\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u8aad\u307f\u53d6\u308a\u307e\u3059\u3002 longitudinal_controller\u30ce\u30fc\u30c9\u304c\u8eca\u4e21\u306b\u6700\u3082\u8fd1\u3044\u30a6\u30a7\u30a4\u30dd\u30a4\u30f3\u30c8\u3092\u63a2\u7d22\u3057\u3001\u30a6\u30a7\u30a4\u30dd\u30a4\u30f3\u30c8\u3067\u306e\u76ee\u6a19\u901f\u5ea6\u3068\u73fe\u5728\u306e\u8eca\u4e21\u306e\u901f\u5ea6\u3092\u57fa\u306b\u5236\u5fa1\u5165\u529b\u3092\u6c7a\u5b9a\u3057\u307e\u3059\u3002

\u5404\u30ce\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5225\u3005\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u5b9f\u884c\u3059\u308b\u3053\u3068\u3067\u8d77\u52d5\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

ros2 launch autoware_practice_launch practice.launch.xml\n
ros2 run autoware_practice_course trajectory_loader --ros-args -p path_file:=src/autoware_practice_course/config/trajectory.csv\n
ros2 run autoware_practice_course longitudinal_controller --ros-args -p kp:=5.0\n

\u8eca\u4e21\u306e\u4f4d\u7f6e\u3068\u901f\u5ea6\u306e\u95a2\u4fc2\u3092PlotJuggler\u3092\u7528\u3044\u3066\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u3067\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002 \u5168\u90e8\u30674\u679a\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u30a6\u30a3\u30f3\u30c9\u30a6\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 \u307e\u305a\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u3092\u8d77\u52d5\u3057\u307e\u3059\u3002

ros2 launch autoware_practice_launch practice.launch.xml\n

\u6b21\u306b\u5225\u30bf\u30fc\u30df\u30ca\u30eb\u3067PlotJuggler\u3092\u8d77\u52d5\u3057\u307e\u3059\u3002

ros2 run plotjuggler plotjuggler\n

PlotJuggler\u304c\u8d77\u52d5\u3057\u305f\u3089Start\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u307e\u3059\u3002

/localization/kinematic_state\u3092\u9078\u629e\u3057\u3001OK\u3092\u62bc\u3057\u307e\u3059\u3002

/localization/kinematic_state/pose/pose/position/x\u3068/localization/kinematic_state/twist/twist/linear/x\u3092\u8907\u6570\u9078\u629e\u3057\u3066\u53f3\u30af\u30ea\u30c3\u30af\u3067\u30c9\u30e9\u30c3\u30b0\uff06\u30c9\u30ed\u30c3\u30d7\u3059\u308b\u3053\u3068\u3067\u3001\u4f4d\u7f6e\u3068\u901f\u5ea6\u306e\u95a2\u4fc2\u306e\u30b0\u30e9\u30d5\u3092\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

\u521d\u3081\u306f\u8eca\u4e21\u306e\u4f4d\u7f6e\u3068\u901f\u5ea6\u304c\u3069\u3061\u3089\u30820\u306a\u306e\u3067\u4ee5\u4e0b\u306e\u56f3\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002

\u9577\u6642\u9593\u8a18\u9332\u3059\u308b\u305f\u3081\u306bBuffer\u3092100\u306b\u5909\u66f4\u3057\u307e\u3059\u3002

\u6b21\u306btrajectory_loader\u30ce\u30fc\u30c9\u3068longitudinal_controller\u30ce\u30fc\u30c9\u3092\u305d\u308c\u305e\u308c\u5225\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u8d77\u52d5\u3057\u307e\u3059\u3002

ros2 run autoware_practice_course trajectory_loader --ros-args -p path_file:=src/autoware_practice_course/config/trajectory.csv\n
ros2 run autoware_practice_course longitudinal_controller --ros-args -p kp:=5.0\n

\u305d\u308c\u305e\u308c\u306e\u30ce\u30fc\u30c9\u304c\u8d77\u52d5\u3059\u308b\u3068\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u30fc\u4e0a\u3067\u8eca\u4e21\u304c\u52d5\u304d\u59cb\u3081\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30b0\u30e9\u30d5\u304c\u5f97\u3089\u308c\u307e\u3059\u3002

\u30b0\u30e9\u30d5\u3088\u308a\u3001\u5927\u4f5350m\u4ed8\u8fd1\u306710m/s\u306b\u9054\u3057100m\u4ed8\u8fd1\u3067\u505c\u6b62\u3067\u304d\u3066\u3044\u308b\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3059\u3002

"},{"location":"course/velocity_planning.html#02-04","title":"02-04. \u6a2a\u65b9\u5411\u5236\u5fa1\u3092\u884c\u3046","text":"

\u56f3\u306e\u3088\u3046\u306a\u3001\u76f4\u9032\u30fb90\u5ea6\u65cb\u56de\u30fb\u76f4\u9032\u30fb90\u5ea6\u65cb\u56de\u30fb\u76f4\u9032\u3068\u306a\u308b\u3088\u3046\u306a\u7d4c\u8def\u306b\u8ffd\u5f93\u3059\u308b\u3053\u3068\u3092\u8003\u3048\u307e\u3059\u3002

\u4eca\u56de\u306e\u76ee\u6a19\u7d4c\u8def

\u3053\u306e\u7d4c\u8def\u306b\u8ffd\u5f93\u3059\u308b\u305f\u3081\u306b\u306f\u65cb\u56de\u3067\u9069\u5207\u306b\u30b9\u30c6\u30a2\u30ea\u30f3\u30b0\u3092\u64cd\u4f5c\u3057\u6a2a\u5236\u5fa1\u3092\u884c\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u305d\u3053\u3067\u3001P\u5236\u5fa1\u306b\u3088\u308b\u7e26\u65b9\u5411\u5236\u5fa1\u3068pure puresuit\u306b\u3088\u308b\u6a2a\u65b9\u5411\u5236\u5fa1\u3092\u542b\u3093\u3060trajectroy_follower\u30ce\u30fc\u30c9\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002

  • velocity_planning/trajectory_follower.hpp
  • velocity_planning/trajectory_follower.cpp

autoware-practice\u306etrajectory_follower\u5468\u308a\u306e\u30ce\u30fc\u30c9\u30c0\u30a4\u30a2\u30b0\u30e9\u30e0

pure pursuit\u306f\u3001\u8eca\u4e21\u306e\u73fe\u5728\u4f4d\u7f6e\u3068\u76ee\u6a19\u7d4c\u8def\u4e0a\u306e\u8ffd\u5f93\u70b9\uff08\u30eb\u30c3\u30af\u30a2\u30d8\u30c3\u30c9\u30dd\u30a4\u30f3\u30c8\uff09\u3068\u306e\u8ddd\u96e2\u3068\u65b9\u5411\u3092\u57fa\u306b\u30eb\u30c3\u30af\u30a2\u30d8\u30c3\u30c9\u30dd\u30a4\u30f3\u30c8\u306b\u5230\u9054\u3059\u308b\u305f\u3081\u306e\u66f2\u7387\u3092\u8a08\u7b97\u3059\u308b\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u3059\u3002\u4ee5\u4e0b\u306bpure pursuit\u306e\u57fa\u672c\u7684\u306a\u52d5\u4f5c\u3092\u8aac\u660e\u3057\u307e\u3059\u3002

  1. \u8ffd\u5f93\u70b9\u306e\u8a2d\u5b9a: \u76ee\u6a19\u7d4c\u8def\u4e0a\u306b\u8eca\u4e21\u306e\u73fe\u5728\u4f4d\u7f6e\u304b\u3089\u4e00\u5b9a\u306e\u8ddd\u96e2\u5148\u306b\u8ffd\u5f93\u70b9\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u3053\u306e\u8ddd\u96e2\u306f\u30eb\u30c3\u30af\u30a2\u30d8\u30c3\u30c9\u8ddd\u96e2\u3068\u547c\u3070\u308c\u307e\u3059\u3002

  2. \u65b9\u5411\u30d9\u30af\u30c8\u30eb\u306e\u8a08\u7b97: \u8eca\u4e21\u306e\u73fe\u5728\u4f4d\u7f6e\u3068\u8ffd\u5f93\u70b9\u3068\u306e\u9593\u306e\u65b9\u5411\u30d9\u30af\u30c8\u30eb\u3092\u8a08\u7b97\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u8eca\u4e21\u304c\u3069\u306e\u65b9\u5411\u306b\u9032\u3080\u3079\u304d\u304b\u304c\u308f\u304b\u308a\u307e\u3059\u3002

  3. \u30b9\u30c6\u30a2\u30ea\u30f3\u30b0\u89d2\u5ea6\u306e\u8a08\u7b97: \u8a08\u7b97\u3055\u308c\u305f\u65b9\u5411\u30d9\u30af\u30c8\u30eb\u306b\u57fa\u3065\u304d\u66f2\u7387\u3092\u8a08\u7b97\u3057\u3001\u8eca\u4e21\u306e\u30b9\u30c6\u30a2\u30ea\u30f3\u30b0\u89d2\u5ea6\u3092\u6c42\u3081\u307e\u3059\u3002

$$ \\theta = \\arctan\\left(\\frac{2 L \\sin(\\alpha)}{d}\\right) $$ $$ \\theta: \u8a08\u7b97\u3055\u308c\u305f\u30b9\u30c6\u30a2\u30ea\u30f3\u30b0\u89d2\u5ea6 \\ $$ $$ L: \u8eca\u4e21\u306e\u30db\u30a4\u30fc\u30eb\u30d9\u30fc\u30b9\u306e\u9577\u3055 \\ $$ $$ \\alpha: \u73fe\u5728\u306e\u8eca\u4e21\u306e\u5411\u304d\u3068\u30eb\u30c3\u30af\u30a2\u30d8\u30c3\u30c9\u30dd\u30a4\u30f3\u30c8\u3078\u306e\u65b9\u5411\u30d9\u30af\u30c8\u30eb\u306e\u9593\u306e\u89d2\u5ea6\u5dee \\ $$ $$ d: \u30eb\u30c3\u30af\u30a2\u30d8\u30c3\u30c9\u8ddd\u96e2 $$

pure pursuit\u306e\u57fa\u672c\u52d5\u4f5c

pure pursuit\u306e\u5229\u70b9\u306f\u3001\u305d\u306e\u30b7\u30f3\u30d7\u30eb\u3055\u3068\u5b9f\u88c5\u306e\u5bb9\u6613\u3055\u306b\u3042\u308a\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u9ad8\u901f\u8d70\u884c\u3084\u6025\u30ab\u30fc\u30d6\u306e\u591a\u3044\u7d4c\u8def\u3067\u306f\u3001\u5225\u306e\u5236\u5fa1\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3068\u306e\u7d44\u307f\u5408\u308f\u305b\u304c\u5fc5\u8981\u306b\u306a\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002

P\u5236\u5fa1\u3068pure pursuit\u5236\u5fa1\u306b\u3088\u3063\u3066\u6b63\u3057\u304f\u7d4c\u8def\u306b\u8ffd\u5f93\u3067\u304d\u3066\u3044\u308b\u304b\u3092PlotJuggler\u3067\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002

\u3053\u308c\u307e\u3067\u3068\u540c\u69d8\u306b\u5225\u3005\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u3068PlotJuggler\u3092\u8d77\u52d5\u3057\u307e\u3059\u3002

ros2 launch autoware_practice_launch practice.launch.xml\n
ros2 run plotjuggler plotjuggler\n

PlotJuggler\u4e0a\u3067/localization/kinematic_state/pose/pose/position/x\u3068/localization/kinematic_state/pose/pose/position/y\u3092\u8907\u6570\u9078\u629e\u3057\u53f3\u30af\u30ea\u30c3\u30af\u3067\u30c9\u30e9\u30c3\u30b0\uff06\u30c9\u30ed\u30c3\u30d7\u3057\u307e\u3059\u3002

rviz\u3068\u8ef8\u306e\u5411\u304d\u3092\u5408\u308f\u305b\u307e\u3059\u3002\u30c9\u30e9\u30c3\u30b0\uff06\u30c9\u30ed\u30c3\u30d7\u3057\u305f\u5f8c\u306b\u8868\u793a\u3055\u308c\u308b\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u3067Swap\u3092\u9078\u629e\u3057\u3066\u8ef8\u3092\u5165\u308c\u66ff\u3048\u3066OK\u3092\u9078\u629e\u3057\u307e\u3059\u3002\u305d\u306e\u5f8c\u30b0\u30e9\u30d5\u4e0a\u3067\u53f3\u30af\u30ea\u30c3\u30af\u3057\u3066Flip Horizontal Axis\u3092\u9078\u629e\u3057\u3066\u6a2a\u8ef8\u3092\u53cd\u8ee2\u3055\u305b\u307e\u3059\u3002

PlotJuggler\u306e\u8a2d\u5b9a\u304c\u3067\u304d\u305f\u3089\u3001\u5225\u3005\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066trajectory_loader\u30ce\u30fc\u30c9\u3068trajectory_follower\u30ce\u30fc\u30c9\u3092\u8d77\u52d5\u3057\u307e\u3059\u3002

ros2 run autoware_practice_course trajectory_loader --ros-args -p path_file:=src/autoware_practice_course/config/trajectory_zigzag.csv\n
ros2 run autoware_practice_course trajectory_follower --ros-args -p kp:=5.0 -p lookahead_distance:=5.0\n

\u9069\u5207\u306b\u8d77\u52d5\u3067\u304d\u308b\u3068\u8a2d\u5b9a\u3055\u308c\u305f\u7d4c\u8def\u306b\u8ffd\u5f93\u3067\u304d\u3066\u3044\u308b\u3053\u3068\u304cPlotJuggler\u4e0a\u3067\u308f\u304b\u308a\u307e\u3059\u3002

"},{"location":"development/main-module.html","title":"\u30e1\u30a4\u30f3\u30e2\u30b8\u30e5\u30fc\u30eb","text":""},{"location":"development/main-module.html#autoware","title":"Autoware\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba","text":"

\u672c\u5927\u4f1a\u3067\u306f\u3001\u81ea\u52d5\u904b\u8ee2\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2Autoware\u3092\u30d9\u30fc\u30b9\u3068\u3057\u305f\u5b9f\u88c5\u3092\u7528\u610f\u3057\u3066\u304a\u308a\u307e\u3059\uff0e \u672c\u30da\u30fc\u30b8\u3067\u306f\u3001\u305d\u306e\u80cc\u666f\u3068\u8aac\u660e\u306b\u52a0\u3048\u3066\u3001\u3069\u306e\u3088\u3046\u306b\u672c\u5b9f\u88c5\u3092\u6d3b\u7528\u3067\u304d\u308b\u304b\u306e\u7d39\u4ecb\u3092\u884c\u3044\u307e\u3059\uff0e

\u524d\u56de\u306e\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u5927\u4f1a\u3067\u306f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306eAutoware\u304b\u3089\u6a5f\u80fd\u3092\u7d5e\u308a\u3001\u30ce\u30fc\u30c9\u6570\u3092\u6e1b\u3089\u3057\u305f\u7e2e\u5c0f\u69cb\u6210\u306eAutoware\u3092\u8d77\u52d5\u3067\u304d\u308bLaunch\u30d5\u30a1\u30a4\u30eb\u3092\u63d0\u4f9b\u3057\u307e\u3057\u305f\uff0e\u305d\u306e\u969b\u306e\u3001\u80cc\u666f\u3084\u7528\u610f\u3057\u305f\u610f\u56f3\u306b\u3064\u3044\u3066\u306f\u3001\u524d\u5927\u4f1a\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\uff0e

\u4eca\u56de\u306e\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u5927\u4f1a\u3067\u306f\u3001\u524d\u5927\u4f1a\u3068\u540c\u69d8\u306bAutoware\u306e\u90e8\u5206\u7684\u306a\u6d3b\u7528\u3084\u81ea\u7531\u81ea\u5728\u306a\u53d6\u308a\u8fbc\u307f\u3092\u53ef\u80fd\u306b\u3059\u308b\u305f\u3081\u3001AWSIM\u3068\u306e\u5229\u7528\u3092\u60f3\u5b9a\u3057\u305f\u7e2e\u5c0f\u69cb\u6210\u306eAutoware\u3092\u7528\u610f\u3057\u307e\u3057\u305f\uff0e

"},{"location":"development/main-module.html#autoware_1","title":"\u7e2e\u5c0f\u69cb\u6210\u306eAutoware\u3092\u7528\u610f\u3057\u305f\u80cc\u666f","text":""},{"location":"development/main-module.html#autoware_2","title":"Autoware\u3092\u5229\u7528\u3059\u308b\u6642\u306e\u8ab2\u984c","text":"

\u30c7\u30d5\u30a9\u30eb\u30c8\u306eAutoware\u3067\u306f\u69d8\u3005\u306a\u8d70\u884c\u74b0\u5883\u306b\u5bfe\u5fdc\u3059\u308b\u305f\u3081\u3001\u305f\u304f\u3055\u3093\u306e\u30ce\u30fc\u30c9\u304b\u3089\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u3059\uff0e

Autoware\u306e\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u3001Autoware\u3092\u69cb\u6210\u3059\u308bROS\u30ce\u30fc\u30c9\u306e\u69cb\u6210\u56f3\u3092\u898b\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\uff0e\u4ee5\u4e0b\u306b\u73fe\u6642\u70b9\u306e\u56f3\u3092\u793a\u3057\u307e\u3059\uff0e

\u81ea\u52d5\u904b\u8ee2\u306b\u95a2\u308f\u308b\u5404\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3067\u591a\u7a2e\u591a\u69d8\u306a\u6a5f\u80fd\u3092\u63c3\u3048\u3066\u304a\u308a\u3001\u96e3\u6613\u5ea6\u306e\u9ad8\u3044\u8d70\u884c\u74b0\u5883\u306b\u3082\u5bfe\u5fdc\u3067\u304d\u308b\u3088\u3046\u306b\u4f5c\u3089\u308c\u3066\u3044\u307e\u3059\uff0e

\u4e00\u65b9\u3001\u305d\u306e\u8907\u96d1\u306a\u69cb\u6210\u3092\u7406\u89e3\u3057\u3001\u5404\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u610f\u5473\u3084\u8abf\u6574\u306e\u4ed5\u65b9\u3001\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u5207\u308a\u66ff\u3048\u30fb\u5165\u308c\u66ff\u3048\u306a\u3069\u3092\u884c\u3046\u3053\u3068\u304c\u5fc5\u305a\u3057\u3082\u5bb9\u6613\u3067\u306f\u306a\u304f\u306a\u3063\u3066\u3044\u307e\u3059\uff0e

"},{"location":"development/main-module.html#autoware-micro","title":"\u7e2e\u5c0f\u69cb\u6210\u306eAutoware-Micro\u306e\u7528\u610f","text":"

\u305d\u306e\u305f\u3081\u3001\u524d\u56de\u306e\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u5927\u4f1a\u3067\u306f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306eAutoware\u304b\u3089\u6a5f\u80fd\u3092\u7d5e\u308a\u3001\u30ce\u30fc\u30c9\u6570\u3092\u6e1b\u3089\u3057\u305fAutoware\u3092\u7528\u610f\u3057\u307e\u3057\u305f\uff0e

Autoware-Micro\u306e\u30ce\u30fc\u30c9\u56f3\u3092\u4ee5\u4e0b\u306b\u793a\u3057\u307e\u3059\uff0e\u30ce\u30fc\u30c9\u6570\u304c\u683c\u6bb5\u3068\u6e1b\u308a\u3001\u57fa\u672c\u7684\u306a\u81ea\u52d5\u8d70\u884c\u3092\u53ef\u80fd\u3068\u3059\u308b\u6a5f\u80fd\u306e\u307f\u304c\u63c3\u3063\u3066\u3044\u308b\u3053\u3068\u304c\u5206\u304b\u308a\u307e\u3059\uff0e

Autoware-Micro\u306e\u7279\u5fb4\u3068\u3057\u3066\u306f\u3001\u4ee5\u4e0b\u304c\u6319\u3052\u3089\u308c\u307e\u3059\uff0e

  • \u307b\u307c\u5168\u3066\u306e\u30ce\u30fc\u30c9\u306e\u8d77\u52d5\u3092\u76f4\u63a51\u3064\u306eLaunch\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u884c\u3063\u3066\u3044\u308b\uff0e
  • \u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u76f4\u63a5\u30ce\u30fc\u30c9\u8d77\u52d5\u6642\u306b\u66f8\u304d\u8fbc\u3093\u3067\u3044\u308b\u305f\u3081\u3001\u3069\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u304c\u3069\u306e\u30ce\u30fc\u30c9\u3067\u5fc5\u8981\u306a\u306e\u304b\u3092\u7c21\u5358\u306b\u8ffd\u3046\u3053\u3068\u304c\u3067\u304d\u308b\uff0e
  • \u5404\u30ce\u30fc\u30c9\u306e\u5165\u51fa\u529b\u3068\u306a\u308bROS\u30c8\u30d4\u30c3\u30af\u540d\u3082\u76f4\u63a5\u30ce\u30fc\u30c9\u8d77\u52d5\u6642\u306bremap\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u30c8\u30d4\u30c3\u30af\u540d\u3082\u7c21\u5358\u306b\u5909\u3048\u3089\u308c\u308b\uff0e

\u3053\u306eAutoware\u3092\u30d9\u30fc\u30b9\u306b\u81ea\u52d5\u904b\u8ee2\u30bd\u30d5\u30c8\u3092\u66f8\u304f\u3053\u3068\u3067\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff0e

  • \u30b7\u30f3\u30d7\u30eb\u306a\u69cb\u6210\u3068\u306a\u3063\u3066\u3044\u308b\u305f\u3081\u3001Autoware\u306e\u4e2d\u8eab\u3092\u3088\u308a\u6df1\u304f\u7406\u89e3\u3067\u304d\u308b
  • \u81ea\u4f5c\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u3092Autoware\u306e\u3082\u306e\u3068\u7c21\u5358\u306b\u5165\u308c\u66ff\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u6a5f\u80fd\u306e\u6539\u5584\u306b\u53d6\u308a\u7d44\u3081\u308b
  • \u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u5909\u66f4\u3057\u305f\u5834\u5408\u306e\u30b7\u30b9\u30c6\u30e0\u5168\u4f53\u306e\u52d5\u4f5c\u3078\u306e\u5f71\u97ff\u304c\u5206\u304b\u308a\u3084\u3059\u3044
  • \u4eca\u56de\u306eAutoware\u306b\u306f\u542b\u307e\u308c\u3066\u3044\u306a\u3044\u65e2\u5b58\u306eAutoware\u306e\u30ce\u30fc\u30c9\u3092\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u308b

\u5404\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u5909\u66f4\u70b9\u30fb\u7279\u5fb4\u3068\u3057\u3066\u306f\u3001\u4ee5\u4e0b\u304c\u6319\u3052\u3089\u308c\u307e\u3059\uff0e

  • Localization\uff1aGNSS\u3001IMU\u53ca\u3073\u8eca\u8f2a\u901f\u306b\u3088\u308b\u81ea\u5df1\u4f4d\u7f6e\u63a8\u5b9a
  • Planning\uff1abehavior_velocity_planner\u3084obstacle_stop_planner\u306a\u3069\u3092\u7701\u7565\u3057\u3001\u51fa\u529b\u7d4c\u8def\u304b\u3089\u8d70\u884ctrajectory\u3092\u76f4\u63a5\u51fa\u529b\u3059\u308b\u3088\u3046\u306b\u5909\u66f4\uff0e
  • Control\uff1a\u5236\u5fa1\u306e1\u3064\u306e\u5b9f\u88c5\u4f8b\u3068\u3057\u3066simple_pure_pursuit\u3092\u7528\u610f\uff0e
"},{"location":"development/main-module.html#autoware-micro_1","title":"Autoware-Micro\u306e\u6d3b\u7528\u65b9\u6cd5","text":"

Autoware-Micro\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u306b\u3088\u308a\u3001\u672c\u5927\u4f1a\u3067\u306e\u8ab2\u984c\u3068\u306a\u308b\uff1a

  1. \u30ab\u30fc\u30d6\u306a\u3069\u306e\u6226\u7565\u7684\u306a\u7d4c\u8def\u8a08\u753b
  2. \u9ad8\u901f\u3067\u306e\u8eca\u4e21\u5236\u5fa1

\u306b\u96c6\u4e2d\u3057\u3066\u53d6\u308a\u7d44\u3080\u3053\u3068\u304c\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\uff0e

\u307e\u305f\u3001Autoware-Micro\u306e\u5b9f\u88c5\u4f8b\u3092\u53c2\u8003\u306b\u3057\u306a\u304c\u3089\u3001Autoware\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3068\u306f\u5c11\u3057\u7570\u306a\u308b\u5b9f\u88c5\u65b9\u6cd5\u3092\u8a66\u3057\u305f\u308a\u3001\u65b0\u3057\u304f\u30ab\u30b9\u30bf\u30e0\u306e\u30ce\u30fc\u30c9\u3092\u4f5c\u6210\u30fb\u5c0e\u5165\u3057\u305f\u308a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff0e

\u72ec\u81ea\u306e\u30ce\u30fc\u30c9\u306e\u5b9f\u88c5\u3092\u53d6\u308a\u5165\u308c\u308b\u3053\u3068\u306b\u3088\u308a\u3001\u8d70\u884c\u6027\u80fd\u3092\u5411\u4e0a\u3055\u305b\u70b9\u6570\u3092\u4f38\u3070\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff0e

\u4f8b\u3048\u3070\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u69cb\u6210\u3092\u8003\u3048\u3001\u300cPlanning\u300d\u3068\u300cControl\u300d\u3092\u305d\u308c\u305e\u308c\u5b9f\u88c5\u3057\u3066\u53d6\u308a\u7d44\u3093\u3060\u308a\u3001\u300cPlanning & Control\u300d\u3092\u4e21\u65b9\u62c5\u3046\u30ce\u30fc\u30c9\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\uff0e

\u30eb\u30fc\u30c8\u306e\u5165\u529b\u3068\u8eca\u4e21\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9\u51fa\u529b\u306eROS\u30c8\u30d4\u30c3\u30af\u3055\u3048\u5408\u3063\u3066\u3044\u308c\u3070\u81ea\u7531\u306b\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3057\u3066\u9802\u3051\u307e\u3059\uff0e

"},{"location":"development/main-module.html#_2","title":"\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u306e\u69cb\u6210","text":"

\u53c2\u8003\u307e\u3067\u306b\u672c\u5927\u4f1a\u3067\u4f7f\u7528\u3057\u3066\u3044\u308b\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u306e\u69cb\u6210\u306f\u4ee5\u4e0b\u3068\u306a\u308a\u307e\u3059\u3002

docker-dev

docker-eval

"},{"location":"development/main-module.html#nextstep","title":"NextStep:\u53c2\u8003","text":""},{"location":"development/reference.html","title":"\u53c2\u8003","text":""},{"location":"development/reference.html#_2","title":"\u5909\u66f4\u70b9\u306e\u53d6\u308a\u8fbc\u307f","text":"

\u5927\u4f1a\u74b0\u5883\u306e\u91cd\u5927\u306a\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u304c\u3042\u3063\u305f\u969b\u306b\u306f\u9069\u5b9c\u30a2\u30ca\u30a6\u30f3\u30b9\u304c\u3042\u308a\u307e\u3059\u3002 \u53c2\u8003\u307e\u3067\u306b\u3053\u3061\u3089\u306b\u8a18\u8f09\u3057\u3066\u3044\u307e\u3059\u3002\u4ee5\u4e0b\u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002

Docker\u306eupdate

docker pull ghcr.io/automotiveaichallenge/autoware-universe:humble-latest\n

Repository\u306eupdate

cd aichallenge2024 # path to aichallenge2024\ngit pull origin/main\n
"},{"location":"development/reference.html#awsim","title":"\u63cf\u753b\u3042\u308aAWSIM\u306e\u5c0e\u5165","text":"

AWSIM\u306e\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u753b\u9762\u3092\u78ba\u8a8d\u3057\u305f\u3044\u65b9\u306f\u3001\u3053\u3061\u3089\u306e\u624b\u9806\u306b\u5f93\u3063\u3066\u63cf\u753b\u3042\u308aAWSIM\u306e\u5c0e\u5165\u3092\u884c\u3063\u3066\u304f\u3060\u3055\u3044\u3002

"},{"location":"development/reference.html#debugterminal3","title":"Debug\u7528\u306bTerminal\u30923\u3064\u7528\u610f\u3057\u3066\u958b\u767a\u3057\u305f\u3044\u5834\u5408 (\u53c2\u8003)","text":"

Alt+Ctrl+T\u3067\uff11\u3064\u76ee\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u3092\u7acb\u3061\u4e0a\u3052\u3066\u304b\u3089\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9Ctrl+Shift+P\u3067\u8cbc\u308a\u4ed8\u3051\u305f\u5f8c\u306bEnter\u3067\u5b9f\u884c\u3057\u307e\u3059\u3002

cd ~/aichallenge-2024\n./docker_run.sh dev cpu\n
cd /aichallenge\nbash run_simulator.bash\n

Alt+Ctrl+T\u30672\u3064\u76ee\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u3092\u7acb\u3061\u4e0a\u3052\u3066\u304b\u3089\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9Ctrl+Shift+P\u3067\u8cbc\u308a\u4ed8\u3051\u305f\u5f8c\u306bEnter\u3067\u5b9f\u884c\u3057\u307e\u3059\u3002

cd ~/aichallenge-2024\n./docker_run.sh dev cpu\n
cd /aichallenge\nbash run_autoware.bash\n

Alt+Ctrl+T\u30673\u3064\u76ee\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u3092\u7acb\u3061\u4e0a\u3052\u3066\u304b\u3089\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9Ctrl+Shift+P\u3067\u8cbc\u308a\u4ed8\u3051\u305f\u5f8c\u306bEnter\u3067\u5b9f\u884c\u3057\u307e\u3059\u3002

cd ~/aichallenge-2024\n./docker_run.sh dev cpu\n
cd /aichallenge\nros2 topic pub --once /control/control_mode_request_topic std_msgs/msg/Bool '{data: true}' >/dev/null\n

\u4e0b\u8a18\u306e\u69d8\u306a\u753b\u9762\u304c\u8868\u793a\u3055\u308c\u305f\u3089\u8d77\u52d5\u5b8c\u4e86\u3067\u3059\u3002\u7d42\u4e86\u3059\u308b\u306b\u306f\u5404\u30bf\u30fc\u30df\u30ca\u30eb\u4e0a\u3067CTRL + C\u3092\u5165\u529b\u3057\u307e\u3059\u3002

"},{"location":"development/workspace-usage.html","title":"AI\u30c1\u30e3\u30ec\u30f3\u30b8\u306e\u9032\u3081\u65b9","text":"

AI\u30c1\u30e3\u30ec\u30f3\u30b8\u3067\u306f\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3092\u99c6\u4f7f\u3057\u3066\u3044\u307e\u3059\u3002\u904b\u55b6\u304b\u3089\u63d0\u4f9b\u3055\u308c\u308b\u30b3\u30fc\u30c9\u3068\u30a6\u30a7\u30d6\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3092\u5229\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u521d\u671f\u958b\u767a\u30d5\u30a7\u30fc\u30ba\u3092\u30b9\u30ad\u30c3\u30d7\u3057\u3001\u7af6\u6280\u306e\u30c6\u30fc\u30de\u306b\u5408\u308f\u305b\u305f\u958b\u767a\u3092\u3059\u3050\u306b\u958b\u59cb\u3067\u304d\u307e\u3059\u3002 \u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306b\u306f\u3001\u300c\u8eca\u8f2a\u306e\u518d\u767a\u660e\u300d\u3092\u907f\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3068\u3044\u3046\u5927\u304d\u306a\u5229\u70b9\u304c\u3042\u308a\u307e\u3059\u3002\u3055\u3089\u306b\u3001\u8ab0\u3067\u3082\u6c17\u8efd\u306b\u5927\u4f1a\u306b\u53c2\u52a0\u3067\u304d\u3001\u4e00\u8cab\u3057\u305f\u8a55\u4fa1\u57fa\u6e96\u3067\u5927\u4f1a\u3092\u904b\u55b6\u3067\u304d\u308b\u3068\u3044\u3046\u30e1\u30ea\u30c3\u30c8\u3082\u3042\u308a\u307e\u3059\u3002

\u521d\u3081\u3066\u53c2\u52a0\u3055\u308c\u308b\u65b9\u3005\u306f\u3001\u5148\u4eba\u305f\u3061\u304c\u7bc9\u304d\u4e0a\u3052\u305f\u57fa\u76e4\u306e\u4e0a\u306b\u7acb\u3061\u3001\u81ea\u52d5\u904b\u8ee2\u306b\u5fc5\u8981\u306a\u6a5f\u80fd\u304c\u307b\u3068\u3093\u3069\u63c3\u3063\u3066\u3044\u308b\u72b6\u614b\u304b\u3089\u30b9\u30bf\u30fc\u30c8\u3057\u307e\u3059\u3002\u3053\u308c\u304b\u3089\u306f\u3001\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306b\u3088\u308b\u300c\u53d6\u308a\u7d44\u307f\u306e\u516c\u958b\u300d\u3092\u901a\u3058\u3066\u3001\u7af6\u6280\u9818\u57df\u3067\u306e\u72ec\u81ea\u306e\u958b\u767a\u3092\u6df1\u3081\u308b\u30c1\u30e3\u30f3\u30b9\u3067\u3059\u3002 \u3055\u3089\u306b\u3001\u81ea\u52d5\u904b\u8ee2\u306e\u7406\u89e3\u3092\u6df1\u3081\u308b\u305f\u3081\u306b\u3001\u904b\u55b6\u304c\u7528\u610f\u3057\u305f\u300cAutoware Practice\u300d\u3084ROS 2\u306e\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u304c\u63d0\u4f9b\u3059\u308b\u300cROS 2\u300d\u306e\u5b66\u7fd2\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002

\u65e2\u306b\u30c1\u30e3\u30ec\u30f3\u30b8\u306b\u53c2\u52a0\u3055\u308c\u305f\u65b9\u3005\u306b\u306f\u3001\u3054\u81ea\u8eab\u306e\u7d4c\u9a13\u3092\u516c\u958b\u3057\u3001\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306b\u8ca2\u732e\u3057\u3066\u5927\u4f1a\u306e\u767a\u5c55\u306b\u5bc4\u4e0e\u3057\u3066\u3044\u305f\u3060\u3051\u308c\u3070\u3068\u601d\u3044\u307e\u3059\u3002\u7686\u3055\u3093\u306e\u7a4d\u6975\u7684\u306a\u53c2\u52a0\u304c\u3001\u5927\u4f1a\u3092\u3055\u3089\u306b\u5145\u5b9f\u3055\u305b\u308b\u3053\u3068\u306b\u7e4b\u304c\u308a\u307e\u3059\u3002

\u203bAI\u30c1\u30e3\u30ec\u30f3\u30b8\u3067\u958b\u767a\u3059\u308b\u4e0a\u3067\u30d9\u30fc\u30b9\u3068\u306a\u308b\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306f\u5927\u4f1a\u7528\u30ea\u30dd\u30b8\u30c8\u30ea\u5185\u3067\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u3059\u3002

\u53c2\u52a0\u8005\u306e\u7686\u69d8\u306b\u306f\u3053\u3061\u3089\u306e\u30b3\u30fc\u30c9\u3084\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b\u3053\u3068\u3067\u958b\u767a\u3092\u9032\u3081\u3066\u3044\u305f\u3060\u304d\u307e\u3059\u304c\u3001Autoware\u306b\u4e0d\u6163\u308c\u306a\u65b9\u306f\u307e\u305a\u306f\u5165\u9580\u8b1b\u5ea7\u3092\u4e00\u901a\u308a\u3084\u3063\u3066\u3044\u305f\u3060\u304f\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002

\u203b\u30ea\u30dd\u30b8\u30c8\u30ea\u5185\u306e\u30b3\u30fc\u30c9\u3092\u4f7f\u308f\u305a\u72ec\u81ea\u306b\u958b\u767a\u3059\u308b\u65b9\u306a\u3069\u3001\u5404\u7a2e\u4ed5\u69d8\u306b\u3064\u3044\u3066\u77e5\u308a\u305f\u3044\u65b9\u306f\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u4ed5\u69d8\u3001\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u4ed5\u69d8\u306e\u30da\u30fc\u30b8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002

"},{"location":"development/workspace-usage.html#_1","title":"\u53c2\u52a0\u8005\u6709\u5fd7\u306e\u53c2\u8003\u8a18\u4e8b\u3092\u8aad\u3093\u3067\u307f\u308b","text":"

\u53c2\u52a0\u8005\u6709\u5fd7\u304c\u53d6\u308a\u7d44\u3093\u3067\u304f\u3060\u3055\u3063\u305f\u53d6\u308a\u7d44\u307f\u306fAdvent Calendar\u306b\u307e\u3068\u3081\u3089\u308c\u3066\u3044\u307e\u3059\u306e\u3067\u53c2\u8003\u306b\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002

\u3069\u308c\u304b\u3089\u8aad\u3082\u3046\u304b\u8ff7\u3063\u305f\u65b9\u306f2023\u5e74\u5ea6\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u8ca2\u732e\u8cde\u3092\u53d7\u8cde\u3057\u305f\u7530\u4e2d\u65b0\u592a\u3055\u3093\u304c\u8a18\u8f09\u3057\u3066\u304f\u308c\u305f\u3053\u3061\u3089\u306e\u8a18\u4e8b\u304b\u3089\u8aad\u307f\u9032\u3081\u308b\u3068\u826f\u3044\u3068\u601d\u3044\u307e\u3059\u3002

"},{"location":"development/workspace-usage.html#_2","title":"\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u5909\u66f4\u3057\u3066\u307f\u308b","text":"

\u74b0\u5883\u69cb\u7bc9\u5f8c\u4f55\u3092\u3057\u3066\u826f\u3044\u306e\u304b\u308f\u304b\u3089\u306a\u3044\u65b9\u5411\u3051\u306b\u3001\u307e\u305a\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u8abf\u6574\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002 \u4eca\u56de\u306f\u5236\u5fa1\u30e2\u30b8\u30e5\u30fc\u30eb\u306esimple_pure_pursuit\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u5909\u66f4\u3057\u3066\u307f\u308b\u3053\u3068\u306b\u3057\u307e\u3059\u3002

$HOME/aichallenge-2024/aichallenge/workspace/src/aichallenge_submit/aichallenge_submit_launch/launch/reference.launch.xml\u5185\u306e\u4ee5\u4e0b\u306evalue\u5024\u3092\u8abf\u6574\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002

<node pkg=\"simple_pure_pursuit\" exec=\"simple_pure_pursuit\" name=\"simple_pure_pursuit_node\" output=\"screen\">\n    <param name=\"use_external_target_vel\" value=\"true\"/>\n    <param name=\"external_target_vel\" value=\"8.0\"/>\n    <param name=\"lookahead_gain\" value=\"0.4\"/>\n    <param name=\"lookahead_min_distance\" value=\"5.0\"/>\n    <param name=\"speed_proportional_gain\" value=\"1.0\"/>\n

\u8abf\u6574\u304c\u7d42\u308f\u3063\u305f\u3089\u518d\u3073\u30d3\u30eb\u30c9\u30fb\u5b9f\u884c\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002\u6319\u52d5\u304c\u5909\u308f\u3063\u305f\u3053\u3068\u304c\u78ba\u8a8d\u3067\u304d\u305f\u304b\u3068\u601d\u3044\u307e\u3059\u3002

"},{"location":"development/workspace-usage.html#_3","title":"\u65b0\u898f\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u4f5c\u6210\u3057\u3066\u307f\u308b","text":"

\u65b0\u305f\u306b\u81ea\u4f5c\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u4f5c\u6210\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002\u307e\u305a\u306f\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u3084autoware practice\u3092\u30b3\u30d4\u30fc\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002 \u4ee5\u4e0b\u306e\u3088\u3046\u306b\u9032\u3081\u308b\u3068\u826f\u3044\u3068\u601d\u3044\u307e\u3059\u3002

  1. \u5143\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30b3\u30d4\u30fc\u3057\u3066\u3001\u4e0b\u8a18\u3092\u5909\u66f4
    • \u30d1\u30c3\u30b1\u30fc\u30b8\u540d
    • \u30d5\u30a9\u30eb\u30c0\u540d
    • \u30b3\u30fc\u30c9
    • package.xml
    • CMakeLists.txt
  2. aichallenge_submit\u306e\u4e2d\u306b\u914d\u7f6e
  3. aichallenge_submit_launch\u5185\u306elaunch\u30d5\u30a1\u30a4\u30eb(reference.launch.xml)\u3092\u5909\u66f4

\u203b\u30b3\u30d4\u30fc\u5143\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30e9\u30a4\u30bb\u30f3\u30b9\u3092\u9055\u53cd\u3057\u306a\u3044\u3088\u3046\u5404\u81ea\u78ba\u8a8d\u304a\u9858\u3044\u3044\u305f\u3057\u307e\u3059\u3002

"},{"location":"development/workspace-usage.html#map","title":"[\u4efb\u610f]Map\u306e\u7de8\u96c6\u3092\u3057\u3066\u307f\u308b","text":"

2024\u5e74\u5ea6\u306eAI\u30c1\u30e3\u30ec\u30f3\u30b8\u3067\u306fVectorMapBuilder\u306a\u3069\u306e\u30c4\u30fc\u30eb\u3092\u4f7f\u3063\u3066point cloud map , lanelet2 map\u306a\u3069\u306e\u5730\u56f3\u306e\u7de8\u96c6\u3092\u63a8\u5968\u3057\u3066\u3044\u307e\u3059\u3002

Map\u306e\u30d5\u30a1\u30a4\u30eb\u7f6e\u304d\u5834\u304b\u3089pointcloud map lanelet2 map\u306a\u3069\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u7de8\u96c6\u3057\u3066\u307f\u307e\u3057\u3087\u3046\uff01

VectorMapBuilder\u306e\u4f7f\u3044\u65b9\u52d5\u753b\u306b\u30b9\u30c6\u30c3\u30d7\u30d0\u30a4\u30b9\u30c6\u30c3\u30d7\u306e\u30a4\u30f3\u30b9\u30c8\u30e9\u30af\u30b7\u30e7\u30f3\u306a\u3069\u304c\u3042\u308b\u306e\u3067\u53c2\u8003\u306b\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002

\u4f5c\u6210\u3057\u305flanelet2 map\u306faichallenge/workspace/src/aichallenge_submit/aichallenge_submit_launch/map\u306b\u683c\u7d0d\u3057\u3066\u304f\u3060\u3055\u3044\u3002

"},{"location":"development/workspace-usage.html#_4","title":"\u63d0\u51fa\u3057\u3066\u307f\u308b","text":"

\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3092\u884c\u3063\u305f\u3089\u3053\u3053\u3092\u53c2\u8003\u306b\u63d0\u51fa\u3092\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002

"},{"location":"development/workspace-usage.html#next-step","title":"Next Step:\u30e1\u30a4\u30f3\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u3064\u3044\u3066\u77e5\u308b","text":""},{"location":"development/requirements/index.html","title":"Redirect","text":"Redirect"},{"location":"information/rules.html","title":"\u30eb\u30fc\u30eb","text":""},{"location":"information/rules.html#_2","title":"\u6982\u8981","text":"

\u6307\u5b9a\u3055\u308c\u305f\u30b3\u30fc\u30b9\u3092\u8d70\u884c\u3057\u3001\u898f\u5b9a\u306e\u5468\u56de\u6570\u306b\u5230\u9054\u3059\u308b\u307e\u3067\u8d70\u884c\u6642\u9593\u3092\u7af6\u3044\u307e\u3059\u3002

"},{"location":"information/rules.html#_3","title":"\u74b0\u5883","text":"

\u30b3\u30fc\u30b9\u306b\u306f\u300c\u30b9\u30bf\u30fc\u30c8\u30a8\u30ea\u30a2\u300d\u300c\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u30e9\u30a4\u30f3\u300d\u300c\u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u30a8\u30ea\u30a2\u300d\u304c\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002\u8eca\u4e21\u306f\u30b9\u30bf\u30fc\u30c8\u30a8\u30ea\u30a2\u304b\u3089\u8d70\u884c\u3092\u958b\u59cb\u3057\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u30e9\u30a4\u30f3\u306b\u89e6\u308c\u305f\u30bf\u30a4\u30df\u30f3\u30b0\u3067\u8d70\u884c\u6642\u9593\u306e\u8a08\u6e2c\u304c\u884c\u308f\u308c\u307e\u3059\u3002\u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u30a8\u30ea\u30a2\u3064\u3044\u3066\u306f\u5f8c\u8ff0\u3059\u308b\u300c\u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u300d\u306e\u7ae0\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u307e\u305f\u3001\u8d70\u884c\u306f\u30c1\u30fc\u30e0\u6bce\u306b\u500b\u5225\u306b\u884c\u3044\u3001\u30b3\u30fc\u30b9\u4e0a\u3092\u540c\u6642\u306b\u4ed6\u306e\u8eca\u4e21\u304c\u8d70\u884c\u3057\u305f\u308a\u3001\u969c\u5bb3\u7269\u304c\u8a2d\u7f6e\u3055\u308c\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002

"},{"location":"information/rules.html#_4","title":"\u9032\u884c","text":"

\u5404\u30c1\u30fc\u30e0\u306b\u306f\u3001\u8eca\u4e21\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3092\u884c\u3046\u6e96\u5099\u30bb\u30c3\u30b7\u30e7\u30f3\u3068\u3001\u8eca\u4e21\u3092\u8d70\u884c\u3055\u305b\u3066\u8a08\u6e2c\u3092\u884c\u3046\u8a18\u9332\u30bb\u30c3\u30b7\u30e7\u30f3\u304c\u305d\u308c\u305e\u308c\u5272\u308a\u5f53\u3066\u3089\u308c\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u4e88\u9078\u5927\u4f1a\u3067\u306f\u8eca\u4e21\u3092\u4f7f\u7528\u3057\u306a\u3044\u305f\u3081\u6e96\u5099\u30bb\u30c3\u30b7\u30e7\u30f3\u306f\u9069\u7528\u3055\u308c\u307e\u305b\u3093\u3002\u307e\u305f\u3001\u30a2\u30c9\u30d0\u30f3\u30b9\u30c8\u30af\u30e9\u30b9\u306e\u30c1\u30fc\u30e0\u306b\u3064\u3044\u3066\u3082\u5e38\u306b\u8eca\u4e21\u306e\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u304c\u53ef\u80fd\u3067\u3042\u308b\u305f\u3081\u6e96\u5099\u30bb\u30c3\u30b7\u30e7\u30f3\u306f\u9069\u7528\u3055\u308c\u307e\u305b\u3093\u3002

\u9805\u76ee \u6c7a\u52dd\u5927\u4f1a \u4e88\u9078\u5927\u4f1a \u6e96\u5099\u30bb\u30c3\u30b7\u30e7\u30f3 \u672a\u5b9a \u306a\u3057 \u8a18\u9332\u30bb\u30c3\u30b7\u30e7\u30f3 \u672a\u5b9a 7:00 \u5468\u56de\u6570 \u672a\u5b9a 6"},{"location":"information/rules.html#_5","title":"\u8d70\u884c\u958b\u59cb","text":"

\u8eca\u4e21\u306f\u30b9\u30bf\u30fc\u30c8\u30a8\u30ea\u30a2\u304b\u3089\u8d70\u884c\u3092\u958b\u59cb\u3057\u3001\u521d\u3081\u3066\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u30e9\u30a4\u30f3\u3092\u89e6\u308c\u305f\u6642\u70b9\u304b\u3089\u8d70\u884c\u6642\u9593\u306e\u8a08\u6e2c\u304c\u958b\u59cb\u3055\u308c\u307e\u3059\u3002\u4e88\u9078\u5927\u4f1a\u3067\u306f\u4e8b\u524d\u306b\u5b9a\u3081\u3089\u308c\u305f\u59ff\u52e2\u3067\u8eca\u4e21\u304c\u914d\u7f6e\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u6c7a\u52dd\u5927\u4f1a\u3067\u306f\u30b9\u30bf\u30fc\u30c8\u30a8\u30ea\u30a2\u5185\u306b\u4efb\u610f\u306e\u59ff\u52e2\u3067\u8eca\u4e21\u3092\u914d\u7f6e\u3067\u304d\u307e\u3059\u304c\u3001\u8eca\u4e21\u306b\u5bfe\u3059\u308b\u64cd\u4f5c\u306f\u30b9\u30bf\u30fc\u30c8\u30a8\u30ea\u30a2\u306e\u4e2d\u3067\u306e\u307f\u8a8d\u3081\u3089\u308c\u3066\u3044\u307e\u3059\u3002

"},{"location":"information/rules.html#_6","title":"\u8d70\u884c\u7d42\u4e86","text":"

\u4ee5\u4e0b\u306e\u3044\u305a\u308c\u304b\u306e\u6761\u4ef6\u3092\u6e80\u305f\u3057\u305f\u6642\u70b9\u3067\u8d70\u884c\u7d42\u4e86\u3068\u306a\u308a\u3001\u8d70\u884c\u7d50\u679c\u3068\u3057\u3066\u8a18\u9332\u3055\u308c\u307e\u3059\u3002

  • \u898f\u5b9a\u306e\u5468\u56de\u6570\u306b\u5230\u9054\u3057\u305f\u3002
  • \u8a18\u9332\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u5272\u308a\u5f53\u3066\u6642\u9593\u304c\u7d4c\u904e\u3057\u305f\u3002
  • \u8eca\u4e21\u306b\u89e6\u308c\u3066\u64cd\u4f5c\u3092\u884c\u3063\u305f\u3002
  • \u305d\u306e\u4ed6\u3001\u200b\u4f55\u3089\u304b\u306e\u7406\u7531\u3067\u8d70\u884c\u7d42\u4e86\u306b\u76f8\u5f53\u3059\u308b\u3068\u904b\u55b6\u304c\u5224\u65ad\u3057\u305f\u5834\u5408\u3002
"},{"location":"information/rules.html#_7","title":"\u8d70\u884c\u4e2d\u6b62","text":"

\u4ee5\u4e0b\u306e\u3044\u305a\u308c\u304b\u306e\u6761\u4ef6\u3092\u6e80\u305f\u3057\u305f\u6642\u70b9\u3067\u8d70\u884c\u7d42\u4e86\u3068\u306a\u308a\u3001\u5f53\u8a72\u306e\u8d70\u884c\u306f\u7121\u52b9\u3068\u306a\u308a\u307e\u3059\u3002

  • (\u4e88\u9078\u306e\u307f)\u8a18\u9332\u30bb\u30c3\u30b7\u30e7\u30f3\u958b\u59cb\u304b\u30892\u5206\u4ee5\u5185\u306b\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u30e9\u30a4\u30f3\u3092\u901a\u904e\u3057\u3066\u3044\u306a\u3044\u3002
  • (\u4e88\u9078\u306e\u307f)\u30b3\u30fc\u30b9\u304b\u3089\u5927\u304d\u304f\u9038\u8131\u3057\u305f\u3002
  • \u30b3\u30fc\u30b9\u306e\u58c1\u3092\u52d5\u304b\u3057\u305f\u3002
  • \u305d\u306e\u4ed6\u3001\u200b\u4f55\u3089\u304b\u306e\u7406\u7531\u3067\u8d70\u884c\u4e2d\u6b62\u306b\u76f8\u5f53\u3059\u308b\u3068\u904b\u55b6\u304c\u5224\u65ad\u3057\u305f\u5834\u5408\u3002
"},{"location":"information/rules.html#_8","title":"\u9806\u4f4d","text":"

\u9806\u4f4d\u306f\u4ee5\u4e0b\u306e\u57fa\u6e96\u306b\u5f93\u3063\u3066\u6c7a\u5b9a\u3057\u307e\u3059\u3002

  • \u898f\u5b9a\u306e\u5468\u56de\u6570\u306b\u5230\u9054\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u8d70\u884c\u6642\u9593\u306e\u77ed\u3044\u30c1\u30fc\u30e0\u3002
  • \u898f\u5b9a\u306e\u5468\u56de\u6570\u306b\u5230\u9054\u3057\u3066\u3044\u306a\u3044\u5834\u5408\u3001
  • \u5468\u56de\u6570\u304c\u591a\u3044\u30c1\u30fc\u30e0\u3002
  • \u5468\u56de\u6570\u304c\u540c\u3058\u5834\u5408\u3001\u6700\u7d42\u5468\u307e\u3067\u306e\u8d70\u884c\u6642\u9593\u304c\u77ed\u3044\u30c1\u30fc\u30e0\u3002
"},{"location":"information/rules.html#_9","title":"\u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7","text":"

\u8eca\u4e21\u306b\u306f\u30b3\u30f3\u30c7\u30a3\u30b7\u30e7\u30f3\u3068\u547c\u3070\u308c\u308b\u4eee\u60f3\u7684\u306a\u5024\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u304a\u308a\u3001\u3053\u306e\u5024\u304c\u5897\u52a0\u3059\u308b\u3068\u901f\u5ea6\u306b\u5236\u9650\u304c\u639b\u304b\u308a\u307e\u3059\u3002\u30b3\u30f3\u30c7\u30a3\u30b7\u30e7\u30f3\u306f\u8eca\u4e21\u304c\u8d70\u884c\u3059\u308b\u3068\u5897\u52a0\u3059\u308b\u307b\u304b\u3001\u5f8c\u8ff0\u3059\u308b\u4eee\u60f3\u7684\u306a\u969c\u5bb3\u7269\u306b\u885d\u7a81\u3057\u305f\u5834\u5408\u3082\u5897\u52a0\u3057\u307e\u3059\u3002\u30b3\u30f3\u30c7\u30a3\u30b7\u30e7\u30f3\u306f\u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u30a8\u30ea\u30a2\u306b\u898f\u5b9a\u306e\u79d2\u6570\u505c\u6b62\u3059\u308b\u3053\u3068\u3067\u521d\u671f\u5024\u306b\u30ea\u30bb\u30c3\u30c8\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

\u8a2d\u5b9a\u9805\u76ee \u8a2d\u5b9a\u5024 \u88dc\u8db3\u4e8b\u9805 \u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u6210\u7acb\u6642\u9593 3.0 \u79d2 \u2015 \u901f\u5ea6\u5236\u9650\u6709\u52b9\u5316 1000 \u6700\u5927\u901f\u5ea6\u304c 20 km/h \u306b\u5236\u9650\u3055\u308c\u308b \u30bb\u30af\u30b7\u30e7\u30f3\u901a\u904e\u6642 30 \u2015 \u4eee\u60f3\u969c\u5bb3\u7269\u885d\u7a81\u6642 20 - 380 \u885d\u7a81\u306e\u4ed5\u65b9\u306b\u3088\u308a\u5909\u52d5"},{"location":"information/rules.html#_10","title":"\u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u30a8\u30ea\u30a2","text":"

\u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u30a8\u30ea\u30a2\u306f\u4ee5\u4e0b\u306e\u753b\u50cf\u306e\u3088\u3046\u306b\u7dd1\u8272\u306e\u67a0\u3067\u8868\u793a\u3055\u308c\u3066\u3044\u307e\u3059\u3002

"},{"location":"information/rules.html#_11","title":"\u30b3\u30f3\u30c7\u30a3\u30b7\u30e7\u30f3\u306e\u5897\u52a0","text":"

\u30b3\u30fc\u30b9\u306f\u4eee\u60f3\u7684\u306b\u8907\u6570\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u306b\u5206\u3051\u3066\u7ba1\u7406\u3055\u308c\u3066\u304a\u308a\u3001\u30bb\u30af\u30b7\u30e7\u30f3\u304b\u3089\u51fa\u308b\u305f\u3073\u306b\u30b3\u30f3\u30c7\u30a3\u30b7\u30e7\u30f3\u304c\u4e00\u5b9a\u5024\u5897\u52a0\u3057\u307e\u3059\u3002\u307e\u305f\u3001\u30b3\u30fc\u30b9\u306b\u306f\u4ee5\u4e0b\u306e\u753b\u50cf\u306e\u3088\u3046\u306b\u7d2b\u8272\u306e\u67a0\u3067\u8868\u793a\u3055\u308c\u305f\u4eee\u60f3\u7684\u306a\u969c\u5bb3\u7269\u304c\u8a2d\u7f6e\u3055\u308c\u3066\u304a\u308a\u3001\u3053\u308c\u306b\u885d\u7a81\u3057\u305f\u5834\u5408\u3082\u30b3\u30f3\u30c7\u30a3\u30b7\u30e7\u30f3\u304c\u5897\u52a0\u3057\u307e\u3059\uff08\u4eee\u60f3\u969c\u5bb3\u7269\u306f\u8eca\u4e21\u306e\u7269\u7406\u7684\u306a\u6319\u52d5\u306b\u306f\u4e00\u5207\u5f71\u97ff\u3092\u53ca\u307c\u3057\u307e\u305b\u3093\uff09\u3002

\u4eee\u60f3\u969c\u5bb3\u7269\u306f\u8eca\u4e21\u304c\u30bb\u30af\u30b7\u30e7\u30f3\u304b\u3089\u51fa\u308b\u30bf\u30a4\u30df\u30f3\u30b0\u3067\u30bb\u30af\u30b7\u30e7\u30f3\u5185\u306e\u30e9\u30f3\u30c0\u30e0\u306a\u4f4d\u7f6e\u306b\u751f\u6210\u3055\u308c\u307e\u3059\u3002\u4e8c\u5468\u76ee\u4ee5\u964d\u306f\u30bb\u30af\u30b7\u30e7\u30f3\u5185\u306e\u4eee\u60f3\u969c\u5bb3\u7269\u3092\u524a\u9664\u3057\u305f\u4e0a\u3067\u518d\u5ea6\u751f\u6210\u3059\u308b\u305f\u3081\u3001\u540c\u3058\u30bb\u30af\u30b7\u30e7\u30f3\u306e\u4e2d\u306b\u8907\u6570\u306e\u4eee\u60f3\u969c\u5bb3\u7269\u304c\u8a2d\u7f6e\u3055\u308c\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u307e\u305f\u3001\u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u30a8\u30ea\u30a2\u306e\u4ed8\u8fd1\u306b\u306f\u4eee\u60f3\u969c\u5bb3\u7269\u306f\u751f\u6210\u3055\u308c\u307e\u305b\u3093\u3002

"},{"location":"information/schedule.html","title":"\u5927\u4f1a\u60c5\u5831","text":""},{"location":"information/schedule.html#_2","title":"\u5168\u4f53\u306e\u6d41\u308c","text":""},{"location":"information/schedule.html#_3","title":"\u65e5\u7a0b","text":"\u30a4\u30d9\u30f3\u30c8 \u65e5\u4ed8 \u53c2\u52a0\u8005\u767b\u9332 2024\u5e745\u670827\u65e5\uff5e7\u67081\u65e5 \u4ea4\u6d41\u4f1a 2024\u5e746\u670821\u65e5 \u4e88\u9078 2024\u5e747\u67082\u65e5\uff5e9\u67082\u65e5 \u4e88\u9078\u8868\u5f70\u5f0f 2024\u5e749\u6708\u9803\uff08\u4e88\u5b9a\uff09 \u4e8b\u524d\u7df4\u7fd2\u65e5 2024\u5e7410\u670810\u65e5\u301c11\u65e5 \u4e8b\u524d\u7df4\u7fd2\u65e5 2024\u5e7411\u67081\u65e5 \u6e96\u6c7a\u52dd 2024\u5e7411\u67082\u65e5 \u6c7a\u52dd 2024\u5e7411\u67083\u65e5 \u6c7a\u52dd\u8868\u5f70\u5f0f\u30fb\u4ea4\u6d41\u4f1a 2024\u5e7412\u6708\u9803"},{"location":"preliminaries/check-results.html","title":"\u7d50\u679c\u306e\u78ba\u8a8d","text":"

\u3053\u306e\u30da\u30fc\u30b8\u3067\u306f\u672c\u5927\u4f1a\u306e\u30eb\u30fc\u30eb\u30fb\u9806\u4f4d\u4ed8\u3051\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002\u306a\u304a\u3001\u3053\u306e\u30da\u30fc\u30b8\u306e\u5185\u5bb9\u306f\u5927\u4f1a\u671f\u9593\u4e2d\u306b\u5909\u66f4\u3055\u308c\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002

"},{"location":"preliminaries/check-results.html#ranking-system","title":"Ranking System","text":"

\u4ee5\u4e0b\u306e\u624b\u9806\u3067\u30b9\u30b3\u30a2\u306e\u8a08\u7b97\u304c\u884c\u308f\u308c\u307e\u3059\u3002\u8907\u6570\u56de\u306e\u8d70\u884c\u3092\u884c\u3063\u305f\u5834\u5408\u306f\u3088\u308a\u30b9\u30b3\u30a2\u306e\u9ad8\u3044\u65b9\u3092\u63a1\u7528\u3059\u308b\u3082\u306e\u3068\u3057\u307e\u3059\u3002 \u8d70\u884c\u4e2d\u6b62\u3068\u306a\u3063\u305f\u5834\u5408\u306f\u5468\u56de\u6570=0\u3068\u3057\u3066\u6271\u3044\u307e\u3059\u3002

  1. \u8d70\u884c\u7d42\u4e86\u6642\u70b9\u3067\u306e\u5468\u56de\u6570\u306e\u591a\u3055

  2. \u6700\u7d42\u5468\u307e\u3067\u306e\u30e9\u30c3\u30d7\u30bf\u30a4\u30e0\u306e\u5408\u8a08\u306e\u77ed\u3055

\u7279\u5225\u8cde\uff1a\u4e88\u9078\u306f\u30b7\u30fc\u30c9\u67a0\u3092\u8a2d\u3051\u3066\u3001\u6c7a\u52dd\u306f\u8868\u5f70

  • Best Lap Time : \u4e88\u9078\u306fSIM\u3067\u8a08\u6e2c\u3001\u6c7a\u52dd\u306fTOM\u2019S\u306e\u30b7\u30b9\u30c6\u30e0\u3092\u4f7f\u7528

  • Best Comfortable Ride\uff1a\u4e88\u9078\u306fSIM\u3067\u8a08\u6e2c\u3001\u6c7a\u52dd\u306f\u6c34\u3092\u30b0\u30e9\u30b9\u306b\u5165\u308c\u3066\u8a08\u91cf\u3059\u308b\u3053\u3068\u3067\u5bfe\u5fdc

  • \u30a4\u30f3\u30bf\u30e9\u30af\u30b7\u30e7\u30f3\u30fb\u5e45\u5e83\u3044\u5206\u91ce\u306e\u30a8\u30f3\u30b8\u30cb\u30a2\u3092\u8868\u5f70

\u30e9\u30f3\u30ad\u30f3\u30b0\u4f8b

Lap Time Gap \u9806\u4f4d 7 04:41.000 \u2015 1 7 04:47.000 +00:06.000 2 7 04:54.000 +00:13.000 3 6 04:18.000 \u2015 4 6 04:29.000 +00:11.000 5 6 04:42.000 +00:24.000 6 6 04:56.000 +00:38.000 7 5 04:05.000 \u2015 8 5 04:23.000 +00:18.000 9"},{"location":"preliminaries/check-results.html#submission","title":"Submission","text":"

\u53c2\u52a0\u8005\u306e\u7686\u69d8\u306b\u306f\u3001\u958b\u767a\u3057\u305f\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3092\u63d0\u51fa\u7528\u306e\u30da\u30fc\u30b8\u304b\u3089\u8a55\u4fa1\u30b7\u30b9\u30c6\u30e0\u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u3066\u3044\u305f\u3060\u304d\u307e\u3059\u3002\u8a73\u7d30\u306f\u3053\u3061\u3089\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002

"},{"location":"preliminaries/check-results.html#how-to-check-results","title":"How to check results","text":"

\u7d50\u679c\u306e\u30b9\u30b3\u30a2\u306fresult-summary.json\u306b\u9001\u3089\u308c\u307e\u3059\u3002

"},{"location":"preliminaries/check-results.html#_2","title":"\u7d50\u679c\u306e\u30ed\u30b0\u5f62\u5f0f","text":"

\u7d50\u679c\u306f./output/result-summary.json \u306b\u4ee5\u4e0b\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3067\u51fa\u529b\u3055\u308c\u307e\u3059\u3002

{\n  \"laps\": [50.12, 50.34, 50.56, 50.78, 50.90],\n  \"min_time\": 50.12,\n  \"max_jerk\": 32.10\n}\n
"},{"location":"preliminaries/submission.html","title":"\u63d0\u51fa","text":""},{"location":"preliminaries/submission.html#_2","title":"\u30aa\u30f3\u30e9\u30a4\u30f3\u74b0\u5883","text":"

\u672c\u5927\u4f1a\u3067\u306f\u3001\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u30fc\u3068\u81ea\u52d5\u63a1\u70b9\u6a5f\u80fd\u3092\u5099\u3048\u305f\u30aa\u30f3\u30e9\u30a4\u30f3\u74b0\u5883\u3092\u4f7f\u7528\u3057\u3066\u63a1\u70b9\u304c\u884c\u308f\u308c\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u624b\u9806\u306b\u5f93\u3063\u3066\u3001\u4f5c\u6210\u3057\u305f\u30d1\u30c3\u30b1\u30fc\u30b8\u7fa4\u3092\u30aa\u30f3\u30e9\u30a4\u30f3\u74b0\u5883\u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u5f8c\u3001\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u304c\u81ea\u52d5\u3067\u958b\u59cb\u3055\u308c\u3001\u7d50\u679c\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002

\u63d0\u51fa\u306f\u4ee5\u4e0b\u306e\u624b\u9806\u3067\u884c\u3044\u307e\u3059\u3002

  1. \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306e\u5727\u7e2e
  2. \u30ed\u30fc\u30ab\u30eb\u8a55\u4fa1\u74b0\u5883\u3067\u306e\u52d5\u4f5c\u78ba\u8a8d
  3. \u30aa\u30f3\u30e9\u30a4\u30f3\u63a1\u70b9\u74b0\u5883\u3078\u306e\u63d0\u51fa
"},{"location":"preliminaries/submission.html#_3","title":"\u30aa\u30f3\u30e9\u30a4\u30f3\u74b0\u5883\u3078\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u624b\u9806","text":"
  1. \u52d5\u4f5c\u78ba\u8a8d

    1.1. \u4e8b\u524d\u6e96\u5099

    • aichallenge_submit\u3092\u5727\u7e2e\u3057\u3001\u7d50\u679c\u51fa\u529b\u7528\u306e\u30d5\u30a9\u30eb\u30c0\u3092\u751f\u6210\u3057\u307e\u3059\u3002
    • ./create_submit_file.bash

    1.2. Docker\u30a4\u30e1\u30fc\u30b8\u306e\u30d3\u30eb\u30c9

    • ./docker_build.sh eval

    1.3. Docker\u30b3\u30f3\u30c6\u30ca\u306e\u8d77\u52d5

    • \u8d77\u52d5\u5f8c\u3001\u81ea\u52d5\u3067Autoware\u304c\u7acb\u3061\u4e0a\u304c\u308a\u3001\u81ea\u52d5\u904b\u8ee2\u304c\u958b\u59cb\u3055\u308c\u307e\u3059\u3002
    • GPU\u7248AWSIM\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408: ./docker_run.sh eval gpu
    • CPU\u7248AWSIM\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408: ./docker_run.sh eval cpu

    1.4. result.json\u306e\u78ba\u8a8d

    • \u8a55\u4fa1\u5b8c\u4e86\u5f8c\u3001output/latest\u30d5\u30a9\u30eb\u30c0\u306b\u4ee5\u4e0b\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u683c\u7d0d\u3055\u308c\u307e\u3059\u3002
      • autoware.log
      • rosbag2_autoware
      • capture
      • result-summary.json
      • result-details.json
  2. \u30aa\u30f3\u30e9\u30a4\u30f3\u74b0\u5883\u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9

    \u30aa\u30f3\u30e9\u30a4\u30f3\u74b0\u5883\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3001\u53f3\u4e0a\u300cLOG IN\u300d\u30dc\u30bf\u30f3\u304b\u3089\u30ed\u30b0\u30a4\u30f3\u3057\u307e\u3059\u3002

    \u30ed\u30b0\u30a4\u30f3\u304c\u5b8c\u4e86\u3057\u305f\u3089\u7dd1\u8272\u306e\u300cUPLOAD\u300d\u30dc\u30bf\u30f3\u304b\u3089aichallenge_submit.tar.gz\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u5f8c\u3001\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306e\u30d3\u30eb\u30c9\u3068\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u304c\u9806\u306b\u5b9f\u65bd\u3055\u308c\u307e\u3059\u3002

    • \u6b63\u5e38\u306b\u7d42\u4e86\u3057\u305f\u5834\u5408\u3001\u63a1\u70b9\u5b8c\u4e86\u3068\u8868\u793a\u3055\u308c\u3001result.json\u304c\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u3001\u5404\u30e9\u30c3\u30d7\u30bf\u30a4\u30e0\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002
    • \u30b7\u30ca\u30ea\u30aa\u5b9f\u884c\u5f8c\u3001launch\u306b\u5931\u6557\u3057\u305f\u7b49\u3067\u30b9\u30b3\u30a2\u304c\u51fa\u529b\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u300c\u7d50\u679c\u7121\u3057\u300d\u3068\u8868\u793a\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u5834\u5408\u3001\u30b5\u30fc\u30d0\u30fc\u30b5\u30a4\u30c9\u3067\u306e\u5185\u90e8\u30a8\u30e9\u30fc\u306e\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u518d\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3092\u304a\u9858\u3044\u3057\u307e\u3059\u3002\u554f\u984c\u304c\u7d9a\u304f\u5834\u5408\u306f\u304a\u554f\u3044\u5408\u308f\u305b\u304f\u3060\u3055\u3044\u3002
    • \u30d3\u30eb\u30c9\u306b\u5931\u6557\u3057\u305f\u5834\u5408\u306f\u300c\u30d3\u30eb\u30c9\u5931\u6557\u300d\u3068\u8868\u793a\u3055\u308c\u307e\u3059\u3002\u624b\u9806\u306e\u78ba\u8a8d\u5f8c\u3001\u518d\u5ea6\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u3066\u304f\u3060\u3055\u3044\u3002
    • \u30e9\u30f3\u30ad\u30f3\u30b0\u306f\u3053\u308c\u307e\u3067\u306e\u63a1\u70b9\u3067\u306e\u6700\u9ad8\u70b9\u304c\u9069\u7528\u3055\u308c\u307e\u3059\u3002
    • \u63a1\u70b9\u5b9f\u884c\u4e2d\u306f\u65b0\u305f\u306a\u30bd\u30fc\u30b9\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u306f\u3067\u304d\u307e\u305b\u3093\u3002
    • \u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u306f1\u65e5\u306b10\u56de\u307e\u3067\u53ef\u80fd\u3067\u3001\u65e5\u672c\u6642\u95930\u6642\u306b\u56de\u6570\u304c\u30ea\u30bb\u30c3\u30c8\u3055\u308c\u307e\u3059\u3002
  3. \u7d50\u679c\u306e\u78ba\u8a8d

    \u30aa\u30f3\u30e9\u30a4\u30f3\u74b0\u5883\u3067\u8a55\u4fa1\u304c\u7d42\u308f\u308b\u3068\u3001result.json\u304c\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u7d50\u679c\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002

  4. \u7d50\u679c\u306a\u3057\u306e\u5834\u5408

    4.1. package\u306e\u4f9d\u5b58\u95a2\u4fc2\u306b\u554f\u984c\u304c\u306a\u3044\u304b\u78ba\u8a8d

    • \u4f7f\u7528\u8a00\u8a9e\u306b\u5fdc\u3058\u3066\u3001package.xml\u3001setup.py\u3001\u307e\u305f\u306fCMakeLists.txt\u306b\u4f9d\u5b58\u95a2\u4fc2\u306e\u6f0f\u308c\u304c\u306a\u3044\u304b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002

    4.2. docker\u306e\u78ba\u8a8d

    • \u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067Docker\u5185\u3092\u78ba\u8a8d\u3057\u3001\u5fc5\u8981\u306a\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u6b63\u3057\u304f\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30fb\u30d3\u30eb\u30c9\u3055\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002

      • docker run -it aichallenge-2024-eval:latest /bin/bash
    • \u78ba\u8a8d\u3059\u308b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea:

      • /aichallenge/workspace/*
      • /autoware/install/*
"},{"location":"setup/build-docker.html","title":"\u5927\u4f1a\u7528\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u30d3\u30eb\u30c9\u30fb\u5b9f\u884c","text":"

\u5927\u4f1a\u7528\u30ea\u30dd\u30b8\u30c8\u30ea\u3067\u306f\u3001\u5b9f\u969b\u306e\u52d5\u4f5c\u74b0\u5883\u306f\u3059\u3079\u3066Docker\u5185\u3067\u5b8c\u7d50\u3057\u3066\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u5229\u7528\u306f\u4ee5\u4e0b\u306e\u6d41\u308c\u3067\u884c\u3044\u307e\u3059\u3002

  1. \u5927\u4f1a\u74b0\u5883\u306eDocker\u30a4\u30e1\u30fc\u30b8\u306e\u30d3\u30eb\u30c9
  2. Docker\u30b3\u30f3\u30c6\u30ca\u4e0a\u3067\u306eAutoware\u306e\u30d3\u30eb\u30c9
  3. Docker\u30b3\u30f3\u30c6\u30ca\u4e0a\u3067\u306eAutoware\u3068\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u306e\u540c\u6642\u8d77\u52d5
"},{"location":"setup/build-docker.html#docker","title":"\u5927\u4f1a\u74b0\u5883\u306eDocker\u30a4\u30e1\u30fc\u30b8\u306e\u30d3\u30eb\u30c9","text":"

\u518d\u5ea6Alt+Ctrl+T\u3067\u30bf\u30fc\u30df\u30ca\u30eb\u3092\u7acb\u3061\u4e0a\u3052\u3066\u4e0b\u3055\u3044\u3002\u4ee5\u4e0b\u306b\u5f93\u3063\u3066\u30b3\u30de\u30f3\u30c9\u3092Ctrl+Shift+P\u3067\u8cbc\u308a\u4ed8\u3051Enter\u3067\u5b9f\u884c\u3057\u307e\u3059\u3002

\u307e\u305a\u5927\u4f1a\u7528\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u5165\u308a\u307e\u3059\u3002

cd ~/aichallenge-2024\n

Docker\u30a4\u30e1\u30fc\u30b8\u306e\u30d3\u30eb\u30c9\u3092\u884c\u3044\u307e\u3059\u3002

./docker_build.sh dev\n
docker images\n

\u3067\u4ee5\u4e0b\u306e\u30a4\u30e1\u30fc\u30b8\u304c\u751f\u6210\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3057\u3087\u3046\u3002

aichallenge-2024-dev   latest   df2e83a20349   33 minutes ago   8.9GB\n
"},{"location":"setup/build-docker.html#dockerautoware","title":"Docker\u30b3\u30f3\u30c6\u30ca\u4e0a\u3067\u306eAutoware\u306e\u30d3\u30eb\u30c9","text":"

\u4ee5\u4e0b\u3092\u5b9f\u884c\u3057\u3066Docker\u30b3\u30f3\u30c6\u30ca\u3092\u7acb\u3061\u4e0a\u3052\u307e\u3059\u3002

cd ~/aichallenge-2024\n./docker_run.sh dev cpu\n

\u7279\u306b\u4f55\u3082\u5909\u308f\u3063\u3066\u3044\u306a\u3044\u3088\u3046\u306b\u898b\u3048\u307e\u3059\u304c\u3001\u4e0a\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3068\u74b0\u5883\u304cDocker\u30b3\u30f3\u30c6\u30ca\u5185\u90e8\u306b\u79fb\u884c\u3057\u307e\u3059\u3002\u4eca\u306e\u74b0\u5883\u304cDocker\u30b3\u30f3\u30c6\u30ca\u5185\u304b\u3069\u3046\u304b\u306f\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u4f55\u3082\u8868\u793a\u3055\u308c\u3066\u3044\u306a\u3044\u304b\u3092\u78ba\u8a8d\u3059\u308b\u306e\u304c\u308f\u304b\u308a\u3084\u3059\u3044\u3067\u3059\u3002

ls ~\n

Docker\u30b3\u30f3\u30c6\u30ca\u5185\u3067\u4ee5\u4e0b\u3092\u5b9f\u884c\u3057\u3066Autoware\u3092\u30d3\u30eb\u30c9\u3057\u307e\u3059\u3002

cd /aichallenge\n./build_autoware.bash\n
"},{"location":"setup/build-docker.html#dockerautowaresimulator","title":"Docker\u30b3\u30f3\u30c6\u30ca\u4e0a\u3067\u306eAutoware\u3068Simulator\u306e\u5b9f\u884c","text":"

Autoware\u306e\u30d3\u30eb\u30c9\u5f8c\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002

./run_evaluation.bash\n

\u4e0b\u8a18\u306e\u69d8\u306a\u753b\u9762\u304c\u8868\u793a\u3055\u308c\u305f\u3089\u8d77\u52d5\u5b8c\u4e86\u3067\u3059\u3002\u7d42\u4e86\u3059\u308b\u306b\u306f\u30bf\u30fc\u30df\u30ca\u30eb\u4e0a\u3067CTRL + C\u3092\u5165\u529b\u3057\u307e\u3059\u3002

"},{"location":"setup/build-docker.html#next-step","title":"Next Step: \u958b\u767a\u3092\u3057\u3066\u307f\u308b","text":"

\u4ee5\u4e0a\u3067\u74b0\u5883\u69cb\u7bc9\u306f\u7d42\u4e86\u3067\u3059\uff01\u6b21\u306f\u5b9f\u969b\u306b\u958b\u767a\u3092\u884c\u3063\u3066\u307f\u307e\u3057\u3087\u3046\u3002

"},{"location":"setup/docker.html","title":"\u4eee\u60f3\u74b0\u5883\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":""},{"location":"setup/docker.html#_2","title":"\u4f9d\u5b58\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":"

\u307e\u305a\u306f\u5fc5\u8981\u306a\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002

sudo apt update\nsudo apt install -y python3-pip ca-certificates curl gnupg\n
"},{"location":"setup/docker.html#docker","title":"Docker\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":"

\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u901a\u308a\u306b\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002

sudo install -m 0755 -d /etc/apt/keyrings\ncurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg\nsudo chmod a+r /etc/apt/keyrings/docker.gpg\necho \\\n  \"deb [arch=\"$(dpkg --print-architecture)\" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \\\n  \"$(. /etc/os-release && echo \"$VERSION_CODENAME\")\" stable\" | \\\n  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null\n\nsudo apt-get update\nsudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin\nsudo usermod -aG docker $USER\nnewgrp docker\n

\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u6b63\u5e38\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002

sudo docker run hello-world\n

Hello from Docker!\u3068\u8868\u793a\u3055\u308c\u308c\u3070\u6b63\u5e38\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u51fa\u6765\u3066\u3044\u307e\u3059\u3002

"},{"location":"setup/docker.html#rocker","title":"rocker\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":"

rocker\u306fDocker\u30b3\u30f3\u30c6\u30ca\u306eGUI\u30a2\u30d7\u30ea\u3092\u7c21\u5358\u306b\u8d77\u52d5\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u30c4\u30fc\u30eb\u3067\u3059\u3002

\u516c\u5f0fREADME\u3067\u306fapt\u304b\u3089\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304c\u63a8\u5968\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u3001\u624b\u9806\u3068\u74b0\u5883\u3092\u30b7\u30f3\u30d7\u30eb\u306b\u3059\u308b\u305f\u3081\u306b\u3053\u3053\u3067\u306fpip\u304b\u3089\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002

pip install rocker\n

\u30c7\u30d5\u30a9\u30eb\u30c8\u8a2d\u5b9a\u3067\u306frocker\u306e\u5b9f\u884c\u30d5\u30a1\u30a4\u30eb\u3078\u306e\u30d1\u30b9\u304c\u901a\u3063\u3066\u3044\u306a\u3044\u306e\u3067\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067.bashrc\u306b\u8ffd\u52a0\u3057\u3066\u304a\u304d\u307e\u3059\u3002

echo export PATH='$HOME/.local/bin:$PATH' >> ~/.bashrc\nsource ~/.bashrc\n
"},{"location":"setup/docker.html#autowaredocker","title":"Autoware\u74b0\u5883\u306eDocker\u30a4\u30e1\u30fc\u30b8\u53d6\u5f97","text":"

AI\u30c1\u30e3\u30ec\u30f3\u30b8\u3067\u4f7f\u7528\u3059\u308bautoware\u74b0\u5883\u306eDocker\u30a4\u30e1\u30fc\u30b8\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002

Docker\u30a4\u30e1\u30fc\u30b8\u306f10GB\u7a0b\u5ea6\u306e\u30b5\u30a4\u30ba\u304c\u3042\u308a\u3001\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u306b\u306f\u6642\u9593\u304c\u639b\u304b\u308b\u305f\u3081\u6709\u7ddaLAN\u3067\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3092\u63a8\u5968\u3057\u307e\u3059\u3002

docker pull ghcr.io/automotiveaichallenge/autoware-universe:humble-latest\n

\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3057\u307e\u3059\u3002

docker images\n

Docker\u30a4\u30e1\u30fc\u30b8\u304c\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u3066\u3044\u308c\u3070\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u51fa\u529b\u304c\u5f97\u3089\u308c\u307e\u3059\u3002

REPOSITORY                                        TAG                       IMAGE ID       CREATED         SIZE\nghcr.io/automotiveaichallenge/autoware-universe   humble-latest             30c59f3fb415   13 days ago     8.84GB\n
"},{"location":"setup/docker.html#next-step","title":"Next Step","text":"

2\u7a2e\u985e\u306eAWSIM\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002

\u521d\u3081\u3066\u306e\u65b9\u306f\u63cf\u753b\u306a\u3057AWSIM\u3078\u3001GPU\u642d\u8f09\u306ePC\u3092\u304a\u6301\u3061\u306e\u65b9\u3067\u3088\u308a\u30ea\u30c3\u30c1\u306a\u958b\u767a\u74b0\u5883\u3092\u3054\u7528\u610f\u3055\u308c\u305f\u3044\u65b9\u306f\u63cf\u753b\u3042\u308aAWSIM\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u304a\u9032\u307f\u4e0b\u3055\u3044\u3002

\u63cf\u753b\u306a\u3057AWSIM\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9

\u63cf\u753b\u3042\u308aAWSIM\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9

"},{"location":"setup/headless-simulation.html","title":"\u63cf\u753b\u306a\u3057AWSIM\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9","text":""},{"location":"setup/headless-simulation.html#awsim_1","title":"AWSIM\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9","text":"
  1. Google Drive \u304b\u3089\u6700\u65b0\u306e AWSIM.zip \u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3001aichallenge-2024/aichallenge/simulator \u306b\u5c55\u958b\u3057\u307e\u3059\u3002

  2. \u5b9f\u884c\u30d5\u30a1\u30a4\u30eb\u304caichallenge-2024/aichallenge/simulator/AWSIM/AWSIM.x86_64\u306b\u5b58\u5728\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002

\u4ee5\u4e0a\u3067\u74b0\u5883\u69cb\u7bc9\u306f\u7d42\u4e86\u3068\u306a\u308a\u307e\u3059\uff01

"},{"location":"setup/headless-simulation.html#next-step","title":"Next Step: \u5927\u4f1a\u7528\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u30d3\u30eb\u30c9\u30fb\u5b9f\u884c","text":""},{"location":"setup/requirements.html","title":"\u63a8\u5968\u74b0\u5883","text":"

\u672c\u5927\u4f1a\u3067\u4f7f\u7528\u3057\u3066\u3044\u305f\u3060\u304fPC\u306e\u52d5\u4f5c\u74b0\u5883\u3068\u3057\u3066\u4ee5\u4e0b\u3092\u63a8\u5968\u3057\u3066\u304a\u308a\u307e\u3059\u3002 \u63a8\u5968\u3068\u66f8\u304b\u308c\u3066\u3044\u308b\u3082\u306e\u306b\u95a2\u3057\u3066\u306f\u6e80\u305f\u3057\u3066\u3044\u306a\u304f\u3066\u3082\u52d5\u4f5c\u3059\u308b\u3053\u3068\u306f\u53ef\u80fd\u3067\u3059\u3002\u305f\u3060\u3057\u3001\u63a8\u5968\u3088\u308a\u3082\u4f4e\u3044\u30b9\u30da\u30c3\u30af\u3067\u52d5\u4f5c\u3055\u305b\u308b\u5834\u5408ROS 2\u5074\u3067\u306e\u5b9f\u884c\u901f\u5ea6\u304c\u5b89\u5b9a\u305b\u305a\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u5b9f\u884c\u306e\u5ea6\u306b\u6319\u52d5\u304c\u5927\u304d\u304f\u5909\u308f\u3063\u3066\u3057\u307e\u3046\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002

Warning

Windows\u74b0\u5883\u3057\u304b\u304a\u6301\u3061\u3067\u306a\u3044\u65b9\u306f\u3001Ubuntu22.04\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u304a\u9858\u3044\u3044\u305f\u3057\u307e\u3059\u3002Windows\u74b0\u5883\u3068\u540c\u3058\u30c7\u30a3\u30b9\u30af\u306bUbuntu\u74b0\u5883\u3092\u5165\u308c\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u304c\u3001\u4e0d\u6163\u308c\u306a\u5834\u5408Windows\u74b0\u5883\u3092\u7834\u58ca\u3057\u3066\u3057\u307e\u3046\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u65b0\u3057\u304f\u5916\u4ed8\u3051\u307e\u305f\u306f\u5185\u8535SSD\u3092\u8cfc\u5165\u3057\u305f\u3046\u3048\u3067\u305d\u3061\u3089\u3078\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u3059\u308b\u3053\u3068\u3092\u5f37\u304f\u304a\u52e7\u3081\u3057\u307e\u3059\u3002

Info

Ubuntu\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3053\u3061\u3089\u306e\u8a18\u4e8b\u304c\u53c2\u8003\u306b\u306a\u308a\u307e\u3059\u3002

"},{"location":"setup/requirements.html#awsim","title":"\u63cf\u753b\u306a\u3057\u306eAWSIM\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408","text":"
  • OS: Ubuntu 22.04
  • CPU: Intel Core i5\uff084\u30b3\u30a2\uff09\u4ee5\u4e0a\uff08\u63a8\u5968\uff09
  • \u30e1\u30e2\u30ea:
  • 8GB\u4ee5\u4e0a\uff08\u6700\u4f4e\uff09
  • 16GB\u4ee5\u4e0a\uff08\u63a8\u5968\uff09
  • SSD: 60GB\u4ee5\u4e0a
"},{"location":"setup/requirements.html#awsim_1","title":"\u63cf\u753b\u3042\u308a\u306eAWSIM\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408","text":"
  • OS: Ubuntu 22.04
  • CPU: Intel Corei7 (8 cores) or higher
  • GPU: NVIDIA Geforce VRAM 8 GB
  • Memory: 16 GB or more
  • Storage: SSD 60 GB or higher
"},{"location":"setup/requirements.html#next-step","title":"Next Step: \u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u306e\u30af\u30ed\u30fc\u30f3","text":""},{"location":"setup/visible-simulation.html","title":"\u63cf\u753b\u3042\u308aAWSIM\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 (\u53c2\u8003)","text":"

\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u63cf\u753b\u306a\u3057\u306eAWSIM\u3092\u914d\u5e03\u3057\u3066\u304a\u308a\u307e\u3059\u304c\u3001\u63cf\u753b\u3042\u308a\u3092\u5e0c\u671b\u3055\u308c\u308b\u65b9\u306e\u74b0\u5883\u69cb\u7bc9\u65b9\u6cd5\u3082\u8a18\u8f09\u3057\u3066\u304a\u308a\u307e\u3059\u3002GPU\u3092\u4f7f\u7528\u3059\u308b\u74b0\u5883\u69cb\u7bc9\u3067\u306f\u8a70\u307e\u3063\u3066\u9032\u307e\u306a\u304f\u306a\u308b\u4e8b\u4f8b\u304c\u591a\u3005\u3042\u308a\u307e\u3057\u305f\u306e\u3067\u3001\u63a8\u5968\u74b0\u5883\u3092\u6e80\u305f\u3059\u306e\u30b9\u30da\u30c3\u30af\u306ePC\u304c\u7528\u610f\u3067\u304d\u306a\u3044\u65b9\u3084\u521d\u3081\u3066\u306e\u3054\u53c2\u52a0\u306e\u65b9\u306f\u3042\u304f\u307e\u3067\u3082\u53c2\u8003\u7a0b\u5ea6\u3068\u3057\u3066\u304f\u3060\u3055\u3044\u3002

"},{"location":"setup/visible-simulation.html#nvidia","title":"NVIDIA\u30c9\u30e9\u30a4\u30d0\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":"
# \u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u8ffd\u52a0\nsudo add-apt-repository ppa:graphics-drivers/ppa\n\n# \u30d1\u30c3\u30b1\u30fc\u30b8\u30ea\u30b9\u30c8\u306e\u66f4\u65b0\nsudo apt update\n\n# \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\nsudo ubuntu-drivers autoinstall\n\n# \u518d\u8d77\u52d5\nreboot\n\n# \u518d\u8d77\u52d5\u306e\u5f8c\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\nnvidia-smi\n
"},{"location":"setup/visible-simulation.html#nvidia-container-toolkit","title":"NVIDIA Container Toolkit","text":"

NVIDIA Container Toolkit\u3092\u53c2\u8003\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u884c\u3044\u307e\u3059\u3002

# \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306e\u4e0b\u6e96\u5099\ndistribution=$(. /etc/os-release;echo $ID$VERSION_ID) \\\n      && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \\\n      && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \\\n            sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \\\n            sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list\n\n# \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\nsudo apt-get update\nsudo apt-get install -y nvidia-container-toolkit\nsudo nvidia-ctk runtime configure --runtime=docker\nsudo systemctl restart docker\n\n#\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u3066\u3044\u308b\u304b\u3092\u30c6\u30b9\u30c8\nsudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi\n\n#\u6700\u5f8c\u306e\u30b3\u30de\u30f3\u30c9\u3067\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u51fa\u529b\u3055\u308c\u308c\u3070\u6210\u529f\u3067\u3059\u3002\n#\uff08\u4e0b\u8a18\u306fNVIDIA\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u304b\u3089\u306e\u5f15\u7528\u3067\u3059\uff09\n#\n# +-----------------------------------------------------------------------------+\n# | NVIDIA-SMI 450.51.06    Driver Version: 450.51.06    CUDA Version: 11.0     |\n# |-------------------------------+----------------------+----------------------+\n# | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |\n# | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |\n# |                               |                      |               MIG M. |\n# |===============================+======================+======================|\n# |   0  Tesla T4            On   | 00000000:00:1E.0 Off |                    0 |\n# | N/A   34C    P8     9W /  70W |      0MiB / 15109MiB |      0%      Default |\n# |                               |                      |                  N/A |\n# +-------------------------------+----------------------+----------------------+\n# +-----------------------------------------------------------------------------+\n# | Processes:                                                                  |\n# |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |\n# |        ID   ID                                                   Usage      |\n# |=============================================================================|\n# |  No running processes found                                                 |\n# +-----------------------------------------------------------------------------+\n
"},{"location":"setup/visible-simulation.html#vulkun","title":"Vulkun\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":"
sudo apt update\nsudo apt install -y libvulkan1\n
"},{"location":"setup/visible-simulation.html#awsim_1","title":"AWSIM\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9","text":"

Google Drive \u304b\u3089\u6700\u65b0\u306e AWSIM_GPU_**.zip \u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3001aichallenge-2024/aichallenge/simulator \u306b\u5c55\u958b\u3057\u307e\u3059\u3002

\u5b9f\u884c\u30d5\u30a1\u30a4\u30eb\u304c`aichallenge-2024/aichallenge/simulator/AWSIM_GPU_**/AWSIM.x86_64`\u306b\u5b58\u5728\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n
"},{"location":"setup/visible-simulation.html#awsim_2","title":"AWSIM\u306e\u8d77\u52d5\u78ba\u8a8d","text":"

\u63cf\u753b\u3042\u308a\u306eAWSIM\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u30b3\u30f3\u30c6\u30ca\u3092\u8d77\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002

cd aichallenge-2024\n./docker_build.sh dev\n./docker_run.sh dev gpu\n

\u30b3\u30f3\u30c6\u30ca\u3092\u8d77\u52d5\u3057\u305f\u30bf\u30fc\u30df\u30ca\u30eb(\u30b3\u30f3\u30c6\u30ca\u5185)\u3067\u4ee5\u4e0b\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002

cd /aichallenge\n./build_autoware.bash\n

Autoware\u306e\u30d3\u30eb\u30c9\u5f8c\u3001run_simulator.bash\u3092\u5909\u66f4\u3057\u307e\u3059\u3002AISIM_GPU_**\u306b\u306f\u5148\u7a0b\u5c55\u958b\u3057\u305f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002

#!/bin/bash\n\n# shellcheck disable=SC1091\nsource /aichallenge/workspace/install/setup.bash\nsudo ip link set multicast on lo\n/aichallenge/simulator/AWSIM_GPU_**/AWSIM.x86_64\n

run_evaluetion.bash\u306b\u5bfe\u3057\u3066\u3082\u540c\u69d8\u306b\u6b21\u306e\u5909\u66f4\u3092\u52a0\u3048\u307e\u3059\u3002

# AWSIM_DIRECTORY=/aichallenge/simulator/AWSIM\nAWSIM_DIRECTORY=/aichallenge/simulator/AWSIM_GPU_**\n

\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002

./run_evaluation.bash\n

\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u753b\u9762\u304c\u73fe\u308c\u305f\u3089\u6210\u529f\u3067\u3059\u3002

\u4ee5\u4e0a\u3067\u74b0\u5883\u69cb\u7bc9\u306f\u7d42\u4e86\u3068\u306a\u308a\u307e\u3059\uff01

"},{"location":"setup/visible-simulation.html#next-step","title":"Next Step: \u958b\u767a\u3092\u3057\u3066\u307f\u308b","text":"

\u306f\u3058\u3081\u65b9\u304b\u3089\u958b\u767a\u3092\u3057\u3066\u307f\u307e\u3057\u3087\u3046\uff01

"},{"location":"setup/workspace-setup.html","title":"\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u306e\u30af\u30ed\u30fc\u30f3","text":""},{"location":"setup/workspace-setup.html#_2","title":"\u4f9d\u5b58\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":"

Alt+Ctrl+T\u3067\u30bf\u30fc\u30df\u30ca\u30eb\u3092\u7acb\u3061\u4e0a\u3052\u3066\u304b\u3089\u3001\u4ee5\u4e0b\u306b\u5f93\u3063\u3066\u30b3\u30de\u30f3\u30c9\u3092Ctrl+Shift+P\u3067\u8cbc\u308a\u4ed8\u3051\u3001Enter\u3067\u5b9f\u884c\u3057\u307e\u3059\u3002 \u307e\u305a\u306f\u5fc5\u8981\u306a\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002

sudo apt update\nsudo apt install -y git\n
"},{"location":"setup/workspace-setup.html#_3","title":"\u5927\u4f1a\u7528\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u30af\u30ed\u30fc\u30f3","text":"

\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u7528\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u30af\u30ed\u30fc\u30f3\u3057\u307e\u3059\u3002\u3053\u3053\u3067\u306f\u30db\u30fc\u30e0\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u6307\u5b9a\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u304a\u597d\u304d\u306a\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u914d\u7f6e\u3057\u3066\u3044\u305f\u3060\u3044\u3066\u69cb\u3044\u307e\u305b\u3093\u3002

cd ~\ngit clone https://github.com/AutomotiveAIChallenge/aichallenge-2024.git\n
"},{"location":"setup/workspace-setup.html#next-step","title":"Next Step: \u4eee\u60f3\u74b0\u5883\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb","text":""},{"location":"specifications/hardware.html","title":"\u30cf\u30fc\u30c9\u30a6\u30a7\u30a2","text":""},{"location":"specifications/interface.html","title":"\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9","text":""},{"location":"specifications/interface.html#_2","title":"\u4e00\u89a7","text":"Interface Name Type Service /control/control_mode_request autoware_auto_vehicle_msgs/srv/ControlModeCommand Publisher /vehicle/status/control_mode autoware_auto_vehicle_msgs/msg/ControlModeReport Subscription /control/command/control_cmd autoware_auto_control_msgs/msg/AckermannControlCommand Publisher /vehicle/status/velocity_status autoware_auto_vehicle_msgs/msg/VelocityReport Publisher /vehicle/status/steering_status autoware_auto_vehicle_msgs/msg/SteeringReport Subscription /control/command/gear_cmd autoware_auto_vehicle_msgs/msg/GearCommand Publisher /vehicle/status/gear_status autoware_auto_vehicle_msgs/msg/GearReport Publisher /sensing/gnss/pose_with_covariance geometry_msgs/msg/PoseWithCovarianceStamped Publisher /sensing/imu/imu_raw sensor_msgs/msg/Imu Publisher /aichallenge/objects std_msgs.msg.Float64MultiArray Publisher /aichallenge/pitstop/area std_msgs.msg.Float64MultiArray Publisher /aichallenge/pitstop/condition std_msgs.msg.Int32 Publisher /aichallenge/pitstop/status std_msgs.msg.Float32"},{"location":"specifications/interface.html#controlcommandcontrol_cmd","title":"/control/command/control_cmd","text":"Name Description stamp \u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u9001\u4fe1\u6642\u523b lateral.stamp \u672a\u4f7f\u7528 lateral.steering_tire_angle \u76ee\u6a19\u64cd\u8235\u89d2 lateral.steering_tire_rotation_rate \u672a\u4f7f\u7528 longitudinal.stamp \u672a\u4f7f\u7528 longitudinal.speed \u672a\u4f7f\u7528 longitudinal.acceleration \u76ee\u6a19\u52a0\u901f\u5ea6 longitudinal.jerk \u672a\u4f7f\u7528"},{"location":"specifications/interface.html#vehiclestatusvelocity_status","title":"/vehicle/status/velocity_status","text":"Name Description header.stamp \u30c7\u30fc\u30bf\u306e\u53d6\u5f97\u6642\u523b header.frame_id \u30d5\u30ec\u30fc\u30e0ID (base_link) longitudinal_velocity \u7e26\u901f\u5ea6 lateral_velocity \u6a2a\u901f\u5ea6 heading_rate \u89d2\u901f\u5ea6"},{"location":"specifications/interface.html#vehiclestatussteering_status","title":"/vehicle/status/steering_status","text":"Name Description stamp \u30c7\u30fc\u30bf\u306e\u53d6\u5f97\u6642\u523b steering_tire_angle \u64cd\u8235\u89d2"},{"location":"specifications/interface.html#controlcommandgear_cmd","title":"/control/command/gear_cmd","text":"Name Description stamp \u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u9001\u4fe1\u6642\u523b command \u30ae\u30a2\u306e\u7a2e\u985e"},{"location":"specifications/interface.html#vehiclestatusgear_status","title":"/vehicle/status/gear_status","text":"Name Description stamp \u30c7\u30fc\u30bf\u306e\u53d6\u5f97\u6642\u523b report \u30ae\u30a2\u306e\u7a2e\u985e"},{"location":"specifications/interface.html#sensinggnsspose_with_covariance","title":"/sensing/gnss/pose_with_covariance","text":"Name Description header.stamp \u30c7\u30fc\u30bf\u306e\u53d6\u5f97\u6642\u523b header.frame_id \u30d5\u30ec\u30fc\u30e0ID (map) pose.pose.position \u8eca\u4e21\u4f4d\u7f6e (base_link \u539f\u70b9\u306e\u4f4d\u7f6e) pose.pose.orientation \u672a\u4f7f\u7528 pose.covariance \u4f4d\u7f6e\u7cbe\u5ea6"},{"location":"specifications/interface.html#sensingimuimu_raw","title":"/sensing/imu/imu_raw","text":"Name Description header.stamp \u30c7\u30fc\u30bf\u306e\u53d6\u5f97\u6642\u523b header.frame_id \u30d5\u30ec\u30fc\u30e0ID (imu_link) orientation \u65b9\u4f4d angular_velocity \u89d2\u901f\u5ea6 linear_acceleration \u52a0\u901f\u5ea6"},{"location":"specifications/interface.html#aichallengeobjects","title":"/aichallenge/objects","text":"Name Description data[N * 4 + 0] N\u756a\u76ee\u306e\u4eee\u60f3\u969c\u5bb3\u7269\u306eX\u5ea7\u6a19 data[N * 4 + 1] N\u756a\u76ee\u306e\u4eee\u60f3\u969c\u5bb3\u7269\u306eY\u5ea7\u6a19 data[N * 4 + 2] N\u756a\u76ee\u306e\u4eee\u60f3\u969c\u5bb3\u7269\u306eZ\u5ea7\u6a19 data[N * 4 + 3] N\u756a\u76ee\u306e\u4eee\u60f3\u969c\u5bb3\u7269\u306e\u534a\u5f84"},{"location":"specifications/interface.html#aichallengepitstoparea","title":"/aichallenge/pitstop/area","text":"Name Description data[0] \u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u30a8\u30ea\u30a2\u4e2d\u5fc3\u306eX\u5ea7\u6a19 data[1] \u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u30a8\u30ea\u30a2\u4e2d\u5fc3\u306eY\u5ea7\u6a19 data[2] \u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u30a8\u30ea\u30a2\u4e2d\u5fc3\u306eZ\u5ea7\u6a19 data[3] \u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u30a8\u30ea\u30a2\u306e\u65b9\u5411\u306e\u30af\u30aa\u30fc\u30bf\u30cb\u30aa\u30f3X\u5024 data[4] \u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u30a8\u30ea\u30a2\u306e\u65b9\u5411\u306e\u30af\u30aa\u30fc\u30bf\u30cb\u30aa\u30f3Y\u5024 data[5] \u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u30a8\u30ea\u30a2\u306e\u65b9\u5411\u306e\u30af\u30aa\u30fc\u30bf\u30cb\u30aa\u30f3Z\u5024 data[6] \u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u30a8\u30ea\u30a2\u306e\u65b9\u5411\u306e\u30af\u30aa\u30fc\u30bf\u30cb\u30aa\u30f3W\u5024 data[7] \u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u30a8\u30ea\u30a2\u306eX\u65b9\u5411\u306e\u30b5\u30a4\u30ba data[8] \u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u30a8\u30ea\u30a2\u306eY\u65b9\u5411\u306e\u30b5\u30a4\u30ba"},{"location":"specifications/interface.html#aichallengepitstopcondition","title":"/aichallenge/pitstop/condition","text":"Name Description data \u8eca\u4e21\u306e\u30b3\u30f3\u30c7\u30a3\u30b7\u30e7\u30f3\u5024"},{"location":"specifications/interface.html#aichallengepitstopstatus","title":"/aichallenge/pitstop/status","text":"Name Description data \u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u306e\u5224\u5b9a\u304c\u6210\u7acb\u3057\u3066\u3044\u308b\u79d2\u6570"},{"location":"specifications/simulator.html","title":"\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u30fc","text":""},{"location":"specifications/simulator.html#_2","title":"\u6982\u8981","text":"

\u3053\u306e\u30da\u30fc\u30b8\u3067\u306fAI\u30c1\u30e3\u30ec\u30f3\u30b8\u3067\u4f7f\u7528\u3055\u308c\u308b\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u30fc\u306e\u4ed5\u69d8\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002

\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u30fc\u306f\u3001Autoware\u306e\u305f\u3081\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u81ea\u52d5\u904b\u8ee2\u30b7\u30df\u30e5\u30ec\u30fc\u30bf\u30fc\u300cAWSIM\u300d\u3092\u30d9\u30fc\u30b9\u3068\u3057\u3066\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002

"},{"location":"specifications/simulator.html#_3","title":"\u8d77\u52d5\u30aa\u30d7\u30b7\u30e7\u30f3","text":"\u30aa\u30d7\u30b7\u30e7\u30f3 \u578b \u30c7\u30d5\u30a9\u30eb\u30c8 \u8aac\u660e --timeout float 420.0 \u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002 --endless bool false \u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u306e\u6709\u52b9/\u7121\u52b9\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002 --pit-stop bool true \u30d4\u30c3\u30c8\u30b9\u30c8\u30c3\u30d7\u95a2\u9023\u306e\u6a5f\u80fd\u306e\u6709\u52b9/\u7121\u52b9\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002 --replay0 string \u4ee5\u524d\u306e\u8d70\u884c\u30ed\u30b0\u3092\u8aad\u307f\u8fbc\u307f\u5225\u8eca\u4e21\u3068\u3057\u3066\u518d\u751f\u3057\u307e\u3059\u3002

\u30ea\u30d7\u30ec\u30a4\u306e\u30ed\u30b0\u306b\u306f result-details.json \u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u307e\u305f\u3001\u30ea\u30d7\u30ec\u30a4\u306f --replay0 \u304b\u3089 --replay9 \u307e\u306710\u53f0\u306e\u8eca\u4e21\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u3059\u3002

"},{"location":"specifications/simulator.html#_4","title":"\u30ad\u30fc\u30dc\u30fc\u30c9\u64cd\u4f5c","text":"\u64cd\u4f5c \u30ad\u30fc \u7d42\u4e86 Esc \u30ea\u30bb\u30c3\u30c8 Space \u30ab\u30e1\u30e9\u5207\u308a\u66ff\u3048 C \u30a2\u30af\u30bb\u30eb Arrow Up \u30d6\u30ec\u30fc\u30ad Arrow Down \u30b9\u30c6\u30a2\u30ea\u30f3\u30b0 Arrow Left, Right \u30ae\u30a2 (D) D \u30ae\u30a2 (R) R \u30ae\u30a2 (N) N \u30ae\u30a2 (P) P"},{"location":"specifications/simulator.html#_5","title":"\u30c8\u30d4\u30c3\u30af\u64cd\u4f5c","text":"\u30c8\u30d4\u30c3\u30af \u578b \u8aac\u660e /aichallenge/awsim/status std_msgs.msg.Float32MultiArray \u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u5404\u7a2e\u72b6\u614b\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002 /aichallenge/awsim/change_time_scale std_msgs.msg.Float32 \u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u30bf\u30a4\u30e0\u30b9\u30b1\u30fc\u30eb\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002 /aichallenge/awsim/reset std_msgs.msg.Empty \u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u30ea\u30bb\u30c3\u30c8\u3057\u307e\u3059\u3002

\u4e0a\u8a18\u306e /aichallenge/awsim/status \u306f\u4ee5\u4e0b\u306e\u69cb\u9020\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002

\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 \u5024 0 \u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8 1 \u30e9\u30c3\u30d7\u6570 2 \u30e9\u30c3\u30d7\u30bf\u30a4\u30e0 3 \u30bb\u30af\u30b7\u30e7\u30f3 4 \u30bf\u30a4\u30e0\u30b9\u30b1\u30fc\u30eb"},{"location":"specifications/simulator.html#_6","title":"\u8eca\u4e21\uff08\u30ec\u30fc\u30b7\u30f3\u30b0\u30ab\u30fc\u30c8\uff09","text":"

\u8eca\u4e21\u306fAWSIM\u306b\u304a\u3051\u308bEGO Vehicle\u306e\u4ed5\u69d8\u306b\u6e96\u62e0\u3057\u3066\u304a\u308a\u3001\u5b9f\u969b\u306e\u30ec\u30fc\u30b7\u30f3\u30b0\u30ab\u30fc\u30c8\u306b\u8fd1\u3044\u30b9\u30da\u30c3\u30af\u3067\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002

"},{"location":"specifications/simulator.html#_7","title":"\u30d1\u30e9\u30e1\u30fc\u30bf","text":"

\u8eca\u4e21\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u4ee5\u4e0b\u306e\u8868\u306b\u307e\u3068\u3081\u3066\u3044\u307e\u3059\u3002

\u9805\u76ee \u5024 \u8eca\u4e21\u91cd\u91cf 160 kg \u5168\u9577 200 cm \u5168\u5e45 145 cm \u30db\u30a4\u30fc\u30eb\u30d9\u30fc\u30b9 108.7 cm \u524d\u8f2a\u30bf\u30a4\u30e4\u76f4\u5f84 24 cm \u524d\u8f2a\u30bf\u30a4\u30e4\u5e45 13 cm \u524d\u8f2a\u30db\u30a4\u30fc\u30eb\u30c8\u30ec\u30c3\u30c9 93 cm \u5f8c\u8f2a\u30bf\u30a4\u30e4\u76f4\u5f84 24 cm \u5f8c\u8f2a\u30bf\u30a4\u30e4\u5e45 18 cm \u5f8c\u8f2a\u30db\u30a4\u30fc\u30eb\u30c8\u30ec\u30c3\u30c9 112 cm \u6700\u5927\u30b9\u30c6\u30a2\u30ea\u30f3\u30b0\u8ee2\u8235\u89d2 80 \u00b0 \u99c6\u52d5\u6642\u6700\u5927\u52a0\u901f\u5ea6 3.2 m/s^2"},{"location":"specifications/simulator.html#vehicle","title":"Vehicle\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8","text":"

Vehicle\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u8a2d\u5b9a\u5185\u5bb9\u3092\u4ee5\u4e0b\u306e\u8868\u306b\u307e\u3068\u3081\u3066\u3044\u307e\u3059\u3002\u5404\u9805\u76ee\u306e\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3053\u3061\u3089\u306e\u30de\u30cb\u30e5\u30a2\u30eb\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002

\u9805\u76ee \u5024 Use Inertia Off Physics Settings (experimental) Sleep Velocity Threshold 0.02 Sleep Time Threshold 0 Skidding Cancel Rate 0.236 Input Settings Max Steer Angle Input 80 Max Acceleration Input 3.2"},{"location":"specifications/simulator.html#rigidbody","title":"Rigidbody\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8","text":"

Rigidbody\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u8a2d\u5b9a\u5185\u5bb9\u3092\u4ee5\u4e0b\u306e\u8868\u306b\u307e\u3068\u3081\u3066\u3044\u307e\u3059\u3002\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3053\u3061\u3089\u306e\u30de\u30cb\u30e5\u30a2\u30eb\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002

\u9805\u76ee \u5024 Mass 160 Drag 0 Angular Drag 0"},{"location":"specifications/simulator.html#com","title":"CoM\u4f4d\u7f6e","text":"

CoM(Center of Mass)\u306f\u3001\u8eca\u4e21Rigidbody\u306e\u8cea\u91cf\u4e2d\u5fc3\u3067\u3059\u3002CoM\u4f4d\u7f6e\u306f\u3001\u8eca\u4e21\u306e\u4e2d\u5fc3\u304b\u3064\u8eca\u8f2a\u8ef8\u306e\u9ad8\u3055\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002

"},{"location":"specifications/simulator.html#_8","title":"\u8eca\u4e21\u30b3\u30e9\u30a4\u30c0\u30fc","text":"

\u8eca\u4e21\u30b3\u30e9\u30a4\u30c0\u30fc\u306f\u3001\u8eca\u4e21\u3068\u4ed6\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3084\u30c1\u30a7\u30c3\u30af\u30dd\u30a4\u30f3\u30c8\u3068\u306e\u63a5\u89e6\u5224\u5b9a\u306b\u5229\u7528\u3055\u308c\u307e\u3059\u3002\u8eca\u4e21\u30b3\u30e9\u30a4\u30c0\u30fc\u306f\u8eca\u4e21\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30e1\u30c3\u30b7\u30e5\u3092\u30d9\u30fc\u30b9\u3068\u3057\u3066\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002

"},{"location":"specifications/simulator.html#_9","title":"\u30db\u30a4\u30fc\u30eb\u30b3\u30e9\u30a4\u30c0\u30fc","text":"

\u8eca\u4e21\u306b\u306f\u5404\u8eca\u8f2a\u306b1\u3064\u305a\u3064\u3001\u5408\u8a084\u3064\u306e\u30db\u30a4\u30fc\u30eb\u30b3\u30e9\u30a4\u30c0\u30fc\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u304a\u308a\u3001\u7b49\u4fa1\u4e8c\u8f2a\u30e2\u30c7\u30eb\u3067\u306f\u306a\u304f\u56db\u8f2a\u30e2\u30c7\u30eb\u3067\u306e\u8eca\u4e21\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059\u3002

\u30db\u30a4\u30fc\u30eb\u30b3\u30e9\u30a4\u30c0\u30fc\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u30db\u30a4\u30fc\u30eb\u30b3\u30e9\u30a4\u30c0\u30fc\u306e\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3053\u3061\u3089\u306e\u30de\u30cb\u30e5\u30a2\u30eb\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002

\u9805\u76ee \u5024 Mass 1 Radius 0.12 Wheel Damping Rate 0.25 Suspension Distance 0.001 Suspension Spring Spring (N/m) 35000 Damper (N*s/m) 3500 Target Position 0.01"},{"location":"specifications/simulator.html#_10","title":"\u30bb\u30f3\u30b5\u69cb\u6210","text":""},{"location":"specifications/simulator.html#gnss","title":"GNSS","text":"

GNSS\u306f\u8eca\u4e21\u306e\u30d9\u30fc\u30b9\u30ea\u30f3\u30af\u306b\u5bfe\u3057\u3066\u4ee5\u4e0b\u306e\u4f4d\u7f6e\u306b\u53d6\u308a\u4ed8\u3051\u3089\u308c\u3066\u3044\u307e\u3059\u3002

\u9805\u76ee \u5024 x 0.0 m y 0.0 m z 0.0 m roll 0.0 rad pitch 0.0 rad yaw 0.0 rad"},{"location":"specifications/simulator.html#imu","title":"IMU","text":"

IMU\u306f\u8eca\u4e21\u306e\u30d9\u30fc\u30b9\u30ea\u30f3\u30af\u306b\u5bfe\u3057\u3066\u4ee5\u4e0b\u306e\u4f4d\u7f6e\u306b\u53d6\u308a\u4ed8\u3051\u3089\u308c\u3066\u3044\u307e\u3059\u3002

\u9805\u76ee \u5024 x 0.0 m y 0.0 m z 0.0 m roll 0.0 rad pitch 0.0 rad yaw 0.0 rad"},{"location":"en/community.html#autonomous-driving-ai-challenge-advent-calendar-2024","title":"Autonomous Driving AI Challenge Advent Calendar 2024","text":"

https://qiita.com/advent-calendar/2023/jidounten-ai

"},{"location":"en/community.html#articles-on-autonomous-driving-ai-challenge-efforts","title":"Articles on Autonomous Driving AI Challenge Efforts","text":"

https://automotive.panasonic.com/feature/jaaic

https://www.ritsumei.ac.jp/ise/suki_ict/story01.html/

We are actively seeking contributions!!!

"},{"location":"en/faq.html","title":"FAQ","text":"

Warning

Many issues can be resolved using ChatGPT or Google search. For questions that cannot be resolved, please include and attach excerpts of error logs.

"},{"location":"en/faq.html#environment-setup","title":"Environment Setup","text":""},{"location":"en/faq.html#the-communication-between-awsim-and-autoware-is-unstable","title":"The communication between AWSIM and Autoware is unstable.","text":"

When testing locally, setting ROS_LOCALHOST_ONLY=1 in all terminals can improve communication speed. Add the following lines to your .bashrc.

export ROS_LOCALHOST_ONLY=1\nexport RMW_IMPLEMENTATION=rmw_cyclonedds_cpp\n\nif [ ! -e /tmp/cycloneDDS_configured ]; then\n    sudo sysctl -w net.core.rmem_max=2147483647\n    sudo ip link set lo multicast on\n    touch /tmp/cycloneDDS_configured\nfi\n

For a dual-PC setup (Windows+Linux or Linux+Linux), set ROS_LOCALHOST_ONLY=0.

Note:

  • After OS startup, you will need to enter the password when starting the terminal and execute sudo ip link set lo multicast on for the first time.
  • Always track changes by using commands like echo $ROS_LOCALHOST_ONLY to avoid forgetting modifications in .bashrc.
  • Mixed use of ROS_LOCALHOST_ONLY=1 and ROS_LOCALHOST_ONLY=0 will prevent container communication.
  • Ensure that ROS_LOCALHOST_ONLY is not hard-coded in the executable.
"},{"location":"en/faq.html#ros2-topic-list-does-not-display","title":"ros2 topic list does not display.","text":"

Ensure that the ROS_DOMAIN_ID matches on your machine (this is not an issue if you haven't set ROS_DOMAIN_ID). Also, ensure ROS2 is sourced correctly.

"},{"location":"en/faq.html#using-awsim-on-windows-and-autoware-on-ubuntu-ros2-topic-list-does-not-display","title":"Using AWSIM on Windows and Autoware on Ubuntu, ros2 topic list does not display.","text":"

Allow communication through the Windows Firewall. Also, execute ros2 daemon stop and ros2 daemon start to ensure no unnecessary processes are running, then restart.

"},{"location":"en/faq.html#rocker-does-not-start","title":"Rocker does not start.","text":"

First, verify that Rocker is installed. If it is installed but does not start, check the permissions. It has been reported that differing account types and permissions when building and running the image can cause issues.

"},{"location":"en/faq.html#awsim-terminates-with-a-core-dump","title":"AWSIM terminates with a core dump.","text":"

If AWSIM terminates with a core dump immediately after startup, your GPU may be out of memory. Check the GPU memory usage with nvidia-smi to ensure it is not at its limit. A GPU with at least 11GB of memory is recommended.

"},{"location":"en/faq.html#i-only-have-a-windows-pc-with-a-gpu","title":"I only have a Windows PC with a GPU.","text":"

The official support is for the configuration listed on the HP website, so detailed guidance cannot be provided, but generally, the following methods are possible:

The key is to \"prepare an environment to run Autoware,\" which may involve issues related to performance, package availability, and host-container communication settings. Possible solutions include:

  • Setting up Ubuntu in a dual-boot configuration.
  • Using a VM on Windows to run Ubuntu (Hyper-V, VirtualBox, VMware, etc.).
  • Setting up Ubuntu on WSL2.
  • Setting up a Docker environment on Windows and running the Autoware image directly.
  • Building the environment in the cloud (some past participants used AWS).
"},{"location":"en/faq.html#awsim-appears-but-rviz-shows-a-black-screen-when-set-up-on-aws","title":"AWSIM appears but Rviz shows a black screen when set up on AWS.","text":"

There have been cases where running sudo apt upgrade resolved the issue. Additionally, there is a similar question in a past issue that might be helpful.

"},{"location":"en/faq.html#docker_runsh-line-35-rocker-command-not-found-appears","title":"docker_run.sh: line 35: rocker: command not found appears.","text":"

Please install Rocker as described here.

"},{"location":"en/faq.html#warning-unable-to-detect-os-for-base-image-aichallenge-2024-dev-maybe-the-base-image-does-not-exist-appears","title":"WARNING unable to detect os for base image 'aichallenge-2024-dev', maybe the base image does not exist appears.","text":"

Please build the Docker image.

"},{"location":"en/faq.html#unable-to-pull-docker","title":"Unable to pull Docker.","text":"

Please restart Docker with newgrp docker or sudo service docker restart, or restart Ubuntu.

"},{"location":"en/faq.html#operations","title":"Operations","text":""},{"location":"en/faq.html#i-get-a-no-module-named-error-when-creating-a-package-with-python-and-running-it","title":"I get a no module named * error when creating a package with Python and running it.","text":"

Refer to this guide.

"},{"location":"en/faq.html#what-command-should-i-use-to-check-the-type-of-a-topic","title":"What command should I use to check the type of a topic?","text":"

Use ros2 topic info -v fuga_topic to check the type of a topic, or if you can identify the node, use ros2 node info hoge-node. For more information about ROS commands, searching for \"ROS2 commands\" online may also help.

"},{"location":"en/faq.html#maps-and-routes-are-not-displayed-in-rviz","title":"Maps and routes are not displayed in Rviz.","text":"

Ensure that the map data is placed in the correct location and is valid.

"},{"location":"en/faq.html#i-dont-know-how-to-improve-autoware-for-participation","title":"I don't know how to improve Autoware for participation.","text":"

Methods include adjusting parameters, improving nodes, or replacing nodes in Autoware. Basic configurations of Autoware can be found on the website or here. Additionally, this external article might be helpful.

"},{"location":"en/faq.html#please-explain-about-behavior-pathmotion-planner","title":"Please explain about Behavior Path/Motion Planner.","text":"

The behavior planner primarily functions for general roads (ODD3 and above), considering traffic rules like stop lines, crosswalks, and signal stops. It does not optimize avoidance functions. On the other hand, the motion planner functions for limited areas (ODD2 and below), handling basic driving functionalities such as obstacle avoidance, stopping, and speed optimization without using signals or map information.

"},{"location":"en/faq.html#please-explain-autowares-avoidance-behavior","title":"Please explain Autoware's avoidance behavior.","text":"

There are two types of avoidance: behavior path and obstacle avoidance. By default, obstacle avoidance is off and only path smoothing is performed. The default setting is to avoid using the behavior path, but the default avoidance targets are only cars and trucks.

"},{"location":"en/faq.html#please-explain-the-center-point","title":"Please explain the center point.","text":"

The center point detects cars, trucks, and pedestrians, but not untagged objects like cardboard boxes. Currently, Autoware requires object data for planning, and the default configuration using center point can lead to two issues:

  1. If the center point fails, planning cannot generate a path.
  2. Clustering-based obstacle detection results are erased during data association.

Although Autoware mini is the ideal perception configuration, understanding these issues and selectively implementing nodes is challenging. Ensuring the center point functions correctly may be important. Reference

"},{"location":"en/faq.html#awsim","title":"AWSIM","text":""},{"location":"en/faq.html#how-can-i-reset-the-car-to-the-initial-position","title":"How can I reset the car to the initial position?","text":"

Currently, the only way to do this is by restarting AWSIM.

"},{"location":"en/faq.html#awsim-operation-is-unstable","title":"AWSIM operation is unstable.","text":"

This may be due to insufficient GPU performance. If using a high-performance GPU is not feasible, setting the time scale to about 0.5 using the slider at the bottom of the AWSIM screen may stabilize operation.

"},{"location":"en/faq.html#i-want-to-tune-the-mpc-are-the-model-parameters-delay-and-time-constants-used-in-this-awsim-disclosed","title":"I want to tune the MPC. Are the model parameters (delay and time constants) used in this AWSIM disclosed?","text":"

The delay and time constants are neither measured nor disclosed, but the basic specifications are available here.

"},{"location":"en/faq.html#general-competition-questions","title":"General Competition Questions","text":""},{"location":"en/faq.html#is-it-possible-to-add-extra-sensors","title":"Is it possible to add extra sensors?","text":"

To ensure all participants face the same conditions and difficulty, the addition of new sensors is not allowed.

"},{"location":"en/getting-started.html","title":"Getting Started","text":"

This page outlines the steps to participate in the AI Challenge.

You can participate in this competition with a single PC running Ubuntu 22.04.

First, use the online scoring environment, then proceed with environment setup and development.

"},{"location":"en/getting-started.html#register-for-the-autonomous-driving-ai-challenge-2024","title":"Register for the Autonomous Driving AI Challenge 2024","text":"

If you haven't registered yet, please do so using the link above.

"},{"location":"en/getting-started.html#accessing-and-submitting-to-the-online-scoring-environment","title":"Accessing and Submitting to the Online Scoring Environment","text":"

In this competition, you will upload submission files (compressed source code files) to the online environment, where they will be automatically scored and ranked.

Let's try using the online scoring environment with these four steps!

Info

Accessing the online scoring environment and submitting a file should take about 5 minutes.

  1. After registering for the Autonomous Driving AI Challenge, login information will be sent to your registered email address.

  2. Access the online scoring environment and log in using the credentials provided in the email.

  3. Once you have access, try submitting a source code file. Download the sample code compressed file from the red button below.

  4. Upload the file directly through the \"UPLOAD\" button in the online scoring environment to submit it.

Download the sample code compressed file

"},{"location":"en/getting-started.html#setting-up-the-ai-challenge-environment","title":"Setting Up the AI Challenge Environment","text":"

Please follow the link above to set up the environment.

Info

You can participate in this competition with a single PC running Ubuntu 22.04.

"},{"location":"en/getting-started.html#how-to-proceed-with-development-in-the-ai-challenge","title":"How to Proceed with Development in the AI Challenge","text":"

Let's start developing by following the link above!

"},{"location":"en/getting-started.html#submitting-your-source-code","title":"Submitting Your Source Code","text":"

Submit your completed code via the online scoring environment. Set up your submission using the link above.

"},{"location":"en/index.html#concept","title":"Concept","text":"

Info

This competition is a new initiative aimed at discovering and nurturing engineers who will lead the future automotive industry in the new technological domains known as CASE and MaaS.

The competition involves not only developing programs for autonomous driving mobility but also competing in driving competitions with these developed programs. It aims to provide a platform for engineers, researchers, and students involved in computer science, AI, software, and information processing to challenge themselves, learn, and create organic connections.

"},{"location":"en/index.html#objectives","title":"Objectives","text":""},{"location":"en/index.html#the-role-of-the-competition-from-a-technical-perspective","title":"The Role of the Competition from a Technical Perspective","text":"
  • Learn SDV (Software Defined Vehicle) development through software integration while understanding hardware
  • Learn Continuous Integration / Continuous Deployment (CI/CD)
  • Conduct development using Open Source Software (OSS) as a platform for innovation towards social implementation
"},{"location":"en/index.html#the-role-of-the-competition-in-human-resource-development","title":"The Role of the Competition in Human Resource Development","text":"
  • Promote participation of engineers from various fields
  • Accelerate skill development through the provision of educational content
  • Learn how to develop SDVs by reconciling real machines and simulators
  • Innovate through digital twin simulations
  • Create \"aspirations\" and \"passion and excitement\" by combining technical competition with entertainment, using motorsport as a theme
"},{"location":"en/index.html#overview","title":"Overview","text":""},{"location":"en/index.html#preliminary-round","title":"Preliminary Round","text":"

The preliminary round will be conducted through online simulations. The competition aims to achieve faster lap times on the course using AWSIM, which is oriented towards digital twin simulations. Participants will not only learn the structure of Autoware but also adjust parameters for behavior and decision-making parts and develop new algorithms as needed.

"},{"location":"en/index.html#final-round","title":"Final Round","text":"

The final competition will be conducted using an EV racing kart as the competition vehicle. Participants will apply the knowledge gained from simulations to real vehicles and tackle challenges unique to real vehicles that cannot be replicated in AWSIM.

For example, participants will be challenged to adjust parameters for application to real vehicles and develop algorithms for noise handling and delay countermeasures that cannot be replicated in simulations.

"},{"location":"en/index.html#awards","title":"Awards","text":"

The total prize money is over 1 million yen. For details, please refer to the 2024 Autonomous Driving AI Challenge Overview.

"},{"location":"en/index.html#course","title":"Course","text":""},{"location":"en/index.html#vehicle","title":"Vehicle","text":""},{"location":"en/index.html#challenges","title":"Challenges","text":""},{"location":"en/course/index.html","title":"Autoware Introduction Course","text":"

Warning

This page is under construction. Japanese pages may be available.

"},{"location":"en/development/main-module.html","title":"Main Module","text":""},{"location":"en/development/main-module.html#customizing-autoware","title":"Customizing Autoware","text":"

For this competition, we have prepared an implementation based on the autonomous driving software Autoware. This page provides background information and explanations on how to utilize this implementation effectively.

In the previous simulation competition, we provided a launch file that could start a reduced configuration of Autoware by limiting functions and reducing the number of nodes from the default Autoware. For the background and purpose of this setup, please refer to the previous competition's documentation.

For this simulation competition, we have similarly prepared a reduced configuration of Autoware designed for use with AWSIM to enable partial use and flexible integration of Autoware.

"},{"location":"en/development/main-module.html#background-of-the-reduced-configuration-of-autoware","title":"Background of the Reduced Configuration of Autoware","text":""},{"location":"en/development/main-module.html#challenges-of-using-autoware","title":"Challenges of Using Autoware","text":"

The default Autoware is composed of many nodes to accommodate various driving environments.

You can also view the configuration diagram of ROS nodes that constitute Autoware in the official Autoware documentation. The current diagram is shown below.

Autoware is equipped with a wide range of functions in each component related to autonomous driving, designed to handle complex driving environments.

However, understanding this complex configuration, the meaning and adjustment of each parameter, and switching or replacing modules is not necessarily easy.

"},{"location":"en/development/main-module.html#preparing-a-reduced-configuration-of-autoware-micro","title":"Preparing a Reduced Configuration of Autoware-Micro","text":"

Therefore, in the previous simulation competition, we prepared a reduced configuration of Autoware by limiting functions and reducing the number of nodes from the default Autoware.

The node diagram of Autoware-Micro is shown below. You can see that the number of nodes has significantly decreased, and only the functions necessary for basic autonomous driving are included.

Features of Autoware-Micro include:

  • Almost all nodes are started directly from a single launch file.
  • Parameters are written directly at the node startup, making it easy to track which parameters are needed for which nodes.
  • The ROS topic names used for input and output of each node are directly remapped at the node startup, making it easy to change the topic names.

By writing autonomous driving software based on this Autoware, you can:

  • Understand the inner workings of Autoware more deeply due to its simple configuration.
  • Easily replace Autoware modules with your custom modules to work on functionality improvements.
  • Clearly see the impact of parameter changes on the overall system operation.
  • Add existing Autoware nodes that are not included in this version of Autoware.

Changes and features of each component include:

  • Localization: Self-position estimation using GNSS, IMU, and wheel speed.
  • Planning: Simplified by omitting behavior_velocity_planner and obstacle_stop_planner, directly outputting a driving trajectory from the output route.
  • Control: A simple implementation example of control with simple_pure_pursuit.
"},{"location":"en/development/main-module.html#utilizing-autoware-micro","title":"Utilizing Autoware-Micro","text":"

By utilizing Autoware-Micro, you can focus on the challenges of this competition:

  1. Strategic route planning for curves.
  2. Vehicle control at high speeds.

Moreover, while referring to the implementation example of Autoware-Micro, you can try implementation methods slightly different from Autoware's architecture or create and introduce new custom nodes.

By incorporating your custom nodes, you can improve driving performance and increase your score.

For example, you can consider the following configuration, implement \"Planning\" and \"Control\" separately, or implement a node that handles both \"Planning & Control.\"

You are free to customize as long as the ROS topics for route input and vehicle interface output match.

"},{"location":"en/development/main-module.html#workspace-structure","title":"Workspace Structure","text":"

For reference, the workspace structure used in this competition is as follows:

docker-dev

docker-eval

"},{"location":"en/development/main-module.html#nextstep-reference","title":"NextStep: Reference","text":""},{"location":"en/development/reference.html","title":"Reference","text":""},{"location":"en/development/reference.html#incorporating-changes","title":"Incorporating Changes","text":"

When there are significant updates to the competition environment, announcements will be made accordingly. For reference, the following instructions are provided.

Update Docker

docker pull ghcr.io/automotiveaichallenge/autoware-universe:humble-latest\n

Update Repository

cd aichallenge2024 # path to aichallenge2024\ngit pull origin/main\n
"},{"location":"en/development/reference.html#installing-awsim-with-visualization","title":"Installing AWSIM with Visualization","text":"

If you want to check the simulation screen of AWSIM, follow the steps in this guide to install AWSIM with visualization.

"},{"location":"en/development/reference.html#setting-up-three-terminals-for-debugging-reference","title":"Setting up Three Terminals for Debugging (Reference)","text":"

To develop with three terminals for debugging, open the first terminal using Alt+Ctrl+T and then execute the following commands by pasting them with Ctrl+Shift+P and pressing Enter.

cd ~/aichallenge-2024\n./docker_run.sh dev cpu\n
cd /aichallenge\nbash run_simulator.bash\n

Open the second terminal using Alt+Ctrl+T and then execute the following commands by pasting them with Ctrl+Shift+P and pressing Enter.

cd ~/aichallenge-2024\n./docker_run.sh dev cpu\n
cd /aichallenge\nbash run_autoware.bash\n

Open the third terminal using Alt+Ctrl+T and then execute the following commands by pasting them with Ctrl+Shift+P and pressing Enter.

cd ~/aichallenge-2024\n./docker_run.sh dev cpu\n
cd /aichallenge\nros2 topic pub --once /control/control_mode_request_topic std_msgs/msg/Bool '{data: true}' >/dev/null\n

When the screen below appears, the startup is complete. To terminate, press CTRL + C in each terminal.

"},{"location":"en/development/workspace-usage.html","title":"How to Proceed with the AI Challenge","text":"

The AI Challenge leverages open-source software. By utilizing the code and web platform provided by the organizers, you can skip the initial development phase and immediately start developing in line with the competition theme. This approach has the significant advantage of avoiding \"reinventing the wheel.\" Additionally, it allows anyone to easily participate in the competition and enables the competition to be run with consistent evaluation criteria.

For first-time participants, you will start from a state where most of the functions necessary for autonomous driving are already in place, standing on the foundation built by your predecessors. From here, you have the opportunity to deepen your unique development in the competition field through the community's \"publication of efforts.\" Furthermore, to deepen your understanding of autonomous driving, we recommend using the \" Autoware Practice \" prepared by the organizers and the learning programs provided by the ROS 2 community, such as \" ROS 2 \".

For those who have already participated in the challenge, we encourage you to share your experiences, contribute to the community, and help the competition evolve. Your active participation will contribute to making the competition even more fulfilling.

  • The source code that forms the basis for development in the AI Challenge is provided in the competition repository .

Participants will proceed with development by customizing this code and parameters. However, if you are unfamiliar with Autoware, we recommend going through the introductory course first.

  • For those who want to know the specifications, such as those developing independently without using the repository's code, refer to the interface specifications and simulator specifications pages.
"},{"location":"en/development/workspace-usage.html#read-the-reference-articles-by-voluntary-participants","title":"Read the reference articles by voluntary participants","text":"

The efforts of voluntary participants are summarized in the Advent Calendar , so please refer to them.

If you are unsure where to start, we recommend starting with this article written by Mr. Arata Tanaka, who won the Community Contribution Award in 2023.

"},{"location":"en/development/workspace-usage.html#try-changing-the-parameters","title":"Try changing the parameters","text":"

For those who are unsure what to do after setting up the environment, try adjusting the parameters first. This time, let's change the parameters of the control module simple_pure_pursuit.

Let's adjust the value values below in $HOME/aichallenge-2024/aichallenge/workspace/src/aichallenge_submit/aichallenge_submit_launch/launch/reference.launch.xml.

<node pkg=\"simple_pure_pursuit\" exec=\"simple_pure_pursuit\" name=\"simple_pure_pursuit_node\" output=\"screen\">\n    <param name=\"use_external_target_vel\" value=\"true\"/>\n    <param name=\"external_target_vel\" value=\"8.0\"/>\n    <param name=\"lookahead_gain\" value=\"0.4\"/>\n    <param name=\"lookahead_min_distance\" value=\"5.0\"/>\n    <param name=\"speed_proportional_gain\" value=\"1.0\"/>\n

After making adjustments, try building and running again. You should be able to confirm that the behavior has changed.

"},{"location":"en/development/workspace-usage.html#try-creating-a-new-package","title":"Try creating a new package","text":"

Try creating a new custom package. First, copy open-source packages or the autoware practice. It would be best if you proceed as follows.

  1. Copy the original package and change the following
    • Package name
    • Folder name
    • Code
    • package.xml
    • CMakeLists.txt
  2. Place it in aichallenge_submit
  3. Change the launch file (reference.launch.xml) in aichallenge_submit_launch

  4. Please ensure that you do not violate the license of the copied package.

"},{"location":"en/development/workspace-usage.html#optional-try-editing-the-map","title":"[Optional] Try editing the map","text":"

For the 2024 AI Challenge, we recommend editing maps such as point cloud maps and lanelet2 maps using tools like VectorMapBuilder .

Download and edit the point cloud map, lanelet2 map, etc., from the Map file storage !

Refer to the VectorMapBuilder usage video for step-by-step instructions.

Store the created lanelet2 map in aichallenge/workspace/src/aichallenge_submit/aichallenge_submit_launch/map.

"},{"location":"en/development/workspace-usage.html#try-submitting","title":"Try submitting","text":"

After customizing the workspace, refer to this to submit.

"},{"location":"en/development/workspace-usage.html#next-step-learn-about-the-main-module","title":"Next Step: Learn about the Main Module","text":""},{"location":"en/information/rules.html","title":"Rules","text":""},{"location":"en/information/rules.html#overview","title":"Overview","text":"

Teams will compete to achieve the shortest driving time while completing the specified number of laps on a designated course.

"},{"location":"en/information/rules.html#environment","title":"Environment","text":"

The course will have a \"Start Area,\" \"Control Line,\" and \"Pit Stop Area.\" Vehicles will start from the Start Area, and the driving time will be measured when they touch the Control Line. For details on the Pit Stop Area, refer to the \"Pit Stop\" section below. Each team will drive individually, without other vehicles or obstacles on the course simultaneously.

"},{"location":"en/information/rules.html#progress","title":"Progress","text":"

Each team will have a preparation session to set up their vehicle and a recording session to measure driving times. However, in the preliminary competition, vehicles will not be used, so there will be no preparation session. Advanced class teams can always perform vehicle maintenance, so they do not have a preparation session either.

Item Final Competition Preliminary Competition Preparation Session TBD None Recording Session TBD 7:00 Number of Laps TBD 6"},{"location":"en/information/rules.html#starting-the-drive","title":"Starting the Drive","text":"

Vehicles will start from the Start Area, and the driving time will begin when they first touch the Control Line. In the preliminary competition, vehicles will be pre-positioned in a predetermined posture. In the final competition, vehicles can be placed in any posture within the Start Area, but operations on the vehicle are only allowed within the Start Area.

"},{"location":"en/information/rules.html#ending-the-drive","title":"Ending the Drive","text":"

The drive will end and be recorded as a result under the following conditions:

  • The specified number of laps is completed.
  • The allotted time for the recording session has elapsed.
  • The vehicle is touched and operated.
  • Any other reason deemed appropriate by the organizers.
"},{"location":"en/information/rules.html#stopping-the-drive","title":"Stopping the Drive","text":"

The drive will end and be invalidated under the following conditions:

  • (Preliminary only) The vehicle has not passed the Control Line within 2 minutes from the start of the recording session.
  • (Preliminary only) The vehicle has significantly deviated from the course.
  • The course walls are moved.
  • Any other reason deemed appropriate by the organizers.
"},{"location":"en/information/rules.html#ranking","title":"Ranking","text":"

The ranking will be determined based on the following criteria:

  • If the specified number of laps is completed, the team with the shortest driving time.
  • If the specified number of laps is not completed:
  • The team with the most laps.
  • If the lap count is the same, the team with the shortest time to the last lap.
"},{"location":"en/information/rules.html#pit-stop","title":"Pit Stop","text":"

Vehicles have a virtual value called \"Condition,\" which, when increased, restricts their speed. Condition increases as the vehicle drives and also when it collides with virtual obstacles described below. The Condition can be reset to its initial value by stopping in the Pit Stop Area for a specified number of seconds.

Setting Item Value Additional Notes Pit Stop Time 3.0 seconds \u2015 Speed Limit Activation 1000 Maximum speed is limited to 20 km/h Section Pass 30 \u2015 Virtual Obstacle Collision 20 - 380 Varies depending on the collision"},{"location":"en/information/rules.html#pit-stop-area","title":"Pit Stop Area","text":"

The Pit Stop Area is indicated by a green frame as shown in the image below.

"},{"location":"en/information/rules.html#increasing-condition","title":"Increasing Condition","text":"

The course is virtually divided into multiple sections, and Condition increases by a fixed amount each time the vehicle exits a section. Additionally, virtual obstacles displayed with a purple frame, as shown in the image below, are placed on the course, and Condition increases if the vehicle collides with them (virtual obstacles do not affect the physical behavior of the vehicle).

Virtual obstacles are generated at random positions within a section each time the vehicle exits a section. After the first lap, virtual obstacles are removed and regenerated in the section, so multiple virtual obstacles will not be placed within the same section. Also, no virtual obstacles are generated near the Pit Stop Area.

"},{"location":"en/information/schedule.html","title":"Competition Information","text":""},{"location":"en/information/schedule.html#overall-flow","title":"Overall Flow","text":""},{"location":"en/information/schedule.html#schedule","title":"Schedule","text":"Event Date Participant Registration May 27, 2024 - July 1, 2024 Networking Event June 21, 2024 Preliminary Round July 2, 2024 - September 2, 2024 Preliminary Awards Ceremony Around September 2024 (tentative) Practice Day October 10-11, 2024 Practice Day November 1, 2024 Semifinals November 2, 2024 Finals November 3, 2024 Finals Awards Ceremony & Networking Event Around December 2024"},{"location":"en/preliminaries/check-results.html","title":"Checking Results","text":"

This page explains the rules and ranking system for the competition. Please note that the content of this page may change during the competition period.

"},{"location":"en/preliminaries/check-results.html#ranking-system","title":"Ranking System","text":"

Scores will be calculated based on the following steps. If multiple runs are made, the higher score will be adopted. If a run is stopped, it will be treated as having completed 0 laps.

  1. The number of laps completed at the end of the run.

  2. The shortest total lap time up to the final lap.

Special Awards: Preliminary rounds will have a seeding system, and finals will have awards.

  • Best Lap Time: Measured using SIM in the preliminaries and TOM\u2019S system in the finals.

  • Best Comfortable Ride: Measured using SIM in the preliminaries and by measuring the water in a glass in the finals.

  • Interaction and recognition of engineers from various fields.

Ranking Example

Lap Time Gap Rank 7 04:41.000 \u2015 1 7 04:47.000 +00:06.000 2 7 04:54.000 +00:13.000 3 6 04:18.000 \u2015 4 6 04:29.000 +00:11.000 5 6 04:42.000 +00:24.000 6 6 04:56.000 +00:38.000 7 5 04:05.000 \u2015 8 5 04:23.000 +00:18.000 9"},{"location":"en/preliminaries/check-results.html#submission","title":"Submission","text":"

Participants are required to upload their developed software to the evaluation system via the submission page. For details, please refer to this link.

"},{"location":"en/preliminaries/check-results.html#how-to-check-results","title":"How to Check Results","text":"

The result scores will be sent to result-summary.json.

"},{"location":"en/preliminaries/check-results.html#result-log-format","title":"Result Log Format","text":"

Results will be output in the following format in ./output/result-summary.json.

{\n  \"laps\": [50.12, 50.34, 50.56, 50.78, 50.90],\n  \"min_time\": 50.12,\n  \"max_jerk\": 32.10\n}\n
"},{"location":"en/preliminaries/submission.html","title":"Submission","text":""},{"location":"en/preliminaries/submission.html#online-environment","title":"Online Environment","text":"

In this competition, scoring will be conducted using an online environment equipped with a simulator and automatic scoring functions. Please follow the steps below to upload your created packages to the online environment. Once uploaded, the simulation will automatically start, and the results will be displayed.

Submit your work by following these steps:

  1. Compress the source code.
  2. Verify the operation in the local evaluation environment.
  3. Submit to the online scoring environment.
"},{"location":"en/preliminaries/submission.html#upload-procedure-to-the-online-environment","title":"Upload Procedure to the Online Environment","text":"
  1. Operation Verification

    1.1. Preparation

    • Compress aichallenge_submit and generate a folder for result output.
    • Run: ./create_submit_file.bash

    1.2. Build Docker Image

    • Run: ./docker_build.sh eval

    1.3. Start Docker Container

    • After startup, Autoware will automatically launch, and autonomous driving will begin.
    • For GPU version of AWSIM: ./docker_run.sh eval gpu
    • For CPU version of AWSIM: ./docker_run.sh eval cpu

    1.4. Check result.json

    • After evaluation is complete, the following files will be stored in the output/latest folder:
      • autoware.log
      • rosbag2_autoware
      • capture
      • result-summary.json
      • result-details.json
  2. Upload to the Online Environment

    Access the online environment and log in from the \u201cLOG IN\u201d button in the top right corner.

    Once logged in, upload aichallenge_submit.tar.gz from the green \u201cUPLOAD\u201d button. After uploading, the source code will be built, and the simulation will be executed in sequence.

    • If it completes successfully, it will display \"Scoring Completed,\" and you can download result.json, with each lap time displayed.
    • If the scenario execution fails, such as a launch failure, resulting in no score output, it will display \"No Results.\" In this case, please re-upload, as it might be an internal server error. Contact support if the problem persists.
    • If the build fails, it will display \"Build Failed.\" Check the steps and re-upload.
    • The highest score from all previous scorings will be applied to the ranking.
    • You cannot upload new source code while scoring is in progress.
    • You can upload up to 10 times per day, with the count reset at midnight Japan time.
  3. Check Results

    After evaluation in the online environment, you can download result.json. Download and check the results.

  4. If There Are No Results

    4.1. Check for package dependency issues

    • Verify that there are no missing dependencies in package.xml, setup.py, or CMakeLists.txt, depending on the language used.

    4.2. Check Docker

    • Check inside Docker with the following command to ensure everything is correctly installed and built in the required directories.

      • Run: docker run -it aichallenge-2024-eval:latest /bin/bash
    • Verify the following directories:

      • /aichallenge/workspace/*
      • /autoware/install/*
"},{"location":"en/setup/build-docker.html","title":"Building and Running the Competition Repository","text":"

In the competition repository, the actual runtime environment is provided entirely within Docker. The steps to use the repository are as follows:

  1. Build the Docker image for the competition environment
  2. Build Autoware within the Docker container
  3. Run Autoware and the simulator simultaneously within the Docker container
"},{"location":"en/setup/build-docker.html#building-the-docker-image-for-the-competition-environment","title":"Building the Docker Image for the Competition Environment","text":"

Open a terminal again using Alt+Ctrl+T. Follow the commands below by pasting them with Ctrl+Shift+P and pressing Enter.

First, navigate to the competition repository.

cd ~/aichallenge-2024\n

Build the Docker image.

./docker_build.sh dev\n

Check if the following image has been generated by running:

docker images\n

You should see an image like this:

aichallenge-2024-dev   latest   df2e83a20349   33 minutes ago   8.9GB\n
"},{"location":"en/setup/build-docker.html#building-autoware-within-the-docker-container","title":"Building Autoware within the Docker Container","text":"

Start the Docker container by executing the following:

cd ~/aichallenge-2024\n./docker_run.sh dev cpu\n

Although it may not look like anything has changed, the above command moves the environment inside the Docker container. To confirm that you are inside the Docker container, you can run the following command and check if nothing is displayed.

ls ~\n

Within the Docker container, build Autoware by executing:

cd /aichallenge\n./build_autoware.bash\n
"},{"location":"en/setup/build-docker.html#running-autoware-and-the-simulator-within-the-docker-container","title":"Running Autoware and the Simulator within the Docker Container","text":"

After building Autoware, run the following command:

./run_evaluation.bash\n

When the screen shown below appears, the startup is complete. To terminate, press CTRL + C in the terminal.

"},{"location":"en/setup/build-docker.html#next-step-start-development","title":"Next Step: Start Development","text":"

This concludes the environment setup! Next, let's proceed to actual development.

"},{"location":"en/setup/docker.html","title":"Installing the Virtual Environment","text":""},{"location":"en/setup/docker.html#installing-dependencies","title":"Installing Dependencies","text":"

First, install the necessary libraries.

sudo apt update\nsudo apt install -y python3-pip ca-certificates curl gnupg\n
"},{"location":"en/setup/docker.html#installing-docker","title":"Installing Docker","text":"

Install Docker using the commands from the official documentation.

sudo install -m 0755 -d /etc/apt/keyrings\ncurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg\nsudo chmod a+r /etc/apt/keyrings/docker.gpg\necho \\\n  \"deb [arch=\"$(dpkg --print-architecture)\" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \\\n  \"$(. /etc/os-release && echo \"$VERSION_CODENAME\")\" stable\" | \\\n  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null\n\nsudo apt-get update\nsudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin\nsudo usermod -aG docker $USER\nnewgrp docker\n

Verify that Docker is installed correctly with the following command:

sudo docker run hello-world\n

If you see Hello from Docker!, Docker is installed correctly.

"},{"location":"en/setup/docker.html#installing-rocker","title":"Installing Rocker","text":"

Rocker is a tool that simplifies running GUI applications inside Docker containers.

Although the official README recommends installing via apt, we will use pip for simplicity.

pip install rocker\n

By default, the path to the rocker executable is not included in the PATH, so add it to .bashrc with the following commands:

echo export PATH='$HOME/.local/bin:$PATH' >> ~/.bashrc\nsource ~/.bashrc\n
"},{"location":"en/setup/docker.html#obtaining-the-docker-image-for-the-autoware-environment","title":"Obtaining the Docker Image for the Autoware Environment","text":"

Download the Docker image for the Autoware environment used in the AI Challenge.

The Docker image is approximately 10GB in size, so it is recommended to use a wired LAN for downloading.

docker pull ghcr.io/automotiveaichallenge/autoware-universe:humble-latest\n

Check if the download was successful with the following command:

docker images\n

If the Docker image was downloaded correctly, you will see output similar to the following:

REPOSITORY                                        TAG                       IMAGE ID       CREATED         SIZE\nghcr.io/automotiveaichallenge/autoware-universe   humble-latest             30c59f3fb415   13 days ago     8.84GB\n
"},{"location":"en/setup/docker.html#next-step","title":"Next Step","text":"

Two types of AWSIM are provided.

For first-time users, proceed to the documentation for headless AWSIM. If you have a PC with a GPU and want a richer development environment, proceed to the documentation for AWSIM with visualization.

Download headless AWSIM

Download AWSIM with visualization

"},{"location":"en/setup/headless-simulation.html","title":"Downloading Headless AWSIM","text":""},{"location":"en/setup/headless-simulation.html#download-awsim","title":"Download AWSIM","text":"
  1. Download the latest AWSIM.zip from Google Drive and extract it to aichallenge-2024/aichallenge/simulator.

  2. Verify that the executable file exists at aichallenge-2024/aichallenge/simulator/AWSIM/AWSIM.x86_64.

With this, the environment setup is complete!

"},{"location":"en/setup/headless-simulation.html#next-step-building-and-running-the-competition-repository","title":"Next Step: Building and Running the Competition Repository","text":""},{"location":"en/setup/requirements.html","title":"Recommended Environment","text":"

For the PC used in this competition, we recommend the following specifications. While it is possible to run with lower specifications, it may result in unstable execution speeds on the ROS 2 side, causing significant variations in behavior during simulations.

Warning

If you only have a Windows environment, please install Ubuntu 22.04. While it is possible to install Ubuntu on the same disk as your Windows environment, if you are not familiar with the process, you may accidentally damage your Windows environment. Therefore, we strongly recommend purchasing a new external or internal SSD and installing Ubuntu there.

Info

For guidance on installing Ubuntu, this article may be helpful.

"},{"location":"en/setup/requirements.html#using-headless-awsim","title":"Using Headless AWSIM","text":"
  • OS: Ubuntu 22.04
  • CPU: Intel Core i5 (4 cores) or higher (recommended)
  • Memory:
  • Minimum: 8 GB
  • Recommended: 16 GB or more
  • SSD: 60 GB or more
"},{"location":"en/setup/requirements.html#using-awsim-with-visualization","title":"Using AWSIM with Visualization","text":"
  • OS: Ubuntu 22.04
  • CPU: Intel Core i7 (8 cores) or higher
  • GPU: NVIDIA GeForce with 8 GB VRAM
  • Memory: 16 GB or more
  • Storage: SSD 60 GB or more
"},{"location":"en/setup/requirements.html#next-step-clone-the-workspace","title":"Next Step: Clone the Workspace","text":""},{"location":"en/setup/visible-simulation.html","title":"Downloading AWSIM with Visualization (Reference)","text":"

By default, we distribute a headless version of AWSIM, but we also provide instructions for setting up an environment with visualization for those who wish to use it. Note that setting up a GPU-based environment can often lead to issues, so if you cannot meet the recommended environment specifications or if this is your first time participating, please consider this as a reference.

"},{"location":"en/setup/visible-simulation.html#installing-nvidia-drivers","title":"Installing NVIDIA Drivers","text":"
# Add repository\nsudo add-apt-repository ppa:graphics-drivers/ppa\n\n# Update package list\nsudo apt update\n\n# Install drivers\nsudo ubuntu-drivers autoinstall\n\n# Reboot\nreboot\n\n# After reboot, check the installation\nnvidia-smi\n
"},{"location":"en/setup/visible-simulation.html#installing-nvidia-container-toolkit","title":"Installing NVIDIA Container Toolkit","text":"

Refer to the NVIDIA Container Toolkit for installation.

# Prepare for installation\ndistribution=$(. /etc/os-release;echo $ID$VERSION_ID) \\\n      && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \\\n      && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \\\n            sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \\\n            sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list\n\n# Install\nsudo apt-get update\nsudo apt-get install -y nvidia-container-toolkit\nsudo nvidia-ctk runtime configure --runtime=docker\nsudo systemctl restart docker\n\n# Test the installation\nsudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi\n\n# If the following output is displayed, the installation was successful:\n# (The output below is quoted from the NVIDIA website)\n#\n# +-----------------------------------------------------------------------------+\n# | NVIDIA-SMI 450.51.06    Driver Version: 450.51.06    CUDA Version: 11.0     |\n# |-------------------------------+----------------------+----------------------+\n# | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |\n# | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |\n# |                               |                      |               MIG M. |\n# |===============================+======================+======================|\n# |   0  Tesla T4            On   | 00000000:00:1E.0 Off |                    0 |\n# | N/A   34C    P8     9W /  70W |      0MiB / 15109MiB |      0%      Default |\n# |                               |                      |                  N/A |\n# +-------------------------------+----------------------+----------------------+\n# +-----------------------------------------------------------------------------+\n# | Processes:                                                                  |\n# |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |\n# |        ID   ID                                                   Usage      |\n# |=============================================================================|\n# |  No running processes found                                                 |\n# +-----------------------------------------------------------------------------+\n
"},{"location":"en/setup/visible-simulation.html#installing-vulkan","title":"Installing Vulkan","text":"
sudo apt update\nsudo apt install -y libvulkan1\n
"},{"location":"en/setup/visible-simulation.html#downloading-awsim","title":"Downloading AWSIM","text":"

Download the latest AWSIM_GPU_**.zip from Google Drive and extract it to aichallenge-2024/aichallenge/simulator.

Verify that the executable file exists at aichallenge-2024/aichallenge/simulator/AWSIM_GPU_**/AWSIM.x86_64.

"},{"location":"en/setup/visible-simulation.html#verifying-awsim-startup","title":"Verifying AWSIM Startup","text":"

If you are using AWSIM with visualization, start the container with the following commands:

cd aichallenge-2024\n./docker_build.sh dev\n./docker_run.sh dev gpu\n

Within the terminal where the container is running (inside the container), execute the following:

cd /aichallenge\n./build_autoware.bash\n

After building Autoware, modify run_simulator.bash. Specify the directory you just extracted for AISIM_GPU_**.

#!/bin/bash\n\n# shellcheck disable=SC1091\nsource /aichallenge/workspace/install/setup.bash\nsudo ip link set multicast on lo\n/aichallenge/simulator/AWSIM_GPU_**/AWSIM.x86_64\n

Make the following changes to run_evaluation.bash as well.

# AWSIM_DIRECTORY=/aichallenge/simulator/AWSIM\nAWSIM_DIRECTORY=/aichallenge/simulator/AWSIM_GPU_**\n

Execute the following command:

./run_evaluation.bash\n

If the following screen appears, it was successful.

This concludes the environment setup!

"},{"location":"en/setup/visible-simulation.html#next-step-start-development","title":"Next Step: Start Development","text":"

Let's start development from Getting Started!

"},{"location":"en/setup/workspace-setup.html","title":"Cloning the Workspace","text":""},{"location":"en/setup/workspace-setup.html#installing-dependencies","title":"Installing Dependencies","text":"

Open a terminal with Alt+Ctrl+T, then paste the following commands using Ctrl+Shift+P and press Enter. First, install the necessary libraries.

sudo apt update\nsudo apt install -y git\n
"},{"location":"en/setup/workspace-setup.html#cloning-the-competition-repository","title":"Cloning the Competition Repository","text":"

Clone the workspace repository. Here, we specify the home directory, but you can place it in any directory of your choice.

cd ~\ngit clone https://github.com/AutomotiveAIChallenge/aichallenge-2024.git\n
"},{"location":"en/setup/workspace-setup.html#next-step-installing-the-virtual-environment","title":"Next Step: Installing the Virtual Environment","text":""},{"location":"en/specifications/hardware.html","title":"Hardware","text":""},{"location":"en/specifications/interface.html","title":"Interface","text":""},{"location":"en/specifications/interface.html#list","title":"List","text":"Interface Name Type Service /control/control_mode_request autoware_auto_vehicle_msgs/srv/ControlModeCommand Publisher /vehicle/status/control_mode autoware_auto_vehicle_msgs/msg/ControlModeReport Subscription /control/command/control_cmd autoware_auto_control_msgs/msg/AckermannControlCommand Publisher /vehicle/status/velocity_status autoware_auto_vehicle_msgs/msg/VelocityReport Publisher /vehicle/status/steering_status autoware_auto_vehicle_msgs/msg/SteeringReport Subscription /control/command/gear_cmd autoware_auto_vehicle_msgs/msg/GearCommand Publisher /vehicle/status/gear_status autoware_auto_vehicle_msgs/msg/GearReport Publisher /sensing/gnss/pose_with_covariance geometry_msgs/msg/PoseWithCovarianceStamped Publisher /sensing/imu/imu_raw sensor_msgs/msg/Imu Publisher /aichallenge/objects sstd_msgs/msg/Float64MultiArray Publisher /aichallenge/pitstop/area std_msgs.msg.Float64MultiArray Publisher /aichallenge/pitstop/condition std_msgs.msg.Int32 Publisher /aichallenge/pitstop/status std_msgs.msg.Float32"},{"location":"en/specifications/interface.html#controlcommandcontrol_cmd","title":"/control/command/control_cmd","text":"Name Description stamp Message timestamp lateral.stamp Unused lateral.steering_tire_angle Target steering angle lateral.steering_tire_rotation_rate Unused longitudinal.stamp Unused longitudinal.speed Unused longitudinal.acceleration Target acceleration longitudinal.jerk Unused"},{"location":"en/specifications/interface.html#vehiclestatusvelocity_status","title":"/vehicle/status/velocity_status","text":"Name Description header.stamp Data acquisition time header.frame_id Frame ID (base_link) longitudinal_velocity Longitudinal velocity lateral_velocity Lateral velocity heading_rate Angular velocity"},{"location":"en/specifications/interface.html#vehiclestatussteering_status","title":"/vehicle/status/steering_status","text":"Name Description stamp Data acquisition time steering_tire_angle Steering angle"},{"location":"en/specifications/interface.html#controlcommandgear_cmd","title":"/control/command/gear_cmd","text":"Name Description stamp Message timestamp command Gear type"},{"location":"en/specifications/interface.html#vehiclestatusgear_status","title":"/vehicle/status/gear_status","text":"Name Description stamp Data acquisition time report Gear type"},{"location":"en/specifications/interface.html#sensinggnsspose_with_covariance","title":"/sensing/gnss/pose_with_covariance","text":"Name Description header.stamp Data acquisition time header.frame_id Frame ID (map) pose.pose.position Vehicle position (origin of base_link) pose.pose.orientation Unused pose.covariance Position accuracy"},{"location":"en/specifications/interface.html#sensingimuimu_raw","title":"/sensing/imu/imu_raw","text":"Name Description header.stamp Data acquisition time header.frame_id Frame ID (imu_link) orientation Orientation angular_velocity Angular velocity linear_acceleration Linear acceleration"},{"location":"en/specifications/interface.html#aichallengeobjects","title":"/aichallenge/objects","text":"Name Description data[N * 4 + 0] X coordinate of Nth object data[N * 4 + 1] Y coordinate of Nth object data[N * 4 + 2] Z coordinate of Nth object data[N * 4 + 3] Radius of Nth object"},{"location":"en/specifications/interface.html#aichallengepitstoparea","title":"/aichallenge/pitstop/area","text":"Name Description data[0] X position of Pit Stop Area data[1] Y position of Pit Stop Area data[2] Z position of Pit Stop Area data[3] X quaternion of Pit Stop Area data[4] Y quaternion of Pit Stop Area data[5] Z quaternion of Pit Stop Area data[6] W quaternion of Pit Stop Area data[7] X size of of Pit Stop Area data[8] Y size of of Pit Stop Area"},{"location":"en/specifications/interface.html#aichallengepitstopcondition","title":"/aichallenge/pitstop/condition","text":"Name Description data Current condition value"},{"location":"en/specifications/interface.html#aichallengepitstopstatus","title":"/aichallenge/pitstop/status","text":"Name Description data Number of seconds a pit stop is valid"},{"location":"en/specifications/simulator.html","title":"Simulator","text":""},{"location":"en/specifications/simulator.html#overview","title":"Overview","text":"

This page describes the specifications of the simulator used in the AI Challenge.

The simulator is based on the open-source autonomous driving simulator \"AWSIM\" developed for Autoware.

"},{"location":"en/specifications/simulator.html#commandline-options","title":"Commandline Options","text":"Option Type Default Description --timeout float 420.0 Set session timeout seconds. --endless bool false Enable/disable session timeout. --pit-stop bool true Enable/disable features related to pit-stop. --replay0 string Load driving logs and replay as a different vehicle.

Use result-details.json for the driving log for replay. Also, replay supports 10 vehicles from --replay0 to --replay9.

"},{"location":"en/specifications/simulator.html#keyboard-operation","title":"Keyboard Operation","text":"Operation Key Quit Esc Reset Space Switch camera C Accel Arrow Up Brake Arrow Down Steering Arrow Left, Right Gear (D) D Gear (R) R Gear (N) N Gear (P) P"},{"location":"en/specifications/simulator.html#topic-operation","title":"Topic Operation","text":"Topic Type Description /aichallenge/awsim/status std_msgs.msg.Float32MultiArray Get status of the simulation. /aichallenge/awsim/change_time_scale std_msgs.msg.Float32 Set the timescale for the simulation. /aichallenge/awsim/reset std_msgs.msg.Empty Reset the simulation.

The above /aichallenge/awsim/status has the following structure.

Index Value 0 session timeout 1 lap count 2 lap time 3 section 4 timescale"},{"location":"en/specifications/simulator.html#vehicle-racing-kart","title":"Vehicle (Racing Kart)","text":"

The vehicle conforms to the specifications of the EGO Vehicle in AWSIM and is designed with specifications close to an actual racing kart.

"},{"location":"en/specifications/simulator.html#parameters","title":"Parameters","text":"

The following table summarizes the vehicle parameters.

Item Value Vehicle Weight 160 kg Length 200 cm Width 145 cm Front Wheel Diameter 24 cm Front Wheel Width 13 cm Front Wheel Tread 93 cm Rear Wheel Diameter 24 cm Rear Wheel Width 18 cm Rear Wheel Tread 112 cm Maximum Steering Angle 80\u00b0 Maximum Acceleration 3.2 m/s^2"},{"location":"en/specifications/simulator.html#vehicle-component","title":"Vehicle Component","text":"

The following table summarizes the settings of the Vehicle component. For detailed information of the setting items, see this manual.

Item Value Vehicle Settings Use Inertia Off Physics Settings (experimental) Sleep Velocity Threshold 0.02 Sleep Time Threshold 0 Skidding Cancel Rate 0.236 Input Settings Max Steer Angle Input 80 Max Acceleration Input 3.2"},{"location":"en/specifications/simulator.html#rigidbody-component","title":"Rigidbody Component","text":"

The following table summarizes the settings of the Rigidbody component. For more information, see this manual.

Item Value Mass 160 Drag 0 Angular Drag 0"},{"location":"en/specifications/simulator.html#com-position","title":"CoM Position","text":"

CoM (Center of Mass) is the mass center of the vehicle Rigidbody. The CoM position is set at the center of the vehicle and at the height of the wheel axles.

"},{"location":"en/specifications/simulator.html#vehicle-collider","title":"Vehicle Collider","text":"

Vehicle collider is used to detect collision between the vehicle and other objects or checkpoints. The vehicle collider is created based on the mesh of the vehicle object.

"},{"location":"en/specifications/simulator.html#wheel-colliders","title":"Wheel Colliders","text":"

The vehicle has a total of four wheel colliders - one for each wheel, simulating the vehicle on a four-wheel model, rather than a kinematic bicycle model.

The Wheel Collider is set as follows. For more details on wheel colliders, please refer to this manual.

Item Value Mass 1 Radius 0.12 Wheel Damping Rate 0.25 Suspension Distance 0.001 Suspension Spring Spring (N/m) 35000 Damper (N*s/m) 3500 Target Position 0.01"},{"location":"en/specifications/simulator.html#sensor-configuration","title":"Sensor Configuration","text":""},{"location":"en/specifications/simulator.html#gnss","title":"GNSS","text":"

The GNSS is mounted at the following position relative to the vehicle base link.

Item Value x 0.0 m y 0.0 m z 0.0 m roll 0.0 rad pitch 0.0 rad yaw 0.0 rad"},{"location":"en/specifications/simulator.html#imu","title":"IMU","text":"

The IMU is mounted at the following position relative to the vehicle base link.

Item Value x 0.0 m y 0.0 m z 0.0 m roll 0.0 rad pitch 0.0 rad yaw 0.0 rad"}]} \ No newline at end of file diff --git a/setup/build-docker.html b/setup/build-docker.html index 0071057..65fbabe 100644 --- a/setup/build-docker.html +++ b/setup/build-docker.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/setup/docker.html b/setup/docker.html index bbc6df2..dd19340 100644 --- a/setup/docker.html +++ b/setup/docker.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/setup/headless-simulation.html b/setup/headless-simulation.html index 31a8bcf..26f4925 100644 --- a/setup/headless-simulation.html +++ b/setup/headless-simulation.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/setup/requirements.html b/setup/requirements.html index 09434e8..4f34c16 100644 --- a/setup/requirements.html +++ b/setup/requirements.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/setup/visible-simulation.html b/setup/visible-simulation.html index 6495958..a63dff4 100644 --- a/setup/visible-simulation.html +++ b/setup/visible-simulation.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/setup/workspace-setup.html b/setup/workspace-setup.html index 6e8490b..411e997 100644 --- a/setup/workspace-setup.html +++ b/setup/workspace-setup.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +
GitHub @@ -442,7 +442,7 @@
- +
GitHub diff --git a/sitemap.xml b/sitemap.xml index 648475d..843341c 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -2,378 +2,378 @@ https://automotiveaichallenge.github.io/aichallenge-documentation-2024/community.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/faq.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/getting-started.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/index.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/competition/rules/index.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/course/avoidance.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/course/index.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/course/path_planning.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/course/vehicle.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/course/velocity_planning.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/development/main-module.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/development/reference.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/development/workspace-usage.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/development/requirements/index.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/information/rules.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/information/schedule.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/preliminaries/check-results.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/preliminaries/submission.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/setup/build-docker.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/setup/docker.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/setup/headless-simulation.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/setup/requirements.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/setup/visible-simulation.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/setup/workspace-setup.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/specifications/hardware.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/specifications/interface.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/specifications/simulator.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/en/community.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/en/faq.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/en/getting-started.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/en/index.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/en/competition/rules/index.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/en/course/avoidance.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/en/course/index.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/en/course/path_planning.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/en/course/vehicle.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/en/course/velocity_planning.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/en/development/main-module.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/en/development/reference.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/en/development/workspace-usage.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/en/development/requirements/index.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/en/information/rules.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/en/information/schedule.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/en/preliminaries/check-results.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/en/preliminaries/submission.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/en/setup/build-docker.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/en/setup/docker.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/en/setup/headless-simulation.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/en/setup/requirements.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/en/setup/visible-simulation.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/en/setup/workspace-setup.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/en/specifications/hardware.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/en/specifications/interface.html - 2024-07-22 + 2024-07-24 daily https://automotiveaichallenge.github.io/aichallenge-documentation-2024/en/specifications/simulator.html - 2024-07-22 + 2024-07-24 daily diff --git a/sitemap.xml.gz b/sitemap.xml.gz index cf2760a..3acb89a 100644 Binary files a/sitemap.xml.gz and b/sitemap.xml.gz differ diff --git a/specifications/hardware.html b/specifications/hardware.html index c92191b..cbe6ac9 100644 --- a/specifications/hardware.html +++ b/specifications/hardware.html @@ -18,7 +18,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -207,7 +207,7 @@
- +