From 16aefe643d1c0442b4ba3bc7480591463c7762e2 Mon Sep 17 00:00:00 2001 From: taikitanaka3 Date: Wed, 24 Jul 2024 01:32:09 +0000 Subject: [PATCH] deploy: 6356c3c0def1458c30935bbab2855502f745b213 --- 404.html | 8 +- assets/stylesheets/main.3cba04c6.min.css | 1 + assets/stylesheets/main.3cba04c6.min.css.map | 1 + assets/stylesheets/main.76a95c52.min.css | 1 - assets/stylesheets/main.76a95c52.min.css.map | 1 - community.html | 8 +- competition/rules/index.html | 8 +- course/avoidance.html | 198 ++++++++++++++++++- course/images/3-2/evaluate_trajectory.jpg | Bin 0 -> 34626 bytes course/images/3-2/flow.jpg | Bin 0 -> 17674 bytes course/images/3-2/generate_costmap.jpg | Bin 0 -> 20045 bytes course/images/3-2/generate_trajectory.jpg | Bin 0 -> 21199 bytes course/images/3-2/nodemap.jpg | Bin 0 -> 85596 bytes course/images/3-2/rviz_image.png | Bin 0 -> 167585 bytes course/images/3-2/target_state_sampling.jpg | Bin 0 -> 13348 bytes course/index.html | 8 +- course/path_planning.html | 8 +- course/vehicle.html | 8 +- course/velocity_planning.html | 8 +- development/main-module.html | 8 +- development/reference.html | 8 +- development/requirements/index.html | 8 +- development/workspace-usage.html | 8 +- en/community.html | 8 +- en/competition/rules/index.html | 8 +- en/course/avoidance.html | 198 ++++++++++++++++++- en/course/index.html | 8 +- en/course/path_planning.html | 8 +- en/course/vehicle.html | 8 +- en/course/velocity_planning.html | 8 +- en/development/main-module.html | 8 +- en/development/reference.html | 8 +- en/development/requirements/index.html | 8 +- en/development/workspace-usage.html | 8 +- en/faq.html | 8 +- en/getting-started.html | 8 +- en/index.html | 8 +- en/information/rules.html | 8 +- en/information/schedule.html | 8 +- en/preliminaries/check-results.html | 8 +- en/preliminaries/submission.html | 8 +- en/setup/build-docker.html | 8 +- en/setup/docker.html | 8 +- en/setup/headless-simulation.html | 8 +- en/setup/requirements.html | 8 +- en/setup/visible-simulation.html | 8 +- en/setup/workspace-setup.html | 8 +- en/specifications/hardware.html | 8 +- en/specifications/interface.html | 8 +- en/specifications/simulator.html | 8 +- faq.html | 8 +- getting-started.html | 8 +- index.html | 8 +- information/rules.html | 8 +- information/schedule.html | 8 +- preliminaries/check-results.html | 8 +- preliminaries/submission.html | 8 +- search/search_index.json | 2 +- setup/build-docker.html | 8 +- setup/docker.html | 8 +- setup/headless-simulation.html | 8 +- setup/requirements.html | 8 +- setup/visible-simulation.html | 8 +- setup/workspace-setup.html | 8 +- sitemap.xml | 108 +++++----- sitemap.xml.gz | Bin 1124 -> 1124 bytes specifications/hardware.html | 8 +- specifications/interface.html | 8 +- specifications/simulator.html | 8 +- 69 files changed, 651 insertions(+), 283 deletions(-) create mode 100644 assets/stylesheets/main.3cba04c6.min.css create mode 100644 assets/stylesheets/main.3cba04c6.min.css.map delete mode 100644 assets/stylesheets/main.76a95c52.min.css delete mode 100644 assets/stylesheets/main.76a95c52.min.css.map create mode 100644 course/images/3-2/evaluate_trajectory.jpg create mode 100644 course/images/3-2/flow.jpg create mode 100644 course/images/3-2/generate_costmap.jpg create mode 100644 course/images/3-2/generate_trajectory.jpg create mode 100644 course/images/3-2/nodemap.jpg create mode 100644 course/images/3-2/rviz_image.png create mode 100644 course/images/3-2/target_state_sampling.jpg 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":"AA0CE,gBCqxCF,CCnyCA,KAEE,6BAAA,CAAA,0BAAA,CAAA,qBAAA,CADA,qBDzBF,CC8BA,iBAGE,kBD3BF,CC8BE,gCANF,iBAOI,yBDzBF,CACF,CC6BA,KACE,QD1BF,CC8BA,qBAIE,uCD3BF,CC+BA,EACE,aAAA,CACA,oBD5BF,CCgCA,GAME,QAAA,CALA,kBAAA,CACA,aAAA,CACA,aAAA,CAEA,gBAAA,CADA,SD3BF,CCiCA,MACE,aD9BF,CCkCA,QAEE,eD/BF,CCmCA,IACE,iBDhCF,CCoCA,MAEE,uBAAA,CADA,gBDhCF,CCqCA,MAEE,eAAA,CACA,kBDlCF,CCsCA,OAKE,gBAAA,CACA,QAAA,CAHA,mBAAA,CACA,iBAAA,CAFA,QAAA,CADA,SD9BF,CCuCA,MACE,QAAA,CACA,YDpCF,CErDA,MAIE,6BAAA,CACA,oCAAA,CACA,mCAAA,CACA,0BAAA,CACA,sCAAA,CAGA,4BAAA,CACA,2CAAA,CACA,yBAAA,CACA,qCFmDF,CE7CA,+BAIE,kBF6CF,CE1CE,oHAEE,YF4CJ,CEnCA,qCAIE,eAAA,CAGA,+BAAA,CACA,sCAAA,CACA,wCAAA,CACA,yCAAA,CACA,0BAAA,CACA,sCAAA,CACA,wCAAA,CACA,yCAAA,CAGA,0BAAA,CACA,0BAAA,CAGA,0BAAA,CACA,mCAAA,CAGA,iCAAA,CACA,kCAAA,CACA,mCAAA,CACA,mCAAA,CACA,kCAAA,CACA,iCAAA,CACA,+CAAA,CACA,6DAAA,CACA,gEAAA,CACA,4DAAA,CACA,4DAAA,CACA,6DAAA,CAGA,6CAAA,CAGA,+CAAA,CAGA,gCAAA,CACA,gCAAA,CAGA,8BAAA,CACA,kCAAA,CACA,qCAAA,CAGA,iCAAA,CAGA,kCAAA,CACA,gDAAA,CAGA,mDAAA,CACA,mDAAA,CAGA,+BAAA,CACA,0BAAA,CAGA,yBAAA,CACA,qCAAA,CACA,uCAAA,CACA,8BAAA,CACA,oCAAA,CAGA,8DAAA,CAKA,8DAAA,CAKA,0DFKF,CG9HE,aAIE,iBAAA,CAHA,aAAA,CAEA,aAAA,CADA,YHmIJ,CIxIA,KACE,kCAAA,CACA,iCAAA,CAGA,uGAAA,CAKA,mFJyIF,CInIA,iBAIE,mCAAA,CACA,6BAAA,CAFA,sCJwIF,CIlIA,aAIE,4BAAA,CADA,sCJsIF,CI7HA,MACE,0NAAA,CACA,mNAAA,CACA,oNJgIF,CIzHA,YAGE,gCAAA,CAAA,kBAAA,CAFA,eAAA,CACA,eJ6HF,CIxHE,aAPF,YAQI,gBJ2HF,CACF,CIxHE,uGAME,iBAAA,CAAA,cJ0HJ,CItHE,eAKE,uCAAA,CAHA,aAAA,CAEA,eAAA,CAHA,iBJ6HJ,CIpHE,8BAPE,eAAA,CAGA,qBJ+HJ,CI3HE,eAEE,kBAAA,CAEA,eAAA,CAHA,oBJ0HJ,CIlHE,eAEE,gBAAA,CACA,eAAA,CAEA,qBAAA,CADA,eAAA,CAHA,mBJwHJ,CIhHE,kBACE,eJkHJ,CI9GE,eAEE,eAAA,CACA,qBAAA,CAFA,YJkHJ,CI5GE,8BAKE,uCAAA,CAFA,cAAA,CACA,eAAA,CAEA,qBAAA,CAJA,eJkHJ,CI1GE,eACE,wBJ4GJ,CIxGE,eAGE,+DAAA,CAFA,iBAAA,CACA,cJ2GJ,CItGE,cACE,+BAAA,CACA,qBJwGJ,CIrGI,mCAEE,sBJsGN,CIlGI,wCACE,+BJoGN,CIjGM,kDACE,uDJmGR,CI9FI,mBACE,kBAAA,CACA,iCJgGN,CI5FI,4BACE,uCAAA,CACA,oBJ8FN,CIzFE,iDAIE,6BAAA,CACA,aAAA,CAFA,2BJ6FJ,CIxFI,aARF,iDASI,oBJ6FJ,CACF,CIzFE,iBAIE,wCAAA,CACA,mBAAA,CACA,kCAAA,CAAA,0BAAA,CAJA,eAAA,CADA,uBAAA,CAEA,qBJ8FJ,CIxFI,qCAEE,uCAAA,CADA,YJ2FN,CIrFE,gBAEE,iBAAA,CACA,eAAA,CAFA,iBJyFJ,CIpFI,qBASE,kCAAA,CAAA,0BAAA,CADA,eAAA,CAPA,aAAA,CAEA,QAAA,CAIA,uCAAA,CAHA,aAAA,CAFA,oCAAA,CASA,yDAAA,CADA,oBAAA,CAJA,iBAAA,CADA,iBJ4FN,CInFM,2BACE,+CJqFR,CIjFM,wCAEE,YAAA,CADA,WJoFR,CI/EM,8CACE,oDJiFR,CI9EQ,oDACE,0CJgFV,CIzEE,gBAOE,4CAAA,CACA,mBAAA,CACA,mKACE,CANF,gCAAA,CAHA,oBAAA,CAEA,eAAA,CADA,uBAAA,CAIA,uBAAA,CADA,qBJ+EJ,CIpEE,iBAGE,6CAAA,CACA,kCAAA,CAAA,0BAAA,CAHA,aAAA,CACA,qBJwEJ,CIlEE,iBAGE,6DAAA,CADA,WAAA,CADA,oBJsEJ,CIhEE,kBACE,WJkEJ,CI9DE,oDAEE,qBJgEJ,CIlEE,oDAEE,sBJgEJ,CI5DE,iCACE,kBJiEJ,CIlEE,iCACE,mBJiEJ,CIlEE,iCAIE,2DJ8DJ,CIlEE,iCAIE,4DJ8DJ,CIlEE,uBAGE,uCAAA,CADA,aAAA,CAAA,cJgEJ,CI1DE,eACE,oBJ4DJ,CIxDE,kDAGE,kBJ0DJ,CI7DE,kDAGE,mBJ0DJ,CI7DE,8BAEE,SJ2DJ,CIvDI,0DACE,iBJ0DN,CItDI,oCACE,2BJyDN,CItDM,0CACE,2BJyDR,CIpDI,wDACE,kBJwDN,CIzDI,wDACE,mBJwDN,CIzDI,oCAEE,kBJuDN,CIpDM,kGAEE,aJwDR,CIpDM,0DACE,eJuDR,CInDM,4HAEE,kBJsDR,CIxDM,4HAEE,mBJsDR,CIxDM,oFACE,kBAAA,CAAA,eJuDR,CIhDE,yBAEE,mBJkDJ,CIpDE,yBAEE,oBJkDJ,CIpDE,eACE,mBAAA,CAAA,cJmDJ,CI9CE,kDAIE,WAAA,CADA,cJiDJ,CIzCI,4BAEE,oBJ2CN,CIvCI,6BAEE,oBJyCN,CIrCI,kCACE,YJuCN,CIlCE,mBACE,iBAAA,CAGA,eAAA,CADA,cAAA,CAEA,iBAAA,CAHA,sBAAA,CAAA,iBJuCJ,CIjCI,uBACE,aAAA,CACA,aJmCN,CI9BE,uBAGE,iBAAA,CADA,eAAA,CADA,eJkCJ,CI5BE,mBACE,cJ8BJ,CI1BE,+BAME,2CAAA,CACA,iDAAA,CACA,mBAAA,CAPA,oBAAA,CAGA,gBAAA,CAFA,cAAA,CACA,aAAA,CAEA,iBJ+BJ,CIzBI,aAXF,+BAYI,aJ4BJ,CACF,CIvBI,iCACE,gBJyBN,CIlBM,8FACE,YJoBR,CIhBM,4FACE,eJkBR,CIbI,8FACE,eJeN,CIZM,kHACE,gBJcR,CITI,kCAGE,eAAA,CAFA,cAAA,CACA,sBAAA,CAEA,kBJWN,CIPI,kCAGE,qDAAA,CAFA,sBAAA,CACA,kBJUN,CILI,wCACE,iCJON,CIJM,8CACE,qDAAA,CACA,sDJMR,CIDI,iCACE,iBJGN,CIEE,wCACE,cJAJ,CIGI,wDAIE,gBJKN,CITI,wDAIE,iBJKN,CITI,8CAME,UAAA,CALA,oBAAA,CAEA,YAAA,CAKA,oDAAA,CAAA,4CAAA,CACA,6BAAA,CAAA,qBAAA,CACA,yBAAA,CAAA,iBAAA,CAHA,iCAAA,CAFA,0BAAA,CAHA,WJON,CIKI,oDACE,oDJHN,CIOI,mEACE,kDAAA,CACA,yDAAA,CAAA,iDJLN,CISI,oEACE,kDAAA,CACA,0DAAA,CAAA,kDJPN,CIYE,wBACE,iBAAA,CACA,eAAA,CACA,iBJVJ,CIcE,mBACE,oBAAA,CAEA,kBAAA,CADA,eJXJ,CIeI,aANF,mBAOI,aJZJ,CACF,CIeI,8BACE,aAAA,CAEA,QAAA,CACA,eAAA,CAFA,UJXN,CKnVI,0CD6WF,uBACE,iBJtBF,CIyBE,4BACE,eJvBJ,CACF,CMlhBE,uBAOE,kBAAA,CALA,aAAA,CACA,aAAA,CAEA,aAAA,CACA,eAAA,CALA,iBAAA,CAOA,sCACE,CALF,YNwhBJ,CM/gBI,2BACE,aNihBN,CM7gBI,6BAME,+CAAA,CAFA,yCAAA,CAHA,eAAA,CACA,eAAA,CACA,kBAAA,CAEA,iBNghBN,CM3gBI,6BAEE,aAAA,CADA,YN8gBN,CMxgBE,wBACE,kBN0gBJ,CMvgBI,4BAIE,kBAAA,CAHA,mCAAA,CAIA,uBNugBN,CMngBI,4DAEE,oBAAA,CADA,SNsgBN,CMlgBM,oEACE,mBNogBR,CO7jBA,WAGE,0CAAA,CADA,+BAAA,CADA,aPkkBF,CO7jBE,aANF,WAOI,YPgkBF,CACF,CO7jBE,oBAEE,2CAAA,CADA,gCPgkBJ,CO3jBE,kBAGE,eAAA,CADA,iBAAA,CADA,eP+jBJ,COzjBE,6BACE,WP8jBJ,CO/jBE,6BACE,UP8jBJ,CO/jBE,mBAEE,aAAA,CACA,cAAA,CACA,uBP2jBJ,COxjBI,0BACE,YP0jBN,COtjBI,yBACE,UPwjBN,CQ7lBA,KASE,cAAA,CARA,WAAA,CACA,iBRimBF,CK7bI,oCGtKJ,KAaI,gBR0lBF,CACF,CKlcI,oCGtKJ,KAkBI,cR0lBF,CACF,CQrlBA,KASE,2CAAA,CAPA,YAAA,CACA,qBAAA,CAKA,eAAA,CAHA,eAAA,CAJA,iBAAA,CAGA,UR2lBF,CQnlBE,aAZF,KAaI,aRslBF,CACF,CKncI,0CGhJF,yBAII,cRmlBJ,CACF,CQ1kBA,SAEE,gBAAA,CAAA,iBAAA,CADA,eR8kBF,CQzkBA,cACE,YAAA,CACA,qBAAA,CACA,WR4kBF,CQzkBE,aANF,cAOI,aR4kBF,CACF,CQxkBA,SACE,WR2kBF,CQxkBE,gBACE,YAAA,CACA,WAAA,CACA,iBR0kBJ,CQrkBA,aACE,eAAA,CACA,sBRwkBF,CQ/jBA,WACE,YRkkBF,CQ7jBA,WAGE,QAAA,CACA,SAAA,CAHA,iBAAA,CACA,ORkkBF,CQ7jBE,uCACE,aR+jBJ,CQ3jBE,+BAEE,uCAAA,CADA,kBR8jBJ,CQxjBA,SASE,2CAAA,CACA,mBAAA,CAFA,gCAAA,CADA,gBAAA,CADA,YAAA,CAMA,SAAA,CADA,uCAAA,CANA,mBAAA,CAJA,cAAA,CAYA,2BAAA,CATA,URkkBF,CQtjBE,eAEE,SAAA,CAIA,uBAAA,CAHA,oEACE,CAHF,UR2jBJ,CQ7iBA,MACE,WRgjBF,CSzsBA,MACE,+PT2sBF,CSrsBA,cASE,mBAAA,CAFA,0CAAA,CACA,cAAA,CAFA,YAAA,CAIA,uCAAA,CACA,oBAAA,CAVA,iBAAA,CAEA,UAAA,CADA,QAAA,CAUA,qBAAA,CAPA,WAAA,CADA,STgtBF,CSrsBE,aAfF,cAgBI,YTwsBF,CACF,CSrsBE,kCAEE,uCAAA,CADA,YTwsBJ,CSnsBE,qBACE,uCTqsBJ,CSjsBE,wCACE,+BTmsBJ,CS9rBE,oBAME,6BAAA,CADA,UAAA,CAJA,aAAA,CAEA,cAAA,CACA,aAAA,CAGA,2CAAA,CAAA,mCAAA,CACA,4BAAA,CAAA,oBAAA,CACA,6BAAA,CAAA,qBAAA,CACA,yBAAA,CAAA,iBAAA,CARA,aTwsBJ,CS5rBE,sBACE,cT8rBJ,CS3rBI,2BACE,2CT6rBN,CSvrBI,kEAEE,uDAAA,CADA,+BT0rBN,CU5vBE,8BACE,YV+vBJ,CWpwBA,mBACE,GACE,SAAA,CACA,0BXuwBF,CWpwBA,GACE,SAAA,CACA,uBXswBF,CACF,CWlwBA,mBACE,GACE,SXowBF,CWjwBA,GACE,SXmwBF,CACF,CWxvBE,qBASE,2BAAA,CADA,mCAAA,CAAA,2BAAA,CAFA,0BAAA,CADA,WAAA,CAEA,SAAA,CANA,cAAA,CACA,KAAA,CAEA,UAAA,CADA,SXgwBJ,CWtvBE,mBAcE,mDAAA,CANA,2CAAA,CACA,QAAA,CACA,mBAAA,CARA,QAAA,CASA,kDACE,CAPF,eAAA,CAEA,aAAA,CADA,SAAA,CALA,cAAA,CAGA,UAAA,CADA,SXiwBJ,CWlvBE,kBACE,aXovBJ,CWhvBE,sBACE,YAAA,CACA,YXkvBJ,CW/uBI,oCACE,aXivBN,CW5uBE,sBACE,mBX8uBJ,CW3uBI,6CACE,cX6uBN,CKvoBI,0CMvGA,6CAKI,aAAA,CAEA,gBAAA,CACA,iBAAA,CAFA,UX+uBN,CACF,CWxuBE,kBACE,cX0uBJ,CY30BA,YACE,WAAA,CAIA,WZ20BF,CYx0BE,mBAEE,qBAAA,CADA,iBZ20BJ,CK9qBI,sCOtJE,4EACE,kBZu0BN,CYn0BI,0JACE,mBZq0BN,CYt0BI,8EACE,kBZq0BN,CACF,CYh0BI,0BAGE,UAAA,CAFA,aAAA,CACA,YZm0BN,CY9zBI,+BACE,eZg0BN,CY1zBE,8BACE,WZ+zBJ,CYh0BE,8BACE,UZ+zBJ,CYh0BE,8BAIE,iBZ4zBJ,CYh0BE,8BAIE,kBZ4zBJ,CYh0BE,oBAGE,cAAA,CADA,SZ8zBJ,CYzzBI,aAPF,oBAQI,YZ4zBJ,CACF,CYzzBI,gCACE,yCZ2zBN,CYvzBI,wBACE,cAAA,CACA,kBZyzBN,CYtzBM,kCACE,oBZwzBR,Caz3BA,qBAeE,Wb03BF,Caz4BA,qBAeE,Ub03BF,Caz4BA,WAOE,2CAAA,CACA,mBAAA,CANA,YAAA,CAOA,8BAAA,CALA,iBAAA,CAMA,SAAA,CALA,mBAAA,CACA,mBAAA,CALA,cAAA,CAaA,0BAAA,CAHA,wCACE,CATF,Sbs4BF,Cav3BE,aAlBF,WAmBI,Yb03BF,CACF,Cav3BE,mBAEE,SAAA,CADA,mBAAA,CAKA,uBAAA,CAHA,kEb03BJ,Can3BE,kBAEE,gCAAA,CADA,ebs3BJ,Ccx5BA,aACE,gBAAA,CACA,iBd25BF,Ccx5BE,sBAGE,WAAA,CADA,QAAA,CADA,Sd45BJ,Cct5BE,oBAEE,eAAA,CADA,edy5BJ,Ccp5BE,oBACE,iBds5BJ,Ccl5BE,mBAEE,YAAA,CACA,cAAA,CACA,6BAAA,CAHA,iBdu5BJ,Ccj5BI,iDACE,yCdm5BN,Cc/4BI,6BACE,iBdi5BN,Cc54BE,mBAGE,uCAAA,CACA,cAAA,CAHA,aAAA,CACA,cAAA,CAGA,sBd84BJ,Cc34BI,gDACE,+Bd64BN,Ccz4BI,4BACE,0CAAA,CACA,mBd24BN,Cct4BE,mBAEE,SAAA,CADA,iBAAA,CAKA,2BAAA,CAHA,8Ddy4BJ,Ccn4BI,qBAEE,aAAA,CADA,eds4BN,Ccj4BI,6BACE,SAAA,CACA,uBdm4BN,Cej9BA,WAEE,0CAAA,CADA,+Bfq9BF,Cej9BE,aALF,WAMI,Yfo9BF,CACF,Cej9BE,kBACE,6BAAA,CAEA,aAAA,CADA,afo9BJ,Ceh9BI,gCACE,Yfk9BN,Ce78BE,iBAOE,eAAA,CANA,YAAA,CAKA,cAAA,CAGA,mBAAA,CAAA,eAAA,CADA,cAAA,CAGA,uCAAA,CADA,eAAA,CAEA,uBf28BJ,Cex8BI,8CACE,Uf08BN,Cet8BI,+BACE,oBfw8BN,CK1zBI,0CUvIE,uBACE,afo8BN,Cej8BM,yCACE,Yfm8BR,CACF,Ce97BI,iCACE,gBfi8BN,Cel8BI,iCACE,iBfi8BN,Cel8BI,uBAEE,gBfg8BN,Ce77BM,iCACE,ef+7BR,Cez7BE,kBACE,WAAA,CAIA,eAAA,CADA,mBAAA,CAFA,6BAAA,CACA,cAAA,CAGA,kBf27BJ,Cev7BE,mBAEE,YAAA,CADA,af07BJ,Cer7BE,sBACE,gBAAA,CACA,Ufu7BJ,Cel7BA,gBACE,gDfq7BF,Cel7BE,uBACE,YAAA,CACA,cAAA,CACA,6BAAA,CACA,afo7BJ,Ceh7BE,kCACE,sCfk7BJ,Ce/6BI,gFACE,+Bfi7BN,Cez6BA,cAKE,wCAAA,CADA,gBAAA,CADA,iBAAA,CADA,eAAA,CADA,Ufg7BF,CKp4BI,mCU7CJ,cASI,Uf46BF,CACF,Cex6BE,yBACE,sCf06BJ,Cen6BA,WACE,mBAAA,CACA,SAAA,CAEA,cAAA,CADA,qBfu6BF,CKn5BI,mCUvBJ,WAQI,efs6BF,CACF,Cen6BE,iBACE,oBAAA,CAEA,aAAA,CACA,iBAAA,CAFA,Yfu6BJ,Cel6BI,wBACE,efo6BN,Ceh6BI,qBAGE,iBAAA,CAFA,gBAAA,CACA,mBfm6BN,CgBzkCE,uBAME,kBAAA,CACA,mBAAA,CAHA,gCAAA,CACA,cAAA,CAJA,oBAAA,CAEA,eAAA,CADA,kBAAA,CAMA,gEhB4kCJ,CgBtkCI,gCAEE,2CAAA,CACA,uCAAA,CAFA,gChB0kCN,CgBpkCI,0DAEE,0CAAA,CACA,sCAAA,CAFA,+BhBwkCN,CgBjkCE,gCAKE,4BhBskCJ,CgB3kCE,gEAME,6BhBqkCJ,CgB3kCE,gCAME,4BhBqkCJ,CgB3kCE,sBAIE,6DAAA,CAGA,8BAAA,CAJA,eAAA,CAFA,aAAA,CACA,eAAA,CAMA,sChBmkCJ,CgB9jCI,wDACE,6CAAA,CACA,8BhBgkCN,CgB5jCI,+BACE,UhB8jCN,CiBjnCA,WAOE,2CAAA,CAGA,8CACE,CALF,gCAAA,CADA,aAAA,CAHA,MAAA,CADA,eAAA,CACA,OAAA,CACA,KAAA,CACA,SjBwnCF,CiB7mCE,aAfF,WAgBI,YjBgnCF,CACF,CiB7mCE,mBAIE,2BAAA,CAHA,iEjBgnCJ,CiBzmCE,mBACE,kDACE,CAEF,kEjBymCJ,CiBnmCE,kBAEE,kBAAA,CADA,YAAA,CAEA,ejBqmCJ,CiBjmCE,mBAKE,kBAAA,CAEA,cAAA,CAHA,YAAA,CAIA,uCAAA,CALA,aAAA,CAFA,iBAAA,CAQA,uBAAA,CAHA,qBAAA,CAJA,SjB0mCJ,CiBhmCI,yBACE,UjBkmCN,CiB9lCI,iCACE,oBjBgmCN,CiB5lCI,uCAEE,uCAAA,CADA,YjB+lCN,CiB1lCI,2BAEE,YAAA,CADA,ajB6lCN,CK/+BI,0CY/GA,2BAMI,YjB4lCN,CACF,CiBzlCM,8DAIE,iBAAA,CAHA,aAAA,CAEA,aAAA,CADA,UjB6lCR,CK7gCI,mCYzEA,iCAII,YjBslCN,CACF,CiBnlCM,wCACE,YjBqlCR,CiBjlCM,+CACE,oBjBmlCR,CKxhCI,sCYtDA,iCAII,YjB8kCN,CACF,CiBzkCE,kBAEE,YAAA,CACA,cAAA,CAFA,iBAAA,CAIA,8DACE,CAFF,kBjB4kCJ,CiBtkCI,oCAGE,SAAA,CADA,mBAAA,CAKA,6BAAA,CAHA,8DACE,CAJF,UjB4kCN,CiBnkCM,8CACE,8BjBqkCR,CiBhkCI,8BACE,ejBkkCN,CiB7jCE,4BAGE,gBAAA,CAAA,kBjBikCJ,CiBpkCE,4BAGE,iBAAA,CAAA,iBjBikCJ,CiBpkCE,kBACE,WAAA,CAGA,eAAA,CAFA,aAAA,CAGA,kBjB+jCJ,CiB5jCI,4CAGE,SAAA,CADA,mBAAA,CAKA,8BAAA,CAHA,8DACE,CAJF,UjBkkCN,CiBzjCM,sDACE,6BjB2jCR,CiBvjCM,8DAGE,SAAA,CADA,mBAAA,CAKA,uBAAA,CAHA,8DACE,CAJF,SjB6jCR,CiBljCI,uCAGE,WAAA,CAFA,iBAAA,CACA,UjBqjCN,CiB/iCE,mBACE,YAAA,CACA,aAAA,CACA,cAAA,CAEA,+CACE,CAFF,kBjBkjCJ,CiB5iCI,8DACE,WAAA,CACA,SAAA,CACA,oCjB8iCN,CiBriCI,yBACE,QjBuiCN,CiBliCE,mBACE,YjBoiCJ,CKhmCI,mCY2DF,6BAQI,gBjBoiCJ,CiB5iCA,6BAQI,iBjBoiCJ,CiB5iCA,mBAKI,aAAA,CAEA,iBAAA,CADA,ajBsiCJ,CACF,CKxmCI,sCY2DF,6BAaI,kBjBoiCJ,CiBjjCA,6BAaI,mBjBoiCJ,CACF,CDnxCA,SAGE,uCAAA,CAFA,eAAA,CACA,eCuxCF,CDnxCE,eACE,mBAAA,CACA,cAAA,CAGA,eAAA,CADA,QAAA,CADA,SCuxCJ,CDjxCE,sCAEE,WAAA,CADA,iBAAA,CAAA,kBCoxCJ,CD/wCE,eACE,+BCixCJ,CD9wCI,0CACE,+BCgxCN,CD1wCA,UAKE,wBmBaa,CnBZb,oBAAA,CAFA,UAAA,CAHA,oBAAA,CAEA,eAAA,CADA,0BAAA,CAAA,2BCixCF,CmBnzCA,MACE,0MAAA,CACA,gMAAA,CACA,yNnBszCF,CmBhzCA,QACE,eAAA,CACA,enBmzCF,CmBhzCE,eAKE,uCAAA,CAJA,aAAA,CAGA,eAAA,CADA,eAAA,CADA,eAAA,CAIA,sBnBkzCJ,CmB/yCI,+BACE,YnBizCN,CmB9yCM,mCAEE,WAAA,CADA,UnBizCR,CmBzyCQ,sFAME,iBAAA,CALA,aAAA,CAGA,aAAA,CADA,cAAA,CAEA,kBAAA,CAHA,UnB+yCV,CmBpyCE,cAGE,eAAA,CADA,QAAA,CADA,SnBwyCJ,CmBlyCE,cAGE,sBAAA,CAFA,YAAA,CACA,SAAA,CAEA,iBAAA,CAEA,uBAAA,CADA,sBnBqyCJ,CmBjyCI,sBACE,uCnBmyCN,CmB5xCM,6EAEE,+BnB8xCR,CmBzxCI,2BAIE,iBnBwxCN,CmBpxCI,4CACE,gBnBsxCN,CmBvxCI,4CACE,iBnBsxCN,CmBlxCI,kBAME,iBAAA,CAFA,aAAA,CACA,YAAA,CAFA,iBnBqxCN,CmB9wCI,sGACE,+BAAA,CACA,cnBgxCN,CmB5wCI,4BACE,uCAAA,CACA,oBnB8wCN,CmB1wCI,0CACE,YnB4wCN,CmBzwCM,yDAKE,6BAAA,CAJA,aAAA,CAEA,WAAA,CACA,qCAAA,CAAA,6BAAA,CAFA,UnB8wCR,CmBvwCM,kDACE,YnBywCR,CmBnwCE,iCACE,YnBqwCJ,CmBlwCI,6CACE,WAAA,CAGA,WnBkwCN,CmB7vCE,cACE,anB+vCJ,CmB3vCE,gBACE,YnB6vCJ,CK9tCI,0CcxBA,0CASE,2CAAA,CAHA,YAAA,CACA,qBAAA,CACA,WAAA,CALA,MAAA,CADA,iBAAA,CACA,OAAA,CACA,KAAA,CACA,SnB4vCJ,CmBjvCI,+DACE,eAAA,CACA,enBmvCN,CmB/uCI,gCAQE,qDAAA,CAHA,uCAAA,CAEA,cAAA,CALA,aAAA,CAEA,kBAAA,CADA,wBAAA,CAFA,iBAAA,CAKA,kBnBmvCN,CmB9uCM,wDAGE,UnBovCR,CmBvvCM,wDAGE,WnBovCR,CmBvvCM,8CAIE,aAAA,CAEA,aAAA,CACA,YAAA,CANA,iBAAA,CACA,SAAA,CAGA,YnBkvCR,CmB7uCQ,oDAKE,6BAAA,CADA,UAAA,CAHA,aAAA,CAEA,WAAA,CAGA,2CAAA,CAAA,mCAAA,CACA,4BAAA,CAAA,oBAAA,CACA,6BAAA,CAAA,qBAAA,CACA,yBAAA,CAAA,iBAAA,CAPA,UnBsvCV,CmB1uCM,8CAGE,2CAAA,CACA,gEACE,CAJF,eAAA,CAKA,4BAAA,CAJA,kBnB+uCR,CmBxuCQ,2DACE,YnB0uCV,CmBruCM,8CAGE,2CAAA,CADA,gCAAA,CADA,enByuCR,CmBnuCM,yCAIE,aAAA,CAFA,UAAA,CAIA,YAAA,CADA,aAAA,CAJA,iBAAA,CACA,WAAA,CACA,SnBwuCR,CmBhuCI,+BACE,MnBkuCN,CmB9tCI,+BACE,4DnBguCN,CmB7tCM,qDACE,+BnB+tCR,CmB5tCQ,sHACE,+BnB8tCV,CmBxtCI,+BAEE,YAAA,CADA,mBnB2tCN,CmBvtCM,mCACE,enBytCR,CmBrtCM,6CACE,SnButCR,CmBntCM,uDAGE,mBnBstCR,CmBztCM,uDAGE,kBnBstCR,CmBztCM,6CAIE,gBAAA,CAFA,aAAA,CADA,YnBwtCR,CmBltCQ,mDAKE,6BAAA,CADA,UAAA,CAHA,aAAA,CAEA,WAAA,CAGA,2CAAA,CAAA,mCAAA,CACA,4BAAA,CAAA,oBAAA,CACA,6BAAA,CAAA,qBAAA,CACA,yBAAA,CAAA,iBAAA,CAPA,UnB2tCV,CmB3sCM,+CACE,mBnB6sCR,CmBrsCM,4CAEE,wBAAA,CADA,enBwsCR,CmBpsCQ,oEACE,mBnBssCV,CmBvsCQ,oEACE,oBnBssCV,CmBlsCQ,4EACE,iBnBosCV,CmBrsCQ,4EACE,kBnBosCV,CmBhsCQ,oFACE,mBnBksCV,CmBnsCQ,oFACE,oBnBksCV,CmB9rCQ,4FACE,mBnBgsCV,CmBjsCQ,4FACE,oBnBgsCV,CmBzrCE,mBACE,wBnB2rCJ,CmBvrCE,wBACE,YAAA,CACA,SAAA,CAIA,0BAAA,CAHA,oEnB0rCJ,CmBprCI,kCACE,2BnBsrCN,CmBjrCE,gCACE,SAAA,CAIA,uBAAA,CAHA,qEnBorCJ,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 0000000000000000000000000000000000000000..1d5ccabbc76419469877cc43e155b7f85571745f GIT binary patch literal 34626 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 B{pbJy literal 0 HcmV?d00001 diff --git a/course/images/3-2/flow.jpg b/course/images/3-2/flow.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6a45230f207cbe3cf8d093a6559db51cda70c017 GIT binary patch literal 17674 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 F|6c)E1=0Wj literal 0 HcmV?d00001 diff --git a/course/images/3-2/generate_trajectory.jpg b/course/images/3-2/generate_trajectory.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b2ee876ee6b114d88a1d5eae33693c15dc3fe42d GIT binary patch literal 21199 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


o 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 z @@ -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 cf2760aa88f30d4d80b555dbade74688563e6340..3acb89a6893ac95f6ab9428035a5185da4688307 100644 GIT binary patch literal 1124 zcmV-q1e^OGiwFn+M4)B@|8r?{Wo=<_E_iKh0Ogy(Qrj>TMfZF~#(PIVnQ37{*!2tA zbw}7Qv5GAlNlxJJD+k&Hu$^>DpDqd;V#SW%%{$1B$eGj>C{CxB z$31%O^gvBB@u$oGuip!KA8V(7N5kmx>uOlKyCmoQER|X(jiWr) zPWQ#c==xY?ECeW>(?hI%--g5J_S%cT$tXpJQy zSGCHe&M00adUB$$Fj5*P1d-1PuQEb4KkQ$BBVF;M@gcRp6Nwyvw^^Y;7%qNQ{-p0!L0=5luHLDyekp8{Nh`NsPtCK;w`K z*~#!3$xy_fB!CV)TWZ#WwUtKt^0zatYMGU#?C?a@A8=MLkF|s(a>8S3lNPDttzFZQDlAh zD7#Ay*|v1iP7(VeW8iUUl>sQR?QNxO_m!RFK;%_kL_P*eWP!tyYa4Ofsxt4Mz9SPW z76VB!fY?(UBMQd=0ciWfHohR4``cQZT2-~>=IOX87z&Jp#J(CC`Pls=95)zmk|Gf? zSR5k?D`nMfNk=nN4CF<^Vo!;TaBNpsH`{TO(H9m8i?RB6m}n?d3zcn#tSF?(*V070 zY&8}ago^_z3_*s{{tZ~j>{!rvnHQ3c{t`pL@qAUQ&5^+IGA|??{Ux%%@x}}b4+Nk6 z2B!#ewH(LDFI4Dn$@%jy{=7n5LzfQ&@qs4y1(WB{{ljNIHoyF(XZ{Nt@P{M;Z~y=eEGrlQ literal 1124 zcmV-q1e^OGiwFn+p`B&||8r?{Wo=<_E_iKh0Ogy(Qrj>TMfd%RjQ5U!cBX|1Vb?Ec z*BxQM#AI%gal#eKwhYnE0RWT#t{oTVOt!ABYNysDRaVHd zB)z2RQn{kNovK>wjiz~>wH0Y6ollltoLzhpSzT4FR_7Dh_rgdp-c;YCKM=7;_3Z=@@JG(M#EcOsDk@H#6L2*c%Z0a42iK4S>VX2E28N}MJ1I^eWTlWCyBAR7-$?* zAv+m9BN>YLlf-aXJSzI@V`pMho0V;3Mrmv1@+8RUi;Ty|Sd{^0j=NSF>K;eFK6OND z#JOa&P^Pu&MQtj%TQ-Y#-MTL*${O}qZR{L$|1OXDK6EfE9u2+au>jHd(5g~e8b#K3 zkFr&2$hM`6c8WL@83T`Fs|-MiZEq`OyRYn=1|l!=BJwd%A`2XrT-%7-R+V}8^omTZ zSPUe^0OCM#j3}G}1fcB?+xUWH?r&>tYE{*i+o$8EU??yW5{GJJ^L z8=NA@)p8sok3)k4@&maVj49=D+i#${AQuEk-+(-{7tWM}*A00Q0kru7ICHqFAukQELSHap4&6EA
- +