CINXE.COM
Robotics Stack Exchange
<!DOCTYPE html> <html class="html__responsive " lang="en"> <head> <title>Robotics Stack Exchange</title> <link rel="shortcut icon" href="https://cdn.sstatic.net/Sites/robotics/Img/favicon.ico?v=42d20c2cdcf1"> <link rel="apple-touch-icon" href="https://cdn.sstatic.net/Sites/robotics/Img/apple-touch-icon.png?v=2b4dee09af5b"> <link rel="image_src" href="https://cdn.sstatic.net/Sites/robotics/Img/apple-touch-icon.png?v=2b4dee09af5b"> <link rel="search" type="application/opensearchdescription+xml" title="Robotics Stack Exchange" href="/opensearch.xml"> <meta name="description" content="Q&A for professional robotic engineers, hobbyists, researchers and students"/> <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, minimum-scale=1.0"> <meta property="og:type" content= "website" /> <meta property="og:url" content="https://robotics.stackexchange.com/"/> <meta property="og:site_name" content="Robotics Stack Exchange" /> <meta property="og:image" itemprop="image primaryImageOfPage" content="https://cdn.sstatic.net/Sites/robotics/Img/apple-touch-icon@2.png?v=da210979bb08" /> <meta name="twitter:card" content="summary"/> <meta name="twitter:domain" content="robotics.stackexchange.com"/> <meta name="twitter:title" property="og:title" itemprop="name" content="Robotics Stack Exchange" /> <meta name="twitter:description" property="og:description" itemprop="description" content="Q&A for professional robotic engineers, hobbyists, researchers and students" /> <script id="webpack-public-path" type="text/uri-list">https://cdn.sstatic.net/</script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script> <script defer src="https://cdn.sstatic.net/Js/third-party/npm/@stackoverflow/stacks/dist/js/stacks.min.js?v=90a447add688"></script> <script src="https://cdn.sstatic.net/Js/stub.en.js?v=30464efc364f"></script> <link rel="stylesheet" type="text/css" href="https://cdn.sstatic.net/Shared/stacks.css?v=bd2aba62c5a4"> <link rel="stylesheet" type="text/css" href="https://cdn.sstatic.net/Sites/robotics/primary.css?v=e192c5b2b284"> <link rel="alternate" type="application/atom+xml" title="Feed of recent questions" href="/feeds"> <script> StackExchange.ready(function() { StackExchange.realtime.subscribeToActiveQuestions('469', 'home-active'); }); </script> <link rel="stylesheet" type="text/css" href="https://cdn.sstatic.net/Shared/Channels/channels.css?v=5981bb1a5bd7"> <script type="text/x-mathjax-config"> MathJax.Hub.Config({ "HTML-CSS": { preferredFont: "TeX", availableFonts: ["STIX", "TeX"], linebreaks: { automatic: true }, EqnChunk: (MathJax.Hub.Browser.isMobile ? 10 : 50) }, tex2jax: { inlineMath: [["$", "$"], ["\\\\(","\\\\)"]], displayMath: [["$$", "$$"], ["\\[", "\\]"]], processEscapes: true, ignoreClass: "tex2jax_ignore|dno" }, TeX: { extensions: ["begingroup.js"], noUndefined: { attributes: { mathcolor: "red", mathbackground: "#FFEEEE", mathsize: "90%" } }, Macros: { href: "{}" } }, messageStyle: "none", styles: { ".MathJax_Display, .MathJax_Preview, .MathJax_Preview > *": { "background": "inherit" } }, SEEditor: "mathjaxEditing" }); </script> <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS_HTML-full"></script> <script> StackExchange.ready(function () { StackExchange.realtime.init('wss://qa.sockets.stackexchange.com'); StackExchange.realtime.subscribeToReputationNotifications('469'); StackExchange.realtime.subscribeToTopBarNotifications('469'); }); </script> <script type="application/json" data-role="module-args" data-module-name="Shared/options.mod">{"options":{"locale":"en","serverTime":1740576155,"routeName":"Home/Index","stackAuthUrl":"https://stackauth.com","networkMetaHostname":"meta.stackexchange.com","site":{"name":"Robotics Stack Exchange","description":"Q\u0026A for professional robotic engineers, hobbyists, researchers and students","isNoticesTabEnabled":true,"enableNewTagCreationWarning":false,"insertSpaceAfterNameTabCompletion":false,"id":469,"cookieDomain":".stackexchange.com","childUrl":"https://robotics.meta.stackexchange.com","negativeVoteScoreFloor":null,"enableSocialMediaInSharePopup":true,"protocol":"https"},"user":{"fkey":"b39cb1a761f93912de068f8e6267ee5702b7d597a570755c5112354b099addd4","tid":"77af7c59-1dc8-43c1-8d3b-b3499d2e7a9f","rep":0,"isAnonymous":true,"isAnonymousNetworkWide":true},"realtime":{"newest":true,"active":true,"tagged":true,"staleDisconnectIntervalInHours":0},"events":{"postType":{"question":1},"postEditionSection":{"title":1,"body":2,"tags":3}}}}</script> <script type="application/json" data-role="module-args" data-module-name="Shared/settings.mod">{"settings":{"questionLinkTitleReplacement":{"maxNumberOfSitesProcessed":10,"maxReplacementsPerSite":20},"comments":{},"elections":{"opaVoteResultsBaseUrl":"https://www.opavote.com/results/"},"markdown":{"enableTables":true},"paths":{"jQueryUIJSPath":"https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.0/jquery-ui.min.js","jQueryUICSSPath":"https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.0/themes/smoothness/jquery-ui.css"},"site":{"enableUserHovercards":true,"stacksEditorPreviewEnabled":true,"forceHttpsImages":true,"allowImageUploads":true,"styleCode":true,"enableImageHttps":true},"auth":{"oauthInPopup":true},"mentions":{"maxNumUsersInDropdown":50},"flags":{"allowRetractingCommentFlags":true,"allowRetractingFlags":true},"search":{},"intercom":{"appId":"inf0secd"},"snippets":{"renderDomain":"stacksnippets.net"},"userMessaging":{},"questions":{"enableQuestionTitleLengthLiveWarning":true,"questionTitleLengthStartLiveWarningChars":50,"maxTitleSize":150,"enableSavesFeature":true},"tags":{},"legal":{"useCustomConsent":false,"oneTrustTCFConfigId":"cb0f3c87-b769-4e66-bbaa-377f9194216d"},"subscriptions":{"defaultMaxTrueUpSeats":1000,"defaultFreemiumMaxTrueUpSeats":50,"defaultBasicMaxTrueUpSeats":250},"accounts":{"currentPasswordRequiredForChangingStackIdPassword":true},"image":{"maxImageUploadSizeInBytesAnimatedGif":2097152,"maxImageUploadSizeInBytes":10485760}}}</script> <script>StackExchange.init();</script> <script> StackExchange.using.setCacheBreakers({"Js/adops.en.js":"6da43f5e0a84","Js/ask.en.js":"","Js/begin-edit-event.en.js":"20edbaccceae","Js/copy-transpiled.en.js":"f48f8f039185","Js/events.en.js":"","Js/explore-qlist.en.js":"ee2a4f8c3992","Js/full-anon.en.js":"427705904ec4","Js/full.en.js":"21465ad85806","Js/highlightjs-loader.en.js":"a3e36fe85053","Js/inline-tag-editing.en.js":"8517756a2cb6","Js/keyboard-shortcuts.en.js":"c255a5a5979b","Js/markdown-it-loader.en.js":"781aa77e9602","Js/mentions-transpiled.en.js":"bcadb48d3570","Js/moderator.en.js":"e891f78ea17e","Js/postCollections-transpiled.en.js":"9f7a87e8cf0d","Js/post-validation.en.js":"44d59ccfc490","Js/question-editor.en.js":"","Js/review-v2-transpiled.en.js":"c9e05881f8ab","Js/revisions.en.js":"9dd135bb585f","Js/stacks-editor.en.js":"cf77c9d2187c","Js/tageditor.en.js":"5b8f289d02ef","Js/tageditornew.en.js":"ca426894aed0","Js/tagsuggestions.en.js":"762b96a1ae1f","Js/unlimited-transpiled.en.js":"8713a979101d","Js/wmd.en.js":"eef1c2cfa021","Js/mathjax-editing.v3.en.js":"4f38b81017dc","Js/mathjax-editing.en.js":"2581d730d948"}); StackExchange.using("gps", function() { StackExchange.gps.init(false); }); </script> <noscript id="noscript-css"><style>body,.s-topbar{margin-top:1.9em}</style></noscript> </head> <body class="home-page unified-theme"> <div id="signup-modal-container"></div> <script type="application/json" data-role="module-args" data-module-name="islands/signup-modal/index.mod">{"ContainerElementId":"signup-modal-container","FKey":"b39cb1a761f93912de068f8e6267ee5702b7d597a570755c5112354b099addd4","TriggerEvent":"signupModalShow","OauthInPopup":true,"ReturnUrl":"https://robotics.stackexchange.com/","ReturnUrlForPopup":"https://robotics.stackexchange.com/users/after-signup/oauth-only","SiteName":"Robotics","SiteLogoPath":"https://cdn.sstatic.net/Sites/robotics/Img/icon-48.png?v=f509cad5e7bf","AuthProviders":["Google"],"ParentSiteUrl":"","IsInitiallyVisible":false}</script> <script defer src="https://cdn.sstatic.net/Js/webpack-chunks/svelte.en.js?v=f1f216c36f5e"></script><script defer src="https://cdn.sstatic.net/Js/webpack-chunks/stacks-svelte.en.js?v=e5a0c3f4bb1b"></script><script defer src="https://cdn.sstatic.net/Js/webpack-chunks/8901.en.js?v=9ff34567d3a5"></script><script defer src="https://cdn.sstatic.net/Js/islands/signup-modal.en.js?v=47ec828efb46"></script> <script defer> dispatchEvent(new CustomEvent("openSignupModal")); </script> <div id="one-tap-container"></div> <script type="application/json" data-role="module-args" data-module-name="islands/one-tap/index.mod">{"ContainerElementId":"one-tap-container","FKey":"b39cb1a761f93912de068f8e6267ee5702b7d597a570755c5112354b099addd4","GoogleClientId":"717762328687-iludtf96g1hinl76e4lc1b9a82g457nn.apps.googleusercontent.com","Autoselect":false,"ReturnUrl":"https%3a%2f%2frobotics.stackexchange.com%2f"}</script><script defer src="https://cdn.sstatic.net/Js/webpack-chunks/svelte.en.js?v=f1f216c36f5e"></script><script defer src="https://cdn.sstatic.net/Js/islands/one-tap.en.js?v=bc67e8c0f01e"></script> <div id="notify-container"></div> <div id="custom-header"></div> <header class="s-topbar ps-fixed t0 l0 js-top-bar"> <a href="#content" class="s-topbar--skip-link">Skip to main content</a> <div class="s-topbar--container"> <a href="#" class="s-topbar--menu-btn js-left-sidebar-toggle" role="menuitem" aria-haspopup="true" aria-controls="left-sidebar" aria-expanded="false"><span></span></a> <div class="topbar-dialog leftnav-dialog js-leftnav-dialog dno"> <div class="left-sidebar js-unpinned-left-sidebar" data-can-be="left-sidebar" data-is-here-when="sm"></div> </div> <a href="#" class="s-topbar--logo network-logo js-gps-track js-network-logo" data-gps-track="stack_exchange_popup.show" role="menuitem" aria-haspopup="true" aria-controls="topbar-network-logo-dialog" aria-expanded="false"> <svg aria-hidden="true" class="native mtn1 svg-icon iconSEAlternativeSm" width="107" height="15" viewBox="0 0 107 15"><path fill="#FEFEFE" d="m48.41 11.93-1.96-3.2-1.04 1.16v2.04h-1.42V2.18h1.42v6.01L48.14 5h1.72l-2.44 2.7 2.74 4.22zm-7.06.08c-1.59 0-3.14-.96-3.14-3.56s1.55-3.54 3.14-3.54c.97 0 1.65.27 2.31.97l-.97.93c-.44-.48-.79-.66-1.34-.66q-.84.01-1.3.62c-.31.38-.42.87-.42 1.68s.1 1.32.41 1.7c.3.4.76.62 1.3.62.56 0 .9-.18 1.35-.66l.97.92c-.66.7-1.34.98-2.31.98m-5.66-3.15h-1.65c-.83 0-1.26.37-1.26 1s.4.99 1.3.99c.53 0 .93-.04 1.3-.4q.32-.29.31-1.03zm.03 3.07v-.63c-.51.5-1 .71-1.87.71s-1.46-.2-1.89-.63a2 2 0 0 1-.55-1.49c0-1.16.82-2 2.42-2h1.86v-.5c0-.87-.44-1.3-1.54-1.3-.77 0-1.15.18-1.54.68l-.92-.86c.66-.77 1.35-1 2.52-1q2.9 0 2.9 2.38v4.64zm-5.9 0c-1.32 0-1.93-.93-1.93-1.93V6.18h-.8V5.1h.8V3h1.41v2.1h1.36v1.07H29.3v3.75c0 .5.25.81.78.81h.58v1.2zm-6.33.08c-1.48 0-2.55-.34-3.49-1.28l1-.98c.72.72 1.51.94 2.52.94 1.3 0 2.04-.55 2.04-1.5q0-.65-.39-1.01c-.25-.23-.5-.33-1.08-.41l-1.16-.17a3.4 3.4 0 0 1-1.88-.78 2.4 2.4 0 0 1-.72-1.86c0-1.7 1.25-2.86 3.3-2.86 1.3 0 2.22.33 3.07 1.1l-.96.94a3 3 0 0 0-2.15-.75c-1.16 0-1.8.65-1.8 1.52q-.02.54.37.9c.25.22.65.38 1.11.45l1.13.17c.91.13 1.42.35 1.84.72.54.47.8 1.17.8 2 0 1.8-1.48 2.86-3.55 2.86"/><path fill="#2F96E8" d="M104.16 7.09c-.2-.42-.6-.74-1.2-.74s-.99.32-1.18.74c-.1.25-.15.44-.16.75h2.7a2 2 0 0 0-.16-.75m-2.54 1.96c0 .9.56 1.57 1.55 1.57.78 0 1.16-.21 1.61-.66l1.08 1.04a3.4 3.4 0 0 1-2.7 1.11c-1.68 0-3.29-.76-3.29-3.62 0-2.3 1.26-3.6 3.1-3.6 1.97 0 3.1 1.44 3.1 3.37v.79zm-5.48-2.57C95.1 6.48 95 7.37 95 8.3s.1 1.85 1.15 1.85 1.18-.91 1.18-1.85c0-.93-.13-1.82-1.18-1.82m-.17 8.22c-1.1 0-1.84-.21-2.58-.92l1.1-1.11c.4.38.8.54 1.4.54 1.06 0 1.43-.74 1.43-1.46v-.72c-.47.51-1 .7-1.7.7-.69 0-1.29-.23-1.68-.62-.67-.66-.73-1.57-.73-2.8 0-1.24.06-2.13.73-2.8.4-.39 1-.62 1.7-.62.75 0 1.24.2 1.73.75v-.67h1.72v6.8c0 1.7-1.21 2.93-3.12 2.93m-5.76-2.67V7.76c0-.96-.61-1.28-1.17-1.28s-1.18.32-1.18 1.28v4.27h-1.78V4.97h1.73v.65a2.4 2.4 0 0 1 1.78-.73q1.07.02 1.67.62c.58.57.73 1.24.73 2v4.52zm-7.1-2.98h-1.4c-.64 0-1 .3-1 .8 0 .49.33.81 1.02.81.5 0 .8-.04 1.12-.34q.28-.25.26-.89zm.04 2.98v-.6c-.48.47-.93.67-1.74.67q-1.2 0-1.82-.62c-.38-.4-.58-.97-.58-1.59 0-1.12.77-2.05 2.42-2.05h1.68V7.5c0-.77-.38-1.11-1.32-1.11-.68 0-1 .16-1.37.58l-1.13-1.1c.7-.75 1.38-.97 2.57-.97q3 0 3.02 2.5v4.64zm-6.93 0v-4.3c0-.94-.6-1.25-1.15-1.25-.56 0-1.15.32-1.15 1.24v4.31h-1.77V2.38h1.77v3.24a2.4 2.4 0 0 1 1.7-.73c1.56 0 2.38 1.08 2.38 2.57v4.57zm-6.96.08c-1.42 0-3.18-.76-3.18-3.62 0-2.85 1.76-3.6 3.18-3.6.98 0 1.72.3 2.34.95l-1.2 1.2c-.36-.4-.68-.56-1.14-.56q-.62-.01-1.01.46c-.27.33-.4.8-.4 1.55s.13 1.24.4 1.58q.39.46 1 .46c.47 0 .79-.16 1.15-.56l1.2 1.18c-.62.65-1.36.96-2.34.96m-5.53-.08-1.3-2.11-1.3 2.11H59l2.45-3.6-2.35-3.46h2.12L62.42 7l1.21-2.02h2.13L63.4 8.43l2.46 3.6zm-11.75 0V2.06h6.6V3.8h-4.65v2.33h3.96v1.74h-3.96v2.42h4.65v1.74z"/><path fill="#8FD8F7" d="M0 3c0-1.1.9-2 2-2h8a2 2 0 0 1 2 2z"/><path fill="#155397" d="M12 10H0c0 1.1.9 2 2 2h5v3l3-3a2 2 0 0 0 2-2"/><path fill="#46A2D9" d="M0 4h12v2H0z"/><path fill="#2D6DB5" d="M0 7h12v2H0z"/></svg> </a> <div class="topbar-dialog network-logo-dialog js-network-logo-dialog dno" id="topbar-network-logo-dialog" role="dialog" aria-labelledby="topbar-network-logo-dialog-title" aria-describedby="topbar-network-logo-dialog-body"> <div class="dialog-content"> <h4 class="bold" id="topbar-network-logo-dialog-title">Stack Exchange Network</h4> <p id="topbar-network-logo-dialog-body"> Stack Exchange network consists of 183 Q&A communities including <a href="https://stackoverflow.com">Stack Overflow</a>, the largest, most trusted online community for developers to learn, share their knowledge, and build their careers. </p> <a class="s-btn s-btn__filled" href="https://stackexchange.com" data-gps-track="stack_exchange_popup.click">Visit Stack Exchange</a> <button class="s-btn s-btn__muted p0 ps-absolute t16 r16 js-close-button" aria-label="Close"><svg aria-hidden="true" class="svg-icon iconClear" width="18" height="18" viewBox="0 0 18 18"><path d="M15 4.41 13.59 3 9 7.59 4.41 3 3 4.41 7.59 9 3 13.59 4.41 15 9 10.41 13.59 15 15 13.59 10.41 9z"/></svg></button> </div> </div> <form id="search" role="search" action=/search class="s-topbar--searchbar js-searchbar " autocomplete="off"> <div class="s-topbar--searchbar--input-group"> <input name="q" type="text" role="combobox" placeholder="Search on Robotics…" value="" autocomplete="off" maxlength="240" class="s-input s-input__search js-search-field wmn1 " aria-label="Search" aria-controls="top-search" data-controller="s-popover" data-action="focus->s-popover#show" data-s-popover-placement="bottom-start" /> <svg aria-hidden="true" class="s-input-icon s-input-icon__search svg-icon iconSearch" width="18" height="18" viewBox="0 0 18 18"><path d="m18 16.5-5.14-5.18h-.35a7 7 0 1 0-1.19 1.19v.35L16.5 18zM12 7A5 5 0 1 1 2 7a5 5 0 0 1 10 0"/></svg> <div class="s-popover p0 wmx100 wmn4 sm:wmn-initial js-top-search-popover" id="top-search" role="menu"> <div class="s-popover--arrow"></div> <div class="s-popover--content"> <div class="js-spinner p24 d-flex ai-center jc-center d-none"> <div class="s-spinner s-spinner__sm fc-orange-400"> <div class="v-visible-sr">Loading…</div> </div> </div> <span class="v-visible-sr js-screen-reader-info"></span> <div class="js-ac-results overflow-y-auto hmx3 d-none"></div> <div class="js-search-hints" aria-describedby="Tips for searching"></div> </div> </div> </div> </form> <nav class="h100 ml-auto overflow-x-auto pr12" aria-label="Topbar"> <ol class="s-topbar--content" role="menubar"> <li role="none"> <a href="/help" class="s-topbar--item js-help-button" role="menuitem" title="Help Center and other resources" aria-haspopup="true" aria-controls="topbar-help-dialog" data-ga="["top navigation","help menu click",null,null,null]"><svg aria-hidden="true" class="svg-icon iconHelp" width="18" height="18" viewBox="0 0 18 18"><path d="M9 1C4.64 1 1 4.64 1 9s3.64 8 8 8 8-3.64 8-8-3.64-8-8-8m.81 12.13c-.02.71-.55 1.15-1.24 1.13-.66-.02-1.17-.49-1.15-1.2.02-.72.56-1.18 1.22-1.16.7.03 1.2.51 1.17 1.23M11.77 8c-.59.66-1.78 1.09-2.05 1.97a4 4 0 0 0-.09.75c0 .05-.03.16-.18.16H7.88c-.16 0-.18-.1-.18-.15.06-1.35.66-2.2 1.83-2.88.39-.29.7-.75.7-1.24.01-1.24-1.64-1.82-2.35-.72-.21.33-.18.73-.18 1.1H5.75c0-1.97 1.03-3.26 3.03-3.26 1.75 0 3.47.87 3.47 2.83 0 .57-.2 1.05-.48 1.44"/></svg></a> </li> <div class="topbar-dialog help-dialog js-help-dialog dno" id="topbar-help-dialog" role="menu"> <div class="modal-content"> <ul> <li> <a href="/tour" class="js-gps-track s-block-link" data-gps-track="help_popup.click({ item_type:1 })" data-ga="["top navigation","tour submenu click",null,null,null]"> Tour <span class="item-summary"> Start here for a quick overview of the site </span> </a> </li> <li> <a href="/help" class="js-gps-track s-block-link" data-gps-track="help_popup.click({ item_type:4 })" data-ga="["top navigation","help center",null,null,null]"> Help Center <span class="item-summary"> Detailed answers to any questions you might have </span> </a> </li> <li> <a href="https://robotics.meta.stackexchange.com" class="js-gps-track s-block-link" data-gps-track="help_popup.click({ item_type:2 })" data-ga="["top navigation","meta submenu click",null,null,null]"> Meta <span class="item-summary"> Discuss the workings and policies of this site </span> </a> </li> <li> <a href="https://stackoverflow.co/" class="js-gps-track s-block-link" data-gps-track="help_popup.click({ item_type:6 })" data-ga="["top navigation","about us submenu click",null,null,null]"> About Us <span class="item-summary"> Learn more about Stack Overflow the company, and our products </span> </a> </li> </ul> </div> </div> <li role="none"> <a href="https://stackexchange.com" class="s-topbar--item js-site-switcher-button js-gps-track" data-gps-track="site_switcher.show" aria-label="Site switcher" role="menuitem" title="A list of all 183 Stack Exchange sites" aria-haspopup="true" aria-expanded="false" data-ga="["top navigation","stack exchange click",null,null,null]"> <svg aria-hidden="true" class="svg-icon iconStackExchange" width="18" height="18" viewBox="0 0 18 18"><path d="M15 1H3a2 2 0 0 0-2 2v2h16V3a2 2 0 0 0-2-2M1 13c0 1.1.9 2 2 2h8v3l3-3h1a2 2 0 0 0 2-2v-2H1zm16-7H1v4h16z"/></svg> </a> </li> <li class="js-topbar-dialog-corral" role="presentation"> <div class="topbar-dialog siteSwitcher-dialog dno" role="menu"> <div class="header fw-wrap"> <h3 class="flex--item"> <a href="https://robotics.stackexchange.com">current community</a> </h3> <div class="flex--item fl1"> <div class="ai-center d-flex jc-end"> <button class="js-close-button s-btn s-btn__muted p0 ml8 d-none sm:d-block" type="button" aria-label="Close" > <svg aria-hidden="true" class="svg-icon iconClear" width="18" height="18" viewBox="0 0 18 18"><path d="M15 4.41 13.59 3 9 7.59 4.41 3 3 4.41 7.59 9 3 13.59 4.41 15 9 10.41 13.59 15 15 13.59 10.41 9z"/></svg> </button> </div> </div> </div> <div class="modal-content bg-blue-200 current-site-container"> <ul class="current-site"> <li class="d-flex"> <div class="fl1"> <a href="https://robotics.stackexchange.com" class="current-site-link d-flex gx8 site-link js-gps-track" data-id="469" data-gps-track="site_switcher.click({ item_type:3 })"> <div class="favicon favicon-robotics site-icon flex--item" title="Robotics"></div> <span class="flex--item fl1"> Robotics </span> </a> </div> <div class="related-links"> <a href="https://robotics.stackexchange.com/help" class="js-gps-track" data-gps-track="site_switcher.click({ item_type:14 })">help</a> <a href="https://chat.stackexchange.com?tab=site&host=robotics.stackexchange.com" class="js-gps-track" data-gps-track="site_switcher.click({ item_type:6 })">chat</a> </div> </li> <li class="related-site d-flex"> <div class="L-shaped-icon-container"> <span class="L-shaped-icon"></span> </div> <a href="https://robotics.meta.stackexchange.com" class="s-block-link px16 d-flex gx8 site-link js-gps-track" data-id="470" data-gps-track="site.switch({ target_site:470, item_type:3 }),site_switcher.click({ item_type:4 })"> <div class="favicon favicon-roboticsmeta site-icon flex--item" title="Robotics Meta"></div> <span class="flex--item fl1"> Robotics Meta </span> </a> </li> </ul> </div> <div class="header" id="your-communities-header"> <h3> your communities </h3> </div> <div class="modal-content" id="your-communities-section"> <div class="call-to-login"> <a href="https://robotics.stackexchange.com/users/signup?ssrc=site_switcher&returnurl=https%3a%2f%2frobotics.stackexchange.com%2f" class="login-link js-gps-track" data-gps-track="site_switcher.click({ item_type:10 })">Sign up</a> or <a href="https://robotics.stackexchange.com/users/login?ssrc=site_switcher&returnurl=https%3a%2f%2frobotics.stackexchange.com%2f" class="login-link js-gps-track" data-gps-track="site_switcher.click({ item_type:11 })">log in</a> to customize your list. </div> </div> <div class="header"> <h3><a href="https://stackexchange.com/sites">more stack exchange communities</a> </h3> <a href="https://stackoverflow.blog" class="float-right">company blog</a> </div> <div class="modal-content"> <div class="child-content"></div> </div> </div> </li> <li role="none"><button class="s-topbar--item s-btn s-btn__icon s-btn__muted d-none sm:d-inline-flex js-searchbar-trigger" role="menuitem" aria-label="Search" aria-haspopup="true" aria-controls="search" title="Click to show search"><svg aria-hidden="true" class="svg-icon iconSearch" width="18" height="18" viewBox="0 0 18 18"><path d="m18 16.5-5.14-5.18h-.35a7 7 0 1 0-1.19 1.19v.35L16.5 18zM12 7A5 5 0 1 1 2 7a5 5 0 0 1 10 0"/></svg></button></li> <li role="none"> <a href="https://robotics.stackexchange.com/users/login?ssrc=head&returnurl=https%3a%2f%2frobotics.stackexchange.com%2f" class="s-topbar--item s-topbar--item__unset s-btn s-btn__outlined ws-nowrap js-gps-track" role="menuitem" rel="nofollow" data-gps-track="login.click" data-ga="["top navigation","login button click",null,null,null]">Log in</a> </li> <li role="none"><a href="https://robotics.stackexchange.com/users/signup?ssrc=head&returnurl=https%3a%2f%2frobotics.stackexchange.com%2f" class="s-topbar--item s-topbar--item__unset ml4 s-btn s-btn__filled ws-nowrap js-signup-button js-gps-track" role="menuitem" rel="nofollow" data-gps-track="signup.topbar.click" data-ga="["sign up","Sign Up Navigation","Header",null,null]">Sign up</a></li> </ol> </nav> </div> </header> <script> StackExchange.ready(function () { StackExchange.topbar.init(); }); StackExchange.scrollPadding.setPaddingTop(50, 10); </script> <div id="announcement-banner" class="js-announcement-banner bg-black-500 fc-white baw0 ff-sans fs-body2 py2" data-campaign="2025-02-24.community-ama" data-cookie="notice-ama2" data-expire-date="1741291200000"> <div class="d-flex jc-space-between ai-center wmx12 mx-auto px16 py8"> <div class="flex--item mr12 "> <span> Ask questions and share your thoughts on the future of Stack Overflow. Join our first live community AMA this Wednesday, February 26th, at 3 PM ET. </span> <a target="_blank" class="s-link s-link__underlined fw-bold fc-white js-link js-gps-track" href="https://meta.stackexchange.com/questions/406399/join-us-for-our-first-community-wide-ama-ask-me-anything-with-stack-overflow-s?utm_medium=ppc&utm_source=stackoverflow-community&utm_campaign=community-ama&utm_content=announcement-banner2" data-ga="["community-ama","Announcement Banner","https://meta.stackexchange.com/questions/406399/join-us-for-our-first-community-wide-ama-ask-me-anything-with-stack-overflow-s?utm_medium=ppc&utm_source=stackoverflow-community&utm_campaign=community-ama&utm_content=announcement-banner2",null,{"dimension4":"community-ama"}]" data-gps-track="announcement_banner.click({campaign: '2025-02-24.community-ama', location: 1, action: 2})">Learn more</a> </div> <a class="flex--item fc-white js-dismiss js-gps-track" href="#" title="dismiss" data-gps-track="announcement_banner.click({campaign: '2025-02-24.community-ama', location: 1, action: 1})"><svg aria-hidden="true" class="m0 svg-icon iconClear" width="18" height="18" viewBox="0 0 18 18"><path d="M15 4.41 13.59 3 9 7.59 4.41 3 3 4.41 7.59 9 3 13.59 4.41 15 9 10.41 13.59 15 15 13.59 10.41 9z"/></svg></a> </div> </div> <script> StackExchange.ready(function () { StackExchange.Notice.announcementBannerInit(); }); </script> <header class="site-header"> <div class="site-header--container"> <a class="site-header--link fs-headline1 fw-bold" href="https://robotics.stackexchange.com"> Robotics </a> </div> </header> <div class="container"> <div id="left-sidebar" data-is-here-when="md lg" class="left-sidebar js-pinned-left-sidebar ps-relative"> <div class="left-sidebar--sticky-container js-sticky-leftnav"> <nav aria-label="Primary"> <ol class="nav-links"> <li> <ol class="nav-links"> <li class="ps-relative youarehere" aria-current="true"> <a href="/" class="s-block-link pl8 js-gps-track nav-links--link -link__with-icon" data-gps-track="top_nav.click({is_current: true, location:1, destination:8, has_activity_notification:False});home_nav.click({location:1})" aria-controls="" data-controller=" " data-s-popover-placement="right" aria-current="page" data-s-popover-auto-show="true" data-s-popover-hide-on-outside-click="never" > <div class="d-flex ai-center"> <svg aria-hidden="true" class="svg-icon iconHome" width="18" height="18" viewBox="0 0 18 18"><path d="M15 10v5a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-5H0l9-9 9 9zm-8 1v6h4v-6z"/></svg> <span class="-link--channel-name pl6">Home</span> </div> </a> </li> <li class="ps-relative" aria-current="false"> <a id="nav-questions" href="/questions" class="s-block-link pl8 js-gps-track nav-links--link -link__with-icon" data-gps-track="top_nav.click({is_current: false, location:1, destination:1, has_activity_notification:False})" aria-controls="" data-controller=" " data-s-popover-placement="right" aria-current="false" data-s-popover-auto-show="true" data-s-popover-hide-on-outside-click="never" > <div class="d-flex ai-center"> <svg aria-hidden="true" class="svg-icon iconQuestion" width="18" height="18" viewBox="0 0 18 18"><path d="m4 15-3 3V4c0-1.1.9-2 2-2h12c1.09 0 2 .91 2 2v9c0 1.09-.91 2-2 2zm7.75-3.97c.72-.83.98-1.86.98-2.94 0-1.65-.7-3.22-2.3-3.83a4.4 4.4 0 0 0-3.02 0 3.8 3.8 0 0 0-2.32 3.83q0 1.93 1.03 3a3.8 3.8 0 0 0 2.85 1.07q.94 0 1.71-.34.97.66 1.06.7.34.2.7.3l.59-1.13a5 5 0 0 1-1.28-.66m-1.27-.9a5 5 0 0 0-1.5-.8l-.45.9q.5.18.98.5-.3.1-.65.11-.92 0-1.52-.68c-.86-1-.86-3.12 0-4.11.8-.9 2.35-.9 3.15 0 .9 1.01.86 3.03-.01 4.08"/></svg> <span class="-link--channel-name pl6">Questions</span> </div> </a> </li> <li class="ps-relative" aria-current="false"> <a href="/tags" class="s-block-link pl8 js-gps-track nav-links--link -link__with-icon" data-gps-track="top_nav.click({is_current: false, location:1, destination:2, has_activity_notification:False})" aria-controls="" data-controller=" " data-s-popover-placement="right" aria-current="false" data-s-popover-auto-show="true" data-s-popover-hide-on-outside-click="never" > <div class="d-flex ai-center"> <svg aria-hidden="true" class="svg-icon iconTags" width="18" height="18" viewBox="0 0 18 18"><path d="M9.24 1a3 3 0 0 0-2.12.88l-5.7 5.7a2 2 0 0 0-.38 2.31 3 3 0 0 1 .67-1.01l6-6A3 3 0 0 1 9.83 2H14a3 3 0 0 1 .79.1A2 2 0 0 0 13 1z" opacity=".4"/><path d="M9.83 3a2 2 0 0 0-1.42.59l-6 6a2 2 0 0 0 0 2.82L6.6 16.6a2 2 0 0 0 2.82 0l6-6A2 2 0 0 0 16 9.17V5a2 2 0 0 0-2-2zM12 9a2 2 0 1 1 0-4 2 2 0 0 1 0 4"/></svg> <span class="-link--channel-name pl6">Tags</span> </div> </a> </li> <li class="pb24"></li> <li class="ps-relative" aria-current="false"> <a id="nav-users" href="/users" class="s-block-link pl8 js-gps-track nav-links--link -link__with-icon" data-gps-track="top_nav.click({is_current: false, location:1, destination:3, has_activity_notification:False})" aria-controls="" data-controller=" " data-s-popover-placement="right" aria-current="false" data-s-popover-auto-show="true" data-s-popover-hide-on-outside-click="never" > <div class="d-flex ai-center"> <svg aria-hidden="true" class="svg-icon iconPeople" width="18" height="18" viewBox="0 0 18 18"><path d="M17 14c0 .44-.45 1-1 1H9a1 1 0 0 1-1-1H2c-.54 0-1-.56-1-1 0-2.63 3-4 3-4s.23-.4 0-1c-.84-.62-1.06-.59-1-3s1.37-3 2.5-3 2.44.58 2.5 3-.16 2.38-1 3c-.23.59 0 1 0 1s1.55.71 2.42 2.09c.78-.72 1.58-1.1 1.58-1.1s.23-.4 0-1c-.84-.61-1.06-.58-1-3s1.37-3 2.5-3 2.44.59 2.5 3c.05 2.42-.16 2.39-1 3-.23.6 0 1 0 1s3 1.38 3 4"/></svg> <span class="-link--channel-name pl6">Users</span> </div> </a> </li> <li class="ps-relative" aria-current="false"> <a id="nav-companies" href="https://stackoverflow.com/jobs/companies?so_medium=robotics&so_source=SiteNav" class="s-block-link pl8 js-gps-track nav-links--link -link__with-icon" data-gps-track="top_nav.click({is_current: false, location:1, destination:12, has_activity_notification:False})" aria-controls="" data-controller=" " data-s-popover-placement="right" aria-current="false" data-s-popover-auto-show="true" data-s-popover-hide-on-outside-click="never" > <div class="d-flex ai-center"> <svg aria-hidden="true" class="svg-icon iconIndustry" width="18" height="18" viewBox="0 0 18 18"><path d="M10 16v-4H8v4H2V4c0-1.1.9-2 2-2h6c1.09 0 2 .91 2 2v2h2c1.09 0 2 .91 2 2v8zM4 4v2h2V4zm0 4v2h2V8zm4-4v2h2V4zm0 4v2h2V8zm-4 4v2h2v-2zm8 0v2h2v-2zm0-4v2h2V8z"/></svg> <span class="-link--channel-name pl6">Companies</span> </div> </a> </li> <li class="ps-relative" aria-current="false"> <a id="nav-unanswered" href="/unanswered" class="s-block-link pl8 js-gps-track nav-links--link -link__with-icon" data-gps-track="top_nav.click({is_current: false, location:1, destination:5, has_activity_notification:False})" aria-controls="" data-controller=" " data-s-popover-placement="right" aria-current="false" data-s-popover-auto-show="true" data-s-popover-hide-on-outside-click="never" > <div class="d-flex ai-center"> <svg aria-hidden="true" class="svg-icon iconAnswer" width="18" height="18" viewBox="0 0 18 18"><path d="M14 15H3c-1.09 0-2-.91-2-2V4c0-1.1.9-2 2-2h12c1.09 0 2 .91 2 2v14zm-1.02-3L9.82 4H8.14l-3.06 8h1.68l.65-1.79h3.15l.69 1.79zm-2.93-3.12H7.9l1.06-2.92z"/></svg> <span class="-link--channel-name pl6">Unanswered</span> </div> </a> </li> </ol> </li> <li class="js-freemium-cta ps-relative mt32 mb8"> <div class="fs-fine tt-uppercase fc-black-600 fw-bold ml8 mt16 mb8">Teams</div> <div class="px12 pt12 pb4 mb12 fc-medium overflow-hidden"> <img class="wmx100 mx-auto mb12 h-auto d-block" width="151" height="24" src="https://cdn.sstatic.net/Img/teams/teams-promo.svg?v=e507948b81bf" alt=""> <p class="fs-fine"> Ask questions, find answers and collaborate at work with Stack Overflow for Teams. </p> <a href="https://stackoverflowteams.com/teams/create/free/?utm_medium=referral&utm_source=robotics-community&utm_campaign=side-bar&utm_content=explore-teams" class="w100 s-btn s-btn__filled s-btn__xs bg-orange-400 h:bg-orange-500 js-gps-track pt8 pr7 pb6 pl7" data-gps-track="teams.create.left-sidenav.click({ Action: 6 })" data-ga="["teams left navigation - anonymous","left nav free cta","stackoverflow.com/teams/create/free",null,null]">Try Teams for free</a> <a href="https://stackoverflow.co/teams/?utm_medium=referral&utm_source=robotics-community&utm_campaign=side-bar&utm_content=explore-teams" class="w100 s-btn s-btn__muted s-btn__xs mt1 js-gps-track" data-gps-track="teams.create.left-sidenav.click({ Action: 5 })" data-ga="["teams left navigation - anonymous","left nav free cta","stackoverflow.com/teams",null,null]">Explore Teams</a> </div> </li> <li class="d-flex ai-center jc-space-between ml8 mt32 mb8 js-create-team-cta d-none"> <a href="javascript:void(0)" class="s-link d-flex fl-grow1 fc-black-400 h:fc-black-600 fs-fine js-gps-track" role="button" aria-controls="popover-teams-create-cta" data-controller="s-popover" data-action="s-popover#toggle" data-s-popover-placement="bottom-start" data-s-popover-toggle-class="is-selected" data-gps-track="teams.create.left-sidenav.click({ Action: ShowInfo })" data-ga="["teams left navigation - anonymous","left nav show teams info",null,null,null]" > <div class="flex--item fl-grow1 fc-black-600 fw-bold tt-uppercase">Teams</div> <div class="flex--item px12"> <svg aria-hidden="true" class="svg-icon iconPlusSm" width="14" height="14" viewBox="0 0 14 14"><path d="M8 2H6v4H2v2h4v4h2V8h4V6H8z"/></svg> </div> </a> </li> <li class="ps-relative js-create-team-cta d-none"> <p class="fs-fine pr8 pl8 pb4 fc-black-400"> Ask questions, find answers and collaborate at work with Stack Overflow for Teams. <a href="https://stackoverflow.co/teams/?utm_medium=referral&utm_source=robotics-community&utm_campaign=side-bar&utm_content=explore-teams-compact" class="s-link s-link__grayscale s-link__underlined fw-bold">Explore Teams</a> </p> </li> </ol> </nav> </div> <div class="s-popover ws2" id="popover-teams-create-cta" role="menu" aria-hidden="true"> <div class="s-popover--arrow"></div> <div class="ps-relative overflow-hidden"> <p class="mb2"><strong>Teams</strong></p> <p class="mb12 fs-caption fc-black-400">Q&A for work</p> <p class="mb12 fs-caption fc-black-500">Connect and share knowledge within a single location that is structured and easy to search.</p> <a href="https://stackoverflow.co/teams/" class="js-gps-track s-btn s-btn__filled s-btn__xs" data-gps-track="teams.create.left-sidenav.click({ Action: CtaClick })" data-ga="["teams left navigation - anonymous","left nav cta","stackoverflow.com/teams",null,null]"> Learn more about Teams </a> </div> <div class="ps-absolute t8 r8"> <svg aria-hidden="true" class="fc-orange-400 svg-spot spotPeople" width="48" height="48" viewBox="0 0 48 48"><path d="M13.5 28a4.5 4.5 0 1 0 0-9 4.5 4.5 0 0 0 0 9M7 30a1 1 0 0 1 1-1h11a1 1 0 0 1 1 1v5h11v-5a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v10a2 2 0 0 1-2 2H33v5a1 1 0 0 1-1 1H20a1 1 0 0 1-1-1v-5H8a1 1 0 0 1-1-1zm25-6.5a4.5 4.5 0 1 0 9 0 4.5 4.5 0 0 0-9 0M24.5 34a4.5 4.5 0 1 0 0-9 4.5 4.5 0 0 0 0 9" opacity=".2"/><path d="M16.4 26.08A6 6 0 1 0 7.53 26C5.64 26.06 4 27.52 4 29.45V40a1 1 0 0 0 1 1h9a1 1 0 1 0 0-2h-4v-7a1 1 0 1 0-2 0v7H6v-9.55c0-.73.67-1.45 1.64-1.45H16a1 1 0 0 0 .4-1.92M12 18a4 4 0 1 1 0 8 4 4 0 0 1 0-8m16.47 14a6 6 0 1 0-8.94 0A3.6 3.6 0 0 0 16 35.5V46a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V35.5c0-1.94-1.64-3.42-3.53-3.5M20 28a4 4 0 1 1 8 0 4 4 0 0 1-8 0m-.3 6h8.6c1 0 1.7.75 1.7 1.5V45h-2v-7a1 1 0 1 0-2 0v7h-4v-7a1 1 0 1 0-2 0v7h-2v-9.5c0-.75.7-1.5 1.7-1.5M42 22c0 1.54-.58 2.94-1.53 4A3.5 3.5 0 0 1 44 29.45V40a1 1 0 0 1-1 1h-9a1 1 0 1 1 0-2h4v-7a1 1 0 1 1 2 0v7h2v-9.55A1.5 1.5 0 0 0 40.48 28H32a1 1 0 0 1-.4-1.92A6 6 0 1 1 42 22m-2 0a4 4 0 1 0-8 0 4 4 0 0 0 8 0"/><g opacity=".35"><path d="M17 10a1 1 0 011-1h12a1 1 0 110 2H18a1 1 0 01-1-1m1-5a1 1 0 100 2h12a1 1 0 100-2zM14 1a1 1 0 00-1 1v12a1 1 0 001 1h5.09l4.2 4.2a1 1 0 001.46-.04l3.7-4.16H34a1 1 0 001-1V2a1 1 0 00-1-1zm1 12V3h18v10h-5a1 1 0 00-.75.34l-3.3 3.7-3.74-3.75a1 1 0 00-.71-.29z"/></g></svg> </div> </div> </div> <div id="content" class=""> <div class="inner-content"> <div id="mainbar"> <div class="d-flex"> <h1 class="flex--item fl1 fs-headline1"> Explore our questions </h1> <div class="ml12 aside-cta flex--item print:d-none"> <a href="/questions/ask" class="ws-nowrap s-btn s-btn__filled"> Ask Question </a> </div> </div> <div class="d-flex ai-end mb16 sm:fd-column"> <div class="flex--item fl1 fs-body1 sm:mb16"> <a href="/?tags=ros" class="s-tag post-tag no-tag-menu" title="Show questions relating to ros" aria-label="Show questions relating to ros" rel="tag" aria-labelledby="tag-ros-tooltip-container" data-tag-menu-origin="Unknown">ros</a><a href="/?tags=navigation" class="s-tag post-tag no-tag-menu" title="Show questions relating to navigation" aria-label="Show questions relating to navigation" rel="tag" aria-labelledby="tag-navigation-tooltip-container" data-tag-menu-origin="Unknown">navigation</a><a href="/?tags=ros2" class="s-tag post-tag no-tag-menu" title="Show questions relating to ros2" aria-label="Show questions relating to ros2" rel="tag" aria-labelledby="tag-ros2-tooltip-container" data-tag-menu-origin="Unknown">ros2</a><a href="/?tags=ros-kinetic" class="s-tag post-tag no-tag-menu" title="Show questions relating to ros-kinetic" aria-label="Show questions relating to ros-kinetic" rel="tag" aria-labelledby="tag-ros-kinetic-tooltip-container" data-tag-menu-origin="Unknown">ros-kinetic</a><a href="/?tags=gazebo" class="s-tag post-tag no-tag-menu" title="Show questions relating to gazebo" aria-label="Show questions relating to gazebo" rel="tag" aria-labelledby="tag-gazebo-tooltip-container" data-tag-menu-origin="Unknown">gazebo</a><a href="/?tags=ros-melodic" class="s-tag post-tag no-tag-menu" title="Show questions relating to ros-melodic" aria-label="Show questions relating to ros-melodic" rel="tag" aria-labelledby="tag-ros-melodic-tooltip-container" data-tag-menu-origin="Unknown">ros-melodic</a><a href="/?tags=rviz" class="s-tag post-tag no-tag-menu" title="Show questions relating to rviz" aria-label="Show questions relating to rviz" rel="tag" aria-labelledby="tag-rviz-tooltip-container" data-tag-menu-origin="Unknown">rviz</a><a href="/?tags=slam" class="s-tag post-tag no-tag-menu" title="Show questions relating to slam" aria-label="Show questions relating to slam" rel="tag" aria-labelledby="tag-slam-tooltip-container" data-tag-menu-origin="Unknown">slam</a><a href="/?tags=moveit" class="s-tag post-tag no-tag-menu" title="Show questions relating to moveit" aria-label="Show questions relating to moveit" rel="tag" aria-labelledby="tag-moveit-tooltip-container" data-tag-menu-origin="Unknown">moveit</a><a href="/?tags=turtlebot" class="s-tag post-tag no-tag-menu" title="Show questions relating to turtlebot" aria-label="Show questions relating to turtlebot" rel="tag" aria-labelledby="tag-turtlebot-tooltip-container" data-tag-menu-origin="Unknown">turtlebot</a> <a class="more-tags" href="/tags">more tags</a> </div> <div class="flex--item ml16 fl-shrink0"> <div class=" s-btn-group js-filter-btn" > <a href="?tab=active" class="flex--item s-btn s-btn__muted js-sort-preference-change" title="Questions that have been asked, answered, or updated recently" data-nav-xhref="" data-shortcut="A" data-value="active"> <span class="s-btn--text" data-text="Active">Active</span> </a> <a href="?tab=hot" class="flex--item s-btn s-btn__muted js-sort-preference-change" title="Questions with the most views, most answers, and highest score over the last few days" data-nav-xhref="" data-shortcut="H" data-value="hot"> <span class="s-btn--text" data-text="Hot">Hot</span> </a> <a href="?tab=week" class="flex--item s-btn s-btn__muted js-sort-preference-change" title="Questions with the most views, most answers, and highest score this week" data-nav-xhref="" data-shortcut="W" data-value="week"> <span class="s-btn--text" data-text="Week">Week</span> </a> <a href="?tab=month" class="flex--item s-btn s-btn__muted js-sort-preference-change" title="Questions with the most views, most answers, and highest score this month" data-nav-xhref="" data-shortcut="M" data-value="month"> <span class="s-btn--text" data-text="Month">Month</span> </a> </div> </div> </div> <div id="qlist-wrapper" class="flush-left"> <div id="question-mini-list"> <div> <div id="question-summary-114839" class="s-post-summary js-post-summary" data-post-id="114839" data-post-type-id="1"> <div class="s-post-summary--stats js-post-summary-stats"> <div class="s-post-summary--stats-item s-post-summary--stats-item__emphasized" title="Score of 0"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">votes</span> </div> <div class="s-post-summary--stats-item " title="0 answers"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">answers</span> </div> <div class="s-post-summary--stats-item " title="3 views"> <span class="s-post-summary--stats-item-number">3</span> <span class="s-post-summary--stats-item-unit">views</span> </div> </div> <div class="s-post-summary--content"> <h3 class="s-post-summary--content-title"> <a href="/questions/114839/how-to-solve-rviz2-4-error-tf-nan-input-ignoring-transform-for-child-frame" class="s-link">How to solve " [rviz2-4] Error: TF_NAN_INPUT: Ignoring transform for child_frame_id"</a> </h3> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags d-inline-block tags js-tags t-ros2 t-gazebo t-slam t-ros2-control"> <ul class='ml0 list-ls-none js-post-tag-list-wrapper d-inline'><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/ros2" class="s-tag post-tag flex--item mt0 js-tagname-ros2" title="show questions tagged 'ros2'" aria-label="show questions tagged 'ros2'" rel="tag" aria-labelledby="tag-ros2-tooltip-container" data-tag-menu-origin="Unknown">ros2</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/gazebo" class="s-tag post-tag flex--item mt0 js-tagname-gazebo" title="show questions tagged 'gazebo'" aria-label="show questions tagged 'gazebo'" rel="tag" aria-labelledby="tag-gazebo-tooltip-container" data-tag-menu-origin="Unknown">gazebo</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/slam" class="s-tag post-tag flex--item mt0 js-tagname-slam" title="show questions tagged 'slam'" aria-label="show questions tagged 'slam'" rel="tag" aria-labelledby="tag-slam-tooltip-container" data-tag-menu-origin="Unknown">slam</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/ros2-control" class="s-tag post-tag flex--item mt0 js-tagname-ros2-control" title="show questions tagged 'ros2-control'" aria-label="show questions tagged 'ros2-control'" rel="tag" aria-labelledby="tag-ros2-control-tooltip-container" data-tag-menu-origin="Unknown">ros2-control</a></li></ul> </div> <div class="s-user-card s-user-card__minimal" aria-live="polite"> <a href="/users/45422/opeoluwa-owodolu" class="s-avatar s-avatar__16 s-user-card--avatar" data-user-id="45422"> <div class="gravatar-wrapper-16"> <img src="https://www.gravatar.com/avatar/68a4e96eb7a2c75847b866d01e635d62?s=32&d=identicon&r=PG&f=y&so-version=2" alt="Opeoluwa Owodolu's user avatar" width="16" , height="16" class="s-avatar--image" /> </div> </a> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4" > <a href="/users/45422/opeoluwa-owodolu" class="flex--item">Opeoluwa Owodolu</a> </div> <ul class="s-user-card--awards"> <li class="s-user-card--rep"><span class="todo-no-class-here" title="reputation score " dir="ltr">1</span></li> </ul> </div> <time class="s-user-card--time"> <a href="/questions/114839/how-to-solve-rviz2-4-error-tf-nan-input-ignoring-transform-for-child-frame" class="s-link s-link__muted">asked <span title='2025-02-26 13:16:30Z' class='relativetime'>6 mins ago</span></a> </time> </div> </div> </div> </div> <div id="question-summary-114838" class="s-post-summary js-post-summary" data-post-id="114838" data-post-type-id="1"> <div class="s-post-summary--stats js-post-summary-stats"> <div class="s-post-summary--stats-item s-post-summary--stats-item__emphasized" title="Score of 0"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">votes</span> </div> <div class="s-post-summary--stats-item " title="0 answers"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">answers</span> </div> <div class="s-post-summary--stats-item " title="3 views"> <span class="s-post-summary--stats-item-number">3</span> <span class="s-post-summary--stats-item-unit">views</span> </div> </div> <div class="s-post-summary--content"> <h3 class="s-post-summary--content-title"> <a href="/questions/114838/inertia-moments-of-scara-robot" class="s-link">Inertia Moments of SCARA robot</a> </h3> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags d-inline-block tags js-tags t-dynamics"> <ul class='ml0 list-ls-none js-post-tag-list-wrapper d-inline'><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/dynamics" class="s-tag post-tag flex--item mt0 js-tagname-dynamics" title="show questions tagged 'dynamics'" aria-label="show questions tagged 'dynamics'" rel="tag" aria-labelledby="tag-dynamics-tooltip-container" data-tag-menu-origin="Unknown">dynamics</a></li></ul> </div> <div class="s-user-card s-user-card__minimal" aria-live="polite"> <a href="/users/46793/ae16" class="s-avatar s-avatar__16 s-user-card--avatar" data-user-id="46793"> <div class="gravatar-wrapper-16"> <img src="https://www.gravatar.com/avatar/913d9d07d77dcdd9bb33b1ff14479795?s=32&d=identicon&r=PG&f=y&so-version=2" alt="AE16's user avatar" width="16" , height="16" class="s-avatar--image" /> </div> </a> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4" > <a href="/users/46793/ae16" class="flex--item">AE16</a> </div> <ul class="s-user-card--awards"> <li class="s-user-card--rep"><span class="todo-no-class-here" title="reputation score " dir="ltr">1</span></li> </ul> </div> <time class="s-user-card--time"> <a href="/questions/114838/inertia-moments-of-scara-robot" class="s-link s-link__muted">modified <span title='2025-02-26 12:51:02Z' class='relativetime'>31 mins ago</span></a> </time> </div> </div> </div> </div> <div id="question-summary-77042" class="s-post-summary js-post-summary" data-post-id="77042" data-post-type-id="1"> <div class="s-post-summary--stats js-post-summary-stats"> <div class="s-post-summary--stats-item s-post-summary--stats-item__emphasized" title="Score of 0"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">votes</span> </div> <div class="s-post-summary--stats-item has-answers has-accepted-answer" title="one of the answers was accepted as the correct answer"> <svg aria-hidden="true" class="svg-icon iconCheckmarkSm" width="14" height="14" viewBox="0 0 14 14"><path d="M13 3.41 11.59 2 5 8.59 2.41 6 1 7.41l4 4z"/></svg> <span class="s-post-summary--stats-item-number">2</span> <span class="s-post-summary--stats-item-unit">answers</span> </div> <div class="s-post-summary--stats-item " title="17 views"> <span class="s-post-summary--stats-item-number">17</span> <span class="s-post-summary--stats-item-unit">views</span> </div> </div> <div class="s-post-summary--content"> <h3 class="s-post-summary--content-title"> <a href="/questions/77042/rk01-humanoid-and-ros" class="s-link">RK01 humanoid and ROS</a> </h3> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags d-inline-block tags js-tags t-ros t-robot"> <ul class='ml0 list-ls-none js-post-tag-list-wrapper d-inline'><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/ros" class="s-tag post-tag flex--item mt0 js-tagname-ros" title="show questions tagged 'ros'" aria-label="show questions tagged 'ros'" rel="tag" aria-labelledby="tag-ros-tooltip-container" data-tag-menu-origin="Unknown">ros</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/robot" class="s-tag post-tag flex--item mt0 js-tagname-robot" title="show questions tagged 'robot'" aria-label="show questions tagged 'robot'" rel="tag" aria-labelledby="tag-robot-tooltip-container" data-tag-menu-origin="Unknown">robot</a></li></ul> </div> <div class="s-user-card s-user-card__minimal" aria-live="polite"> <a href="/users/9176/greenonline" class="s-avatar s-avatar__16 s-user-card--avatar js-user-hover-target" data-user-id="9176"> <div class="gravatar-wrapper-16"> <img src="https://i.sstatic.net/rUfLl.png?s=32" alt="Greenonline's user avatar" width="16" , height="16" class="s-avatar--image" /> </div> </a> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4" > <a href="/users/9176/greenonline" class="flex--item">Greenonline</a> </div> <ul class="s-user-card--awards"> <li class="s-user-card--rep"><span class="todo-no-class-here" title="reputation score " dir="ltr">1,665</span></li> </ul> </div> <time class="s-user-card--time"> <a href="/questions/77042/rk01-humanoid-and-ros?lastactivity" class="s-link s-link__muted">modified <span title='2025-02-26 12:49:44Z' class='relativetime'>32 mins ago</span></a> </time> </div> </div> </div> </div> <div id="question-summary-114836" class="s-post-summary js-post-summary" data-post-id="114836" data-post-type-id="1"> <div class="s-post-summary--stats js-post-summary-stats"> <div class="s-post-summary--stats-item s-post-summary--stats-item__emphasized" title="Score of 0"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">votes</span> </div> <div class="s-post-summary--stats-item has-answers " title="1 answer"> <span class="s-post-summary--stats-item-number">1</span> <span class="s-post-summary--stats-item-unit">answer</span> </div> <div class="s-post-summary--stats-item " title="9 views"> <span class="s-post-summary--stats-item-number">9</span> <span class="s-post-summary--stats-item-unit">views</span> </div> </div> <div class="s-post-summary--content"> <h3 class="s-post-summary--content-title"> <a href="/questions/114836/how-to-move-object-in-gazebo-by-setting-velocity-vector" class="s-link">How to move object in gazebo by setting velocity vector</a> </h3> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags d-inline-block tags js-tags t-gazebo t-gazebo-plugin"> <ul class='ml0 list-ls-none js-post-tag-list-wrapper d-inline'><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/gazebo" class="s-tag post-tag flex--item mt0 js-tagname-gazebo" title="show questions tagged 'gazebo'" aria-label="show questions tagged 'gazebo'" rel="tag" aria-labelledby="tag-gazebo-tooltip-container" data-tag-menu-origin="Unknown">gazebo</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/gazebo-plugin" class="s-tag post-tag flex--item mt0 js-tagname-gazebo-plugin" title="show questions tagged 'gazebo-plugin'" aria-label="show questions tagged 'gazebo-plugin'" rel="tag" aria-labelledby="tag-gazebo-plugin-tooltip-container" data-tag-menu-origin="Unknown">gazebo-plugin</a></li></ul> </div> <div class="s-user-card s-user-card__minimal" aria-live="polite"> <a href="/users/44281/niccogazza" class="s-avatar s-avatar__16 s-user-card--avatar js-user-hover-target" data-user-id="44281"> <div class="gravatar-wrapper-16"> <img src="https://www.gravatar.com/avatar/14e145b07100541a3cda213c6b3b3bb7?s=32&d=identicon&r=PG&f=y&so-version=2" alt="niccogazza's user avatar" width="16" , height="16" class="s-avatar--image" /> </div> </a> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4" > <a href="/users/44281/niccogazza" class="flex--item">niccogazza</a> </div> <ul class="s-user-card--awards"> <li class="s-user-card--rep"><span class="todo-no-class-here" title="reputation score " dir="ltr">126</span></li> </ul> </div> <time class="s-user-card--time"> <a href="/questions/114836/how-to-move-object-in-gazebo-by-setting-velocity-vector?lastactivity" class="s-link s-link__muted">answered <span title='2025-02-26 12:05:28Z' class='relativetime'>1 hour ago</span></a> </time> </div> </div> </div> </div> <div id="question-summary-24380" class="s-post-summary js-post-summary" data-post-id="24380" data-post-type-id="1"> <div class="s-post-summary--stats js-post-summary-stats"> <div class="s-post-summary--stats-item s-post-summary--stats-item__emphasized" title="Score of 0"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">votes</span> </div> <div class="s-post-summary--stats-item has-answers " title="1 answer"> <span class="s-post-summary--stats-item-number">1</span> <span class="s-post-summary--stats-item-unit">answer</span> </div> <div class="s-post-summary--stats-item " title="125 views"> <span class="s-post-summary--stats-item-number">125</span> <span class="s-post-summary--stats-item-unit">views</span> </div> </div> <div class="s-post-summary--content"> <h3 class="s-post-summary--content-title"> <a href="/questions/24380/how-to-solve-the-emitter-cant-send-the-list-or-set-in-webotsthese-data-is" class="s-link">how to solve the emitter can't send the 'list' or 'set' in webots?these data is important to me</a> </h3> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags d-inline-block tags js-tags t-webots"> <ul class='ml0 list-ls-none js-post-tag-list-wrapper d-inline'><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/webots" class="s-tag post-tag flex--item mt0 js-tagname-webots" title="show questions tagged 'webots'" aria-label="show questions tagged 'webots'" rel="tag" aria-labelledby="tag-webots-tooltip-container" data-tag-menu-origin="Unknown">webots</a></li></ul> </div> <div class="s-user-card s-user-card__minimal" aria-live="polite"> <a href="/users/-1/community" class="s-avatar s-avatar__16 s-user-card--avatar js-user-hover-target" data-user-id="-1"> <div class="gravatar-wrapper-16"> <img src="https://www.gravatar.com/avatar/a007be5a61f6aa8f3e85ae2fc18dd66e?s=32&d=identicon&r=PG" alt="Community's user avatar" width="16" , height="16" class="s-avatar--image" /> </div> </a> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4" > <a href="/users/-1/community" class="flex--item">Community</a><span class="flex--item s-badge ml2 s-badge__xs " title="Community Bot — not a real person. Replies to this bot are not monitored.">Bot</span> </div> <ul class="s-user-card--awards"> <li class="s-user-card--rep"><span class="todo-no-class-here" title="reputation score " dir="ltr">1</span></li> </ul> </div> <time class="s-user-card--time"> <a href="/questions/24380/how-to-solve-the-emitter-cant-send-the-list-or-set-in-webotsthese-data-is?lastactivity" class="s-link s-link__muted">modified <span title='2025-02-26 12:00:40Z' class='relativetime'>1 hour ago</span></a> </time> </div> </div> </div> </div> <div id="question-summary-114830" class="s-post-summary js-post-summary" data-post-id="114830" data-post-type-id="1"> <div class="s-post-summary--stats js-post-summary-stats"> <div class="s-post-summary--stats-item s-post-summary--stats-item__emphasized" title="Score of 0"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">votes</span> </div> <div class="s-post-summary--stats-item " title="0 answers"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">answers</span> </div> <div class="s-post-summary--stats-item " title="10 views"> <span class="s-post-summary--stats-item-number">10</span> <span class="s-post-summary--stats-item-unit">views</span> </div> </div> <div class="s-post-summary--content"> <h3 class="s-post-summary--content-title"> <a href="/questions/114830/drone-swarm-simple-formation-control-python" class="s-link">Drone swarm simple formation control python</a> </h3> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags d-inline-block tags js-tags t-ros2 t-drone t-swarm"> <ul class='ml0 list-ls-none js-post-tag-list-wrapper d-inline'><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/ros2" class="s-tag post-tag flex--item mt0 js-tagname-ros2" title="show questions tagged 'ros2'" aria-label="show questions tagged 'ros2'" rel="tag" aria-labelledby="tag-ros2-tooltip-container" data-tag-menu-origin="Unknown">ros2</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/drone" class="s-tag post-tag flex--item mt0 js-tagname-drone" title="show questions tagged 'drone'" aria-label="show questions tagged 'drone'" rel="tag" aria-labelledby="tag-drone-tooltip-container" data-tag-menu-origin="Unknown">drone</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/swarm" class="s-tag post-tag flex--item mt0 js-tagname-swarm" title="show questions tagged 'swarm'" aria-label="show questions tagged 'swarm'" rel="tag" aria-labelledby="tag-swarm-tooltip-container" data-tag-menu-origin="Unknown">swarm</a></li></ul> </div> <div class="s-user-card s-user-card__minimal" aria-live="polite"> <a href="/users/46770/florneufkens" class="s-avatar s-avatar__16 s-user-card--avatar js-user-hover-target" data-user-id="46770"> <div class="gravatar-wrapper-16"> <img src="https://www.gravatar.com/avatar/538edcb072dec4b4035f30935787053a?s=32&d=identicon&r=PG" alt="FlorNeufkens's user avatar" width="16" , height="16" class="s-avatar--image" /> </div> </a> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4" > <a href="/users/46770/florneufkens" class="flex--item">FlorNeufkens</a> </div> <ul class="s-user-card--awards"> <li class="s-user-card--rep"><span class="todo-no-class-here" title="reputation score " dir="ltr">1</span></li> </ul> </div> <time class="s-user-card--time"> <a href="/questions/114830/drone-swarm-simple-formation-control-python" class="s-link s-link__muted">modified <span title='2025-02-26 11:39:16Z' class='relativetime'>1 hour ago</span></a> </time> </div> </div> </div> </div> <div id="question-summary-107984" class="s-post-summary js-post-summary" data-post-id="107984" data-post-type-id="1"> <div class="s-post-summary--stats js-post-summary-stats"> <div class="s-post-summary--stats-item s-post-summary--stats-item__emphasized" title="Score of 0"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">votes</span> </div> <div class="s-post-summary--stats-item has-answers " title="1 answer"> <span class="s-post-summary--stats-item-number">1</span> <span class="s-post-summary--stats-item-unit">answer</span> </div> <div class="s-post-summary--stats-item " title="368 views"> <span class="s-post-summary--stats-item-number">368</span> <span class="s-post-summary--stats-item-unit">views</span> </div> </div> <div class="s-post-summary--content"> <h3 class="s-post-summary--content-title"> <a href="/questions/107984/moveit-source-build-issue-with-rosidl-adapter-attributeerror-module-em-has" class="s-link">moveit source build Issue with rosidl_adapter - AttributeError: module 'em' has no attribute 'Interpreter'</a> </h3> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags d-inline-block tags js-tags t-moveit"> <ul class='ml0 list-ls-none js-post-tag-list-wrapper d-inline'><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/moveit" class="s-tag post-tag flex--item mt0 js-tagname-moveit" title="show questions tagged 'moveit'" aria-label="show questions tagged 'moveit'" rel="tag" aria-labelledby="tag-moveit-tooltip-container" data-tag-menu-origin="Unknown">moveit</a></li></ul> </div> <div class="s-user-card s-user-card__minimal" aria-live="polite"> <a href="/users/-1/community" class="s-avatar s-avatar__16 s-user-card--avatar js-user-hover-target" data-user-id="-1"> <div class="gravatar-wrapper-16"> <img src="https://www.gravatar.com/avatar/a007be5a61f6aa8f3e85ae2fc18dd66e?s=32&d=identicon&r=PG" alt="Community's user avatar" width="16" , height="16" class="s-avatar--image" /> </div> </a> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4" > <a href="/users/-1/community" class="flex--item">Community</a><span class="flex--item s-badge ml2 s-badge__xs " title="Community Bot — not a real person. Replies to this bot are not monitored.">Bot</span> </div> <ul class="s-user-card--awards"> <li class="s-user-card--rep"><span class="todo-no-class-here" title="reputation score " dir="ltr">1</span></li> </ul> </div> <time class="s-user-card--time"> <a href="/questions/107984/moveit-source-build-issue-with-rosidl-adapter-attributeerror-module-em-has?lastactivity" class="s-link s-link__muted">modified <span title='2025-02-26 11:01:10Z' class='relativetime'>2 hours ago</span></a> </time> </div> </div> </div> </div> <div id="question-summary-113874" class="s-post-summary js-post-summary" data-post-id="113874" data-post-type-id="1"> <div class="s-post-summary--stats js-post-summary-stats"> <div class="s-post-summary--stats-item s-post-summary--stats-item__emphasized" title="Score of 0"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">votes</span> </div> <div class="s-post-summary--stats-item has-answers " title="1 answer"> <span class="s-post-summary--stats-item-number">1</span> <span class="s-post-summary--stats-item-unit">answer</span> </div> <div class="s-post-summary--stats-item " title="21 views"> <span class="s-post-summary--stats-item-number">21</span> <span class="s-post-summary--stats-item-unit">views</span> </div> </div> <div class="s-post-summary--content"> <h3 class="s-post-summary--content-title"> <a href="/questions/113874/why-does-the-robot-localization-dual-ekf-navsattransform-example-config-not-use" class="s-link">Why does the robot_localization Dual-EKF NavSatTransform example config not use the IMU orientation yaw for the EKF nodes?</a> </h3> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags d-inline-block tags js-tags t-ros2 t-imu t-robot-localization t-ekf t-navsat-transform-node"> <ul class='ml0 list-ls-none js-post-tag-list-wrapper d-inline'><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/ros2" class="s-tag post-tag flex--item mt0 js-tagname-ros2" title="show questions tagged 'ros2'" aria-label="show questions tagged 'ros2'" rel="tag" aria-labelledby="tag-ros2-tooltip-container" data-tag-menu-origin="Unknown">ros2</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/imu" class="s-tag post-tag flex--item mt0 js-tagname-imu" title="show questions tagged 'imu'" aria-label="show questions tagged 'imu'" rel="tag" aria-labelledby="tag-imu-tooltip-container" data-tag-menu-origin="Unknown">imu</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/robot-localization" class="s-tag post-tag flex--item mt0 js-tagname-robot-localization" title="show questions tagged 'robot-localization'" aria-label="show questions tagged 'robot-localization'" rel="tag" aria-labelledby="tag-robot-localization-tooltip-container" data-tag-menu-origin="Unknown">robot-localization</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/ekf" class="s-tag post-tag flex--item mt0 js-tagname-ekf" title="show questions tagged 'ekf'" aria-label="show questions tagged 'ekf'" rel="tag" aria-labelledby="tag-ekf-tooltip-container" data-tag-menu-origin="Unknown">ekf</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/navsat-transform-node" class="s-tag post-tag flex--item mt0 js-tagname-navsat-transform-node" title="show questions tagged 'navsat-transform-node'" aria-label="show questions tagged 'navsat-transform-node'" rel="tag" aria-labelledby="tag-navsat-transform-node-tooltip-container" data-tag-menu-origin="Unknown">navsat-transform-node</a></li></ul> </div> <div class="s-user-card s-user-card__minimal" aria-live="polite"> <a href="/users/2176/automatom" class="s-avatar s-avatar__16 s-user-card--avatar" data-user-id="2176"> <div class="gravatar-wrapper-16"> <img src="https://www.gravatar.com/avatar/6480766ffa0bdeaf800980a7a8bb06ac?s=32&d=identicon&r=PG" alt="automatom's user avatar" width="16" , height="16" class="s-avatar--image" /> </div> </a> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4" > <a href="/users/2176/automatom" class="flex--item">automatom</a> </div> <ul class="s-user-card--awards"> <li class="s-user-card--rep"><span class="todo-no-class-here" title="reputation score " dir="ltr">5,777</span></li> </ul> </div> <time class="s-user-card--time"> <a href="/questions/113874/why-does-the-robot-localization-dual-ekf-navsattransform-example-config-not-use?lastactivity" class="s-link s-link__muted">answered <span title='2025-02-26 10:00:56Z' class='relativetime'>3 hours ago</span></a> </time> </div> </div> </div> </div> <div id="question-summary-114833" class="s-post-summary js-post-summary" data-post-id="114833" data-post-type-id="1"> <div class="s-post-summary--stats js-post-summary-stats"> <div class="s-post-summary--stats-item s-post-summary--stats-item__emphasized" title="Score of 0"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">votes</span> </div> <div class="s-post-summary--stats-item " title="0 answers"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">answers</span> </div> <div class="s-post-summary--stats-item " title="5 views"> <span class="s-post-summary--stats-item-number">5</span> <span class="s-post-summary--stats-item-unit">views</span> </div> </div> <div class="s-post-summary--content"> <h3 class="s-post-summary--content-title"> <a href="/questions/114833/fusion-of-imu-and-ble-aoa-position-estimate-is-very-bad-but-why" class="s-link">Fusion of IMU and BLE AoA, position estimate is very bad, but why?</a> </h3> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags d-inline-block tags js-tags t-python t-kalman-filter t-sensor-fusion"> <ul class='ml0 list-ls-none js-post-tag-list-wrapper d-inline'><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/python" class="s-tag post-tag flex--item mt0 js-tagname-python" title="show questions tagged 'python'" aria-label="show questions tagged 'python'" rel="tag" aria-labelledby="tag-python-tooltip-container" data-tag-menu-origin="Unknown">python</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/kalman-filter" class="s-tag post-tag flex--item mt0 js-tagname-kalman-filter" title="show questions tagged 'kalman-filter'" aria-label="show questions tagged 'kalman-filter'" rel="tag" aria-labelledby="tag-kalman-filter-tooltip-container" data-tag-menu-origin="Unknown">kalman-filter</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/sensor-fusion" class="s-tag post-tag flex--item mt0 js-tagname-sensor-fusion" title="show questions tagged 'sensor-fusion'" aria-label="show questions tagged 'sensor-fusion'" rel="tag" aria-labelledby="tag-sensor-fusion-tooltip-container" data-tag-menu-origin="Unknown">sensor-fusion</a></li></ul> </div> <div class="s-user-card s-user-card__minimal" aria-live="polite"> <a href="/users/46784/florian-dosch" class="s-avatar s-avatar__16 s-user-card--avatar" data-user-id="46784"> <div class="gravatar-wrapper-16"> <img src="https://www.gravatar.com/avatar/c3d43915ab4964382d4f66bb47d7fc3a?s=32&d=identicon&r=PG&f=y&so-version=2" alt="Florian Dosch's user avatar" width="16" , height="16" class="s-avatar--image" /> </div> </a> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4" > <a href="/users/46784/florian-dosch" class="flex--item">Florian Dosch</a> </div> <ul class="s-user-card--awards"> <li class="s-user-card--rep"><span class="todo-no-class-here" title="reputation score " dir="ltr">1</span></li> </ul> </div> <time class="s-user-card--time"> <a href="/questions/114833/fusion-of-imu-and-ble-aoa-position-estimate-is-very-bad-but-why" class="s-link s-link__muted">asked <span title='2025-02-26 08:16:54Z' class='relativetime'>5 hours ago</span></a> </time> </div> </div> </div> </div> <div id="question-summary-114832" class="s-post-summary js-post-summary" data-post-id="114832" data-post-type-id="1"> <div class="s-post-summary--stats js-post-summary-stats"> <div class="s-post-summary--stats-item s-post-summary--stats-item__emphasized" title="Score of 0"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">votes</span> </div> <div class="s-post-summary--stats-item " title="0 answers"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">answers</span> </div> <div class="s-post-summary--stats-item " title="17 views"> <span class="s-post-summary--stats-item-number">17</span> <span class="s-post-summary--stats-item-unit">views</span> </div> </div> <div class="s-post-summary--content"> <h3 class="s-post-summary--content-title"> <a href="/questions/114832/performance-difference-between-c-and-c-ros2-applications" class="s-link">Performance Difference Between C++ and C ROS2 Applications</a> </h3> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags d-inline-block tags js-tags t-ros t-ros2 t-rclcpp t-c"> <ul class='ml0 list-ls-none js-post-tag-list-wrapper d-inline'><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/ros" class="s-tag post-tag flex--item mt0 js-tagname-ros" title="show questions tagged 'ros'" aria-label="show questions tagged 'ros'" rel="tag" aria-labelledby="tag-ros-tooltip-container" data-tag-menu-origin="Unknown">ros</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/ros2" class="s-tag post-tag flex--item mt0 js-tagname-ros2" title="show questions tagged 'ros2'" aria-label="show questions tagged 'ros2'" rel="tag" aria-labelledby="tag-ros2-tooltip-container" data-tag-menu-origin="Unknown">ros2</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/rclcpp" class="s-tag post-tag flex--item mt0 js-tagname-rclcpp" title="show questions tagged 'rclcpp'" aria-label="show questions tagged 'rclcpp'" rel="tag" aria-labelledby="tag-rclcpp-tooltip-container" data-tag-menu-origin="Unknown">rclcpp</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/c" class="s-tag post-tag flex--item mt0 js-tagname-c" title="show questions tagged 'c'" aria-label="show questions tagged 'c'" rel="tag" aria-labelledby="tag-c-tooltip-container" data-tag-menu-origin="Unknown">c</a></li></ul> </div> <div class="s-user-card s-user-card__minimal" aria-live="polite"> <a href="/users/44541/aswini-ka" class="s-avatar s-avatar__16 s-user-card--avatar" data-user-id="44541"> <div class="gravatar-wrapper-16"> <img src="https://www.gravatar.com/avatar/1b8281c2bc3b1c683e6703a47d4a1411?s=32&d=identicon&r=PG&f=y&so-version=2" alt="Aswini KA's user avatar" width="16" , height="16" class="s-avatar--image" /> </div> </a> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4" > <a href="/users/44541/aswini-ka" class="flex--item">Aswini KA</a> </div> <ul class="s-user-card--awards"> <li class="s-user-card--rep"><span class="todo-no-class-here" title="reputation score " dir="ltr">1</span></li> </ul> </div> <time class="s-user-card--time"> <a href="/questions/114832/performance-difference-between-c-and-c-ros2-applications" class="s-link s-link__muted">asked <span title='2025-02-26 06:44:58Z' class='relativetime'>6 hours ago</span></a> </time> </div> </div> </div> </div> <div id="question-summary-107761" class="s-post-summary js-post-summary" data-post-id="107761" data-post-type-id="1"> <div class="s-post-summary--stats js-post-summary-stats"> <div class="s-post-summary--stats-item s-post-summary--stats-item__emphasized" title="Score of 2"> <span class="s-post-summary--stats-item-number">2</span> <span class="s-post-summary--stats-item-unit">votes</span> </div> <div class="s-post-summary--stats-item has-answers " title="1 answer"> <span class="s-post-summary--stats-item-number">1</span> <span class="s-post-summary--stats-item-unit">answer</span> </div> <div class="s-post-summary--stats-item " title="115 views"> <span class="s-post-summary--stats-item-number">115</span> <span class="s-post-summary--stats-item-unit">views</span> </div> </div> <div class="s-post-summary--content"> <h3 class="s-post-summary--content-title"> <a href="/questions/107761/best-practise-for-read-method-in-ros2-control-hw-interface-for-real-robots" class="s-link">Best practise for read method in ros2 control hw interface for real robots</a> </h3> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags d-inline-block tags js-tags t-ros2-control"> <ul class='ml0 list-ls-none js-post-tag-list-wrapper d-inline'><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/ros2-control" class="s-tag post-tag flex--item mt0 js-tagname-ros2-control" title="show questions tagged 'ros2-control'" aria-label="show questions tagged 'ros2-control'" rel="tag" aria-labelledby="tag-ros2-control-tooltip-container" data-tag-menu-origin="Unknown">ros2-control</a></li></ul> </div> <div class="s-user-card s-user-card__minimal" aria-live="polite"> <a href="/users/-1/community" class="s-avatar s-avatar__16 s-user-card--avatar js-user-hover-target" data-user-id="-1"> <div class="gravatar-wrapper-16"> <img src="https://www.gravatar.com/avatar/a007be5a61f6aa8f3e85ae2fc18dd66e?s=32&d=identicon&r=PG" alt="Community's user avatar" width="16" , height="16" class="s-avatar--image" /> </div> </a> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4" > <a href="/users/-1/community" class="flex--item">Community</a><span class="flex--item s-badge ml2 s-badge__xs " title="Community Bot — not a real person. Replies to this bot are not monitored.">Bot</span> </div> <ul class="s-user-card--awards"> <li class="s-user-card--rep"><span class="todo-no-class-here" title="reputation score " dir="ltr">1</span></li> </ul> </div> <time class="s-user-card--time"> <a href="/questions/107761/best-practise-for-read-method-in-ros2-control-hw-interface-for-real-robots?lastactivity" class="s-link s-link__muted">modified <span title='2025-02-26 02:09:41Z' class='relativetime'>11 hours ago</span></a> </time> </div> </div> </div> </div> <div id="question-summary-114829" class="s-post-summary js-post-summary" data-post-id="114829" data-post-type-id="1"> <div class="s-post-summary--stats js-post-summary-stats"> <div class="s-post-summary--stats-item s-post-summary--stats-item__emphasized" title="Score of 0"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">votes</span> </div> <div class="s-post-summary--stats-item " title="0 answers"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">answers</span> </div> <div class="s-post-summary--stats-item " title="27 views"> <span class="s-post-summary--stats-item-number">27</span> <span class="s-post-summary--stats-item-unit">views</span> </div> </div> <div class="s-post-summary--content"> <h3 class="s-post-summary--content-title"> <a href="/questions/114829/need-help-namespacing-my-map-from-slam-toolbox" class="s-link">Need help namespacing my map from slam_toolbox</a> </h3> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags d-inline-block tags js-tags t-ros2 t-slam t-ros-humble t-turtlebot3 t-namespace"> <ul class='ml0 list-ls-none js-post-tag-list-wrapper d-inline'><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/ros2" class="s-tag post-tag flex--item mt0 js-tagname-ros2" title="show questions tagged 'ros2'" aria-label="show questions tagged 'ros2'" rel="tag" aria-labelledby="tag-ros2-tooltip-container" data-tag-menu-origin="Unknown">ros2</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/slam" class="s-tag post-tag flex--item mt0 js-tagname-slam" title="show questions tagged 'slam'" aria-label="show questions tagged 'slam'" rel="tag" aria-labelledby="tag-slam-tooltip-container" data-tag-menu-origin="Unknown">slam</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/ros-humble" class="s-tag post-tag flex--item mt0 js-tagname-ros-humble" title="show questions tagged 'ros-humble'" aria-label="show questions tagged 'ros-humble'" rel="tag" aria-labelledby="tag-ros-humble-tooltip-container" data-tag-menu-origin="Unknown">ros-humble</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/turtlebot3" class="s-tag post-tag flex--item mt0 js-tagname-turtlebot3" title="show questions tagged 'turtlebot3'" aria-label="show questions tagged 'turtlebot3'" rel="tag" aria-labelledby="tag-turtlebot3-tooltip-container" data-tag-menu-origin="Unknown">turtlebot3</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/namespace" class="s-tag post-tag flex--item mt0 js-tagname-namespace" title="show questions tagged 'namespace'" aria-label="show questions tagged 'namespace'" rel="tag" aria-labelledby="tag-namespace-tooltip-container" data-tag-menu-origin="Unknown">namespace</a></li></ul> </div> <div class="s-user-card s-user-card__minimal" aria-live="polite"> <a href="/users/46769/user46769" class="s-avatar s-avatar__16 s-user-card--avatar" data-user-id="46769"> <div class="gravatar-wrapper-16"> <img src="https://www.gravatar.com/avatar/696c1fef8c3a0b2df2f2b070dc5a6a82?s=32&d=identicon&r=PG&f=y&so-version=2" alt="user46769's user avatar" width="16" , height="16" class="s-avatar--image" /> </div> </a> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4" > <a href="/users/46769/user46769" class="flex--item">user46769</a> </div> <ul class="s-user-card--awards"> <li class="s-user-card--rep"><span class="todo-no-class-here" title="reputation score " dir="ltr">1</span></li> </ul> </div> <time class="s-user-card--time"> <a href="/questions/114829/need-help-namespacing-my-map-from-slam-toolbox" class="s-link s-link__muted">modified <span title='2025-02-26 00:36:40Z' class='relativetime'>12 hours ago</span></a> </time> </div> </div> </div> </div> <div id="question-summary-91880" class="s-post-summary js-post-summary" data-post-id="91880" data-post-type-id="1"> <div class="s-post-summary--stats js-post-summary-stats"> <div class="s-post-summary--stats-item s-post-summary--stats-item__emphasized" title="Score of 0"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">votes</span> </div> <div class="s-post-summary--stats-item has-answers has-accepted-answer" title="one of the answers was accepted as the correct answer"> <svg aria-hidden="true" class="svg-icon iconCheckmarkSm" width="14" height="14" viewBox="0 0 14 14"><path d="M13 3.41 11.59 2 5 8.59 2.41 6 1 7.41l4 4z"/></svg> <span class="s-post-summary--stats-item-number">1</span> <span class="s-post-summary--stats-item-unit">answer</span> </div> <div class="s-post-summary--stats-item " title="541 views"> <span class="s-post-summary--stats-item-number">541</span> <span class="s-post-summary--stats-item-unit">views</span> </div> </div> <div class="s-post-summary--content"> <h3 class="s-post-summary--content-title"> <a href="/questions/91880/error-for-frame-laser-frame-does-not-exist" class="s-link">Error: For frame [Laser]: Frame does not exist</a> </h3> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags d-inline-block tags js-tags t-rviz t-laser t-ros-melodic t-turtlebot t-rplidar"> <ul class='ml0 list-ls-none js-post-tag-list-wrapper d-inline'><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/rviz" class="s-tag post-tag flex--item mt0 js-tagname-rviz" title="show questions tagged 'rviz'" aria-label="show questions tagged 'rviz'" rel="tag" aria-labelledby="tag-rviz-tooltip-container" data-tag-menu-origin="Unknown">rviz</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/laser" class="s-tag post-tag flex--item mt0 js-tagname-laser" title="show questions tagged 'laser'" aria-label="show questions tagged 'laser'" rel="tag" aria-labelledby="tag-laser-tooltip-container" data-tag-menu-origin="Unknown">laser</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/ros-melodic" class="s-tag post-tag flex--item mt0 js-tagname-ros-melodic" title="show questions tagged 'ros-melodic'" aria-label="show questions tagged 'ros-melodic'" rel="tag" aria-labelledby="tag-ros-melodic-tooltip-container" data-tag-menu-origin="Unknown">ros-melodic</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/turtlebot" class="s-tag post-tag flex--item mt0 js-tagname-turtlebot" title="show questions tagged 'turtlebot'" aria-label="show questions tagged 'turtlebot'" rel="tag" aria-labelledby="tag-turtlebot-tooltip-container" data-tag-menu-origin="Unknown">turtlebot</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/rplidar" class="s-tag post-tag flex--item mt0 js-tagname-rplidar" title="show questions tagged 'rplidar'" aria-label="show questions tagged 'rplidar'" rel="tag" aria-labelledby="tag-rplidar-tooltip-container" data-tag-menu-origin="Unknown">rplidar</a></li></ul> </div> <div class="s-user-card s-user-card__minimal" aria-live="polite"> <a href="/users/46778/catherine" class="s-avatar s-avatar__16 s-user-card--avatar" data-user-id="46778"> <div class="gravatar-wrapper-16"> <img src="https://www.gravatar.com/avatar/24916ed26deb1953ba8db06988c379d0?s=32&d=identicon&r=PG&f=y&so-version=2" alt="Catherine's user avatar" width="16" , height="16" class="s-avatar--image" /> </div> </a> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4" > <a href="/users/46778/catherine" class="flex--item">Catherine</a> </div> <ul class="s-user-card--awards"> <li class="s-user-card--rep"><span class="todo-no-class-here" title="reputation score " dir="ltr">1</span></li> </ul> </div> <time class="s-user-card--time"> <a href="/questions/91880/error-for-frame-laser-frame-does-not-exist?lastactivity" class="s-link s-link__muted">modified <span title='2025-02-25 21:45:58Z' class='relativetime'>15 hours ago</span></a> </time> </div> </div> </div> </div> <div id="question-summary-107973" class="s-post-summary js-post-summary" data-post-id="107973" data-post-type-id="1"> <div class="s-post-summary--stats js-post-summary-stats"> <div class="s-post-summary--stats-item s-post-summary--stats-item__emphasized" title="Score of 0"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">votes</span> </div> <div class="s-post-summary--stats-item has-answers " title="2 answers"> <span class="s-post-summary--stats-item-number">2</span> <span class="s-post-summary--stats-item-unit">answers</span> </div> <div class="s-post-summary--stats-item " title="157 views"> <span class="s-post-summary--stats-item-number">157</span> <span class="s-post-summary--stats-item-unit">views</span> </div> </div> <div class="s-post-summary--content"> <h3 class="s-post-summary--content-title"> <a href="/questions/107973/why-generate-launch-description-is-called-two-times-when-i-start-a-launch-file" class="s-link">Why "generate_launch_description" is called two times when I start a launch file from another launch file</a> </h3> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags d-inline-block tags js-tags t-ros2 t-roslaunch t-ros-humble"> <ul class='ml0 list-ls-none js-post-tag-list-wrapper d-inline'><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/ros2" class="s-tag post-tag flex--item mt0 js-tagname-ros2" title="show questions tagged 'ros2'" aria-label="show questions tagged 'ros2'" rel="tag" aria-labelledby="tag-ros2-tooltip-container" data-tag-menu-origin="Unknown">ros2</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/roslaunch" class="s-tag post-tag flex--item mt0 js-tagname-roslaunch" title="show questions tagged 'roslaunch'" aria-label="show questions tagged 'roslaunch'" rel="tag" aria-labelledby="tag-roslaunch-tooltip-container" data-tag-menu-origin="Unknown">roslaunch</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/ros-humble" class="s-tag post-tag flex--item mt0 js-tagname-ros-humble" title="show questions tagged 'ros-humble'" aria-label="show questions tagged 'ros-humble'" rel="tag" aria-labelledby="tag-ros-humble-tooltip-container" data-tag-menu-origin="Unknown">ros-humble</a></li></ul> </div> <div class="s-user-card s-user-card__minimal" aria-live="polite"> <a href="/users/-1/community" class="s-avatar s-avatar__16 s-user-card--avatar js-user-hover-target" data-user-id="-1"> <div class="gravatar-wrapper-16"> <img src="https://www.gravatar.com/avatar/a007be5a61f6aa8f3e85ae2fc18dd66e?s=32&d=identicon&r=PG" alt="Community's user avatar" width="16" , height="16" class="s-avatar--image" /> </div> </a> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4" > <a href="/users/-1/community" class="flex--item">Community</a><span class="flex--item s-badge ml2 s-badge__xs " title="Community Bot — not a real person. Replies to this bot are not monitored.">Bot</span> </div> <ul class="s-user-card--awards"> <li class="s-user-card--rep"><span class="todo-no-class-here" title="reputation score " dir="ltr">1</span></li> </ul> </div> <time class="s-user-card--time"> <a href="/questions/107973/why-generate-launch-description-is-called-two-times-when-i-start-a-launch-file?lastactivity" class="s-link s-link__muted">modified <span title='2025-02-25 20:10:36Z' class='relativetime'>17 hours ago</span></a> </time> </div> </div> </div> </div> </div> </div> </div> <a class="s-btn s-btn__filled float-right" href="/questions">Browse more Questions</a> <script> StackExchange.using('exploreQuestions', function() { StackExchange.exploreQuestions.init({count:14});StackExchange.exploreQuestions.gps(); }); </script> <script> StackExchange.ready(function() { StackExchange.question.initShareLinks(); }); </script> </div> <div id="sidebar"> <div class="s-sidebarwidget mb16 module"> <div class="s-sidebarwidget--header d-flex ai-center pb16"> <a href="https://chat.stackexchange.com" class="js-chat-ad-link">Visit chat</a> </div> </div> <style> </style> <div class="js-zone-container zone-container-sidebar"> <div id="dfp-msb" class="everyonelovesstackoverflow everyoneloves__mid-sidebar"></div> <div class="js-report-ad-button-container " style="width: 300px"></div> </div> <div id="hot-network-questions" class="module tex2jax_ignore"> <h4> <a href="https://stackexchange.com/questions?tab=hot" class="js-gps-track s-link s-link__inherit" data-gps-track="posts_hot_network.click({ item_type:1, location:8 })"> Hot Network Questions </a> </h4> <ul> <li > <div class="favicon favicon-scifi" title="Science Fiction & Fantasy Stack Exchange"></div><a href="https://scifi.stackexchange.com/questions/295117/is-there-a-reason-that-heinlein-omitted-let-there-be-light-from-the-past-thro" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:8, target_site:186 }); posts_hot_network.click({ item_type:2, location:8 })"> Is there a reason that Heinlein omitted "Let There Be Light" from "The Past Through Tomorrow" </a> </li> <li > <div class="favicon favicon-bicycles" title="Bicycles Stack Exchange"></div><a href="https://bicycles.stackexchange.com/questions/96273/what-are-chain-tensioners-called-that-can-work-with-igh-locknuts" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:8, target_site:126 }); posts_hot_network.click({ item_type:2, location:8 })"> What are chain tensioners called that can work with IGH locknuts? </a> </li> <li > <div class="favicon favicon-electronics" title="Electrical Engineering Stack Exchange"></div><a href="https://electronics.stackexchange.com/questions/739919/please-advise-if-this-led-circuit-is-efficient" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:8, target_site:135 }); posts_hot_network.click({ item_type:2, location:8 })"> Please advise if this LED circuit is efficient </a> </li> <li > <div class="favicon favicon-travel" title="Travel Stack Exchange"></div><a href="https://travel.stackexchange.com/questions/193529/transfer-visa-if-i-have-a-2-hour-layover-in-reykjavik-heading-to-ireland" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:8, target_site:273 }); posts_hot_network.click({ item_type:2, location:8 })"> Transfer visa if I have a 2 hour layover in Reykjavik heading to Ireland </a> </li> <li > <div class="favicon favicon-ell" title="English Language Learners Stack Exchange"></div><a href="https://ell.stackexchange.com/questions/362513/is-it-correct-to-say-you-have-been-in-or-on-my-mind" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:8, target_site:481 }); posts_hot_network.click({ item_type:2, location:8 })"> Is it correct to say "you have been in or on my mind"? </a> </li> <li > <div class="favicon favicon-superuser" title="Super User"></div><a href="https://superuser.com/questions/1882961/how-to-replicate-ssh-t-gateway-ssh-destination-in-ssh-config" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:8, target_site:3 }); posts_hot_network.click({ item_type:2, location:8 })"> How to replicate 'ssh -t ⟨gateway⟩ ssh ⟨destination⟩' in '~/.ssh/config' </a> </li> <li > <div class="favicon favicon-philosophy" title="Philosophy Stack Exchange"></div><a href="https://philosophy.stackexchange.com/questions/122994/can-truth-exist-without-language" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:8, target_site:265 }); posts_hot_network.click({ item_type:2, location:8 })"> Can truth exist without language? </a> </li> <li > <div class="favicon favicon-music" title="Music: Practice & Theory Stack Exchange"></div><a href="https://music.stackexchange.com/questions/138998/what-is-this-chord-progression" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:8, target_site:240 }); posts_hot_network.click({ item_type:2, location:8 })"> What is this Chord Progression? </a> </li> <li > <div class="favicon favicon-puzzling" title="Puzzling Stack Exchange"></div><a href="https://puzzling.stackexchange.com/questions/130721/numbers-whose-digital-sum-is-a-multiple-of-19" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:8, target_site:559 }); posts_hot_network.click({ item_type:2, location:8 })"> Numbers whose digital sum is a multiple of 19 </a> </li> <li > <div class="favicon favicon-puzzling" title="Puzzling Stack Exchange"></div><a href="https://puzzling.stackexchange.com/questions/130701/seven-nines-to-make-ninety" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:8, target_site:559 }); posts_hot_network.click({ item_type:2, location:8 })"> Seven nines to make ninety </a> </li> <li > <div class="favicon favicon-mathoverflow" title="MathOverflow"></div><a href="https://mathoverflow.net/questions/488471/minimal-data-required-to-determine-an-objectwise-truncated-map-of-functors" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:8, target_site:504 }); posts_hot_network.click({ item_type:2, location:8 })"> Minimal data required to determine an objectwise truncated map of functors </a> </li> <li > <div class="favicon favicon-space" title="Space Exploration Stack Exchange"></div><a href="https://space.stackexchange.com/questions/67965/using-modern-technology-how-do-we-slow-down-and-capture-2024-yr4" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:8, target_site:508 }); posts_hot_network.click({ item_type:2, location:8 })"> Using Modern Technology How Do We Slow Down and Capture 2024 YR4? </a> </li> <li class="dno js-hidden"> <div class="favicon favicon-diy" title="Home Improvement Stack Exchange"></div><a href="https://diy.stackexchange.com/questions/315183/what-benefits-does-mortaring-in-a-bathtub-provide" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:8, target_site:73 }); posts_hot_network.click({ item_type:2, location:8 })"> What benefits does mortaring in a bathtub provide? </a> </li> <li class="dno js-hidden"> <div class="favicon favicon-mathoverflow" title="MathOverflow"></div><a href="https://mathoverflow.net/questions/488452/rational-independence-of-square-roots-of-polynomials" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:8, target_site:504 }); posts_hot_network.click({ item_type:2, location:8 })"> Rational independence of square roots of polynomials </a> </li> <li class="dno js-hidden"> <div class="favicon favicon-space" title="Space Exploration Stack Exchange"></div><a href="https://space.stackexchange.com/questions/67967/what-is-the-mass-penalty-for-keeping-an-astronaut-in-space-another-day" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:8, target_site:508 }); posts_hot_network.click({ item_type:2, location:8 })"> What is the mass penalty for keeping an astronaut in space another day? </a> </li> <li class="dno js-hidden"> <div class="favicon favicon-puzzling" title="Puzzling Stack Exchange"></div><a href="https://puzzling.stackexchange.com/questions/130713/two-sided-magic-square" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:8, target_site:559 }); posts_hot_network.click({ item_type:2, location:8 })"> Two-sided Magic Square </a> </li> <li class="dno js-hidden"> <div class="favicon favicon-puzzling" title="Puzzling Stack Exchange"></div><a href="https://puzzling.stackexchange.com/questions/130692/a-geometrical-puzzle-about-a-grazing-goat" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:8, target_site:559 }); posts_hot_network.click({ item_type:2, location:8 })"> A geometrical puzzle about a grazing goat </a> </li> <li class="dno js-hidden"> <div class="favicon favicon-diy" title="Home Improvement Stack Exchange"></div><a href="https://diy.stackexchange.com/questions/315114/streaks-after-painting-window-frames-with-primer-and-paint" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:8, target_site:73 }); posts_hot_network.click({ item_type:2, location:8 })"> Streaks after painting window frames with primer and paint </a> </li> <li class="dno js-hidden"> <div class="favicon favicon-hermeneutics" title="Biblical Hermeneutics Stack Exchange"></div><a href="https://hermeneutics.stackexchange.com/questions/101812/in-leviticus-117-in-what-way-might-a-burning-turtle-dove-provide-any-kind-of-p" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:8, target_site:320 }); posts_hot_network.click({ item_type:2, location:8 })"> In Leviticus 1:17, in what way might a burning turtle dove provide any kind of pleasure to the deity, other than as food? </a> </li> <li class="dno js-hidden"> <div class="favicon favicon-travel" title="Travel Stack Exchange"></div><a href="https://travel.stackexchange.com/questions/193498/is-it-normal-to-get-an-apple-airtag-tracking-notification-on-a-train" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:8, target_site:273 }); posts_hot_network.click({ item_type:2, location:8 })"> Is it normal to get an Apple airtag tracking notification on a train? </a> </li> <li class="dno js-hidden"> <div class="favicon favicon-chinese" title="Chinese Language Stack Exchange"></div><a href="https://chinese.stackexchange.com/questions/59867/a-question-about-a-specific-case-of-sandhi-of-three-third-tones" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:8, target_site:371 }); posts_hot_network.click({ item_type:2, location:8 })"> A question about a specific case of sandhi of three third tones </a> </li> <li class="dno js-hidden"> <div class="favicon favicon-security" title="Information Security Stack Exchange"></div><a href="https://security.stackexchange.com/questions/280658/is-password-based-encryption-better-than-traditional-password-hashing" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:8, target_site:162 }); posts_hot_network.click({ item_type:2, location:8 })"> Is password-based encryption better than traditional password hashing? </a> </li> <li class="dno js-hidden"> <div class="favicon favicon-electronics" title="Electrical Engineering Stack Exchange"></div><a href="https://electronics.stackexchange.com/questions/739884/relative-resistances-of-pull-up-vs-pull-down-resistors" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:8, target_site:135 }); posts_hot_network.click({ item_type:2, location:8 })"> Relative Resistances of Pull-Up vs. Pull-Down Resistors </a> </li> <li class="dno js-hidden"> <div class="favicon favicon-academia" title="Academia Stack Exchange"></div><a href="https://academia.stackexchange.com/questions/217027/there-are-almost-no-academic-sources-on-a-specific-topic-is-youtube-acceptable" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:8, target_site:415 }); posts_hot_network.click({ item_type:2, location:8 })"> There are almost no academic sources on a specific topic. Is YouTube acceptable as a proof of concept source? </a> </li> </ul> <a href="#" class="show-more js-show-more js-gps-track" data-gps-track="posts_hot_network.click({ item_type:3, location:8 })"> more hot questions </a> </div> <div id="feed-link" class="js-feed-link"> <a href="/feeds" title="The 30 most recent questions"> <svg aria-hidden="true" class="fc-orange-400 svg-icon iconRss" width="18" height="18" viewBox="0 0 18 18"><path d="M3 1a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2zm0 1.5c6.9 0 12.5 5.6 12.5 12.5H13C13 9.55 8.45 5 3 5zm0 5c4.09 0 7.5 3.41 7.5 7.5H8c0-2.72-2.28-5-5-5zm0 5c1.36 0 2.5 1.14 2.5 2.5H3z"/></svg> Recent questions feed </a> </div> <aside class="s-modal js-feed-link-modal" tabindex="-1" role="dialog" aria-labelledby="feed-modal-title" aria-describedby="feed-modal-description" aria-hidden="true"> <div class="s-modal--dialog js-modal-dialog wmx4" role="document" data-controller="se-draggable"> <h1 class="s-modal--header fw-bold js-first-tabbable" id="feed-modal-title" data-se-draggable-target="handle" tabindex="0"> Subscribe to RSS </h1> <div class="d-flex gs4 gsy fd-column"> <div class="flex--item"> <label class="d-block s-label c-default" for="feed-url"> Recent questions feed <p class="s-description mt2" id="feed-modal-description">To subscribe to this RSS feed, copy and paste this URL into your RSS reader.</p> </label> </div> <div class="d-flex ps-relative"> <input class="s-input" type="text" name="feed-url" id="feed-url" readonly="readonly" value="https://robotics.stackexchange.com/feeds" /> <svg aria-hidden="true" class="s-input-icon fc-orange-400 svg-icon iconRss" width="18" height="18" viewBox="0 0 18 18"><path d="M3 1a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2zm0 1.5c6.9 0 12.5 5.6 12.5 12.5H13C13 9.55 8.45 5 3 5zm0 5c4.09 0 7.5 3.41 7.5 7.5H8c0-2.72-2.28-5-5-5zm0 5c1.36 0 2.5 1.14 2.5 2.5H3z"/></svg> </div> </div> <a class="s-modal--close s-btn s-btn__muted js-modal-close js-last-tabbable" href="#" aria-label="Close"> <svg aria-hidden="true" class="svg-icon iconClearSm" width="14" height="14" viewBox="0 0 14 14"><path d="M12 3.41 10.59 2 7 5.59 3.41 2 2 3.41 5.59 7 2 10.59 3.41 12 7 8.41 10.59 12 12 10.59 8.41 7z"/></svg> </a> </div> </aside> </div> </div> </div> </div> <script type="text/javascript"> var cam = cam || { opt: {} }; var clcGamLoaderOptions = cam || { opt: {} }; var opt = clcGamLoaderOptions.opt; opt.refresh = !1; opt.refreshInterval = 0; opt.sf = !1; opt.hb = !1; opt.ll = !0; opt.tlb_position = 0; opt.personalization_consent = !1; opt.targeting_consent = !1; opt.performance_consent = !1; opt.targeting = {Registered:['false'],Reputation:['new'],cf_bot_score:'1'}; opt.adReportEnabled = !1; opt.adReportUrl = '/ads/report-ad'; opt.adReportText = 'Report this ad'; opt.adReportFileTypeErrorMessage = 'Please select a PNG or JPG file.'; opt.adReportFileSizeErrorMessage = 'The file must be under 2 MiB.'; opt.adReportErrorText = 'Error uploading ad report.'; opt.adReportThanksText = 'Thanks for your feedback. We’ll review this against our code of conduct and take action if necessary.'; opt.adReportLoginExpiredMessage = 'Your login session has expired, please login and try again.'; opt.adReportLoginErrorMessage = 'An error occurred when loading the report form - please try again'; opt.adReportModalClass = 'js-ad-report'; opt.countryCode = 'SG'; opt.qualtricsSurveyData = '{"isRegistered":"False","repBucket":"new","referrer":"https%3a%2f%2frobotics.stackexchange.com%2f","accountAge":"0"}'; opt.perRequestGuid = 'e23bf752-053d-4af6-8f2a-7b142363fc61'; opt.responseHash = 'aJbzcZFMuL5TcHzvMnt2rQLTQEquMKiDBPS2b7BIl5w='; opt.targeting.TargetingConsent = ['False_Passive']; opt.allowAccountTargetingForThisRequest = !1; const urlParams = new URLSearchParams(window.location.search); if (urlParams.has('dfptestads')) { const dfptestads = urlParams.get('dfptestads'); opt.targeting.DfpTestAds = dfptestads; } </script> <script>;(()=>{"use strict";var __webpack_modules__={23:(e,t,s)=>{s.d(t,{Z7:()=>c,eq:()=>l,kG:()=>d});const n="248424177",o=(a=location.pathname,/^\/tags\//.test(a)||/^\/questions\/tagged\//.test(a)?"tag-pages":/^\/discussions\//.test(a)||/^\/beta\/discussions/.test(a)?"discussions":/^\/$/.test(a)||/^\/home/.test(a)?"home-page":/^\/jobs$/.test(a)||/^\/jobs\//.test(a)?"jobs":"question-pages");var a;let i=location.hostname;const r={slots:{lb:[[728,90]],mlb:[[728,90]],smlb:[[728,90]],bmlb:[[728,90]],sb:e=>"dfp-tsb"===e?[[300,250],[300,600]]:[[300,250]],"tag-sponsorship":[[730,135]],"mobile-below-question":[[320,50],[300,250]],msb:[[300,250],[300,600]],"talent-conversion-tracking":[[1,1]],"site-sponsorship":[[230,60]]},ids:{"dfp-tlb":"lb","dfp-mlb":"mlb","dfp-smlb":"smlb","dfp-bmlb":"bmlb","dfp-tsb":"sb","dfp-isb":"sb","dfp-tag":"tag-sponsorship","dfp-msb":"msb","dfp-sspon":"site-sponsorship","dfp-m-aq":"mobile-below-question"},idsToExcludeFromAdReports:["dfp-sspon"]};function d(){return Object.keys(r.ids)}function l(e){return r.idsToExcludeFromAdReports.indexOf(e)<0}function c(e,t){var s=e.split("_")[0];const a=r.ids[s];let d=r.slots[a];return"function"==typeof d&&(d=d(s)),{path:`/${n}/${t||i}/${a}/${o}`,sizes:d,zone:a}}},865:(e,t,s)=>{function n(e){return"string"==typeof e?document.getElementById(e):e}function o(e){return!!(e=n(e))&&"none"===getComputedStyle(e).display}function a(e){return!o(e)}function i(e){return!!e}function r(e){return/^\s*$/.test(n(e).innerHTML)}function d(e){const{style:t}=e;t.height=t.maxHeight=t.minHeight="auto",t.display="none"}function l(e){const{style:t}=e;t.height=t.maxHeight=t.minHeight="auto",t.display="none",[].forEach.call(e.children,l)}function c(e){const{style:t}=e;t.height=t.maxHeight=t.minHeight="auto",t.removeProperty("display")}function g(e){const t=document.createElement("script");t.src=e,document.body.appendChild(t)}function p(e){return s=e,(t=[]).push=function(e){return s(),delete this.push,this.push(e)},t;var t,s}function h(e){let t="function"==typeof HTMLTemplateElement;var s=document.createElement(t?"template":"div");return e=e.trim(),s.innerHTML=e,t?s.content.firstChild:s.firstChild}s.d(t,{$Z:()=>c,Bv:()=>h,Gx:()=>g,Nj:()=>n,QZ:()=>p,cf:()=>d,pn:()=>a,wo:()=>l,xb:()=>r,xj:()=>o,yb:()=>i})},763:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{t:()=>AdReports});var _common_helper__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(865),_console__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(276),_ad_units__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(23);class AdReports{constructor(e,t){if(this.googletag=e,this.cam=t,this.allowedFileTypes=["image/png","image/jpg","image/jpeg"],this.ignoreValidation=!1,_console__WEBPACK_IMPORTED_MODULE_1__.cM("Ad reporting init"),this.cam=t,this.callOnButtonClick=e=>this.onButtonClick(e),this.googletag.pubads().addEventListener("slotRenderEnded",e=>this.handleSlotRendered(e)),Array.isArray(t.slotsRenderedEvents)){_console__WEBPACK_IMPORTED_MODULE_1__.cM("Adding report button to "+t.slotsRenderedEvents.length+" events that have transpired");for(var s=0;s<t.slotsRenderedEvents.length;s++)this.handleSlotRendered(t.slotsRenderedEvents[s])}}handleSlotRendered(e){if(e&&e.slot&&!e.isEmpty&&(e.creativeId||e.lineItemId||!e.isEmpty)){var t=e.slot.getSlotElementId();if(t){var s=document.getElementById(t);if(s)if((0,_ad_units__WEBPACK_IMPORTED_MODULE_0__.eq)(t)){var n=s?.closest(".js-zone-container")?.querySelector(".js-report-ad-button-container");n?(n.innerHTML="",n.append(this.createButton(e)),n.style.height="24px",_console__WEBPACK_IMPORTED_MODULE_1__.cM("Added report button to the bottom of "+t)):_console__WEBPACK_IMPORTED_MODULE_1__.cM("Ad report button not found, may be intentional, element: "+t)}else _console__WEBPACK_IMPORTED_MODULE_1__.cM("Not adding report button to the bottom of "+t+": shouldHaveReportButton = false");else _console__WEBPACK_IMPORTED_MODULE_1__.cM("Not adding report button to the bottom of "+t+": resolved invalid adUnit element")}else _console__WEBPACK_IMPORTED_MODULE_1__.cM("Not adding report button to the bottom of element: invalid adUnitElementId")}else _console__WEBPACK_IMPORTED_MODULE_1__.cM("Not adding report button to the bottom of element: invalid SlotRenderEndedEvent")}async onButtonClick(e){e.preventDefault();let t=e.target;const s=t.dataset.modalUrl,n=t.dataset.googleEventData;return await this.loadModal(s,t,n),!1}createButton(e){let t=document.createElement("button");var s=JSON.stringify(e);return t.dataset.googleEventData=s,t.dataset.modalUrl=this.cam.opt.adReportUrl,t.dataset.adUnit=e.slot.getSlotElementId(),t.classList.add("js-report-ad","s-btn","s-btn__link","fs-fine","mt2","float-right"),t.append(document.createTextNode(this.cam.opt.adReportText)),t.removeEventListener("click",this.callOnButtonClick),t.addEventListener("click",this.callOnButtonClick),t}async loadModal(url,$link,googleEventData){try{await window.StackExchange.helpers.loadModal(url,{returnElements:window.$($link)}),this.initForm(googleEventData)}catch(e){var message="",response=e.responseText?eval(`(${e.responseText})`):null;message=response&&response.isLoggedOut?this.cam.opt.adReportLoginExpiredMessage:this.cam.opt.adReportLoginErrorMessage,window.StackExchange.helpers.showToast(message,{type:"danger"})}}removeModal(){window.StackExchange.helpers.closePopups(document.querySelectorAll("."+this.cam.opt.adReportModalClass),"dismiss")}initForm(e,t=!1){this.ignoreValidation=t,this.$form=document.querySelector(".js-ad-report-form"),this.$googleEventData=this.$form.querySelector(".js-json-data"),this.$adReportReasons=this.$form.querySelectorAll(".js-ad-report-reason"),this.$adReportReasonOther=this.$form.querySelector(".js-ad-report-reason-other"),this.$fileUploaderInput=this.$form.querySelector(".js-file-uploader-input"),this.$imageUploader=this.$form.querySelector(".js-image-uploader"),this.$clearImageUpload=this.$form.querySelector(".js-clear-image-upload"),this.$imageUploaderText=this.$form.querySelector(".js-image-uploader-text"),this.$imageUploaderPreview=this.$form.querySelector(".js-image-uploader-preview"),this.$fileErrorMessage=this.$form.querySelector(".js-file-error");const s=this.$form.querySelector(".js-drag-drop-enabled"),n=this.$form.querySelector(".js-drag-drop-disabled");this.$googleEventData.value=e,this.$adReportReasons.forEach((e,t)=>e.addEventListener("change",e=>{this.$adReportReasonOther.classList.toggle("d-none","3"!==e.target.value)})),this.$fileUploaderInput.addEventListener("change",()=>{this.validateFileInput()&&this.updateImagePreview(this.$fileUploaderInput.files)}),this.$clearImageUpload.addEventListener("click",e=>{e.preventDefault(),this.clearImageUpload()});try{this.$fileUploaderInput[0].value="",this.$imageUploader.addEventListener("dragenter dragover dragleave drop",this.preventDefaults),this.$imageUploader.addEventListener("dragenter dragover",this.handleDragStart),this.$imageUploader.addEventListener("dragleave drop",this.handleDragEnd),this.$imageUploader.addEventListener("drop",this.handleDrop)}catch(e){s.classList.add("d-none"),n.classList.remove("d-none")}this.$form.removeEventListener("",this.handleDragEnd),this.$form.addEventListener("submit",async e=>(e.preventDefault(),this.submitForm(),!1))}clearImageUpload(){this.$fileUploaderInput.value="",this.$imageUploaderPreview.setAttribute("src",""),this.$imageUploaderPreview.classList.add("d-none"),this.$clearImageUpload.classList.add("d-none"),this.$imageUploaderText.classList.remove("d-none"),this.$imageUploader.classList.add("p16","ba","bas-dashed","bc-black-100")}preventDefaults(e){e.preventDefault(),e.stopPropagation()}handleDragStart(e){this.$imageUploader.classList.remove("bas-dashed"),this.$imageUploader.classList.add("bas-solid","bc-black-100")}handleDragEnd(e){this.$imageUploader.classList.remove("bas-solid","bc-black-100"),this.$imageUploader.classList.add("bas-dashed")}handleDrop(e){var t=e.originalEvent.dataTransfer.files;FileReader&&t&&1===t.length&&(this.$fileUploaderInput.files=t,this.validateFileInput()&&this.updateImagePreview(t))}setError(e){this.$fileErrorMessage.parentElement.classList.toggle("has-error",e)}updateImagePreview(e){this.$imageUploader.classList.remove("p16","ba","bas-dashed","bc-black-100"),this.$clearImageUpload.classList.remove("d-none"),this.$imageUploaderText.classList.add("d-none");var t=new FileReader;t.onload=e=>{null!=e.target&&(this.$imageUploaderPreview.setAttribute("src",e.target.result),this.$imageUploaderPreview.classList.remove("d-none"))},t.readAsDataURL(e[0])}validateFileInput(){if(this.ignoreValidation)return!0;const e=this.cam.opt.adReportFileTypeErrorMessage,t=this.cam.opt.adReportFileSizeErrorMessage;if(null==this.$fileUploaderInput.files)return!1;var s=this.$fileUploaderInput.files[0];return null==s?(this.setError(!0),!1):this.allowedFileTypes.indexOf(s.type)<0?(this.$fileErrorMessage.textContent=e,this.$fileErrorMessage.classList.remove("d-none"),this.setError(!0),!1):s.size>2097152?(this.$fileErrorMessage.textContent=t,this.$fileErrorMessage.classList.remove("d-none"),this.setError(!0),!1):(this.$fileErrorMessage.classList.add("d-none"),this.setError(!1),!0)}async gatherDiagnosticInfo(){return{BrowserVersion:await this.getBrowserVersion()}}getElementSource(e){return e.outerHTML}getNestedIFrameElement(e){var t=e.querySelector("iframe");return t.contentDocument?t.contentDocument.documentElement:t.contentWindow.document.documentElement}async getBrowserVersion(){return await navigator.userAgentData.getHighEntropyValues(["fullVersionList"]).then(e=>JSON.stringify(e.fullVersionList))}async submitForm(){if(!this.validateFileInput())return!1;this.$form.querySelector("[type=submit]").setAttribute("disabled","true");var e=JSON.parse(this.$googleEventData.value||"{}");e.Reason=parseInt(this.$form.querySelector(".js-ad-report-reason:checked").value,10),e.Description=this.$adReportReasonOther.value,this.$googleEventData.value=JSON.stringify(e);var t=new FormData(this.$form);if("1"===t.get("shareDiagnosticInfo")){var s=await this.gatherDiagnosticInfo();Object.keys(s).forEach(e=>t.append(e,s[e]))}try{const e=await window.fetch(this.$form.getAttribute("action"),{method:this.$form.getAttribute("method"),body:t,cache:"no-cache"}),s=e.headers.get("content-type")||"",o=await e.text();if(!e.ok)throw new Error("response not valid");if(0===s.indexOf("text/html")){var n=(0,_common_helper__WEBPACK_IMPORTED_MODULE_2__.Bv)(o);const e=n?n.querySelector(".js-modal-content"):null;if(_console__WEBPACK_IMPORTED_MODULE_1__.cM("$popupContent"),_console__WEBPACK_IMPORTED_MODULE_1__.cM(e),!e)throw new Error(`Could not find .js-modal-content in response from ${this.$form.getAttribute("action")}`);document.querySelector(".js-modal-content").replaceWith(e)}else window.StackExchange.helpers.showToast(this.cam.opt.adReportThanksText,{type:"success"}),this.removeModal()}catch(e){window.StackExchange.helpers.showToast(this.cam.opt.adReportErrorText,{type:"danger"})}finally{let e=this.$form.querySelector("[type=submit]");e&&e.removeAttribute("disabled")}}}},276:(e,t,s)=>{function n(...e){}function o(...e){}s.d(t,{cM:()=>n,vU:()=>o})}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var s=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](s,s.exports,__webpack_require__),s.exports}__webpack_require__.d=(e,t)=>{for(var s in t)__webpack_require__.o(t,s)&&!__webpack_require__.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var __webpack_exports__={};(()=>{var e=__webpack_require__(276),t=(e=>(e[e.Above=0]="Above",e[e.Below=1]="Below",e))(t||{});const s=Object.assign({},{"lib":"https://clc.stackoverflow.com/Content/bundles/js/gam_loader_script.bundle.741.5deb8dc1a671bfb1646b.js?v=7178a92a336c","style":null,"u":null,"wa":true,"kt":2000,"tto":true,"h":"clc.stackoverflow.com","allowed":"^(((talent\\.)?stackoverflow)|(blog\\.codinghorror)|(.*\\.googlesyndication)|(serverfault|askubuntu|superuser)|([^\\.]+\\.stackexchange))\\.com$","wv":true,"al":false,"abd":true,"cpa_liid":[5882654614],"cpa_cid":[138377597667],"dp":false,"tgt_to":1000,"tgt_u":"https://clc.stackoverflow.com/get-user-acct-tgt","tgt_e":true,"tgt_p":100,"dv_enabled":false,"upo":""});var n=__webpack_require__(23),o=__webpack_require__(865),a=__webpack_require__(763);class i{constructor(t,s){this.googletag=t,this.interval=s,e.cM("Ad refresh init. interval: "+s),this.googletag.pubads().addEventListener("impressionViewable",e=>this.onImpressionViewable(e)),e.cM("done enabling ad refresh")}onImpressionViewable(t){var s=t.slot;e.cM("ad refresh - slot "+s.getSlotElementId()+" is viewable, initializing refresh"),this.scheduleRefresh(s)}scheduleRefresh(e){setTimeout(()=>this.refreshAdSlot(e),1e3*this.interval)}static refreshMyAd(t,s){let n=t.pubads().getSlots().find(e=>e.getSlotElementId()===s);n&&(e.cM("refreshMyAd - refreshing ad slot "+s),t.pubads().refresh([n]))}static removeMyAd(t,s){let n=t.pubads().getSlots().find(e=>e.getSlotElementId()===s);n&&(e.cM("removeMyAd - destroying ad slot "+s),t.destroySlots([n]))}refreshAdSlot(t){var s=t.getSlotElementId();this.isElementVisibleInBrowser(s)?(e.cM("refreshing ad slot "+s),googletag.pubads().refresh([t])):(e.cM("refresh skipped this time; ad slot not viewable:"+s),this.scheduleRefresh(t))}isElementVisibleInBrowser(e){var t=document.getElementById(e);if(null!==t){var s=t.getBoundingClientRect();if(s.top>=0&&s.left>=0&&s.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&s.right<=(window.innerWidth||document.documentElement.clientWidth))return!0}return!1}}var r=(e=>(e.Off="Off",e.PreSurvey="PreSurvey",e.Collect="Collect",e.PostSurvey="PostSurvey",e))(r||{});class d{constructor(e,t){this.lineItemImpressions=[],this.surveysIdsCompleted=[],this.lineItemImpressions=e,this.surveysIdsCompleted=t}addImpression(e,t){let s={brandId:e,lineItemId:t,timestamp:new Date};this.lineItemImpressions.push(s)}addBrandSurveyCompleted(e){-1===this.surveysIdsCompleted.indexOf(e)&&this.surveysIdsCompleted.push(e)}getTotalBrandImpressions(){let e=new Map;for(let t of this.lineItemImpressions)if(e.has(t.brandId)){let s=e.get(t.brandId);e.set(t.brandId,s+1)}else e.set(t.brandId,1);return e}getBrandLineItemImpressions(e){let t={};for(let s of this.lineItemImpressions)if(s.brandId==e)if(void 0!==t[s.lineItemId]){let e=t[s.lineItemId];t[s.lineItemId]=e+1}else t[s.lineItemId]=1;return t}}class l{constructor(){this.surveyEngagementLocalStorageKey="clc-survey-engagement"}getBrandSurveyEngagement(){let e=localStorage.getItem(this.surveyEngagementLocalStorageKey);if(null===e)return new d([],[]);let t=JSON.parse(e);return new d(t.lineItemImpressions,t.surveysIdsCompleted)}saveBrandSurveyEngagement(e){let t=JSON.stringify(e);localStorage.setItem(this.surveyEngagementLocalStorageKey,t)}}class c{constructor(){this.surveyRepository=new l}getBrandSurveyEngagement(){return this.surveyRepository.getBrandSurveyEngagement()}recordImpression(e,t){let s=this.getBrandSurveyEngagement();s.addImpression(e,t),this.surveyRepository.saveBrandSurveyEngagement(s)}recordBrandSurveyCompleted(e){let t=this.getBrandSurveyEngagement();t.addBrandSurveyCompleted(e),this.surveyRepository.saveBrandSurveyEngagement(t)}}class g{constructor(t,s){this.googletag=t,this.brandSettings=s,this.brandSlotMap=new Map,this.brandSurveyEngagementService=new c,e.cM("Brand Survey init: "+JSON.stringify(s)),void 0!==s?(this.googletag.pubads().addEventListener("slotRenderEnded",e=>this.handleSlotRendered(e)),this.googletag.pubads().addEventListener("impressionViewable",e=>this.onImpressionViewable(e)),e.cM("done enabling Brand Survey")):e.cM("Brand Survey init: brandSettings is undefined, not initializing")}handleSlotRendered(t){e.cM("Brand Survey - slot rendered - slot:"+JSON.stringify(t.slot.getSlotElementId())+" lineItem: "+t.lineItemId);let s=this.findItemWithId(t.lineItemId);if(null===s||s.mode!==r.Collect)this.brandSlotMap.delete(t.slot.getSlotElementId());else{let e={brandId:s.brandId,lineItemId:t.lineItemId};this.brandSlotMap.set(t.slot.getSlotElementId(),e)}}onImpressionViewable(t){let s=t.slot;if(e.cM("ad - Brand Survey - impression viewable. Details: "+JSON.stringify(s.getSlotElementId())),e.cM("ad - Brand Survey - slot "+s.getSlotElementId()+" is viewable"),this.brandSlotMap.has(s.getSlotElementId())){let t=this.brandSlotMap.get(s.getSlotElementId());e.cM("Brand Survey - brand "+t.brandId+" is viewable"),this.recordImpression(this.brandSlotMap.get(s.getSlotElementId()))}}recordImpression(t){e.cM("ad - Brand Survey - recording impression for brand "+t.brandId),this.brandSurveyEngagementService.recordImpression(t.brandId,t.lineItemId)}findItemWithId(t){return e.cM("brand settings: "+JSON.stringify(this.brandSettings)),this.brandSettings.find(e=>e.lineItemIds.includes(t))||null}}const p="response-brand-survey-submit|",h="request-brand-survey-metadata|",m="record-metric-on-server|",u="request-dsp-tags",f="response-dsp-tags|";class _{static refreshAdIfBrandSurveyIsDuplicated(e,t,s){if(this.alreadyCompletedThisBrandSurvey(t)){var n=document.getElementById(s).closest(".js-zone-container");i.removeMyAd(e,s),n&&n.remove()}}static alreadyCompletedThisBrandSurvey(e){return(new c).getBrandSurveyEngagement().surveysIdsCompleted.includes(e)}}window.cam=new class{constructor(t=null){if(this.gptImported=!1,this.slotsRenderedEvents=[],this.collapsed={},e.cM("constructor"),this.clc_options=s,window.clcGamLoaderOptions)Object.assign(this,window.clcGamLoaderOptions);else if(void 0===this.opt){let e=window.opt;e&&(this.opt=e)}}init(){if(e.cM("init"),void 0===this.opt)throw new Error("opt not set, required by GAM Loader");e.cM("init brand survey service"),this.getUserMetaPromise=this.getUserMeta(),e.cM("setup message handler"),window.addEventListener("message",e=>{this.onmessage(e)})}handleSlotRenderedNoAdReport(){if(googletag.pubads().addEventListener("slotRenderEnded",e=>this.applyExtraMarginBottom(e)),Array.isArray(this.slotsRenderedEvents))for(var e=0;e<this.slotsRenderedEvents.length;e++)this.applyExtraMarginBottom(this.slotsRenderedEvents[e])}onmessage(t){let s="omni";if(t.data&&("string"==typeof t.data||t.data instanceof String))if(0===t.data.indexOf("get-omni-")){e.cM("Recevied get-omni message, sending back omni");var n=t.source,a=this.opt.omni,i="string"==typeof a?a:"";n.postMessage([s,i,this.opt.perRequestGuid].join("|"),"*")}else if(0===t.data.indexOf("collapse-")){e.cM("Recevied collapse message, collapse ad iframe"),e.cM(t);for(var r=t.source.window,d=document.getElementsByTagName("IFRAME"),l=0;l<d.length;l++){var g=d[l];if(g.contentWindow==r)return void(0,o.wo)(g.parentElement.parentElement.parentElement)}}else if(0===t.data.indexOf("resize|")){e.cM("Recevied resize message, resize ad iframe"),e.cM(t);let s=this._getFrameByEvent(t),n=t.data.indexOf("|")+1,o=t.data.slice(n),a=parseFloat(o)+.5;e.cM("New iframe height "+a),s.height=a.toString(),s.parentElement.style.height=a.toString()+"px"}else if(0===t.data.indexOf("getmarkup|")){let s=t.data.indexOf("|")+1,n=t.data.slice(s);e.cM("Recevied get markup message: "+n);let o=this._getFrameByEvent(t).closest(".everyonelovesstackoverflow");const a=document.createElement("script");a.dataset.adZoneId=o.id,a.src=n,document.body.appendChild(a)}else if(0===t.data.indexOf("window-location|")){let s=t.data.indexOf("|")+1,n=t.data.slice(s);e.cM("Recevied window location message: "+n),n.startsWith("/")||(n="/"+n),window.open(window.location.protocol+"//"+window.location.host+n,"_blank")}else if(0===t.data.indexOf("request-brand-survey-submit|")){let s=t.data.split("|"),n=s[1],o=s[2],a=s[3],i=JSON.parse(a);e.cM(n),e.cM(o),e.cM(a),e.cM("Received brand survey "+n+" response message: "+o);var v=new FormData;for(var b in i)v.append(b,i[b]);let r=this._getFrameByEvent(t);if(_.alreadyCompletedThisBrandSurvey(+n))return e.cM("Already completed this brand survey. Not submitting duplicate to server."),void r.contentWindow.postMessage("response-brand-survey-submit-duplicate|","*");e.cM("Send the brand survey to the server"),fetch(o,{method:"POST",body:v}).then(e=>e.json()).then(e=>r.contentWindow.postMessage({messageType:p},"*")).catch(e=>r.contentWindow.postMessage({messageType:p},"*"))}else if(0===t.data.indexOf("brand-survey-completed-store|")){let s=t.data.split("|"),n=(s[1],s[2]);if(e.cM("Received brand survey completed store message for survey ID "+n),_.alreadyCompletedThisBrandSurvey(+n))return void e.cM("Already completed this brand survey. Not recording duplicate locally.");e.cM("Record brand survey completion locally"),(new c).recordBrandSurveyCompleted(+n)}else if(0===t.data.indexOf(h)){let s=t.data.split("|"),n=s[1],o=s[2];e.cM("Received message: "+h+" with Brand Survey ID "+o);let a=(new c).getBrandSurveyEngagement().getBrandLineItemImpressions(+n),i=JSON.stringify(a),r=this._getFrameByEvent(t);e.cM("sending impression data: "+i),r.contentWindow.postMessage("response-brand-survey-metadata|"+this.opt.responseHash+"|"+this.opt.perRequestGuid+"|"+i+"|"+this.opt.countryCode+"|"+this.opt.qualtricsSurveyData,"*")}else if(0===t.data.indexOf("refresh-if-duplicate-brand-survey|")){let e=t.data.split("|")[1],s=this.getSlotElementIdByEvent(t);_.refreshAdIfBrandSurveyIsDuplicated(googletag,+e,s)}else if(0===t.data.indexOf(m)){e.cM("Received message: "+m+" with args: "+t.data);let s=t.data.split("|"),n=s[1],o=s[2],a=s[3],i=s[4],r=new FormData;r.append("brandSurveyId",a.toString()),r.append("responseHash",this.opt.responseHash),r.append("perRequestGuid",this.opt.perRequestGuid),r.append("questionNumber",n.toString()),r.append("metricType",i.toString()),fetch(o,{method:"POST",body:r}).then(e=>e.ok).catch(t=>{e.cM("SendMetricToServer: Error sending metric to server: "+t)})}else if(0===t.data.indexOf(u)){e.cM("Received message: "+u+" with args: "+t.data);let s=this._getFrameByEvent(t);if(!this.opt.targeting["so-tag"])return void s.contentWindow.postMessage(f,"*");const n=this.opt.targeting["so-tag"].join(",");e.cM("sending targeting tags: "+n),s.contentWindow.postMessage(f+n,"*")}else e.cM("Received unhandled message")}getSlotElementIdByEvent(e){let t=this._getFrameByEvent(e),s=t.parentElement?.parentElement?.id;return s||""}_getFrameByEvent(e){return Array.from(document.getElementsByTagName("iframe")).filter(t=>t.contentWindow===e.source)[0]}classifyZoneIds(e){const t=e.map(o.Nj).filter(o.yb);return{eligible:t.filter(o.xb).filter(o.pn),ineligible:t.filter(o.xj)}}applyExtraMarginBottom(t){if(t&&t.slot&&!t.isEmpty&&(t.creativeId||t.lineItemId||!t.isEmpty)){var s=t.slot.getSlotElementId();if(s){var o=document.getElementById(s);if(o)if((0,n.eq)(s)){var a=o?.closest(".js-zone-container");a.style.marginBottom="24px",e.cM("Applied extra margin to the bottom of "+s)}else e.cM("Not applying extra margin to the bottom of "+s+": shouldHaveReportButton = false");else e.cM("Not applying extra margin to the bottom of "+s+": resolved invalid adUnit element")}else e.cM("Not applying extra margin to the bottom of element: invalid adUnitElementId")}else e.cM("Not applying extra margin to the bottom of element: invalid SlotRenderEndedEvent")}async load(s=(0,n.kG)()){const r=this.opt.tlb_position===t.Above?["dfp-mlb","dfp-smlb"]:["dfp-mlb","dfp-smlb","dfp-tlb"];if(!this.isGptReady())return e.cM("Initializing..."),this.initGpt(),void googletag.cmd.push(()=>this.load(s));this.opt.adReportEnabled?(e.cM("Ad reporting enabled"),this.adReports=new a.t(googletag,this)):(e.cM("Ad reporting not enabled"),this.handleSlotRenderedNoAdReport()),this.opt.refresh?(e.cM("Ad refresh enabled"),this.adRefresh=new i(googletag,this.opt.refreshInterval)):e.cM("Ad refresh not enabled"),this.opt.brandSurveyEnabled&&(e.cM("Brand Survey enabled"),this.brandSurvey=new g(googletag,this.opt.brandSurveySettings)),e.cM("Attempting to load ads into ids: ",s);const{eligible:d,ineligible:l}=this.classifyZoneIds(s);if(this.initDebugPanel(googletag,d.concat(l)),d.forEach(e=>(0,o.cf)(e)),l.forEach(o.wo),0===d.length)return void e.cM("Found no ad ids on page");e.cM("Eligible ids:",d),this.opt.abd&&this.appendAdblockDetector();var c=googletag.pubads().getSlots();if(c){var p=c.filter(e=>s.indexOf(e.getSlotElementId())>=0);googletag.destroySlots(p)}this.opt.sf&&(googletag.pubads().setForceSafeFrame(!0),googletag.pubads().setSafeFrameConfig({allowOverlayExpansion:!0,allowPushExpansion:!0,sandbox:!0})),e.cM("Targeting consent: Checking...");let h=!1,m=!1;void 0!==this.opt.targeting_consent&&(m=!0,e.cM("Targeting consent: Parameter set"),e.cM("Targeting consent: Consent given? ",this.opt.targeting_consent),h=this.opt.targeting_consent),void 0!==this.opt.personalization_consent&&(e.cM("Personalization consent: Parameter set"),e.cM("Personalization consent: Consent given? ",this.opt.personalization_consent),h=h&&this.opt.personalization_consent),h=h&&m,this.setPrivacySettings(h),this.opt.ll||googletag.pubads().enableSingleRequest(),cam.sreEvent||(googletag.pubads().addEventListener("slotRenderEnded",e=>this.onSlotRendered(e)),cam.sreEvent=!0),await this.setTargeting();var u=d.filter(e=>!this.opt.ll||r.indexOf(e.id)<0),f=d.filter(e=>!!this.opt.ll&&r.indexOf(e.id)>=0);e.cM("Up front ids:",u),e.cM("Lazy loaded ids:",f),u.forEach(t=>{e.cM(`Defining ad for element ${t.id}`),this.defineSlot(t.id,googletag),t.setAttribute("data-dfp-zone","true")}),googletag.enableServices(),u.forEach(t=>{e.cM(`Displaying ad for element ${t.id}`),this.clc_options.dv_enabled?window.onDvtagReady(function(){googletag.display(t.id)}):googletag.cmd.push(()=>googletag.display(t.id))}),this.opt.ll&&(e.cM("Enabling lazy loading for GAM"),googletag.pubads().enableLazyLoad({fetchMarginPercent:0,renderMarginPercent:0}),e.cM("Setting up lazy loaded ad units"),f.forEach(t=>{e.cM(`Lazy loading - Defining Slot ${t.id}`),this.defineSlot(t.id,googletag)}),f.forEach(t=>{e.cM(`Lazy loading - Displaying ad for element ${t.id}`),this.clc_options.dv_enabled?window.onDvtagReady(function(){googletag.display(t.id)}):googletag.cmd.push(()=>googletag.display(t.id))}))}setPrivacySettings(e){e||googletag.pubads().setPrivacySettings({nonPersonalizedAds:!0})}async setTargeting(){if(!googletag)throw new Error("googletag not defined");let t=this.opt.targeting;if(!t)throw new Error("Targeting not defined (is "+typeof t+")");Object.keys(t).forEach(s=>{e.cM(`-> targeting - ${s}: ${t[s]}`),googletag.pubads().setTargeting(s,t[s])});let s=!1;if(void 0!==this.opt.targeting_consent&&(s=this.opt.targeting_consent),s){let t=(new c).getBrandSurveyEngagement();if(t.getTotalBrandImpressions().forEach((t,s)=>{e.cM(`-> targeting - BrandImpressions: ${s}: ${t}`),googletag.pubads().setTargeting("brand_"+s.toString()+"_impressions",t.toString())}),t.surveysIdsCompleted.forEach(t=>{e.cM(`-> targeting - SurveysTaken: ${t}`),googletag.pubads().setTargeting("survey_"+t+"_taken","true")}),this.clc_options.tgt_e&&this.getUserMetaPromise){let t=await this.getUserMetaPromise;t&&t.tgt_acct?(e.cM("-> targeting - User Account: "+t.tgt_acct),googletag.pubads().setTargeting("user-acct",t.tgt_acct.company_name),googletag.pubads().setTargeting("user_acct_top",t.tgt_acct.company_name),googletag.pubads().setTargeting("user_industry",t.tgt_acct.industry),googletag.pubads().setTargeting("user_employee_count",t.tgt_acct.employee_range)):e.cM("-> targeting - User Account: Not Found"),t&&Object.prototype.hasOwnProperty.call(t,"is_high_rep_earner")?(e.cM("-> targeting - High Rep Earner: "+t.is_high_rep_earner),googletag.pubads().setTargeting("IsHighRepEarner",t.is_high_rep_earner?"true":"false")):e.cM("-> targeting - High Rep Earner: not found")}if(localStorage){e.cM('Checking local storage for "jobs-last-clicked" key.');let t=localStorage.getItem("jobs-last-clicked")?"true":"false";e.cM(`-> targeting - jobs_clicked: ${t}`),googletag.pubads().setTargeting("jobs_clicked",t)}}}appendAdblockDetector(){const e=document.createElement("div");e.className="adsbox",e.id="clc-abd",e.style.position="absolute",e.style.pointerEvents="none",e.innerHTML=" ",document.body.appendChild(e)}onSlotRendered(s){try{const i=s.slot.getSlotElementId();let r=[];i||r.push("id=0");const d=document.getElementById(i);if(i&&!d&&r.push("el=0"),0!==r.length)return void this.stalled(r.join("&"));const{path:l,sizes:c,zone:g}=(0,n.Z7)(i,this.clc_options.upo);if(this.collapsed[g]&&s.isEmpty)return e.cM(`No line item for the element #${d.id}... collapsing.`),void(0,o.wo)(d);if(this.slotsRenderedEvents.push(s),s.lineItemId||s.creativeId||!s.isEmpty){e.cM(`Rendered ad for element #${d.id} [line item #${s.lineItemId}]`),e.cM(s);var a=d.parentElement;if(a.classList.contains("js-zone-container")){switch((0,o.cf)(a),i){case"dfp-tlb":this.opt.tlb_position===t.Above?a.classList.add("mb8"):a.classList.add("mt16");break;case"dfp-tag":a.classList.add("mb8");break;case"dfp-msb":a.classList.add("mt16");break;case"dfp-mlb":case"dfp-smlb":case"dfp-bmlb":a.classList.add("my8");break;case"dfp-isb":a.classList.add("mt24");break;case"dfp-m-aq":a.classList.add("my12"),a.classList.add("mx-auto")}(0,o.$Z)(a),(0,o.$Z)(d)}else e.cM(`No ad for element #${d.id}, collapsing`),e.cM(s),(0,o.wo)(d)}}catch(t){e.cM("Exception thrown onSlotRendered"),e.cM(t),this.stalled("e=1")}}stalled(e){(new Image).src=`https://${this.clc_options.h}/stalled.gif?${e}`}defineSlot(t,s){"dfp-isb"===t&&(e.cM("-> targeting - Sidebar: Inline"),s.pubads().setTargeting("Sidebar",["Inline"])),"dfp-tsb"===t&&(e.cM("-> targeting - Sidebar: Right"),s.pubads().setTargeting("Sidebar",["Right"]));const{path:o,sizes:a,zone:i}=(0,n.Z7)(t,this.clc_options.upo);e.cM(`Defining slot for ${t}: ${o}, sizes: ${JSON.stringify(a)}`),s.defineSlot(o,a,t).addService(s.pubads())}importGptLibrary(){this.gptImported||(this.gptImported=!0,void 0===this.opt.targeting_consent||this.opt.targeting_consent?(0,o.Gx)("https://securepubads.g.doubleclick.net/tag/js/gpt.js"):(0,o.Gx)("https://pagead2.googlesyndication.com/tag/js/gpt.js"))}importDvLibrary(){this.clc_options.dv_enabled&&(e.cM("Adding DoubleVerify library"),(0,o.Gx)("https://pub.doubleverify.com/dvtag/21569774/DV1289064/pub.js"),e.cM("Adding DoubleVerify onDvtagReady handler"),window.onDvtagReady=function(t,s=750){e.cM("DoubleVerify onDvtagReady called"),window.dvtag=window.dvtag||{},dvtag.cmd=dvtag.cmd||[];const n={callback:t,timeout:s,timestamp:(new Date).getTime()};dvtag.cmd.push(function(){dvtag.queueAdRequest(n)}),setTimeout(function(){const e=n.callback;n.callback=null,e&&e()},s)})}isGptReady(){return"undefined"!=typeof googletag&&!!googletag.apiReady}initGpt(){"undefined"==typeof googletag&&(window.googletag={cmd:(0,o.QZ)(()=>{this.importGptLibrary(),this.importDvLibrary()})})}getUserMeta(){if(this.opt.allowAccountTargetingForThisRequest&&this.clc_options.tgt_e&&this.clc_options.tgt_p>0){if(e.cM("Targeting enabled."),this.clc_options.tgt_p<100){e.cM("Targeting rate limit enabled. Rolling the dice...");const t=Math.floor(100*Math.random())+1;if(e.cM("Rolled "+t+" and the max is "+this.clc_options.tgt_p),t>this.clc_options.tgt_p)return void e.cM("Will not request targeting.")}return e.cM("Will request targeting."),function(e,t,s,n){if(t){const t=new Headers;return t.append("Accept","application/json"),async function(e,t={},s=5e3){if("number"!=typeof s&&null!=s&&!1!==s){if("string"!=typeof s)throw new Error("fetchWithTimeout: timeout must be a number");if(s=parseInt(s),isNaN(s))throw new Error("fetchWithTimeout: timeout must be a number (or string that can be parsed to a number)")}const n=new AbortController,{signal:o}=n,a=fetch(e,{...t,signal:o}),i=setTimeout(()=>n.abort(),s);try{const e=await a;return clearTimeout(i),e}catch(e){throw clearTimeout(i),e}}(s+"?"+new URLSearchParams({omni:e}),{method:"GET",mode:"cors",headers:t},n).then(e=>e.json())}return Promise.reject("No consent")}(this.opt.omni,this.opt.targeting_consent,this.clc_options.tgt_u,this.clc_options.tgt_to).catch(t=>{e.vU("Error fetching user account targeting"),e.vU(t)})}e.cM("Targeting disabled. Will not request account targeting data.")}initDebugPanel(t,s){e.cM("initDebugPanel"),e.cM("Not showing debug panel.")}},window.clcGamLoaderOptions&&(cam.init(),cam.load())})()})();</script> <footer id="footer" class="site-footer js-footer" role="contentinfo"> <div class="site-footer--container"> <nav class="site-footer--nav" aria-label="Footer"> <div class="site-footer--col"> <h5 class="-title"><a href="/">Robotics</a></h5> <ul class="-list js-primary-footer-links"> <li><a class="js-gps-track -link" data-gps-track="footer.click({ location: 1, link: 2 })" href="/tour">Tour</a></li> <li><a href="/help" class="js-gps-track -link" data-gps-track="footer.click({ location: 1, link: 3 })">Help</a></li> <li><a class="js-gps-track -link" data-gps-track="footer.click({ location: 1, link: 5 })" href="https://chat.stackexchange.com?tab=site&host=robotics.stackexchange.com">Chat</a></li> <li><a class="js-gps-track -link" data-gps-track="footer.click({ location: 1, link: 13 })" href="/contact">Contact</a></li> <li><a class="js-gps-track -link" data-gps-track="footer.click({ location: 1, link: 14 })" href="https://robotics.meta.stackexchange.com">Feedback</a></li> </ul> </div> <div class="site-footer--col"> <h5 class="-title"><a class="js-gps-track" data-gps-track="footer.click({ location: 1, link: 1 })" href="https://stackoverflow.co/">Company</a></h5> <ul class="-list"> <li><a href="https://stackoverflow.com" class="js-gps-track -link" data-gps-track="footer.click({ location: 1, link: 15})">Stack Overflow</a></li> <li><a href="https://stackoverflow.co/teams/" class="js-gps-track -link" data-gps-track="footer.click({ location: 1, link: 29 })">Teams</a></li> <li><a href="https://stackoverflow.co/advertising/" class="js-gps-track -link" data-gps-track="footer.click({ location: 1, link: 21 })">Advertising</a></li> <li><a href="https://stackoverflow.co/advertising/employer-branding/" class="js-gps-track -link" data-gps-track="footer.click({ location: 1, link: 20 })">Talent</a></li> <li><a class="js-gps-track -link" data-gps-track="footer.click({ location: 1, link: 1 })" href="https://stackoverflow.co/">About</a></li> <li><a class="js-gps-track -link" data-gps-track="footer.click({ location: 1, link: 27 })" href="https://stackoverflow.co/company/press/">Press</a></li> <li><a class="js-gps-track -link" data-gps-track="footer.click({ location: 1, link: 7 })" href="https://stackoverflow.com/legal">Legal</a></li> <li><a class="js-gps-track -link" data-gps-track="footer.click({ location: 1, link: 8 })" href="https://stackoverflow.com/legal/privacy-policy">Privacy Policy</a></li> <li><a class="js-gps-track -link" data-gps-track="footer.click({ location: 1, link: 37 })" href="https://stackoverflow.com/legal/terms-of-service/public">Terms of Service</a></li> <li id="consent-footer-link"><button type="button" data-controller="cookie-settings" data-action="click->cookie-settings#toggle" class="s-btn s-btn__link py4 js-gps-track -link" data-gps-track="footer.click({ location: 1, link: 38 })" data-consent-popup-loader="footer">Cookie Settings</button></li> <li><a class="js-gps-track -link" data-gps-track="footer.click({ location: 1, link: 39 })" href="https://stackoverflow.com/legal/cookie-policy">Cookie Policy</a></li> </ul> </div> <div class="site-footer--col site-footer--categories-nav"> <div> <h5 class="-title"><a href="https://stackexchange.com" data-gps-track="footer.click({ location: 1, link: 30 })">Stack Exchange Network</a></h5> <ul class="-list"> <li> <a href="https://stackexchange.com/sites#technology" class="-link js-gps-track" data-gps-track="footer.click({ location: 1, link: 24 })"> Technology </a> </li> <li> <a href="https://stackexchange.com/sites#culturerecreation" class="-link js-gps-track" data-gps-track="footer.click({ location: 1, link: 24 })"> Culture & recreation </a> </li> <li> <a href="https://stackexchange.com/sites#lifearts" class="-link js-gps-track" data-gps-track="footer.click({ location: 1, link: 24 })"> Life & arts </a> </li> <li> <a href="https://stackexchange.com/sites#science" class="-link js-gps-track" data-gps-track="footer.click({ location: 1, link: 24 })"> Science </a> </li> <li> <a href="https://stackexchange.com/sites#professional" class="-link js-gps-track" data-gps-track="footer.click({ location: 1, link: 24 })"> Professional </a> </li> <li> <a href="https://stackexchange.com/sites#business" class="-link js-gps-track" data-gps-track="footer.click({ location: 1, link: 24 })"> Business </a> </li> <li class="mt16 md:mt0"> <a href="https://api.stackexchange.com/" class="-link js-gps-track" data-gps-track="footer.click({ location: 1, link: 24 })"> API </a> </li> <li> <a href="https://data.stackexchange.com/" class="-link js-gps-track" data-gps-track="footer.click({ location: 1, link: 24 })"> Data </a> </li> </ul> </div> </div> </nav> <div class="site-footer--copyright fs-fine md:mt24"> <ul class="-list -social md:mb8"> <li><a class="js-gps-track -link" data-gps-track="footer.click({ location: 1, link:4 })" href="https://stackoverflow.blog?blb=1">Blog</a></li> <li><a href="https://www.facebook.com/officialstackoverflow/" class="-link js-gps-track" data-gps-track="footer.click({ location: 1, link: 31 })">Facebook</a></li> <li><a href="https://twitter.com/stackoverflow" class="-link js-gps-track" data-gps-track="footer.click({ location: 1, link: 32 })">Twitter</a></li> <li><a href="https://linkedin.com/company/stack-overflow" class="-link js-gps-track" data-gps-track="footer.click({ location: 1, link: 33 })">LinkedIn</a></li> <li><a href="https://www.instagram.com/thestackoverflow" class="-link js-gps-track" data-gps-track="footer.click({ location: 1, link: 36 })">Instagram</a></li> </ul> <p class="md:mb0"> <span>Site design / logo © 2025 Stack Exchange Inc; </span> <span>user contributions licensed under </span> <a class="-link s-link td-underline" href="https://stackoverflow.com/help/licensing">CC BY-SA</a> <span>. </span> <span id="svnrev">rev 2025.2.25.23148</span> </p> </div> </div> </footer> <!-- Google tag (gtag.js) --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-S812YQPLT2"></script> <script> window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); } </script> <script> StackExchange.ready(function() { var ga3Settings = { autoLink: ["stackoverflow.blog","info.stackoverflowsolutions.com","stackoverflowsolutions.com"], sendTitles: true, tracker: window.ga, trackingCodes: [ 'UA-108242619-5' ], checkDimension: 'dimension42' }; var customGA4Dimensions = {}; customGA4Dimensions["requestid"] = "e23bf752-053d-4af6-8f2a-7b142363fc61"; customGA4Dimensions["routename"] = "Home/Index"; var ga4Settings = { tracker: gtag, trackingCodes: [ 'G-S812YQPLT2' ], consentsToPerformanceCookies: "denied", consentsToTargetingCookies: "denied", eventParameters: customGA4Dimensions, checkForAdBlock: true, sendTitles: true, trackClicks: false, }; StackExchange.ga.init({ GA3: ga3Settings, GA4: ga4Settings }); StackExchange.ga.setDimension('dimension3', 'Home/Index'); StackExchange.ga.setDimension('dimension7', "1740576155.796144590"); StackExchange.ga.trackPageView(); }); </script> <script src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js" charset="UTF-8" data-document-language="true" data-domain-script="cb0f3c87-b769-4e66-bbaa-377f9194216d"></script> <script defer src="https://cdn.sstatic.net/Js/modules/cookie-consent.en.js?v=36bebc18e04f"></script> <script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'91803ea8b89689a1',t:'MTc0MDU3NjE1Ni4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body> </html>