apex-solver 1.4.0

High-performance nonlinear least squares optimization with Lie group support for SLAM and bundle adjustment
Documentation
1
2
3
4
5
6
7
<html>
<head><meta charset="utf-8" /></head>
<body>
    <div style="height:900px; width:1400px;">                        <script>window.PlotlyConfig = {MathJaxConfig: 'local'};</script>
        <script charset="utf-8" src="https://cdn.plot.ly/plotly-3.7.0.min.js" integrity="sha256-jvTGqxNp8AGWEcvNLVuKr+8j5dGe9Yw51LQkmDH+IYA=" crossorigin="anonymous"></script>                <div id="3a33deaf-fcc1-471b-a062-774d2cc01efd" class="plotly-graph-div" style="height:100%; width:100%;"></div>            <script>                window.PLOTLYENV=window.PLOTLYENV || {};                                if (document.getElementById("3a33deaf-fcc1-471b-a062-774d2cc01efd")) {                    Plotly.newPlot(                        "3a33deaf-fcc1-471b-a062-774d2cc01efd",                        [{"error_y":{"array":{"dtype":"f8","bdata":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="},"type":"data","visible":true},"legendgroup":"apex-solver","marker":{"color":"#4C78A8"},"name":"apex-solver","showlegend":true,"x":["M3500","mit","city10000","ring","sphere2500","parking-garage","torus3D","cubicle"],"y":{"dtype":"f8","bdata":"0oS6bdpZST\u002frn8IU3xwYQIvqK4DNvzo\u002fQ1HyuwgSTT8IDn\u002fGOdSBPwh2NEJ\u002fvSE\u002f\u002fZnploUB0D\u002f3HbePb92nPw=="},"type":"bar","xaxis":"x","yaxis":"y"},{"error_y":{"array":{"dtype":"f8","bdata":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="},"type":"data","visible":true},"legendgroup":"factrs","marker":{"color":"#72B7B2"},"name":"factrs","showlegend":true,"x":["M3500","mit","city10000","ring","sphere2500","parking-garage","torus3D","cubicle"],"y":{"dtype":"f8","bdata":"0QMBjCeRST8GbzZBxWSIQI7Rtzg2Lzs\u002fPyNVN77GUz8AAAAAAAD4f42Vf0Ff1SE\u002fAAAAAAAA+H8AAAAAAAD4fw=="},"type":"bar","xaxis":"x","yaxis":"y"},{"error_y":{"array":{"dtype":"f8","bdata":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="},"type":"data","visible":true},"legendgroup":"tiny-solver","marker":{"color":"#54A24B"},"name":"tiny-solver","showlegend":true,"x":["M3500","mit","city10000","ring","sphere2500","parking-garage","torus3D","cubicle"],"y":{"dtype":"f8","bdata":"aocOFdBKLUDywO5fSqCDQHzf2MSA5iZAIO9VKxO+Q0DXUZNHUpIwQKMkoyeaQjpAAAAAAAAA+H+F5x4SgYvsPw=="},"type":"bar","xaxis":"x","yaxis":"y"},{"error_y":{"array":{"dtype":"f8","bdata":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="},"type":"data","visible":true},"legendgroup":"Ceres","marker":{"color":"#EECA3B"},"name":"Ceres","showlegend":true,"x":["M3500","mit","city10000","ring","sphere2500","parking-garage","torus3D","cubicle"],"y":{"dtype":"f8","bdata":"jDdDAbycAkBw9Y3Ni1kyQFKzX5YaBPs\u002f5h7xrw4VTT8ry+Ig78pHQP\u002fzErbMyEVAxbXB1u6nF0BOTy6loKv4Pw=="},"type":"bar","xaxis":"x","yaxis":"y"},{"error_y":{"array":{"dtype":"f8","bdata":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="},"type":"data","visible":true},"legendgroup":"GTSAM","marker":{"color":"#E45756"},"name":"GTSAM","showlegend":true,"x":["M3500","mit","city10000","ring","sphere2500","parking-garage","torus3D","cubicle"],"y":{"dtype":"f8","bdata":"Z6ii9oVaST99G3dZriCxQP6tRq2oaDtAE1DZlwkSTT9wIP20hc+BP4jArxEbvyE\u002fyuRHzd9vnj9AOWlBXcQ\u002fPw=="},"type":"bar","xaxis":"x","yaxis":"y"},{"error_y":{"array":{"dtype":"f8","bdata":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="},"type":"data","visible":true},"legendgroup":"g2o","marker":{"color":"#B279A2"},"name":"g2o","showlegend":true,"x":["M3500","mit","city10000","ring","sphere2500","parking-garage","torus3D","cubicle"],"y":{"dtype":"f8","bdata":"FVA8VNlZST\u002fYqjlPV4pQQHjqo+zfMKU\u002fE1DZlwkSTT9FMLsf5\u002f2aP4ZZM9EK3CE\u002f36FVT4nfoT93jaF8XNFSPw=="},"type":"bar","xaxis":"x","yaxis":"y"},{"error_y":{"array":{"dtype":"f8","bdata":"LspHw8y4JEAM8F7OAEfwP8GXUyV2fuo\u002f\u002fewpuQ4Myz9GkHkfqWT4PyVjUD6O79Y\u002fQLd8jjsdDECQkpXnZjkZQA=="},"type":"data","visible":true},"legendgroup":"apex-solver","marker":{"color":"#4C78A8"},"name":"apex-solver","showlegend":false,"x":["M3500","mit","city10000","ring","sphere2500","parking-garage","torus3D","cubicle"],"y":{"dtype":"f8","bdata":"XrpJDAJ7UUCHFtnO95NUQNv5fmq85F5AFa5H4XoUFEBKDAIrhy5qQGMQWDm0OFxA2s73U+MNlUCF61G4HnaYQA=="},"type":"bar","xaxis":"x2","yaxis":"y2"},{"error_y":{"array":{"dtype":"f8","bdata":"VSqIaSQV8D+qytUa0o+fP64Hndo51gVAtMfJRoqUsz8AAAAAAAAAAJtJSmhdk\u002f0\u002fAAAAAAAAAAAAAAAAAAAAAA=="},"type":"data","visible":true},"legendgroup":"factrs","marker":{"color":"#72B7B2"},"name":"factrs","showlegend":false,"x":["M3500","mit","city10000","ring","sphere2500","parking-garage","torus3D","cubicle"],"y":{"dtype":"f8","bdata":"XY\u002fC9Sh8TUC4HoXrUbgKQNrO91PjXWxAcT0K16NwEUAAAAAAAAD4fyCwcmiR0XtAAAAAAAAA+H8AAAAAAAD4fw=="},"type":"bar","xaxis":"x2","yaxis":"y2"},{"error_y":{"array":{"dtype":"f8","bdata":"5LRzswFpAECe57OU5rLEP22Sx6VZvCVAOKTJJqmlxz8WFNzftsQkQPJcLT2E6SZAAAAAAAAAAABnqjc1Q6c8QA=="},"type":"data","visible":true},"legendgroup":"tiny-solver","marker":{"color":"#54A24B"},"name":"tiny-solver","showlegend":false,"x":["M3500","mit","city10000","ring","sphere2500","parking-garage","torus3D","cubicle"],"y":{"dtype":"f8","bdata":"TmIQWDmsaUAqXI\u002fC9SgXQDq0yHa+JpFAJQaBlUPLNEAZBFYOrR6gQOBPjZduWopAAAAAAAAA+H\u002fAyqFFtnCeQA=="},"type":"bar","xaxis":"x2","yaxis":"y2"},{"error_y":{"array":{"dtype":"f8","bdata":"4OuQL12W2j\u002fLezDmYV6sP3ISxB10APs\u002fxS3ixXCykz+4Zl42A8cNQFxcx5OWQ+8\u002fWlW0itOiEUCP9g351gkcQA=="},"type":"data","visible":true},"legendgroup":"Ceres","marker":{"color":"#EECA3B"},"name":"Ceres","showlegend":false,"x":["M3500","mit","city10000","ring","sphere2500","parking-garage","torus3D","cubicle"],"y":{"dtype":"f8","bdata":"GARWDi0SU0CWQ4ts5\u002fsmQIlBYOXQmnhA3SQGgZVDCUCq8dJNYoKRQAaBlUOL7HBA8tJNYhCyj0Au3SQGgSuOQA=="},"type":"bar","xaxis":"x2","yaxis":"y2"},{"error_y":{"array":{"dtype":"f8","bdata":"T2Mbh5j18j8clvuqqvbkPzG+213m6TRAuu0XwKEh1z9V\u002fHF3GAD4P2vtr1Qso9Q\u002faDSUp\u002fNbFEAsPa+7k6YNQA=="},"type":"data","visible":true},"legendgroup":"GTSAM","marker":{"color":"#E45756"},"name":"GTSAM","showlegend":false,"x":["M3500","mit","city10000","ring","sphere2500","parking-garage","torus3D","cubicle"],"y":{"dtype":"f8","bdata":"TmIQWDlEUUBWDi2ynQ9FQArXo3A9459A46WbxCAwJkBLN4lBYH1gQHnpJjEIrEBAIbByaJH1g0B9PzVeujeBQA=="},"type":"bar","xaxis":"x2","yaxis":"y2"},{"error_y":{"array":{"dtype":"f8","bdata":"De0l6DDW4D8jXxZQzqnRP2i7H4yJsgZA0mZ1Ce+ZpT8VTVuv8YgyQEt93IEWuwpAQLmxvC07PEB9QBeZHZYeQA=="},"type":"data","visible":true},"legendgroup":"g2o","marker":{"color":"#B279A2"},"name":"g2o","showlegend":false,"x":["M3500","mit","city10000","ring","sphere2500","parking-garage","torus3D","cubicle"],"y":{"dtype":"f8","bdata":"bef7qfECW0C+nxov3SRHQO58PzWeUrBAqMZLN4lBGUAGgZVDKzjFQCuHFtnOn4NA+FPjpXtY3kBI4XoUzpHAQA=="},"type":"bar","xaxis":"x2","yaxis":"y2"}],                        {"template":{"data":{"barpolar":[{"marker":{"line":{"color":"white","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"white","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"#C8D4E3","linecolor":"#C8D4E3","minorgridcolor":"#C8D4E3","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"#C8D4E3","linecolor":"#C8D4E3","minorgridcolor":"#C8D4E3","startlinecolor":"#2a3f5f"},"type":"carpet"}],"choropleth":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"choropleth"}],"contourcarpet":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"contourcarpet"}],"contour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"contour"}],"heatmap":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"heatmap"}],"histogram2dcontour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"histogram2dcontour"}],"histogram2d":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"histogram2d"}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"mesh3d":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"mesh3d"}],"parcoords":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"parcoords"}],"pie":[{"automargin":true,"type":"pie"}],"scatter3d":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatter3d"}],"scattercarpet":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattercarpet"}],"scattergeo":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergeo"}],"scattergl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergl"}],"scattermapbox":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermapbox"}],"scattermap":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermap"}],"scatterpolargl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolargl"}],"scatterpolar":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolar"}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"scatterternary":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterternary"}],"surface":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"surface"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}]},"layout":{"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"autotypenumbers":"strict","coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]],"sequential":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"sequentialminus":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]},"colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"geo":{"bgcolor":"white","lakecolor":"white","landcolor":"white","showlakes":true,"showland":true,"subunitcolor":"#C8D4E3"},"hoverlabel":{"align":"left"},"hovermode":"closest","mapbox":{"style":"light"},"paper_bgcolor":"white","plot_bgcolor":"white","polar":{"angularaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":""},"bgcolor":"white","radialaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":""}},"scene":{"xaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"},"yaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"},"zaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"ternary":{"aaxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""},"baxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""},"bgcolor":"white","caxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""}},"title":{"x":0.05},"xaxis":{"automargin":true,"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":"","title":{"standoff":15},"zerolinecolor":"#EBF0F8","zerolinewidth":2},"yaxis":{"automargin":true,"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":"","title":{"standoff":15},"zerolinecolor":"#EBF0F8","zerolinewidth":2}}},"xaxis":{"anchor":"y","domain":[0.0,1.0],"matches":"x2","showticklabels":false},"yaxis":{"anchor":"x","domain":[0.55,1.0],"title":{"text":"cost \u002f (m − n)"},"type":"log"},"xaxis2":{"anchor":"y2","domain":[0.0,1.0],"title":{"text":"dataset  (2D: M3500…ring   |   3D: sphere2500…cubicle)"}},"yaxis2":{"anchor":"x2","domain":[0.0,0.45],"title":{"text":"time (ms)"},"type":"log"},"annotations":[{"font":{"size":16},"showarrow":false,"text":"Solution cost — final objective per degree of freedom (lower is better)","x":0.5,"xanchor":"center","xref":"paper","y":1.0,"yanchor":"bottom","yref":"paper"},{"font":{"size":16},"showarrow":false,"text":"Runtime (lower is better)","x":0.5,"xanchor":"center","xref":"paper","y":0.45,"yanchor":"bottom","yref":"paper"}],"legend":{"title":{"text":"solver"}},"title":{"text":"Pose Graph Optimization — cost and runtime (mean ± std over 5 runs)\u003cbr\u003e\u003csup\u003emissing bars = solver failed on that dataset\u003c\u002fsup\u003e"},"barmode":"group","height":900,"width":1400},                        {"responsive": true}                    )                };            </script>        </div>
</body>
</html>