-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve Dev Container Web App Visualization #3551
Conversation
To continue my dev blog, I'll document my progress and findings here, as this was a doozy of a rabbit hole. After final preparations and getting PR #3523 merged, I was disappointed to discover that while the web visualizations where working from local dev containers, enabling it's use from Codespaces in the web browser was not as straight forward as I had hoped. Straight off the bat, when using default settings for automatic port forwarding from Codespaces, in the web browser, Gzweb would not load a rendered web frontend from the forwarded port, connected to the Codespaces Port ForwardingDigging further into Codespaces' port forwarding, the documentation notably differs when using Web browsers. Given the ports are forwarded to the public internet, they are then kept private by default through a remote domain via an authentication method that requires the use of a While this port forwarding is private by default, it can be change to public to disable this token based access control. Although doing so for the port served by the foxglove_bridge websocket backend would allow the Foxglove Studio frontend to connect, it's not ideal. As it would require additional steps to manually configure the port forwarding settings, as well as additional documentation and instruction to inform the end user, should such forwarding settings fall out of sync with the project. While this configuration could be automated via the Websocket HeadersMy first approach to enable visualizations using Codespaces from the web browser, without having to deviate from the default private port forwarding settings, was to modify the websocket request headers to directly include the
Oddly enough, or at least a little meta, developing this PR was made rather simple with the addition of the dev container template for javascript and node development, which included all the linters, inline docs, and auto-completion, allowing me to jump straight into the code and watch my changes live, without having to putz around with setting up typescript and npm environments from scratch.
However, upon reaching the call sight for the creation of the websocket, there were no programmatic means to include custom HTTP headers into the connection upgrade request. After further investigation, it seems that this is a limitation inherent to the web standard, despite developer feedback.
While some libraries do support this, it would require patching Foxglove's fork of the rosbridge client API, and no longer reuse the standard WebSocket API, supported by most Javascript runtimes and major web browsers. Thus, a bit of a show stopper.
Another issue with this whole approach is that it doesn't avoid Cross Origin Resource Sharing (CORS) issues, or the foreboding "Mixed Content" popup warnings that some browsers could report when users inevitably misconfigure the websocket address, or when trying to mix resources from different domains. Given the Foxglove Studio frontend was then hosted from a different port than the rosbridge websocket backend, thus a different remote domain, this could lead to other issues if CORS enforcement from browsers are ever tightened.
Reverse ProxiesWhile the use of custom headers turned out to be a nonviable solution, I figured I'd try and get the Gzweb frontend to at least load in the browser, given it wasn't even rendering the page as HTML at all. After looking into how npm was serving the static files, I figured the ancient version of Node 16 that Gzweb (classic) targeted was either flaking out from the use of IPv6 addresses for the Codespaces remote domain, or choking from the indirection of GitHub's external https reverse proxy. Given that Caddy was already being used, and working, to serve the Foxglove Studio frontend, it seemed like a good idea to try and use it to serve the Gzweb frontend as well. Lo and behold, it worked! The Gzweb front end was now rendering in the browser over the remote domain: even fixing some UI bugs, e.g. folding menu toggles, that were previously not working when hosted with npm.
However, that still didn't resolve Gzweb's websocket connection issues, given the HTTP file server and websocket backend for Gzweb where now hosted across separate ports. Unlike Foxglove Studio, Gzweb (classic) does not provide the user the means to specify the backend address to connect to, and instead points back to the same URL that served the frontend, so it was time to look into reverse proxies. After a bit of digging, I found that Caddy also supports reverse proxies, and so switched to a more advance Cadddyfile configuration, leveraging multiple
While this configuration of reverse proxies worked locally, allowing Gzweb to be hosted and proxy'ed via Caddy, the same could not be said when using Codespaces from the browser. Oddly enough, after comparing the logs from the remote and local dev containers, I discovered that GitHub's own reverse proxy was modifying the capitalization of the request headers, thus evading more basic reverse proxy matchers for catching websocket connection upgrade requests. So I also had to modify the caddy configuration to use regex matching instead. E.g: {
"request": {
...
"headers": {
...
- "Connection": ["Upgrade"],
+ "Connection": ["upgrade"],
"Upgrade": ["websocket"],
...
}
},
...
} - header Connection Upgrade
+ header_regexp Connection (?i)(Upgrade)
This finally allowed the Gzweb frontend to load and connect to the remote websocket backend running in Codespaces, where I was able to confirm the undocumented fact that cookie based authentication could also be used to route the websocket connection upgrade request through GitHub's https reverse proxy, as long as an existing authenticated HTTP session to the same remote domain could be reused. Given that users must be logged into GitHub in the first place to use Codespaces, and view any privately forwarded http ports from the browser, this seemed like a reasonable assumption to make. This also resolved any possible CORS issues, and mixed content warnings, as any upgrade requests were now routed to the same remote domain as the frontend, and no longer considered cross origin. Next, I sought to replicate this reverse proxy approach for Foxglove. While this mostly solved the previous issue, the resulting success of websocket connections where flaky and intermittent. I'd often lose track of which backend I was attempting to connect to, be it a local dev container, or a remote Codespace, and would subsequently mistype the wrong websocket scheme into the URL to account for possible https reverse proxies. To try and rule out user URL typos, I'd copy and paste from the browser URL bar, or "Copy local address" button from the ports view in VS Code, to correctly capture the long autogenerated remote domain. A subtle issue that emerged however is that: depending upon where a user copied the remote domain from, the inclusion of the trailing slash These types of
Landing PageWhile typing websocket addresses for Foxglove was now a little more forgiving, with respect to trailing slashes, the task of entering the correct domain and websocket scheme still added a lot of friction to the user experience, being quite error prone; particularly when frequently restarting backends for live development. To streamline the web app experience, I decided to add a landing page to the root of the remote domain to include shortcut hyperlinks for each web app. Using the
However, this directive needs to be scoped to the respective markdown templates to avoid blowing away the To streamline the startup of Foxglove Studio in particular, we can hyperlink to a URL that Caddy can then redirect for auto connecting to the websocket backend upon initial page load. This is done by inspecting the initial request to the redirected path, notably the http scheme, requested host, and forwarded HTTP headers, then using that information to populate the URL query parameters, parsable by Foxglove, and embed them in the URL redirect. A particular nuance for Codespaces, where the web server sits behind an existing https reverse proxy to start with, is that the
Future WorkAs for future works, it might be nice to leverage unix sockets to proxy the websocket connections to web app backends when running from the same host machine, to try and reduce the load from serializing and deserializing the websocket messages over the local loopback network interface, as it would seem unix socket paths are supported addresses in Caddy.
Although, this would also need to be supported by the web app backends, such as Foxglove's websocket bridge for ROS, which in tern depends upon It might also be nice to profile the performance of the Gzweb backend, given its resource usage remains rather high when actively connected to remote clients. From approximate observations, it seems that the high frequency at which messages from Gzserver are received at the bridge, rather than the rate of messages relayed through the bridge, would be the source of most CPU load, given this load does not change when using corse positional update settings. But this could also be due to relayed tick rate of the simulation's time step. Thus, rate limiting these messages from gzserver could help with CPU usage for gzweb bridge. |
Loading Foxglove LayoutsAnother friction point I encountered while self hosting Foxglove Studio was configuring the layout used to arrange Foxglove Studio panels into custom workspaces for Nav2. For example, it would be nice to replicate the same user experience as when launching Rviz via launch files, where the configuration file for Rviz can be programmatically specified and loaded automatically upon startup. Although Foxglove does provide a convenient service to share and manage layouts between users and team organizations, this inevitably requires logging into an account by accessing Foxglove's backend service. While layouts for Foxglove Studio can also be manually imported and exported using JSON via the web UI, this requires the user to upload JSON files using their browser and local filesystem. Such caveats render existing options non ideal in our use case, for either practical or technical reasons as discussed below, so we'll need an alternative solution. Practical IssuesIn terms of practicality, having to manually upload a JSON file every time we launch Foxglove Studio from a new Codespace would be rather tedious, not to mention error prone, as one could easily upload the wrong file, or an out-dated version of the layout. For instance, users would first have to acquire the appropriate Foxglove layout, out of band, for the respective version of Nav2, save it to their local filesystem, then navigate through the menu UI to upload the file to Foxglove Studio web app. Even such a simple process can be exacerbated when conducting courses with many young students, or providing workshop tutorials for novice users that easily get lost in new interfaces. While the user's browser cache of the web app can be leveraged to retain recent layouts, avoiding the need to upload the layout json file every time the web app is revisited, this would only be applicable when the user uses the same browser, on the same machine, for the same self hosted domain. For instance, each time the user launches a new Codespace, the remote domain allocated to the Codespace is uniquely different, and thus the user would then have to reconfigure the layout again. Technical IssuesWith respect to technical limitations, given the user's browser or device, it may not even be possible for the user to upload the layout JSON file to begin with. Given Foxglove's current use of
While distribution and synchronizing of layouts is perhaps best handled by Foxglove's own account based service, usable from either the Foxglove Studio's desktop app or official web app https://studio.foxglove.dev , given the constraints discussed previously above, such as token authentication for privately port forwarding or CORS policies enforced by browsers, we'll still need to handle and automate some of this locally. Recall that when using private port forwarding for Codespaces via the web, the use of custom headers to include the authentication token is not inherently supported in Foxglove Studio, nor the standard websocket client library API it builds upon. Additionally, when using Foxglove's official web UI, the cookies used to authenticate an HTTP session through GitHubs own internal reverse proxy would not be accessible, nor applicable, to the web app served from Foxglove's own remote domain.
While the desktop or official web app for Foxglove would still otherwise be applicable when using locally forwarded ports, such as when using the VS Code desktop or WorkaroundRather than manually importing layouts from out-of-band sources, or configuring them from scratch directly from the web UI, we can automate the loading of local layouts using similar techniques as discussed previously for auto connecting to the websocket backend by leveraging the URL query parameters. Foxglove already provides a
However, as of writing, this feature is not yet supported natively in Foxglove Studio, and so accepting another side project, we'll just go ahead and implement this. The following PR adds support for a new
We can then serve different layouts for matching versions/branches of Nav2 by hosting the respective JSON files from the checked-out repo for Nav2 in the dev container workspace. This allows us to check-in the layout JSON files along with the rest of the Nav2 source code, and thus always automatically load the intended layout when launching Foxglove Studio from a Codespace. While this still may not be suitable for large scale workflows or rapidly evolving layouts, co-locating such config files with the project source code should be more than sufficient for our community development and educational use case. Lastly, this has the added bonus of working either for offline settings, or with any browser and device that can at least load the web app UI, even if not fully compatible with Foxglove's use of experimental browser features. This is handy when developing locally on an air gapped network, or teaching within conference WiFi settings, where internet connectivity may be spotty at best, and absent at worst. Attendees or organizers could then simply build or cache these dev containers and reference materials beforehand, but then still automatically configure the lesson environment when launching demos on site. |
@ruffsl, your PR has failed to build. Please check CI outputs and resolve issues. |
in an attempt to avoid authentication tokens in headers when forwarding ports from codespaces via web interface - https://docs.github.com/en/codespaces/developing-in-codespaces/forwarding-ports-in-your-codespace#using-command-line-tools-and-rest-clients-to-access-ports - https://caddyserver.com/docs/quick-starts/reverse-proxy - https://caddy.community/t/caddy-v2-how-to-proxy-websoket-v2ray-websocket-tls/7040/13
to make room for more gzweb tasks
now for Gzweb
between caddy stop commands
by correcting matcher using headers as websocket request header value is lowercase for gzweb and foxglove
via the workbench.action.tasks.terminate command
by using the path argument for respective matchers - https://caddyserver.com/docs/caddyfile/matchers#path-matchers
to keep Caddyfile DRY - https://caddyserver.com/docs/caddyfile/concepts#snippets
as file_server defaults do not correct reverse_proxy. This make typing the websocket URL more forgiving - https://caddyserver.com/docs/caddyfile/patterns#trailing-slashes
to keep Caddyfile DRY
given web port forwarding from Codespaces is odd and rewrites the value of this header field to lowercases even when local browser request is sent as `Upgrade`
to link to web apps for reverse proxy
by adding matcher for only root index otherwise gzweb's own index.html gets overwritten
to document tricky configuration
to set the respective queries values to automate websocket setup, and ensure the websocket schema matches the https request
4c7d5db
to
d24dd40
Compare
to avoid hard coded paths
for reuse in templates
to prevent ros launch from orphaning process and ensure gzserver receives SIGTERM signal given gzserver often hangs after only SIGINT - https://unix.stackexchange.com/a/196053/213124
to redirect from path /foxglove/autolayout
to redirect from path /foxglove/autoconnect but does not use LayoutUrl as to not change from cached layout
to set display as standalone - https://web.dev/add-manifest/ - https://developer.mozilla.org/en-US/docs/Web/Manifest
to embed host info into app name
Merging for integration testing and to rebuild repo's codespace. |
RefactoringAfter conducting further experimentation and closely studying Caddy's documentation, I concluded that some refactoring was necessary. My intention was to simplify the Caddyfile and make it more formulaic, resembling a template that others could easily extend. For example, they could add more apps, modify the static file locations, or even reuse it outside of development containers. Furthermore, while testing on mobile devices, I found the user experience to be unsatisfactory. Specifically, I was not pleased with the consistency of each web app's behavior upon installation. For instance, while Foxglove could be opened in a full-screen window or standalone view on Android or iOS, other apps like Gzweb or the system monitor would only reopen using regular browser tabs. This inconsistency prompted me to seek ways to further enhance the overall experience. Now, let's delve into how we can improve these issues. CaddyfileThe prior Caddyfile configurations employed a basic declarative style, which was simple but had certain drawbacks. The reliance on a monolithic root and symlinks made the setup fragile, not easily extensible, and not very portable. Adding or extending hosted apps required synchronizing symlink changes to the root path. Moreover, using the same Caddyfile outside of a development container necessitated replicating these symlinks in other locations. To address these issues, we can serve each app using its own configurable directory by leveraging user defined environment variables. This approach allows us to dynamically specify the root paths for each app during file server startup. To streamline the use of multiple This approach also enables us to adopt a more formulaic and DRY (Don't Repeat Yourself) approach with code snippets. Subsequent path matchers can now be left relative and reused between apps. However, there is a caveat when it comes to incorporating the Fortunately, the newly added redirect already automates any websocket setup by programmatically populating URL parameters used by Foxglove, avoiding the issue of typographical errors when addressing websocket URLs altogether. Mobile ViewWhen using web apps on smaller screen devices like student-owned tablets or school-issued Chromebooks, the app's display is crucial for enhancing usability. In most browsers, the URL bar and navigation buttons take up a significant portion of the vertical real estate, especially on modern screens with wider aspect ratios. While enabling the browser's full-screen mode can alleviate this issue, it can limit the use of multitasking features like multi-window or split-screen views, which are supported even on modest devices. To address this, users have the option to install web apps as standalone apps. These apps can be launched from the home screen or app drawer, allowing them to run in their own resizable windows separate from the browser. While Foxglove can already be installed as a standalone web app natively, others may not have this capability. To enable this feature, we can add the following <head>
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="mobile-web-app-capable" content="yes">
...
In fact, you can see this added to Foxglove here; which first clued me in on this feature:
While we could of course open similar PRs towards every such project we incorporate into our web stack, that could turn our current rabbit whole into a never ending fractal of forks. To keep forking to a minimum, we can instead patch our single page web apps as we serve them using Caddy's
However, this module is not part of the standard Caddy build, although it is maintained by the official Caddy organization. To use it, we have two options: either build Caddy from source or utilize the
Web App ManifestWhile the aforementioned To address this issue, we can instead adopt a more contemporary and robust approach by leveraging the Web App Manifest standard to declare the apps as compatible with mobile views. This enables us to define the start URL that is utilized when the app is installed as a standalone application, giving us the ability to include a customized query parameter to ensure consistent launching behavior. To do this, we'll instead add the following <head>
<link rel="manifest" href="manifest.json" />
...
Then we'll configure the Caddy web server to add a redirect to the respective manifest file. Not only does this allow us to specify the start URL and display mode for each app, but also customize the default name of the app as it appears to the user. We can then again use server side templates to dynamically include the host and port information into the manifest file, clueing the user into what domain the web app is hosted from. This is particularly useful when switching between local dev container or remote Codespace environments, or when switching between Codespaces with different names and thus different port forwarded web domains. {
"name": "Foxglove: {{placeholder "http.request.hostport"}}",
...
"start_url": "/foxglove/autoconnect",
"display": "standalone",
"shortcuts" : [
{
"name": "Auto Connect",
"url": "/foxglove/autoconnect",
"description": "Auto connect to default data source"
},
{
"name": "Auto Layout",
"url": "/foxglove/autolayout",
"description": "Auto connect using default layout"
},
{
"name": "Manual Connect",
"url": "/foxglove/",
"description": "Manually connect to data source"
}
]
} While we're at it, we can also incorporate shortcuts into the manifest file, enabling users to quickly select different startup options through various redirects. Instead of directly templating the complete Foxglove URL, including query parameters, into the server-side generated manifest, we'll just utilize more redirects. This approach avoids hardcoding the URLs into the installed web app, allowing us to centrally update these configurations from the server, while avoiding the need to update each individually installed web app on user devices. Although, as of writing,
While experimenting with redirects, I discovered that Caddy offers a matcher directive to filter URL query parameters by matching specific value patterns. Although using query matching instead of path matching might be preferable in this case, especially when injecting custom redirects onto an existing web app frontend, I found paths to be more reliable in practice. This is because using paths exclusively for redirects ensures that the browser does not inadvertently cache outdated responses, as it could when requesting the root path of the Single Page Application (SPA). Short of overriding the app's own caching policy, we can side step such caching issues by matching on reserved redirect paths instead.
MiscellaneousWith respect to the dev container setup, we can incorporate a few additional miscellaneous improvements. These include leveraging more environment variables to avoid hardcoding container-side paths in config files and enhancing the available tasks in VS Code. As mentioned in previous dev container PRs, these tasks, which facilitate starting and stopping the runtime dependencies for web-based visualizations, are particularly useful when restarting simulations or managing ROS launch files. Given that Gzweb and Foxglove do not handle simulation restarts gracefully, such as when encountering connection drops to gzserver or non-causality of time when caching TF trees in Foxglove Studio, having a quick way to restart the entire simulation stack is beneficial. Previously, the use of To learn more about variable substitution and input variables in VS Code, you can refer to the following documentation:
Additionally, this cleanup effort resolves issues related to the list of tasks displayed under the terminal panel in VS Code. Previously, terminated task terminals would persist, or reused terminals would exhibit inconsistent icons and names. Now, terminated tasks are removed from the display, providing clearer visibility to students regarding running and inactive processes. This helps avoid confusion and issues like the one mentioned in the following example:
Lastly, there was an issue where
|
* Add Caddyfile to reverse proxy websockets in an attempt to avoid authentication tokens in headers when forwarding ports from codespaces via web interface - https://docs.github.com/en/codespaces/developing-in-codespaces/forwarding-ports-in-your-codespace#using-command-line-tools-and-rest-clients-to-access-ports - https://caddyserver.com/docs/quick-starts/reverse-proxy - https://caddy.community/t/caddy-v2-how-to-proxy-websoket-v2ray-websocket-tls/7040/13 * Update caddy related tasks * Rename Gzweb task to Gzweb Bridge to make room for more gzweb tasks * Add Gzweb Client Task * Add Caddyfile to reverse proxy websockets now for Gzweb * Specify config file to avoid crosstalk between caddy stop commands * Fix reverse proxy for websockets by correcting matcher using headers as websocket request header value is lowercase for gzweb and foxglove * Comment out log output files for debugging * Simplify tasks by removing client tasks * Stop tasks by using terminate via the workbench.action.tasks.terminate command * Move Caddyfile * Add Web Server tasks * Move Caddyfile * Update log output file path * Update root path * Update reverse_proxy for both gzweb and foxglove by using the path argument for respective matchers - https://caddyserver.com/docs/caddyfile/matchers#path-matchers * Use snippets to keep Caddyfile DRY - https://caddyserver.com/docs/caddyfile/concepts#snippets * Use rewrite to catch trailing slash as file_server defaults do not correct reverse_proxy. This make typing the websocket URL more forgiving - https://caddyserver.com/docs/caddyfile/patterns#trailing-slashes * Improve websocket snippet to keep Caddyfile DRY * Use header_regexp for case-insensitive matching given web port forwarding from Codespaces is odd and rewrites the value of this header field to lowercases even when local browser request is sent as `Upgrade` * Add helper index page to web server to link to web apps for reverse proxy * Limit templates to fix gzweb by adding matcher for only root index otherwise gzweb's own index.html gets overwritten * Add comments to Cadyfile to document tricky configuration * Stage working redirect * Simplify index.html * Add helper redirect to simplify foxglove to set the respective queries values to automate websocket setup, and ensure the websocket schema matches the https request * Avoid hardcoding port number * Clean up comments * Use header to compute redirect to take into account requesting forwarding or more codespace port forwarding shenanigans * Use shorthand placeholders - https://caddyserver.com/docs/caddyfile/concepts#placeholders * Formatting * Keep trailing slash to stay consistent with caddy file_server directive that serves a 308 Permanent Redirect for both foxglove and gzweb paths anyway * Refactor matcher logic to account for requests either from host ports from local dev containers or forwarded requests from codespace web port forwarding * Split snippet into globals for composability * Update comments * Add Placeholders for debugging * Use tables to center * Use github markdown - https://github.com/sindresorhus/github-markdown-css * Simplify vars * Rename vars * Revert "Rename vars" as dotted var names do not work in Caddyfile This reverts commit 3e2d1b3. * Add System Monitor to debug CPU load and memory issues * Update headings * Update layout * Update layout * Add Foxglove layout for Nav2 * Symlink assets folder for web server * Fetch Foxglove layout using layoutUrl a new parameter to load layout json data from URL - https://github.com/orgs/foxglove/discussions/217 * Cleanup * Use fork to fetch Foxglove layout using layoutUrl until this PR is merged: - https://github.com/foxglove/studio/pull/5987 * Update Caddyfile to handle relative root by using local srv folder * Inject mobile view html tags using the caddy replace module - https://caddyserver.com/docs/modules/http.handlers.replace_response - https://github.com/caddyserver/replace-response * Simplify Caddyfile * Use snippet for apps * Simplify Caddyfile * Simplify Caddyfile * Build caddy using custom modules * Remove unused symlinks * Add comments * Use environment and defined variables for config to avoid hard coded paths * Add FoxgloveUrl to vars for reuse in templates * Fix trailing slash for DataSourceUrl * Use exec to run gzserver with xvfb to prevent ros launch from orphaning process and ensure gzserver receives SIGTERM signal given gzserver often hangs after only SIGINT - https://unix.stackexchange.com/a/196053/213124 * Update redirect for foxglove to redirect from path /foxglove/autolayout * Add redirect for foxglove to redirect from path /foxglove/autoconnect but does not use LayoutUrl as to not change from cached layout * Use web app manifest to set display as standalone - https://web.dev/add-manifest/ - https://developer.mozilla.org/en-US/docs/Web/Manifest * Template manifest files to embed host info into app name * Add manifests for other web apps * Add shortcuts for Foxglove - https://developer.mozilla.org/en-US/docs/Web/Manifest/shortcuts - https://web.dev/app-shortcuts/ * Format * Update comments * Revert use of fork * Remove debug directive
* Option allowing to use simple lookupTransform API (#3412) * Option allowing to use simple lookupTransform API ignoring time shifts between source and base frame during the movement * Refine comments * Fix wrong warning message format (#3416) * Fix wrong warning message format (Closes #3415) * fix code formatting * nav2_dwb_controller: add forward_prune_distance parameter (#3374) Until now, the prune_distance was used as distance threshold to shorten the upcoming path when shorten_transformed_plan was enabled. However, the prune and shortening mechanisms are de-correlated mechanisms. One could wish to use a different shortening distance for upcoming points, than the prune distance used for passed points. For this reason, a new parameter "forward_prune_distance" was added. * Fix service_name for server_name in cancel assisted teleop node * Fix mask coordinates calculation in worldToMask (#3418) * Remove goal checker default from follow path node * Correct CostmapFilters copyrights (#3423) * Correct the parameter description for AMCL (#3451) Signed-off-by: Trung Kien <[email protected]> * Add default service name to BTServiceNode (#3448) * Add default service name to BtServiceNode * docstring * fix initialization-list order * Update nav2_behavior_tree/include/nav2_behavior_tree/bt_service_node.hpp Co-authored-by: Steve Macenski <[email protected]> --------- Co-authored-by: Steve Macenski <[email protected]> * Fix Typos (#3452) * removing galactic from table as EOL (#3460) * Support for Dev Containers and Codespaces (#3457) * Alias image tag over current branch name * Duplicate build and push steps for dev tag * Alias image tag over current branch name * Modify build and push steps for dev tag * Build and push dev tag first to not cache from stale stages as otherwise caching from multple regestry images seems error prone * Revert "Build and push dev tag first" as otherwise the build failer durring the dev tag could then still block build of the main tag This reverts commit 12dd5b1. * Cache from multple reference images while giving layers from the main tag priority this assumes that cache-from prioritizes firstly listed references https://github.com/moby/buildkit/blob/0ad8d61575be009ce6478edf1d85716849c8ff1a/solver/llbsolver/bridge.go#L92 * Cache tests in dev image as well colcon cache can then skip tests for uneffected packages * Add devcontainer.json * Ignore doc for image builds * Add more extensions * Change workspaceFolder to root src path to avoid auto generating .vscode folder in repo created by ms-iot.vscode-ros extension upon configuring ros packages with c_cpp_properties.json * Enable features for github-cli * Add docs about codespaces and have it opened when starting codespaces * Update update_ci_image.yaml to fix duplicate step ids and add workflow file to push paths * Patch CI actions and Dockerfiles (#3468) * Unset default value for FAIL_ON_TEST_FAILURE as unsetting it via --build-arg seems unreliable docker/compose#3608 * Use build arg default for failing on test failers * Update from deprecated set-output commands https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/ * Use Codespaces prebuilds (#3470) * Add commands to devcontainer * Set builtin bash to be safe https://gist.github.com/mohanpedala/1e2ff5661761d3abd0385e8223e16425 https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ * Setup workspace on create * Revert use of set -u for bash don't raise error due to variables otherwise colcon setup.sh chokes from using an unbounded path variable * Add safe.directory for git config otherwise colcon cache errors out because of issues with git due to complex user mapping magic that vscode does with devcontainers https://stackoverflow.com/questions/72978485/git-submodule-update-failed-with-fatal-detected-dubious-ownership-in-repositor also used by Moveit2: moveit/moveit2#1994 https://github.blog/2022-04-12-git-security-vulnerability-announced/ * Set env using remoteEnv instead of inlining them in scripts * Revert to using the main tag now that the tester stage has been replicated with the new devcontainer script commands instead * formating * Scrap `-dev` image tag and use codspaces prebuilds instead * Build incrementally from update content command by copying the build workspace steps from circleci config * Adapt the build workspace steps for bash * Fix for different ceres isinf() API (#3471) * Fixing name of security launch file * Clean up pending service client request on interrupt/timeout (#3479) Signed-off-by: Øystein Sture <[email protected]> * Added str cast to parse int (#3486) Co-authored-by: antoniomarangi <[email protected]> * Add flag to not send request in BTServiceNode (#3431) * Add flag to not send request in BTServiceNode * rename goal to request * Fail if should not send goal * Update nav2_behavior_tree/include/nav2_behavior_tree/bt_service_node.hpp Co-authored-by: Steve Macenski <[email protected]> * Update nav2_behavior_tree/include/nav2_behavior_tree/bt_service_node.hpp Co-authored-by: Steve Macenski <[email protected]> * . * fix linter * fix CI --------- Co-authored-by: Steve Macenski <[email protected]> * Prepare test results to only use junit/xunit schema (#3441) * Set ctest arg to output junit To try and help CircleCI to parse the output files https://stackoverflow.com/a/70774733/2577586 * Replace the original Test.xml by outputting the junit to the same filename Context: https://github.com/colcon/colcon-cmake/blob/8f1b92a190b2ad4289ecf837c3200d540c13fdd9/colcon_cmake/task/cmake/test.py#L133 * Fix default formatting to a list WARNING:colcon.colcon_defaults.argument_parser.defaults:Default value 'ctest-args' for parser 'test' should be a list, not: --output-junit Test.xml * Revert junit file name https://circleci.com/docs/collect-test-data/#ctest-for-c-cxx-tests * Fine and rename ctest summary Test.xml * Fix find path * Simplify extention renaming * Copy ctest junit file into test_results so that they can be stored by CI * Revert ctest config modifications * Prepare Test Results by removing Test.xml generated by ctest to simplify fix for circleci * Reorder storage of test result artifacts before Test.xml files are removed so that they can still be archived and viewed for later * Use find command * Container retention via version tagging (#3491) * Use github action expression syntax to alias over github repository name * Tag by version instead of by timestamp * Avoid pushing untagged image to GHCR by setting provenance to false now that provenance is enabled by default as of v4 of docker/build-push-action - docker/build-push-action#781 - docker/build-push-action#778 * Use checkout action to set version output (#3492) Otherwise there is no source code to use to set the version output. Fixes: #3491 * Change directory to inside checked out repo (#3493) or relative path under $GITHUB_WORKSPACE that actions/checkout places the repository * Write and read from correct output mapping (#3494) * Revert "Change directory to inside checked out repo (#3493)" This reverts commit 332c1fb. * Add `version` to outputs for check step and use output from `check` id * Use output from check_ci_files job * updating world in simple commander for TB3 package change (#3495) * Ensure version output is always set (#3503) even when github.event_name != 'push' by moving run step to same job as build-push action. Also set context path provided by checkout action to avoid future nonintuitive behavoir using default Git context, even when the checkout action appears to be being used. - https://github.com/docker/build-push-action#git-context - https://github.com/docker/build-push-action#path-context * Add labels to pushed image versions (#3505) using Pre-Defined Annotation Keys as defined by The OpenContainers Annotations Spec - https://specs.opencontainers.org/image-spec/annotations/#pre-defined-annotation-keys - https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows - https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#get-a-repository * Typo README.md (#3506) * [Velocity smoother] Set zeros command if timeout (#3512) * Set zeros command if timeout * Fix lint * Fix gtest increase time to allow deceleration * Always update last_cmd_ * Revert test modif * remove test logs * Fix paste error * Update velocity_smoother.cpp * Update velocity_smoother.cpp * Improve Dev Container ergonomics (#3482) * Install and enable bash autocompletion by using apt durring on create command and by copying skelton .bashrc file that sources it by default * Edit apt for autocomplete by disabling docker-clean from containerized ubuntu * Add ROS2 Ament Task Provider extension Provides tasks and problem matchers for ROS2 projects using ament https://marketplace.visualstudio.com/items?itemName=althack.ament-task-provider * Source underlay for extentions to allow them to find the path to ros binaries such as ament_cpplint needed for althack.ament-task-provider * Target new dever stage in Dockerfile * Reduce need for internet after image build by installing developer dependencies earlier * Edit apt caching before apt updating * Source underlay systemwide this is a hacky workarround to ensure VS Code can run ShellExecution tasks with the ros envorment included in PATH otherwise, postponing this to the on-create-command results in vscode extentions not finding system installed ros commands this also works for all user shells regardless of how devontainers could change the user * Postpone bashrc setup to postCreateCommand once the dev container has been assigned to a user for the first time * Cleanup onCreateCommand as we don't use ros_entrypoint.sh for development and so it doesn't really need to be updated * Quite down the logs when building devcontainer * Formatting * Add refrence ccp properties config file generated from the vscode ROS extention but with the hardcoded paths in includePath deleted * Update version of cppStandard for ROS Rolling * Update workspaceFolder to use new .vscode folder * Mount ccache directory to volume to speed up rebuilding devcontainer whenever onCreateCommand is triggered because of modifications to .devcontainer/ files * Avoid use of containerEnv to express ccache direcotry as doing so is not possable, for more info: - https://stackoverflow.com/a/75759647/2577586 - microsoft/vscode-remote-release#7147 (comment) Just target a path in the temp direcotry instead * Stage auto generated includePath * Remove workspace install from include path except for autogenerated headers from message packages * Avoid hardcoded path to sorce folder * Avoid hardcoded path to install folder but this is still rather fragile as the reletive path between workspaceFolder and the colcon workspace isn't fixed * Sort list of paths * Remove cpp properties configuration as it seems it's existance prevents autoupdating the includePaths property unless user manually runs the vscode command `>ROS:Update C++ Properties` https://github.com/ms-iot/vscode-ros/blob/47d8f14f4ec0498cd9e8381e6fcc5f47abb340f2/src/extension.ts#L71 and even when this command is invoked it blows aways any customizated properties anyhow issue about wrong cppStandard tracked here: ms-iot/vscode-ros#818 * Fix typo to move docker-clean from loaded config path * fix data race: addFilter() and resizeMap() can be executed concurrently (#3518) Co-authored-by: Dirk Braunschweiger <[email protected]> * fix data race: prohibit resizeMap() during plugin/filter initialization (#3522) Co-authored-by: Dirk Braunschweiger <[email protected]> * Mount overlay workspace into Dev Container via volume (#3524) * Add volume for overlay to avoid rebuilding it from scratch whenever the dev container is rebuilt this saves startup time locally when fiddling with the configs * Append devcontainerId to volume name to avoid conflicts with other devcontainers note that devcontainerId is stable across rebuilds - https://containers.dev/implementors/json_reference/#variables-in-devcontainerjson * Call updateContentCommand from onCreateCommand to deduplicate scripts and keep setup DRY given the addition of a mounted overlay volume which could include a prebuilt colcon workspace well before the dev container is created/rebuilt * Comment out colcon clean from setup to avoid unintentional removal of built packages from the persistent overlay workspace volume. Users can uncomment the line locally or simply remove the overlay workspace volume if they want to rebuild packages from scratch. * Format json * Add headless and use_rviz LaunchConfigurations to demo launch files (#3527) * Add headless and use_rviz LaunchConfigurations in nav2_simple_commander demo launch files for whether to start rviz or gzclient to simplify their use in headless environments * Fix headless logic to match tb3_simulation_launch.py for launch arg consistency * Fix State-Lattice planner crashes due to FP precision loss (#3531) * Fix State-Lattice planner crashes due to FP precision loss * Move testcase comment * Add PoseProgressChecker (#3530) * add rotation progress checker * clean include * add stopped goal checker reset test * add rotation progress checker tests * uncrustify * better name: PoseProgressChecker instead of RotationProgressChecker * camelCase * uncrustify * rename in tests * more rename * simplify parentheses * faster and better tests --------- Co-authored-by: Guillaume Doisy <[email protected]> * [velocity_smoother] Fix accel and deccel inverted for negative speeds (#3529) * fix inverted accel / deccel * handle speed through 0.0 * add applyConstraints tests * fold logic * same logic in findEtaConstraint * lint * Update nav2_velocity_smoother/src/velocity_smoother.cpp * Update nav2_velocity_smoother/src/velocity_smoother.cpp * findEtaConstraint tests * space * lint * typos * comment typos --------- Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Steve Macenski <[email protected]> * Enable Visualizations for Dev Container (#3523) * Add visualizer stage to install demo dependencies * Install foxglove * Install gzweb * Add hack for resolvable mesh URIs located by the aws SDL model files - aws-robotics/aws-robomaker-small-warehouse-world#24 * Revert hack and use fork that fixes issues with deploy.sh - osrf/gzweb#248 * Update target stage to visualizer * Comment out gzclient and rviz for debugging * Add hack for resolvable mesh URIs as migrating the python3 scripts still hasn't resolved the issue * Reorder stages for readability by keeping sequential builder and tester stages adjacent while keeping tester stage the default exported target * fix typo * Install gdb for launching ros launch files using the ROS VS Code extension - ms-iot/vscode-ros#588 * Add vscode tasks file * Add Start Gzweb task * Add Start Foxglove tasks for bridge and studio * Add Start Foxglove compound task using dependsOn * Set default problemMatcher to empty to avoid nagging the user to select one as currently none really support our use case * Source overlay before running foxglove_bridge to ensure nav2 message types are defined by inlining all args into command and sourcing workspace setup * Formatting * Generalize and simplify hack * Generalize gazebo model discovery * Patch gzserver to run headless using xvfb to avoid host/platform specific x11 quirks exposed by vscode automatic x11 forwarding This is needed to provide gazebo a virtual frame buffer as it still need one after all these years. This also avoids the need modifying launch files to call xvfb-run - microsoft/vscode-remote-release#8031 - gazebosim/gazebo-classic#1602 * Set isBackground for start tasks * Add stop tasks * Add restart foxglove task * Switch to shell for commanding pkill to gracefully return 0 when process is not running allowing sequence of dependsOn tasks to run such as for the restart tasks * Add icons to tasks for readability * Add restart gzweb task * Add global start, stop, and restart tasks for all background visualization tasks * Formatting * Hide tasks users need not run manually to avoid cluttering up the run task quick pick * Shorten label for background tasks so they succinctly show from the running task list * Show global start and stop visualizations tasks as they may be too helpful to hide * Revert "Comment out gzclient and rviz for debugging" This reverts commit 0addae2. * Add --ipc=host to runArgs to enable shared memory transport - https://community.rti.com/kb/communicate-between-two-docker-containers-using-rti-connext-dds-and-shared-memory * Add --pid=host to runArgs to simplify discovery - https://community.rti.com/kb/communicate-between-two-docker-containers-using-rti-connext-dds-and-shared-memory * Add to runArgs to simplify debugging - https://code.visualstudio.com/docs/devcontainers/create-dev-container#_use-docker-compose * Add comments * Comment out runArgs unintended side effects or cross talk between containers by default also avoids interfering with vscode's X11 forwarding * [nav2_planner] Fix costmap thread reset on cleanup (#3548) * remove costmap thread reset on cleanup * Init costmap thread in on_configure method * Move costmap_thread init in on_configure method * Add IsBatteryChargingCondition (#3553) * Add IsBatteryChargingCondition * Minor fixes in battery charging and add testing * Fix format * Added isBatteryChargingCondition BT node to params * Impl noise filtering layer in the costmap_2d (#2567) Signed-off-by: ryzhikovas <[email protected]> * Improve Dev Container Web App Visualization (#3551) * Add Caddyfile to reverse proxy websockets in an attempt to avoid authentication tokens in headers when forwarding ports from codespaces via web interface - https://docs.github.com/en/codespaces/developing-in-codespaces/forwarding-ports-in-your-codespace#using-command-line-tools-and-rest-clients-to-access-ports - https://caddyserver.com/docs/quick-starts/reverse-proxy - https://caddy.community/t/caddy-v2-how-to-proxy-websoket-v2ray-websocket-tls/7040/13 * Update caddy related tasks * Rename Gzweb task to Gzweb Bridge to make room for more gzweb tasks * Add Gzweb Client Task * Add Caddyfile to reverse proxy websockets now for Gzweb * Specify config file to avoid crosstalk between caddy stop commands * Fix reverse proxy for websockets by correcting matcher using headers as websocket request header value is lowercase for gzweb and foxglove * Comment out log output files for debugging * Simplify tasks by removing client tasks * Stop tasks by using terminate via the workbench.action.tasks.terminate command * Move Caddyfile * Add Web Server tasks * Move Caddyfile * Update log output file path * Update root path * Update reverse_proxy for both gzweb and foxglove by using the path argument for respective matchers - https://caddyserver.com/docs/caddyfile/matchers#path-matchers * Use snippets to keep Caddyfile DRY - https://caddyserver.com/docs/caddyfile/concepts#snippets * Use rewrite to catch trailing slash as file_server defaults do not correct reverse_proxy. This make typing the websocket URL more forgiving - https://caddyserver.com/docs/caddyfile/patterns#trailing-slashes * Improve websocket snippet to keep Caddyfile DRY * Use header_regexp for case-insensitive matching given web port forwarding from Codespaces is odd and rewrites the value of this header field to lowercases even when local browser request is sent as `Upgrade` * Add helper index page to web server to link to web apps for reverse proxy * Limit templates to fix gzweb by adding matcher for only root index otherwise gzweb's own index.html gets overwritten * Add comments to Cadyfile to document tricky configuration * Stage working redirect * Simplify index.html * Add helper redirect to simplify foxglove to set the respective queries values to automate websocket setup, and ensure the websocket schema matches the https request * Avoid hardcoding port number * Clean up comments * Use header to compute redirect to take into account requesting forwarding or more codespace port forwarding shenanigans * Use shorthand placeholders - https://caddyserver.com/docs/caddyfile/concepts#placeholders * Formatting * Keep trailing slash to stay consistent with caddy file_server directive that serves a 308 Permanent Redirect for both foxglove and gzweb paths anyway * Refactor matcher logic to account for requests either from host ports from local dev containers or forwarded requests from codespace web port forwarding * Split snippet into globals for composability * Update comments * Add Placeholders for debugging * Use tables to center * Use github markdown - https://github.com/sindresorhus/github-markdown-css * Simplify vars * Rename vars * Revert "Rename vars" as dotted var names do not work in Caddyfile This reverts commit 3e2d1b3. * Add System Monitor to debug CPU load and memory issues * Update headings * Update layout * Update layout * Add Foxglove layout for Nav2 * Symlink assets folder for web server * Fetch Foxglove layout using layoutUrl a new parameter to load layout json data from URL - https://github.com/orgs/foxglove/discussions/217 * Cleanup * Use fork to fetch Foxglove layout using layoutUrl until this PR is merged: - https://github.com/foxglove/studio/pull/5987 * Update Caddyfile to handle relative root by using local srv folder * Inject mobile view html tags using the caddy replace module - https://caddyserver.com/docs/modules/http.handlers.replace_response - https://github.com/caddyserver/replace-response * Simplify Caddyfile * Use snippet for apps * Simplify Caddyfile * Simplify Caddyfile * Build caddy using custom modules * Remove unused symlinks * Add comments * Use environment and defined variables for config to avoid hard coded paths * Add FoxgloveUrl to vars for reuse in templates * Fix trailing slash for DataSourceUrl * Use exec to run gzserver with xvfb to prevent ros launch from orphaning process and ensure gzserver receives SIGTERM signal given gzserver often hangs after only SIGINT - https://unix.stackexchange.com/a/196053/213124 * Update redirect for foxglove to redirect from path /foxglove/autolayout * Add redirect for foxglove to redirect from path /foxglove/autoconnect but does not use LayoutUrl as to not change from cached layout * Use web app manifest to set display as standalone - https://web.dev/add-manifest/ - https://developer.mozilla.org/en-US/docs/Web/Manifest * Template manifest files to embed host info into app name * Add manifests for other web apps * Add shortcuts for Foxglove - https://developer.mozilla.org/en-US/docs/Web/Manifest/shortcuts - https://web.dev/app-shortcuts/ * Format * Update comments * Revert use of fork * Remove debug directive * Improve usability of PWAs in Dev Containers (#3576) * Add WIP icons * Add WIP icons for gzweb * Add WIP icons for glances * Set cross origin to use credentials ensuring auth cookie is included in request header when requesting for web app manifest file thus avoiding CORS policy violations in browser when accessing forwarded codespaces ports from the web > The request for the manifest is made without credentials (even if it's on the same domain), thus if the manifest requires credentials, you must include `crossorigin="use-credentials"` in the manifest tag. - https://web.dev/add-manifest/ - https://stackoverflow.com/a/57184506/2577586 * Use ReqHost variable in templates to account for X-Forwarded-Host value in header * Delete duplicate manifest * Set id property in app manifests so we can address them independently from their start_url - https://developer.chrome.com/blog/pwa-manifest-id/ * Ensure apps are uniquely identifies by adding trailing slash to id and thus different URI directories * Refactor root landing page into nav2 app by moving page file into nav2 sub folder adding root redirect pointing to /nav2/ and updating html, markdown, manifest files respectively * Fix https detection for Caddy reverse proxies by also checking X-Forwarded-Proto in request header * Remove unnecessary files * Prune smaller images * Prune duplicate icon * Clean up html tags * Update manifest icons * Rename icons * Revert "Prune duplicate icon" This reverts commit 5710401. * Add back favicon for shortcut * Add self index for completeness and bookmarking * Simplify icon linking * Delete binary files * Fix hyperlink path * Include image files using gitattributes to track these binary files via git LFS * Add icons using git lfs * Standardized all icon paths * Use external links for icons to avoid the need for using git LFS although this is a bit of a hack * Stage any and maskable icons * Use any and masked icons * Set colors to match maskable icon colors * Update icon * Use lossless compression without removing background - https://shortpixel.com/online-image-compression * Use WebP instead of PNG for smaller file sizes - https://en.wikipedia.org/wiki/WebP * Move icons into icons folder * Use _SRV environment variables for service paths * Download media files from github during docker image build to avoid adding always online dependencies when creating or starting dev containers * Delete media icons from git repo now that we download media from anonymized URLs on github - https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/attaching-files * Add comments * Enable file browsing for non app paths for remote debugging of media and asset files * Consolidate assets into single folder * Add links for file browser paths to Server Diagnostics * Delete unused symlink * Update landing page to match manifest by including same shortcuts and start url * Patch gzweb to disable modelList avoiding 404s for thumbnails as they are hardcoded into js * Update comments * Simplify Caddyfile by reverting to symlinking but add ROOT_SRV env for custom overriding * Loop over nav2 srv folders when symlinking to generalize over folder names * Add matcher for file browsing root directory while still redirecting to nav2 app by default * Use placeholders for root variable to consolidate env default fallback settings e.g `:/srv` * Promote file browser in Nav2 app shortcuts * Fix and update SRV envs * Postpone symlinking for Nav2 web app to when post-create-command script then runs given full repo is not copied into builder stage in Dockerfile. While this could be postponed to update-content-command leaving it here avoids blowing user changes after the container has been created or modified. * Add guard to check if srv folder exists * Add refresh rate shortcuts to glances * Add file browser shortcut to nav2 * Set scope for nav2 PWA to root to allow for opening child apps inside nav2 app * Display child apps in fullscreen mode by default as users can still open them in standalone via nav2 app given the nav2 app's scope is the parent root path * Update shortcuts and landing page * Document PWA scope and installation order when using Nav2 PWA scoped as root * Revert setting scope for nav2 PWA to root path as adding file browser shortcut to nav2 PWA is not worth the trouble of having to explain installation order caveats and URL launch behavior. File browser shortcut is still accessible from inside nav2 pwa launcher but merely displays in browser preview given root / is out of scope for /nav2/ * Update server diagnostics for troubleshooting * Verify checksum of archive before extraction incase anonymized URL changes expected archive * Fix the condition in ackerman motion model constraints (#3581) * Fix the condition in ackerman motion model constraints * Fix ackerman motion model tests * Fix another ackerman motion model test * Fix broken symlink for gzweb (#3585) to load world models * Fix broken link to contributing guidelines (#3587) The original URL (https://navigation.ros.org/contribute/index.html) seems not to exist, returning an HTTP 404. Hence, I've replaced the link with a page that seems most relevant. * Adding Our Sponsors - May 2023 (#3593) * adding our sponsors - may 2023 * adding blurb * adding links * adding links * adding links * adding Open Nav * Add CostmapFilterInfoServer as a component (#3596) * Resolve #3532: reset i (#3597) * [MPPI] empty path_follow_critic proper fix (#3599) * [MPPI] empty path_follow_critic proper fix * fix linting issue --------- Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Steve Macenski <[email protected]> * bumping humble to 1.1.7 for release --------- Signed-off-by: Trung Kien <[email protected]> Signed-off-by: Øystein Sture <[email protected]> Signed-off-by: ryzhikovas <[email protected]> Co-authored-by: Alexey Merzlyakov <[email protected]> Co-authored-by: Jose Luis Blanco-Claraco <[email protected]> Co-authored-by: DylanDeCoeyer-Quimesis <[email protected]> Co-authored-by: Trung Kien <[email protected]> Co-authored-by: HovorunB <[email protected]> Co-authored-by: Tony Najjar <[email protected]> Co-authored-by: Ruffin <[email protected]> Co-authored-by: Øystein Sture <[email protected]> Co-authored-by: mrmara <[email protected]> Co-authored-by: antoniomarangi <[email protected]> Co-authored-by: Tony Najjar <[email protected]> Co-authored-by: Griswald Brooks <[email protected]> Co-authored-by: BriceRenaudeau <[email protected]> Co-authored-by: Dirk Braunschweiger <[email protected]> Co-authored-by: Dirk Braunschweiger <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Alberto Tudela <[email protected]> Co-authored-by: ryzhikovas <[email protected]> Co-authored-by: Alexandr Buyval <[email protected]> Co-authored-by: Hyung-Taik Choi <[email protected]> Co-authored-by: Filipe Cerveira <[email protected]>
* Option allowing to use simple lookupTransform API (ros-navigation#3412) * Option allowing to use simple lookupTransform API ignoring time shifts between source and base frame during the movement * Refine comments * Fix wrong warning message format (ros-navigation#3416) * Fix wrong warning message format (Closes ros-navigation#3415) * fix code formatting * nav2_dwb_controller: add forward_prune_distance parameter (ros-navigation#3374) Until now, the prune_distance was used as distance threshold to shorten the upcoming path when shorten_transformed_plan was enabled. However, the prune and shortening mechanisms are de-correlated mechanisms. One could wish to use a different shortening distance for upcoming points, than the prune distance used for passed points. For this reason, a new parameter "forward_prune_distance" was added. * Fix service_name for server_name in cancel assisted teleop node * Fix mask coordinates calculation in worldToMask (ros-navigation#3418) * Remove goal checker default from follow path node * Correct CostmapFilters copyrights (ros-navigation#3423) * Correct the parameter description for AMCL (ros-navigation#3451) Signed-off-by: Trung Kien <[email protected]> * Add default service name to BTServiceNode (ros-navigation#3448) * Add default service name to BtServiceNode * docstring * fix initialization-list order * Update nav2_behavior_tree/include/nav2_behavior_tree/bt_service_node.hpp Co-authored-by: Steve Macenski <[email protected]> --------- Co-authored-by: Steve Macenski <[email protected]> * Fix Typos (ros-navigation#3452) * removing galactic from table as EOL (ros-navigation#3460) * Support for Dev Containers and Codespaces (ros-navigation#3457) * Alias image tag over current branch name * Duplicate build and push steps for dev tag * Alias image tag over current branch name * Modify build and push steps for dev tag * Build and push dev tag first to not cache from stale stages as otherwise caching from multple regestry images seems error prone * Revert "Build and push dev tag first" as otherwise the build failer durring the dev tag could then still block build of the main tag This reverts commit 12dd5b1. * Cache from multple reference images while giving layers from the main tag priority this assumes that cache-from prioritizes firstly listed references https://github.com/moby/buildkit/blob/0ad8d61575be009ce6478edf1d85716849c8ff1a/solver/llbsolver/bridge.go#L92 * Cache tests in dev image as well colcon cache can then skip tests for uneffected packages * Add devcontainer.json * Ignore doc for image builds * Add more extensions * Change workspaceFolder to root src path to avoid auto generating .vscode folder in repo created by ms-iot.vscode-ros extension upon configuring ros packages with c_cpp_properties.json * Enable features for github-cli * Add docs about codespaces and have it opened when starting codespaces * Update update_ci_image.yaml to fix duplicate step ids and add workflow file to push paths * Patch CI actions and Dockerfiles (ros-navigation#3468) * Unset default value for FAIL_ON_TEST_FAILURE as unsetting it via --build-arg seems unreliable docker/compose#3608 * Use build arg default for failing on test failers * Update from deprecated set-output commands https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/ * Use Codespaces prebuilds (ros-navigation#3470) * Add commands to devcontainer * Set builtin bash to be safe https://gist.github.com/mohanpedala/1e2ff5661761d3abd0385e8223e16425 https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ * Setup workspace on create * Revert use of set -u for bash don't raise error due to variables otherwise colcon setup.sh chokes from using an unbounded path variable * Add safe.directory for git config otherwise colcon cache errors out because of issues with git due to complex user mapping magic that vscode does with devcontainers https://stackoverflow.com/questions/72978485/git-submodule-update-failed-with-fatal-detected-dubious-ownership-in-repositor also used by Moveit2: moveit/moveit2#1994 https://github.blog/2022-04-12-git-security-vulnerability-announced/ * Set env using remoteEnv instead of inlining them in scripts * Revert to using the main tag now that the tester stage has been replicated with the new devcontainer script commands instead * formating * Scrap `-dev` image tag and use codspaces prebuilds instead * Build incrementally from update content command by copying the build workspace steps from circleci config * Adapt the build workspace steps for bash * Fix for different ceres isinf() API (ros-navigation#3471) * Fixing name of security launch file * Clean up pending service client request on interrupt/timeout (ros-navigation#3479) Signed-off-by: Øystein Sture <[email protected]> * Added str cast to parse int (ros-navigation#3486) Co-authored-by: antoniomarangi <[email protected]> * Add flag to not send request in BTServiceNode (ros-navigation#3431) * Add flag to not send request in BTServiceNode * rename goal to request * Fail if should not send goal * Update nav2_behavior_tree/include/nav2_behavior_tree/bt_service_node.hpp Co-authored-by: Steve Macenski <[email protected]> * Update nav2_behavior_tree/include/nav2_behavior_tree/bt_service_node.hpp Co-authored-by: Steve Macenski <[email protected]> * . * fix linter * fix CI --------- Co-authored-by: Steve Macenski <[email protected]> * Prepare test results to only use junit/xunit schema (ros-navigation#3441) * Set ctest arg to output junit To try and help CircleCI to parse the output files https://stackoverflow.com/a/70774733/2577586 * Replace the original Test.xml by outputting the junit to the same filename Context: https://github.com/colcon/colcon-cmake/blob/8f1b92a190b2ad4289ecf837c3200d540c13fdd9/colcon_cmake/task/cmake/test.py#L133 * Fix default formatting to a list WARNING:colcon.colcon_defaults.argument_parser.defaults:Default value 'ctest-args' for parser 'test' should be a list, not: --output-junit Test.xml * Revert junit file name https://circleci.com/docs/collect-test-data/#ctest-for-c-cxx-tests * Fine and rename ctest summary Test.xml * Fix find path * Simplify extention renaming * Copy ctest junit file into test_results so that they can be stored by CI * Revert ctest config modifications * Prepare Test Results by removing Test.xml generated by ctest to simplify fix for circleci * Reorder storage of test result artifacts before Test.xml files are removed so that they can still be archived and viewed for later * Use find command * Container retention via version tagging (ros-navigation#3491) * Use github action expression syntax to alias over github repository name * Tag by version instead of by timestamp * Avoid pushing untagged image to GHCR by setting provenance to false now that provenance is enabled by default as of v4 of docker/build-push-action - docker/build-push-action#781 - docker/build-push-action#778 * Use checkout action to set version output (ros-navigation#3492) Otherwise there is no source code to use to set the version output. Fixes: ros-navigation#3491 * Change directory to inside checked out repo (ros-navigation#3493) or relative path under $GITHUB_WORKSPACE that actions/checkout places the repository * Write and read from correct output mapping (ros-navigation#3494) * Revert "Change directory to inside checked out repo (ros-navigation#3493)" This reverts commit 332c1fb. * Add `version` to outputs for check step and use output from `check` id * Use output from check_ci_files job * updating world in simple commander for TB3 package change (ros-navigation#3495) * Ensure version output is always set (ros-navigation#3503) even when github.event_name != 'push' by moving run step to same job as build-push action. Also set context path provided by checkout action to avoid future nonintuitive behavoir using default Git context, even when the checkout action appears to be being used. - https://github.com/docker/build-push-action#git-context - https://github.com/docker/build-push-action#path-context * Add labels to pushed image versions (ros-navigation#3505) using Pre-Defined Annotation Keys as defined by The OpenContainers Annotations Spec - https://specs.opencontainers.org/image-spec/annotations/#pre-defined-annotation-keys - https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows - https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#get-a-repository * Typo README.md (ros-navigation#3506) * [Velocity smoother] Set zeros command if timeout (ros-navigation#3512) * Set zeros command if timeout * Fix lint * Fix gtest increase time to allow deceleration * Always update last_cmd_ * Revert test modif * remove test logs * Fix paste error * Update velocity_smoother.cpp * Update velocity_smoother.cpp * Improve Dev Container ergonomics (ros-navigation#3482) * Install and enable bash autocompletion by using apt durring on create command and by copying skelton .bashrc file that sources it by default * Edit apt for autocomplete by disabling docker-clean from containerized ubuntu * Add ROS2 Ament Task Provider extension Provides tasks and problem matchers for ROS2 projects using ament https://marketplace.visualstudio.com/items?itemName=althack.ament-task-provider * Source underlay for extentions to allow them to find the path to ros binaries such as ament_cpplint needed for althack.ament-task-provider * Target new dever stage in Dockerfile * Reduce need for internet after image build by installing developer dependencies earlier * Edit apt caching before apt updating * Source underlay systemwide this is a hacky workarround to ensure VS Code can run ShellExecution tasks with the ros envorment included in PATH otherwise, postponing this to the on-create-command results in vscode extentions not finding system installed ros commands this also works for all user shells regardless of how devontainers could change the user * Postpone bashrc setup to postCreateCommand once the dev container has been assigned to a user for the first time * Cleanup onCreateCommand as we don't use ros_entrypoint.sh for development and so it doesn't really need to be updated * Quite down the logs when building devcontainer * Formatting * Add refrence ccp properties config file generated from the vscode ROS extention but with the hardcoded paths in includePath deleted * Update version of cppStandard for ROS Rolling * Update workspaceFolder to use new .vscode folder * Mount ccache directory to volume to speed up rebuilding devcontainer whenever onCreateCommand is triggered because of modifications to .devcontainer/ files * Avoid use of containerEnv to express ccache direcotry as doing so is not possable, for more info: - https://stackoverflow.com/a/75759647/2577586 - microsoft/vscode-remote-release#7147 (comment) Just target a path in the temp direcotry instead * Stage auto generated includePath * Remove workspace install from include path except for autogenerated headers from message packages * Avoid hardcoded path to sorce folder * Avoid hardcoded path to install folder but this is still rather fragile as the reletive path between workspaceFolder and the colcon workspace isn't fixed * Sort list of paths * Remove cpp properties configuration as it seems it's existance prevents autoupdating the includePaths property unless user manually runs the vscode command `>ROS:Update C++ Properties` https://github.com/ms-iot/vscode-ros/blob/47d8f14f4ec0498cd9e8381e6fcc5f47abb340f2/src/extension.ts#L71 and even when this command is invoked it blows aways any customizated properties anyhow issue about wrong cppStandard tracked here: ms-iot/vscode-ros#818 * Fix typo to move docker-clean from loaded config path * fix data race: addFilter() and resizeMap() can be executed concurrently (ros-navigation#3518) Co-authored-by: Dirk Braunschweiger <[email protected]> * fix data race: prohibit resizeMap() during plugin/filter initialization (ros-navigation#3522) Co-authored-by: Dirk Braunschweiger <[email protected]> * Mount overlay workspace into Dev Container via volume (ros-navigation#3524) * Add volume for overlay to avoid rebuilding it from scratch whenever the dev container is rebuilt this saves startup time locally when fiddling with the configs * Append devcontainerId to volume name to avoid conflicts with other devcontainers note that devcontainerId is stable across rebuilds - https://containers.dev/implementors/json_reference/#variables-in-devcontainerjson * Call updateContentCommand from onCreateCommand to deduplicate scripts and keep setup DRY given the addition of a mounted overlay volume which could include a prebuilt colcon workspace well before the dev container is created/rebuilt * Comment out colcon clean from setup to avoid unintentional removal of built packages from the persistent overlay workspace volume. Users can uncomment the line locally or simply remove the overlay workspace volume if they want to rebuild packages from scratch. * Format json * Add headless and use_rviz LaunchConfigurations to demo launch files (ros-navigation#3527) * Add headless and use_rviz LaunchConfigurations in nav2_simple_commander demo launch files for whether to start rviz or gzclient to simplify their use in headless environments * Fix headless logic to match tb3_simulation_launch.py for launch arg consistency * Fix State-Lattice planner crashes due to FP precision loss (ros-navigation#3531) * Fix State-Lattice planner crashes due to FP precision loss * Move testcase comment * Add PoseProgressChecker (ros-navigation#3530) * add rotation progress checker * clean include * add stopped goal checker reset test * add rotation progress checker tests * uncrustify * better name: PoseProgressChecker instead of RotationProgressChecker * camelCase * uncrustify * rename in tests * more rename * simplify parentheses * faster and better tests --------- Co-authored-by: Guillaume Doisy <[email protected]> * [velocity_smoother] Fix accel and deccel inverted for negative speeds (ros-navigation#3529) * fix inverted accel / deccel * handle speed through 0.0 * add applyConstraints tests * fold logic * same logic in findEtaConstraint * lint * Update nav2_velocity_smoother/src/velocity_smoother.cpp * Update nav2_velocity_smoother/src/velocity_smoother.cpp * findEtaConstraint tests * space * lint * typos * comment typos --------- Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Steve Macenski <[email protected]> * Enable Visualizations for Dev Container (ros-navigation#3523) * Add visualizer stage to install demo dependencies * Install foxglove * Install gzweb * Add hack for resolvable mesh URIs located by the aws SDL model files - aws-robotics/aws-robomaker-small-warehouse-world#24 * Revert hack and use fork that fixes issues with deploy.sh - osrf/gzweb#248 * Update target stage to visualizer * Comment out gzclient and rviz for debugging * Add hack for resolvable mesh URIs as migrating the python3 scripts still hasn't resolved the issue * Reorder stages for readability by keeping sequential builder and tester stages adjacent while keeping tester stage the default exported target * fix typo * Install gdb for launching ros launch files using the ROS VS Code extension - ms-iot/vscode-ros#588 * Add vscode tasks file * Add Start Gzweb task * Add Start Foxglove tasks for bridge and studio * Add Start Foxglove compound task using dependsOn * Set default problemMatcher to empty to avoid nagging the user to select one as currently none really support our use case * Source overlay before running foxglove_bridge to ensure nav2 message types are defined by inlining all args into command and sourcing workspace setup * Formatting * Generalize and simplify hack * Generalize gazebo model discovery * Patch gzserver to run headless using xvfb to avoid host/platform specific x11 quirks exposed by vscode automatic x11 forwarding This is needed to provide gazebo a virtual frame buffer as it still need one after all these years. This also avoids the need modifying launch files to call xvfb-run - microsoft/vscode-remote-release#8031 - gazebosim/gazebo-classic#1602 * Set isBackground for start tasks * Add stop tasks * Add restart foxglove task * Switch to shell for commanding pkill to gracefully return 0 when process is not running allowing sequence of dependsOn tasks to run such as for the restart tasks * Add icons to tasks for readability * Add restart gzweb task * Add global start, stop, and restart tasks for all background visualization tasks * Formatting * Hide tasks users need not run manually to avoid cluttering up the run task quick pick * Shorten label for background tasks so they succinctly show from the running task list * Show global start and stop visualizations tasks as they may be too helpful to hide * Revert "Comment out gzclient and rviz for debugging" This reverts commit 0addae2. * Add --ipc=host to runArgs to enable shared memory transport - https://community.rti.com/kb/communicate-between-two-docker-containers-using-rti-connext-dds-and-shared-memory * Add --pid=host to runArgs to simplify discovery - https://community.rti.com/kb/communicate-between-two-docker-containers-using-rti-connext-dds-and-shared-memory * Add to runArgs to simplify debugging - https://code.visualstudio.com/docs/devcontainers/create-dev-container#_use-docker-compose * Add comments * Comment out runArgs unintended side effects or cross talk between containers by default also avoids interfering with vscode's X11 forwarding * [nav2_planner] Fix costmap thread reset on cleanup (ros-navigation#3548) * remove costmap thread reset on cleanup * Init costmap thread in on_configure method * Move costmap_thread init in on_configure method * Add IsBatteryChargingCondition (ros-navigation#3553) * Add IsBatteryChargingCondition * Minor fixes in battery charging and add testing * Fix format * Added isBatteryChargingCondition BT node to params * Impl noise filtering layer in the costmap_2d (ros-navigation#2567) Signed-off-by: ryzhikovas <[email protected]> * Improve Dev Container Web App Visualization (ros-navigation#3551) * Add Caddyfile to reverse proxy websockets in an attempt to avoid authentication tokens in headers when forwarding ports from codespaces via web interface - https://docs.github.com/en/codespaces/developing-in-codespaces/forwarding-ports-in-your-codespace#using-command-line-tools-and-rest-clients-to-access-ports - https://caddyserver.com/docs/quick-starts/reverse-proxy - https://caddy.community/t/caddy-v2-how-to-proxy-websoket-v2ray-websocket-tls/7040/13 * Update caddy related tasks * Rename Gzweb task to Gzweb Bridge to make room for more gzweb tasks * Add Gzweb Client Task * Add Caddyfile to reverse proxy websockets now for Gzweb * Specify config file to avoid crosstalk between caddy stop commands * Fix reverse proxy for websockets by correcting matcher using headers as websocket request header value is lowercase for gzweb and foxglove * Comment out log output files for debugging * Simplify tasks by removing client tasks * Stop tasks by using terminate via the workbench.action.tasks.terminate command * Move Caddyfile * Add Web Server tasks * Move Caddyfile * Update log output file path * Update root path * Update reverse_proxy for both gzweb and foxglove by using the path argument for respective matchers - https://caddyserver.com/docs/caddyfile/matchers#path-matchers * Use snippets to keep Caddyfile DRY - https://caddyserver.com/docs/caddyfile/concepts#snippets * Use rewrite to catch trailing slash as file_server defaults do not correct reverse_proxy. This make typing the websocket URL more forgiving - https://caddyserver.com/docs/caddyfile/patterns#trailing-slashes * Improve websocket snippet to keep Caddyfile DRY * Use header_regexp for case-insensitive matching given web port forwarding from Codespaces is odd and rewrites the value of this header field to lowercases even when local browser request is sent as `Upgrade` * Add helper index page to web server to link to web apps for reverse proxy * Limit templates to fix gzweb by adding matcher for only root index otherwise gzweb's own index.html gets overwritten * Add comments to Cadyfile to document tricky configuration * Stage working redirect * Simplify index.html * Add helper redirect to simplify foxglove to set the respective queries values to automate websocket setup, and ensure the websocket schema matches the https request * Avoid hardcoding port number * Clean up comments * Use header to compute redirect to take into account requesting forwarding or more codespace port forwarding shenanigans * Use shorthand placeholders - https://caddyserver.com/docs/caddyfile/concepts#placeholders * Formatting * Keep trailing slash to stay consistent with caddy file_server directive that serves a 308 Permanent Redirect for both foxglove and gzweb paths anyway * Refactor matcher logic to account for requests either from host ports from local dev containers or forwarded requests from codespace web port forwarding * Split snippet into globals for composability * Update comments * Add Placeholders for debugging * Use tables to center * Use github markdown - https://github.com/sindresorhus/github-markdown-css * Simplify vars * Rename vars * Revert "Rename vars" as dotted var names do not work in Caddyfile This reverts commit 3e2d1b3. * Add System Monitor to debug CPU load and memory issues * Update headings * Update layout * Update layout * Add Foxglove layout for Nav2 * Symlink assets folder for web server * Fetch Foxglove layout using layoutUrl a new parameter to load layout json data from URL - https://github.com/orgs/foxglove/discussions/217 * Cleanup * Use fork to fetch Foxglove layout using layoutUrl until this PR is merged: - https://github.com/foxglove/studio/pull/5987 * Update Caddyfile to handle relative root by using local srv folder * Inject mobile view html tags using the caddy replace module - https://caddyserver.com/docs/modules/http.handlers.replace_response - https://github.com/caddyserver/replace-response * Simplify Caddyfile * Use snippet for apps * Simplify Caddyfile * Simplify Caddyfile * Build caddy using custom modules * Remove unused symlinks * Add comments * Use environment and defined variables for config to avoid hard coded paths * Add FoxgloveUrl to vars for reuse in templates * Fix trailing slash for DataSourceUrl * Use exec to run gzserver with xvfb to prevent ros launch from orphaning process and ensure gzserver receives SIGTERM signal given gzserver often hangs after only SIGINT - https://unix.stackexchange.com/a/196053/213124 * Update redirect for foxglove to redirect from path /foxglove/autolayout * Add redirect for foxglove to redirect from path /foxglove/autoconnect but does not use LayoutUrl as to not change from cached layout * Use web app manifest to set display as standalone - https://web.dev/add-manifest/ - https://developer.mozilla.org/en-US/docs/Web/Manifest * Template manifest files to embed host info into app name * Add manifests for other web apps * Add shortcuts for Foxglove - https://developer.mozilla.org/en-US/docs/Web/Manifest/shortcuts - https://web.dev/app-shortcuts/ * Format * Update comments * Revert use of fork * Remove debug directive * Improve usability of PWAs in Dev Containers (ros-navigation#3576) * Add WIP icons * Add WIP icons for gzweb * Add WIP icons for glances * Set cross origin to use credentials ensuring auth cookie is included in request header when requesting for web app manifest file thus avoiding CORS policy violations in browser when accessing forwarded codespaces ports from the web > The request for the manifest is made without credentials (even if it's on the same domain), thus if the manifest requires credentials, you must include `crossorigin="use-credentials"` in the manifest tag. - https://web.dev/add-manifest/ - https://stackoverflow.com/a/57184506/2577586 * Use ReqHost variable in templates to account for X-Forwarded-Host value in header * Delete duplicate manifest * Set id property in app manifests so we can address them independently from their start_url - https://developer.chrome.com/blog/pwa-manifest-id/ * Ensure apps are uniquely identifies by adding trailing slash to id and thus different URI directories * Refactor root landing page into nav2 app by moving page file into nav2 sub folder adding root redirect pointing to /nav2/ and updating html, markdown, manifest files respectively * Fix https detection for Caddy reverse proxies by also checking X-Forwarded-Proto in request header * Remove unnecessary files * Prune smaller images * Prune duplicate icon * Clean up html tags * Update manifest icons * Rename icons * Revert "Prune duplicate icon" This reverts commit 5710401. * Add back favicon for shortcut * Add self index for completeness and bookmarking * Simplify icon linking * Delete binary files * Fix hyperlink path * Include image files using gitattributes to track these binary files via git LFS * Add icons using git lfs * Standardized all icon paths * Use external links for icons to avoid the need for using git LFS although this is a bit of a hack * Stage any and maskable icons * Use any and masked icons * Set colors to match maskable icon colors * Update icon * Use lossless compression without removing background - https://shortpixel.com/online-image-compression * Use WebP instead of PNG for smaller file sizes - https://en.wikipedia.org/wiki/WebP * Move icons into icons folder * Use _SRV environment variables for service paths * Download media files from github during docker image build to avoid adding always online dependencies when creating or starting dev containers * Delete media icons from git repo now that we download media from anonymized URLs on github - https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/attaching-files * Add comments * Enable file browsing for non app paths for remote debugging of media and asset files * Consolidate assets into single folder * Add links for file browser paths to Server Diagnostics * Delete unused symlink * Update landing page to match manifest by including same shortcuts and start url * Patch gzweb to disable modelList avoiding 404s for thumbnails as they are hardcoded into js * Update comments * Simplify Caddyfile by reverting to symlinking but add ROOT_SRV env for custom overriding * Loop over nav2 srv folders when symlinking to generalize over folder names * Add matcher for file browsing root directory while still redirecting to nav2 app by default * Use placeholders for root variable to consolidate env default fallback settings e.g `:/srv` * Promote file browser in Nav2 app shortcuts * Fix and update SRV envs * Postpone symlinking for Nav2 web app to when post-create-command script then runs given full repo is not copied into builder stage in Dockerfile. While this could be postponed to update-content-command leaving it here avoids blowing user changes after the container has been created or modified. * Add guard to check if srv folder exists * Add refresh rate shortcuts to glances * Add file browser shortcut to nav2 * Set scope for nav2 PWA to root to allow for opening child apps inside nav2 app * Display child apps in fullscreen mode by default as users can still open them in standalone via nav2 app given the nav2 app's scope is the parent root path * Update shortcuts and landing page * Document PWA scope and installation order when using Nav2 PWA scoped as root * Revert setting scope for nav2 PWA to root path as adding file browser shortcut to nav2 PWA is not worth the trouble of having to explain installation order caveats and URL launch behavior. File browser shortcut is still accessible from inside nav2 pwa launcher but merely displays in browser preview given root / is out of scope for /nav2/ * Update server diagnostics for troubleshooting * Verify checksum of archive before extraction incase anonymized URL changes expected archive * Fix the condition in ackerman motion model constraints (ros-navigation#3581) * Fix the condition in ackerman motion model constraints * Fix ackerman motion model tests * Fix another ackerman motion model test * Fix broken symlink for gzweb (ros-navigation#3585) to load world models * Fix broken link to contributing guidelines (ros-navigation#3587) The original URL (https://navigation.ros.org/contribute/index.html) seems not to exist, returning an HTTP 404. Hence, I've replaced the link with a page that seems most relevant. * Adding Our Sponsors - May 2023 (ros-navigation#3593) * adding our sponsors - may 2023 * adding blurb * adding links * adding links * adding links * adding Open Nav * Add CostmapFilterInfoServer as a component (ros-navigation#3596) * Resolve ros-navigation#3532: reset i (ros-navigation#3597) * [MPPI] empty path_follow_critic proper fix (ros-navigation#3599) * [MPPI] empty path_follow_critic proper fix * fix linting issue --------- Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Steve Macenski <[email protected]> * bumping humble to 1.1.7 for release --------- Signed-off-by: Trung Kien <[email protected]> Signed-off-by: Øystein Sture <[email protected]> Signed-off-by: ryzhikovas <[email protected]> Co-authored-by: Alexey Merzlyakov <[email protected]> Co-authored-by: Jose Luis Blanco-Claraco <[email protected]> Co-authored-by: DylanDeCoeyer-Quimesis <[email protected]> Co-authored-by: Trung Kien <[email protected]> Co-authored-by: HovorunB <[email protected]> Co-authored-by: Tony Najjar <[email protected]> Co-authored-by: Ruffin <[email protected]> Co-authored-by: Øystein Sture <[email protected]> Co-authored-by: mrmara <[email protected]> Co-authored-by: antoniomarangi <[email protected]> Co-authored-by: Tony Najjar <[email protected]> Co-authored-by: Griswald Brooks <[email protected]> Co-authored-by: BriceRenaudeau <[email protected]> Co-authored-by: Dirk Braunschweiger <[email protected]> Co-authored-by: Dirk Braunschweiger <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Alberto Tudela <[email protected]> Co-authored-by: ryzhikovas <[email protected]> Co-authored-by: Alexandr Buyval <[email protected]> Co-authored-by: Hyung-Taik Choi <[email protected]> Co-authored-by: Filipe Cerveira <[email protected]>
* Update nav2_multirobot_params_2.yaml * Update nav2_multirobot_params_1.yaml * Humble backport of MPPI controller (#3439) * Adding new MPPI controller to Nav2 (#3350) * adding new MPPI controller to Nav2 * fixing rename for Nav2 staging * using larger resource class * fix plugin name * wz typo * add mppi gif * Update defaults.yaml * Update makeflags to match core count of resource_class: large * Bump cache version for testing CI changes * fixing tests * remove unused function * Update config.yml * adding a little more detail * adding contextual note * adding contextual exceptions * Fix using different frame for global and local costmap (#3425) * getGlobalPlanConsideringBoundsInCostmapFrame Replace transformPlanPosesToCostmapFrame and getGlobalPlanConsideringBounds by getGlobalPlanConsideringBoundsInCostmapFrame * use stamp from robot pose for transform * style * fix test * lint test --------- Co-authored-by: Guillaume Doisy <[email protected]> --------- Co-authored-by: ruffsl <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> (cherry picked from commit 8d4f6f4e2dcd37afae94d74e7b5b806ea78e9813) * Replace nav2_core exceptions with std::runtime_error * Get inflation layer parameters from node params * remove changes unrelated to mppi * fix eol * Add reset behavior (draft) * initialize last_time_called_ * add readme for reset_period * Revert "remove changes unrelated to mppi" This reverts commit 55fec35fdb82356e7952c9c9c3ee7fd7195422f4. * changing MPPI's SG filter to 9-point formulation (prev. 5) (#3444) * changing filter to 9 * fix tests (cherry picked from commit 7aee1e7be0349d486a0567aa397c34faa51e1018) * Adapt tests to humble Costmap2DROS constructor * cpplint * Update nav2_mppi_controller/README.md Co-authored-by: Steve Macenski <[email protected]> * address time comment * fix API change rclcpp::ServicesQoS() * fix CI --------- Co-authored-by: Steve Macenski <[email protected]> * fix ServicesQoS error (#3449) * [MPPI] Fix transformed path oscillations (#3443) (#3453) * use path distance instead of euclidean for upper bound search * rename to pruned_plan_end * rename to pruned_plan_end * fix tests * do not use prune_distance to limit the search for the closest pose --------- Co-authored-by: Guillaume Doisy <[email protected]> (cherry picked from commit 34f18d9222e33a2fddb2e45653cd5c0ef7b3bb11) Co-authored-by: Guillaume Doisy <[email protected]> * Update photo_at_waypoint.cpp * Update photo_at_waypoint.hpp * hot patch to fix transform error in MPPI caused by #3425 (#3458) (#3459) (cherry picked from commit d4291438eea0abfdfc1632886cef0adfeea1e831) Co-authored-by: Steve Macenski <[email protected]> * Fix out of bound vector (#3461) (#3463) (cherry picked from commit 0a63bf956e5da6e89946fde131303942e282c23b) Co-authored-by: Tony Najjar <[email protected]> * Trajectory visualizer namespaces (#3467) (#3469) * namespace trajectory visualizer markers (cherry picked from commit 124843cafe13d34d193699278f7163072328bbe3) * fix linters * fix typo (cherry picked from commit d8a22fa21d77ce0df8a8d4fc9693806115114b3b) Co-authored-by: Tony Najjar <[email protected]> * fix segfault when path is empty (#3484) (#3485) a Co-authored-by: Guillaume Doisy <[email protected]> (cherry picked from commit 26ac8104862b25151d98981da1731931fa16d1b3) Co-authored-by: Guillaume Doisy <[email protected]> * Check compile options (#3487) (#3489) (cherry picked from commit e7259030f834ff19599206ae80a1ed5d05cd32d2) Co-authored-by: Tony Najjar <[email protected]> * ackermann motion model bug (#3498) (#3501) Prevent cost to be modified twice. (cherry picked from commit 482017ce02ec08eadd3a23440e619b0e506cb9c5) Co-authored-by: HAIDAR OBEID <[email protected]> * Fix robot navigator params getting overriden (#3562) * Humble sync 6 June 9: 1.1.7 (#3616) * Option allowing to use simple lookupTransform API (#3412) * Option allowing to use simple lookupTransform API ignoring time shifts between source and base frame during the movement * Refine comments * Fix wrong warning message format (#3416) * Fix wrong warning message format (Closes #3415) * fix code formatting * nav2_dwb_controller: add forward_prune_distance parameter (#3374) Until now, the prune_distance was used as distance threshold to shorten the upcoming path when shorten_transformed_plan was enabled. However, the prune and shortening mechanisms are de-correlated mechanisms. One could wish to use a different shortening distance for upcoming points, than the prune distance used for passed points. For this reason, a new parameter "forward_prune_distance" was added. * Fix service_name for server_name in cancel assisted teleop node * Fix mask coordinates calculation in worldToMask (#3418) * Remove goal checker default from follow path node * Correct CostmapFilters copyrights (#3423) * Correct the parameter description for AMCL (#3451) Signed-off-by: Trung Kien <[email protected]> * Add default service name to BTServiceNode (#3448) * Add default service name to BtServiceNode * docstring * fix initialization-list order * Update nav2_behavior_tree/include/nav2_behavior_tree/bt_service_node.hpp Co-authored-by: Steve Macenski <[email protected]> --------- Co-authored-by: Steve Macenski <[email protected]> * Fix Typos (#3452) * removing galactic from table as EOL (#3460) * Support for Dev Containers and Codespaces (#3457) * Alias image tag over current branch name * Duplicate build and push steps for dev tag * Alias image tag over current branch name * Modify build and push steps for dev tag * Build and push dev tag first to not cache from stale stages as otherwise caching from multple regestry images seems error prone * Revert "Build and push dev tag first" as otherwise the build failer durring the dev tag could then still block build of the main tag This reverts commit 12dd5b1a4e3f37847e6333b9e9ae9ef480a80623. * Cache from multple reference images while giving layers from the main tag priority this assumes that cache-from prioritizes firstly listed references https://github.com/moby/buildkit/blob/0ad8d61575be009ce6478edf1d85716849c8ff1a/solver/llbsolver/bridge.go#L92 * Cache tests in dev image as well colcon cache can then skip tests for uneffected packages * Add devcontainer.json * Ignore doc for image builds * Add more extensions * Change workspaceFolder to root src path to avoid auto generating .vscode folder in repo created by ms-iot.vscode-ros extension upon configuring ros packages with c_cpp_properties.json * Enable features for github-cli * Add docs about codespaces and have it opened when starting codespaces * Update update_ci_image.yaml to fix duplicate step ids and add workflow file to push paths * Patch CI actions and Dockerfiles (#3468) * Unset default value for FAIL_ON_TEST_FAILURE as unsetting it via --build-arg seems unreliable https://github.com/docker/compose/issues/3608 * Use build arg default for failing on test failers * Update from deprecated set-output commands https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/ * Use Codespaces prebuilds (#3470) * Add commands to devcontainer * Set builtin bash to be safe https://gist.github.com/mohanpedala/1e2ff5661761d3abd0385e8223e16425 https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ * Setup workspace on create * Revert use of set -u for bash don't raise error due to variables otherwise colcon setup.sh chokes from using an unbounded path variable * Add safe.directory for git config otherwise colcon cache errors out because of issues with git due to complex user mapping magic that vscode does with devcontainers https://stackoverflow.com/questions/72978485/git-submodule-update-failed-with-fatal-detected-dubious-ownership-in-repositor also used by Moveit2: https://github.com/ros-planning/moveit2/pull/1994 https://github.blog/2022-04-12-git-security-vulnerability-announced/ * Set env using remoteEnv instead of inlining them in scripts * Revert to using the main tag now that the tester stage has been replicated with the new devcontainer script commands instead * formating * Scrap `-dev` image tag and use codspaces prebuilds instead * Build incrementally from update content command by copying the build workspace steps from circleci config * Adapt the build workspace steps for bash * Fix for different ceres isinf() API (#3471) * Fixing name of security launch file * Clean up pending service client request on interrupt/timeout (#3479) Signed-off-by: Øystein Sture <[email protected]> * Added str cast to parse int (#3486) Co-authored-by: antoniomarangi <[email protected]> * Add flag to not send request in BTServiceNode (#3431) * Add flag to not send request in BTServiceNode * rename goal to request * Fail if should not send goal * Update nav2_behavior_tree/include/nav2_behavior_tree/bt_service_node.hpp Co-authored-by: Steve Macenski <[email protected]> * Update nav2_behavior_tree/include/nav2_behavior_tree/bt_service_node.hpp Co-authored-by: Steve Macenski <[email protected]> * . * fix linter * fix CI --------- Co-authored-by: Steve Macenski <[email protected]> * Prepare test results to only use junit/xunit schema (#3441) * Set ctest arg to output junit To try and help CircleCI to parse the output files https://stackoverflow.com/a/70774733/2577586 * Replace the original Test.xml by outputting the junit to the same filename Context: https://github.com/colcon/colcon-cmake/blob/8f1b92a190b2ad4289ecf837c3200d540c13fdd9/colcon_cmake/task/cmake/test.py#L133 * Fix default formatting to a list WARNING:colcon.colcon_defaults.argument_parser.defaults:Default value 'ctest-args' for parser 'test' should be a list, not: --output-junit Test.xml * Revert junit file name https://circleci.com/docs/collect-test-data/#ctest-for-c-cxx-tests * Fine and rename ctest summary Test.xml * Fix find path * Simplify extention renaming * Copy ctest junit file into test_results so that they can be stored by CI * Revert ctest config modifications * Prepare Test Results by removing Test.xml generated by ctest to simplify fix for circleci * Reorder storage of test result artifacts before Test.xml files are removed so that they can still be archived and viewed for later * Use find command * Container retention via version tagging (#3491) * Use github action expression syntax to alias over github repository name * Tag by version instead of by timestamp * Avoid pushing untagged image to GHCR by setting provenance to false now that provenance is enabled by default as of v4 of docker/build-push-action - https://github.com/docker/build-push-action/pull/781 - https://github.com/docker/build-push-action/issues/778 * Use checkout action to set version output (#3492) Otherwise there is no source code to use to set the version output. Fixes: #3491 * Change directory to inside checked out repo (#3493) or relative path under $GITHUB_WORKSPACE that actions/checkout places the repository * Write and read from correct output mapping (#3494) * Revert "Change directory to inside checked out repo (#3493)" This reverts commit 332c1fb07bd787bab8a8eeea5fc896a944bb54d8. * Add `version` to outputs for check step and use output from `check` id * Use output from check_ci_files job * updating world in simple commander for TB3 package change (#3495) * Ensure version output is always set (#3503) even when github.event_name != 'push' by moving run step to same job as build-push action. Also set context path provided by checkout action to avoid future nonintuitive behavoir using default Git context, even when the checkout action appears to be being used. - https://github.com/docker/build-push-action#git-context - https://github.com/docker/build-push-action#path-context * Add labels to pushed image versions (#3505) using Pre-Defined Annotation Keys as defined by The OpenContainers Annotations Spec - https://specs.opencontainers.org/image-spec/annotations/#pre-defined-annotation-keys - https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows - https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#get-a-repository * Typo README.md (#3506) * [Velocity smoother] Set zeros command if timeout (#3512) * Set zeros command if timeout * Fix lint * Fix gtest increase time to allow deceleration * Always update last_cmd_ * Revert test modif * remove test logs * Fix paste error * Update velocity_smoother.cpp * Update velocity_smoother.cpp * Improve Dev Container ergonomics (#3482) * Install and enable bash autocompletion by using apt durring on create command and by copying skelton .bashrc file that sources it by default * Edit apt for autocomplete by disabling docker-clean from containerized ubuntu * Add ROS2 Ament Task Provider extension Provides tasks and problem matchers for ROS2 projects using ament https://marketplace.visualstudio.com/items?itemName=althack.ament-task-provider * Source underlay for extentions to allow them to find the path to ros binaries such as ament_cpplint needed for althack.ament-task-provider * Target new dever stage in Dockerfile * Reduce need for internet after image build by installing developer dependencies earlier * Edit apt caching before apt updating * Source underlay systemwide this is a hacky workarround to ensure VS Code can run ShellExecution tasks with the ros envorment included in PATH otherwise, postponing this to the on-create-command results in vscode extentions not finding system installed ros commands this also works for all user shells regardless of how devontainers could change the user * Postpone bashrc setup to postCreateCommand once the dev container has been assigned to a user for the first time * Cleanup onCreateCommand as we don't use ros_entrypoint.sh for development and so it doesn't really need to be updated * Quite down the logs when building devcontainer * Formatting * Add refrence ccp properties config file generated from the vscode ROS extention but with the hardcoded paths in includePath deleted * Update version of cppStandard for ROS Rolling * Update workspaceFolder to use new .vscode folder * Mount ccache directory to volume to speed up rebuilding devcontainer whenever onCreateCommand is triggered because of modifications to .devcontainer/ files * Avoid use of containerEnv to express ccache direcotry as doing so is not possable, for more info: - https://stackoverflow.com/a/75759647/2577586 - https://github.com/microsoft/vscode-remote-release/issues/7147#issuecomment-1237779733 Just target a path in the temp direcotry instead * Stage auto generated includePath * Remove workspace install from include path except for autogenerated headers from message packages * Avoid hardcoded path to sorce folder * Avoid hardcoded path to install folder but this is still rather fragile as the reletive path between workspaceFolder and the colcon workspace isn't fixed * Sort list of paths * Remove cpp properties configuration as it seems it's existance prevents autoupdating the includePaths property unless user manually runs the vscode command `>ROS:Update C++ Properties` https://github.com/ms-iot/vscode-ros/blob/47d8f14f4ec0498cd9e8381e6fcc5f47abb340f2/src/extension.ts#L71 and even when this command is invoked it blows aways any customizated properties anyhow issue about wrong cppStandard tracked here: https://github.com/ms-iot/vscode-ros/issues/818 * Fix typo to move docker-clean from loaded config path * fix data race: addFilter() and resizeMap() can be executed concurrently (#3518) Co-authored-by: Dirk Braunschweiger <[email protected]> * fix data race: prohibit resizeMap() during plugin/filter initialization (#3522) Co-authored-by: Dirk Braunschweiger <[email protected]> * Mount overlay workspace into Dev Container via volume (#3524) * Add volume for overlay to avoid rebuilding it from scratch whenever the dev container is rebuilt this saves startup time locally when fiddling with the configs * Append devcontainerId to volume name to avoid conflicts with other devcontainers note that devcontainerId is stable across rebuilds - https://containers.dev/implementors/json_reference/#variables-in-devcontainerjson * Call updateContentCommand from onCreateCommand to deduplicate scripts and keep setup DRY given the addition of a mounted overlay volume which could include a prebuilt colcon workspace well before the dev container is created/rebuilt * Comment out colcon clean from setup to avoid unintentional removal of built packages from the persistent overlay workspace volume. Users can uncomment the line locally or simply remove the overlay workspace volume if they want to rebuild packages from scratch. * Format json * Add headless and use_rviz LaunchConfigurations to demo launch files (#3527) * Add headless and use_rviz LaunchConfigurations in nav2_simple_commander demo launch files for whether to start rviz or gzclient to simplify their use in headless environments * Fix headless logic to match tb3_simulation_launch.py for launch arg consistency * Fix State-Lattice planner crashes due to FP precision loss (#3531) * Fix State-Lattice planner crashes due to FP precision loss * Move testcase comment * Add PoseProgressChecker (#3530) * add rotation progress checker * clean include * add stopped goal checker reset test * add rotation progress checker tests * uncrustify * better name: PoseProgressChecker instead of RotationProgressChecker * camelCase * uncrustify * rename in tests * more rename * simplify parentheses * faster and better tests --------- Co-authored-by: Guillaume Doisy <[email protected]> * [velocity_smoother] Fix accel and deccel inverted for negative speeds (#3529) * fix inverted accel / deccel * handle speed through 0.0 * add applyConstraints tests * fold logic * same logic in findEtaConstraint * lint * Update nav2_velocity_smoother/src/velocity_smoother.cpp * Update nav2_velocity_smoother/src/velocity_smoother.cpp * findEtaConstraint tests * space * lint * typos * comment typos --------- Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Steve Macenski <[email protected]> * Enable Visualizations for Dev Container (#3523) * Add visualizer stage to install demo dependencies * Install foxglove * Install gzweb * Add hack for resolvable mesh URIs located by the aws SDL model files - https://github.com/aws-robotics/aws-robomaker-small-warehouse-world/pull/24 * Revert hack and use fork that fixes issues with deploy.sh - https://github.com/osrf/gzweb/pull/248 * Update target stage to visualizer * Comment out gzclient and rviz for debugging * Add hack for resolvable mesh URIs as migrating the python3 scripts still hasn't resolved the issue * Reorder stages for readability by keeping sequential builder and tester stages adjacent while keeping tester stage the default exported target * fix typo * Install gdb for launching ros launch files using the ROS VS Code extension - https://github.com/ms-iot/vscode-ros/issues/588 * Add vscode tasks file * Add Start Gzweb task * Add Start Foxglove tasks for bridge and studio * Add Start Foxglove compound task using dependsOn * Set default problemMatcher to empty to avoid nagging the user to select one as currently none really support our use case * Source overlay before running foxglove_bridge to ensure nav2 message types are defined by inlining all args into command and sourcing workspace setup * Formatting * Generalize and simplify hack * Generalize gazebo model discovery * Patch gzserver to run headless using xvfb to avoid host/platform specific x11 quirks exposed by vscode automatic x11 forwarding This is needed to provide gazebo a virtual frame buffer as it still need one after all these years. This also avoids the need modifying launch files to call xvfb-run - https://github.com/microsoft/vscode-remote-release/issues/8031 - https://github.com/gazebosim/gazebo-classic/issues/1602 * Set isBackground for start tasks * Add stop tasks * Add restart foxglove task * Switch to shell for commanding pkill to gracefully return 0 when process is not running allowing sequence of dependsOn tasks to run such as for the restart tasks * Add icons to tasks for readability * Add restart gzweb task * Add global start, stop, and restart tasks for all background visualization tasks * Formatting * Hide tasks users need not run manually to avoid cluttering up the run task quick pick * Shorten label for background tasks so they succinctly show from the running task list * Show global start and stop visualizations tasks as they may be too helpful to hide * Revert "Comment out gzclient and rviz for debugging" This reverts commit 0addae2a1ee70c5771055c5dd8fa050af438b896. * Add --ipc=host to runArgs to enable shared memory transport - https://community.rti.com/kb/communicate-between-two-docker-containers-using-rti-connext-dds-and-shared-memory * Add --pid=host to runArgs to simplify discovery - https://community.rti.com/kb/communicate-between-two-docker-containers-using-rti-connext-dds-and-shared-memory * Add to runArgs to simplify debugging - https://code.visualstudio.com/docs/devcontainers/create-dev-container#_use-docker-compose * Add comments * Comment out runArgs unintended side effects or cross talk between containers by default also avoids interfering with vscode's X11 forwarding * [nav2_planner] Fix costmap thread reset on cleanup (#3548) * remove costmap thread reset on cleanup * Init costmap thread in on_configure method * Move costmap_thread init in on_configure method * Add IsBatteryChargingCondition (#3553) * Add IsBatteryChargingCondition * Minor fixes in battery charging and add testing * Fix format * Added isBatteryChargingCondition BT node to params * Impl noise filtering layer in the costmap_2d (#2567) Signed-off-by: ryzhikovas <[email protected]> * Improve Dev Container Web App Visualization (#3551) * Add Caddyfile to reverse proxy websockets in an attempt to avoid authentication tokens in headers when forwarding ports from codespaces via web interface - https://docs.github.com/en/codespaces/developing-in-codespaces/forwarding-ports-in-your-codespace#using-command-line-tools-and-rest-clients-to-access-ports - https://caddyserver.com/docs/quick-starts/reverse-proxy - https://caddy.community/t/caddy-v2-how-to-proxy-websoket-v2ray-websocket-tls/7040/13 * Update caddy related tasks * Rename Gzweb task to Gzweb Bridge to make room for more gzweb tasks * Add Gzweb Client Task * Add Caddyfile to reverse proxy websockets now for Gzweb * Specify config file to avoid crosstalk between caddy stop commands * Fix reverse proxy for websockets by correcting matcher using headers as websocket request header value is lowercase for gzweb and foxglove * Comment out log output files for debugging * Simplify tasks by removing client tasks * Stop tasks by using terminate via the workbench.action.tasks.terminate command * Move Caddyfile * Add Web Server tasks * Move Caddyfile * Update log output file path * Update root path * Update reverse_proxy for both gzweb and foxglove by using the path argument for respective matchers - https://caddyserver.com/docs/caddyfile/matchers#path-matchers * Use snippets to keep Caddyfile DRY - https://caddyserver.com/docs/caddyfile/concepts#snippets * Use rewrite to catch trailing slash as file_server defaults do not correct reverse_proxy. This make typing the websocket URL more forgiving - https://caddyserver.com/docs/caddyfile/patterns#trailing-slashes * Improve websocket snippet to keep Caddyfile DRY * Use header_regexp for case-insensitive matching given web port forwarding from Codespaces is odd and rewrites the value of this header field to lowercases even when local browser request is sent as `Upgrade` * Add helper index page to web server to link to web apps for reverse proxy * Limit templates to fix gzweb by adding matcher for only root index otherwise gzweb's own index.html gets overwritten * Add comments to Cadyfile to document tricky configuration * Stage working redirect * Simplify index.html * Add helper redirect to simplify foxglove to set the respective queries values to automate websocket setup, and ensure the websocket schema matches the https request * Avoid hardcoding port number * Clean up comments * Use header to compute redirect to take into account requesting forwarding or more codespace port forwarding shenanigans * Use shorthand placeholders - https://caddyserver.com/docs/caddyfile/concepts#placeholders * Formatting * Keep trailing slash to stay consistent with caddy file_server directive that serves a 308 Permanent Redirect for both foxglove and gzweb paths anyway * Refactor matcher logic to account for requests either from host ports from local dev containers or forwarded requests from codespace web port forwarding * Split snippet into globals for composability * Update comments * Add Placeholders for debugging * Use tables to center * Use github markdown - https://github.com/sindresorhus/github-markdown-css * Simplify vars * Rename vars * Revert "Rename vars" as dotted var names do not work in Caddyfile This reverts commit 3e2d1b3fe30f8a4ffb5134fc2f6f5cffd574bcdc. * Add System Monitor to debug CPU load and memory issues * Update headings * Update layout * Update layout * Add Foxglove layout for Nav2 * Symlink assets folder for web server * Fetch Foxglove layout using layoutUrl a new parameter to load layout json data from URL - https://github.com/orgs/foxglove/discussions/217 * Cleanup * Use fork to fetch Foxglove layout using layoutUrl until this PR is merged: - https://github.com/foxglove/studio/pull/5987 * Update Caddyfile to handle relative root by using local srv folder * Inject mobile view html tags using the caddy replace module - https://caddyserver.com/docs/modules/http.handlers.replace_response - https://github.com/caddyserver/replace-response * Simplify Caddyfile * Use snippet for apps * Simplify Caddyfile * Simplify Caddyfile * Build caddy using custom modules * Remove unused symlinks * Add comments * Use environment and defined variables for config to avoid hard coded paths * Add FoxgloveUrl to vars for reuse in templates * Fix trailing slash for DataSourceUrl * Use exec to run gzserver with xvfb to prevent ros launch from orphaning process and ensure gzserver receives SIGTERM signal given gzserver often hangs after only SIGINT - https://unix.stackexchange.com/a/196053/213124 * Update redirect for foxglove to redirect from path /foxglove/autolayout * Add redirect for foxglove to redirect from path /foxglove/autoconnect but does not use LayoutUrl as to not change from cached layout * Use web app manifest to set display as standalone - https://web.dev/add-manifest/ - https://developer.mozilla.org/en-US/docs/Web/Manifest * Template manifest files to embed host info into app name * Add manifests for other web apps * Add shortcuts for Foxglove - https://developer.mozilla.org/en-US/docs/Web/Manifest/shortcuts - https://web.dev/app-shortcuts/ * Format * Update comments * Revert use of fork * Remove debug directive * Improve usability of PWAs in Dev Containers (#3576) * Add WIP icons * Add WIP icons for gzweb * Add WIP icons for glances * Set cross origin to use credentials ensuring auth cookie is included in request header when requesting for web app manifest file thus avoiding CORS policy violations in browser when accessing forwarded codespaces ports from the web > The request for the manifest is made without credentials (even if it's on the same domain), thus if the manifest requires credentials, you must include `crossorigin="use-credentials"` in the manifest tag. - https://web.dev/add-manifest/ - https://stackoverflow.com/a/57184506/2577586 * Use ReqHost variable in templates to account for X-Forwarded-Host value in header * Delete duplicate manifest * Set id property in app manifests so we can address them independently from their start_url - https://developer.chrome.com/blog/pwa-manifest-id/ * Ensure apps are uniquely identifies by adding trailing slash to id and thus different URI directories * Refactor root landing page into nav2 app by moving page file into nav2 sub folder adding root redirect pointing to /nav2/ and updating html, markdown, manifest files respectively * Fix https detection for Caddy reverse proxies by also checking X-Forwarded-Proto in request header * Remove unnecessary files * Prune smaller images * Prune duplicate icon * Clean up html tags * Update manifest icons * Rename icons * Revert "Prune duplicate icon" This reverts commit 571040173ca83716dfd2f6d5db4b351389a557a8. * Add back favicon for shortcut * Add self index for completeness and bookmarking * Simplify icon linking * Delete binary files * Fix hyperlink path * Include image files using gitattributes to track these binary files via git LFS * Add icons using git lfs * Standardized all icon paths * Use external links for icons to avoid the need for using git LFS although this is a bit of a hack * Stage any and maskable icons * Use any and masked icons * Set colors to match maskable icon colors * Update icon * Use lossless compression without removing background - https://shortpixel.com/online-image-compression * Use WebP instead of PNG for smaller file sizes - https://en.wikipedia.org/wiki/WebP * Move icons into icons folder * Use _SRV environment variables for service paths * Download media files from github during docker image build to avoid adding always online dependencies when creating or starting dev containers * Delete media icons from git repo now that we download media from anonymized URLs on github - https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/attaching-files * Add comments * Enable file browsing for non app paths for remote debugging of media and asset files * Consolidate assets into single folder * Add links for file browser paths to Server Diagnostics * Delete unused symlink * Update landing page to match manifest by including same shortcuts and start url * Patch gzweb to disable modelList avoiding 404s for thumbnails as they are hardcoded into js * Update comments * Simplify Caddyfile by reverting to symlinking but add ROOT_SRV env for custom overriding * Loop over nav2 srv folders when symlinking to generalize over folder names * Add matcher for file browsing root directory while still redirecting to nav2 app by default * Use placeholders for root variable to consolidate env default fallback settings e.g `:/srv` * Promote file browser in Nav2 app shortcuts * Fix and update SRV envs * Postpone symlinking for Nav2 web app to when post-create-command script then runs given full repo is not copied into builder stage in Dockerfile. While this could be postponed to update-content-command leaving it here avoids blowing user changes after the container has been created or modified. * Add guard to check if srv folder exists * Add refresh rate shortcuts to glances * Add file browser shortcut to nav2 * Set scope for nav2 PWA to root to allow for opening child apps inside nav2 app * Display child apps in fullscreen mode by default as users can still open them in standalone via nav2 app given the nav2 app's scope is the parent root path * Update shortcuts and landing page * Document PWA scope and installation order when using Nav2 PWA scoped as root * Revert setting scope for nav2 PWA to root path as adding file browser shortcut to nav2 PWA is not worth the trouble of having to explain installation order caveats and URL launch behavior. File browser shortcut is still accessible from inside nav2 pwa launcher but merely displays in browser preview given root / is out of scope for /nav2/ * Update server diagnostics for troubleshooting * Verify checksum of archive before extraction incase anonymized URL changes expected archive * Fix the condition in ackerman motion model constraints (#3581) * Fix the condition in ackerman motion model constraints * Fix ackerman motion model tests * Fix another ackerman motion model test * Fix broken symlink for gzweb (#3585) to load world models * Fix broken link to contributing guidelines (#3587) The original URL (https://navigation.ros.org/contribute/index.html) seems not to exist, returning an HTTP 404. Hence, I've replaced the link with a page that seems most relevant. * Adding Our Sponsors - May 2023 (#3593) * adding our sponsors - may 2023 * adding blurb * adding links * adding links * adding links * adding Open Nav * Add CostmapFilterInfoServer as a component (#3596) * Resolve #3532: reset i (#3597) * [MPPI] empty path_follow_critic proper fix (#3599) * [MPPI] empty path_follow_critic proper fix * fix linting issue --------- Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Steve Macenski <[email protected]> * bumping humble to 1.1.7 for release --------- Signed-off-by: Trung Kien <[email protected]> Signed-off-by: Øystein Sture <[email protected]> Signed-off-by: ryzhikovas <[email protected]> Co-authored-by: Alexey Merzlyakov <[email protected]> Co-authored-by: Jose Luis Blanco-Claraco <[email protected]> Co-authored-by: DylanDeCoeyer-Quimesis <[email protected]> Co-authored-by: Trung Kien <[email protected]> Co-authored-by: HovorunB <[email protected]> Co-authored-by: Tony Najjar <[email protected]> Co-authored-by: Ruffin <[email protected]> Co-authored-by: Øystein Sture <[email protected]> Co-authored-by: mrmara <[email protected]> Co-authored-by: antoniomarangi <[email protected]> Co-authored-by: Tony Najjar <[email protected]> Co-authored-by: Griswald Brooks <[email protected]> Co-authored-by: BriceRenaudeau <[email protected]> Co-authored-by: Dirk Braunschweiger <[email protected]> Co-authored-by: Dirk Braunschweiger <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Alberto Tudela <[email protected]> Co-authored-by: ryzhikovas <[email protected]> Co-authored-by: Alexandr Buyval <[email protected]> Co-authored-by: Hyung-Taik Choi <[email protected]> Co-authored-by: Filipe Cerveira <[email protected]> * Fix merge conflict error (#3619) * fixing a second merge conflict resolution error (#3621) * fixing merge conflicts for release on humble sync 6 (#3623) * Fixing 3629 (#3630) * Fixing 3629 * Update planner_server.cpp * bumping humble to 1.1.8 for release sync 6 + bug patch * Fixing build warning (#3667) (#3673) (cherry picked from commit 7d4b1992811ccc9d36566d29251fdc8eaee66efc) Co-authored-by: Steve Macenski <[email protected]> * Fix the velocity smoother being stuck when the deadband is too high (#3690) (#3715) * Move last_cmd update before deadband * fix lint (cherry picked from commit cb34d0ce1d24c1c437f548834a31a2ee8c4d9889) Co-authored-by: BriceRenaudeau <[email protected]> * Humble sync 7 August 4 1.1.9 (#3739) * Fix map not showing on rviz when navigation is launched with namespace (#3620) * updating mppi's path angle critic for optional bidirectionality (#3624) * updating mppi's path angle critic for optional bidirectionality * Update README.md * fixing path angle critic's non-directional bias (#3632) * fixing path angle critic's non-directional bias * adding reformat * adapting goal critic for speed to goal (#3641) * adapting goal critic for speed to goal * retuning goal critic * add readme entries * Update critics_tests.cpp * Fix uninitialized value (#3651) * In NAV2, this warning is treated as an error Signed-off-by: Ryan Friedman <[email protected]> * Fix rviz panel node arguments (#3655) Signed-off-by: Nick Lamprianidis <[email protected]> * Reduce out-of-range log to DEBUG (#3656) * Adding nan twist rejection for velocity smoother and collision monitor (#3658) * adding nan twist rejection for velocity smoother and collision monitor * deref * MPPI: Support Exact Path Following For Feasible Plans (#3659) * alternative to path align critic for inversion control * fix default behavior (enforce_path_inversion: false) (#3643) Co-authored-by: Guillaume Doisy <[email protected]> * adding dyaw option for path alignment to incentivize following the path's intent where necessary * add docs for use path orientations * fix typo --------- Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> * Fix smoother server tests (#3663) * Fix smoother server tests * Update test_smoother_server.cpp * nav2_bt_navigator: log current location on navigate_to_pose action initialization (#3720) It is very useful to know the current location considered by the bt_navigator for debug purposes. * nav2_behaviors: export all available plugins (#3716) It allows external packages to include those headers and create child classes through inheritance. * changing costmap layers private to protected (#3722) * adding error warnings around incorrect inflation layer setups in MPPI and Smac which impact performance substantially (#3728) * adding error warnings around incorrect inflation layer setups in MPPI and Smac which impact performance substantially * fix test failures * Update RewrittenYaml to support list rewrites (#3727) * allowing leaf key rewrites that aren't dcits (#3730) * adding checks on config and dynamic parameters for proper velocity and acceleration limits (#3731) * Fix Goal updater QoS (#3719) * Fix GoalUpdater QoS * Fixes * bumping Humble to 1.1.9 for release * fix merge conflict resolution in collision monitor node --------- Signed-off-by: Ryan Friedman <[email protected]> Signed-off-by: Nick Lamprianidis <[email protected]> Co-authored-by: Filipe Cerveira <[email protected]> Co-authored-by: Ryan <[email protected]> Co-authored-by: Nick Lamprianidis <[email protected]> Co-authored-by: BriceRenaudeau <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: DylanDeCoeyer-Quimesis <[email protected]> Co-authored-by: gyaanantia <[email protected]> Co-authored-by: Tony Najjar <[email protected]> * Fixing 3768: planner server lifecycle transition down (#3786) * Use ParameterFile (allow_substs) (#3706) (#3806) Signed-off-by: ymd-stella <[email protected]> Co-authored-by: ymd-stella <[email protected]> * Added missing destructor to MPPI critic manager (#3812) * Added missing virtual destructor * Updated CriticManger Destructor to be same as other branches * mppi: return NO_INFORMATION when the checked point is outside the costmap (#3816) (#3818) otherwise the controller crashes at ObstaclesCritic::costAtPose because x_i and y_i isn't initialized. (cherry picked from commit 6b250a7c57536ee43a402c9820ac2a2acdb8bc13) Co-authored-by: Chuanhong Guo <[email protected]> * [Humble] Sync 8 - Sept 25 (#3836) * Same orientation of coordinate frames in rviz ang gazebo (#3751) * rviz view straight in default xy orientation Signed-off-by: Christian Henkel <[email protected]> * gazebo orientation to match rviz Signed-off-by: Christian Henkel <[email protected]> * rotating in direction of view --------- Signed-off-by: Christian Henkel <[email protected]> * Fix flaky costmap filters tests: (#3754) 1. Set forward_prune_distance to 1.0 to robot not getting lost 2. Correct map name for costmap filter tests * Fix missing mutex in PlannerServer::isPathValid (#3756) Signed-off-by: ymd-stella <[email protected]> * Rewrite the scan topic costmap plugins for multi-robot(namespace) before launch navigation. (#3572) * Make it possible to launch namspaced robot which rewrites `<robot_namespace>` to namespace. - It allows to apply namespace automatically on specific target topic path in costmap plugins. Add new nav2 params file for multi-robot(rewriting `<robot_namespace>`) as an example. - nav2_multirobot_params_all.yaml Modify nav2_common.ReplaceString - add condition argument * Update nav2_bringup/launch/bringup_launch.py Co-authored-by: Steve Macenski <[email protected]> * Add new luanch script for multi-robot bringup Rename luanch script for multi-robot simulation bringup Add new nav2_common script - Parse argument - Parse multirobot pose Update README.md * Update README.md Apply suggestions from code review Fix pep257 erors Co-authored-by: Steve Macenski <[email protected]> --------- Co-authored-by: Steve Macenski <[email protected]> * use ros clock for wait (#3782) * use ROS clock for wait * fix backport issue --------- Co-authored-by: Guillaume Doisy <[email protected]> * fixing external users of the BT action node template (#3792) * fixing external users of the BT action node template * Update nav2_behavior_tree/include/nav2_behavior_tree/bt_action_server_impl.hpp Co-authored-by: Guillaume Doisy <[email protected]> --------- Co-authored-by: Guillaume Doisy <[email protected]> * Using Simple Commander API for multi robot systems (#3803) * support multirobot namespaces * add docs * adding copy all params primitive for BT navigator (to ingest into rclcpp) (#3804) * adding copy all params primitive * fix linting * lint * I swear to god, this better be the last linting issue * allowing params to be declared from yaml * Update bt_navigator.cpp * some minor optimizations (#3821) * fix broken behaviortree doc link (#3822) Signed-off-by: Anton Kesy <[email protected]> * [MPPI] complete minor optimaization with floating point calculations (#3827) * floating point calculations * Update optimizer_unit_tests.cpp * Update critics_tests.cpp * Update critics_tests.cpp * 25% speed up of goal critic; 1% speed up from vy striding when not in use * bumping 1.1.9 to 1.1.10 for Humble release --------- Signed-off-by: Christian Henkel <[email protected]> Signed-off-by: ymd-stella <[email protected]> Signed-off-by: Anton Kesy <[email protected]> Co-authored-by: Christian Henkel <[email protected]> Co-authored-by: Alexey Merzlyakov <[email protected]> Co-authored-by: ymd-stella <[email protected]> Co-authored-by: Hyunseok <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Anton Kesy <[email protected]> * Update CMakeLists.txt (#3843) (#3845) (cherry picked from commit 2d6e9a96354c0ea763e70eedd81225635f7b9db5) Co-authored-by: Steve Macenski <[email protected]> * bump to 1.1.11 for release for AVX512 fixes * add option for sse4 and avs512 (#3853) (#3855) (cherry picked from commit 7274811c5cb512a05b87523183e29e75ace77f4a) Co-authored-by: Steve Macenski <[email protected]> * Bumping to 1.1.12 for binary release of AVX512 patches * [MPPI Optimization] adding regenerate noise param + adding docs (#3868) (#3870) * adding regenerate noise param + adding docs * fix tests * remove unnecessary normalization * Update optimizer.cpp (cherry picked from commit 924f167382080f3ccdd000ffc34b921cb64bcf95) # Conflicts: # nav2_mppi_controller/README.md Co-authored-by: Steve Macenski <[email protected]> * Updating default map path * [MPPI] Reworked Path Align Critic; 70% faster + Tracks Paths Better! Edit: strike that, now 80% (#3872) (#3882) * adding regenerate noise param + adding docs * fix tests * remove unnecessary normalization * Update optimizer.cpp * adding refactored path alignment critic * fix visualization bug * speed up another 30% * remove a little jitter * a few more small optimizaitons * fixing unit tests * retain legacy critic * adding tests for legacy (cherry picked from commit 7009ffba5f85c50ac97fd0057924b0f1447c5e85) Co-authored-by: Steve Macenski <[email protected]> * Fix incorrect auto merge conflict issue * Pluginizing BT Navigators (#3345) * initial prototype * linting * Create service get_current_navigator * Publish feedback through blackboard * Expections (#3244) * added result codes for global planner * code review * code review * cleanup * cleanup * update smac lattice planner * update planner instances * cleanup * updates * renaming * fixes * cpplint * uncrusitfy * code review * navfn exceptions * theta_star_planner * fix code review * wrote timeout exception * consistent exception throwing across planners * code review * remove * uncrusitfy * uncrusify * catch exception * expect throw * update string of exceptions * throw with coords * removed start == goal error code * code review * code review * uncrustify * code review * message order * remove remarks * update xml * update xml * Update nav2_behavior_tree/nav2_tree_nodes.xml * fix Co-authored-by: Steve Macenski <[email protected]> Co-authored-by: Joshua Wallace <josho.wallace.com> * Controller exceptions (#3227) * added result codes for global planner * code review * code review * cleanup * cleanup * update smac lattice planner * update planner instances * cleanup * added controller exception * renaming * follow path updates * rename exceptions * updated regulated pure pursuit * completed pure pursuit * completed dwb * linting fixes * cleanup * revert planner server * revert planner server * revert planner server * revert planner server * code review * code review * cleanup * cleanup * bug fix * final cleanup * set follow path error on bt * update groot * code review Co-authored-by: Joshua Wallace <josho.wallace.com> * exceptions for compute path through poses (#3248) * exceptions for compute path through poses * lint fix * code review * code review Co-authored-by: Joshua Wallace <josho.wallace.com> * Pipe error codes (#3251) * issue with finding key * passed up codes to bt_navigator * lint fix * updates * adding error_code_id back in * error codes names in params * bump error codes * lint * spelling * test fix * update behavior trees * cleanup * Update bt_action_server_impl.hpp * code review * lint * code review * log fix * error code for waypoint follower * clean up * remove waypoint error test, too flaky on CI * lint and code review * rough imp for waypoint changes * lint * code review * build fix * clean up * revert * space * remove * try to make github happ * stop gap * loading in param file * working tests :) * lint * fixed cmake * lint * lint * trigger build * added invalid plugin error * added test for piping up error codes * clean up * test waypoint follower * only launch what is needed * waypoint test * revert lines for robot navigator * fix test * waypoint test * switched to uint16 * clean up * code review * todo to note * lint * remove comment * Update nav2_behavior_tree/include/nav2_behavior_tree/bt_action_server_impl.hpp Co-authored-by: Steve Macenski <[email protected]> * rename error_codes * error code for navigate to pose * error codes for navigate through poses. * error codes for navigate through poses * message update for waypoint follower * rename to error code * update node xml Co-authored-by: Joshua Wallace <josho.wallace.com> Co-authored-by: Steve Macenski <[email protected]> * Smoother error codes (#3296) * minimum error code set * test for invalid smoother * undo * added rest of error tests * Solve bug when CostmapInfoServer is reactivated (#3292) * Solve bug when CostmapInfoServer is reactivated * Smoothness metrics update (#3294) * Update metrics for path smoothness * Support Savitzky-Golay smoother * preempt/cancel test for time behavior, spin pluguin (#3301) * include preempt/cancel test for time behavior, spin pluguin * linting * fix bug in code * removed changes to simple_smoother * reverted simple_smoother * revert * revert * updated constrained smoother * revert * added smoother error for invalid path * linting * invalid path test * added error codes * Timeout exception thrown by smoothers * code review Co-authored-by: Joshua Wallace <josho.wallace.com> Co-authored-by: MartiBolet <[email protected]> Co-authored-by: Alexey Merzlyakov <[email protected]> Co-authored-by: Stevedan Ogochukwu Omodolor <[email protected]> * Behavior Tree uses Error Codes (#3324) * rough outline for condition node * completed error code condition * behavior tree with error codes * created generic code ex * test for error_code_condition * generic error code bt node * remove error code condition * updates * updated error code condition * would a controller recovery help * rename * added planner recovery condition * initial draft * complete with one error code as input * revert cmake * bt conversion test * code review * code review * code review * refactor behavior tree tests * cleanup * final cleanup * uncomment * removed logger * function header update * update bt to include would a planner recovery help * copyright cleanup * added bt node for smoother recovery * smoother test * costmap filter test fix * remove include * test if commit counted * update copyright * code review Co-authored-by: Joshua Wallace <josho.wallace.com> * Behavior server error codes (#3539) * empty error codes * add error codes for behaviors * updated assisted teleop * pass tests * added error codes to bt nodes * Enable Visualizations for Dev Container (#3523) * Add visualizer stage to install demo dependencies * Install foxglove * Install gzweb * Add hack for resolvable mesh URIs located by the aws SDL model files - https://github.com/aws-robotics/aws-robomaker-small-warehouse-world/pull/24 * Revert hack and use fork that fixes issues with deploy.sh - https://github.com/osrf/gzweb/pull/248 * Update target stage to visualizer * Comment out gzclient and rviz for debugging * Add hack for resolvable mesh URIs as migrating the python3 scripts still hasn't resolved the issue * Reorder stages for readability by keeping sequential builder and tester stages adjacent while keeping tester stage the default exported target * fix typo * Install gdb for launching ros launch files using the ROS VS Code extension - https://github.com/ms-iot/vscode-ros/issues/588 * Add vscode tasks file * Add Start Gzweb task * Add Start Foxglove tasks for bridge and studio * Add Start Foxglove compound task using dependsOn * Set default problemMatcher to empty to avoid nagging the user to select one as currently none really support our use case * Source overlay before running foxglove_bridge to ensure nav2 message types are defined by inlining all args into command and sourcing workspace setup * Formatting * Generalize and simplify hack * Generalize gazebo model discovery * Patch gzserver to run headless using xvfb to avoid host/platform specific x11 quirks exposed by vscode automatic x11 forwarding This is needed to provide gazebo a virtual frame buffer as it still need one after all these years. This also avoids the need modifying launch files to call xvfb-run - https://github.com/microsoft/vscode-remote-release/issues/8031 - https://github.com/gazebosim/gazebo-classic/issues/1602 * Set isBackground for start tasks * Add stop tasks * Add restart foxglove task * Switch to shell for commanding pkill to gracefully return 0 when process is not running allowing sequence of dependsOn tasks to run such as for the restart tasks * Add icons to tasks for readability * Add restart gzweb task * Add global start, stop, and restart tasks for all background visualization tasks * Formatting * Hide tasks users need not run manually to avoid cluttering up the run task quick pick * Shorten label for background tasks so they succinctly show from the running task list * Show global start and stop visualizations tasks as they may be too helpful to hide * Revert "Comment out gzclient and rviz for debugging" This reverts commit 0addae2a1ee70c5771055c5dd8fa050af438b896. * Add --ipc=host to runArgs to enable shared memory transport - https://community.rti.com/kb/communicate-between-two-docker-containers-using-rti-connext-dds-and-shared-memory * Add --pid=host to runArgs to simplify discovery - https://community.rti.com/kb/communicate-between-two-docker-containers-using-rti-connext-dds-and-shared-memory * Add to runArgs to simplify debugging - https://code.visualstudio.com/docs/devcontainers/create-dev-container#_use-docker-compose * Add comments * Comment out runArgs unintended side effects or cross talk between containers by default also avoids interfering with vscode's X11 forwarding * ignore warning (#3543) * Split overlay setup into multiple steps by skipping slower to build leaf packages during preparation, then store cache and repeat setup without skipping packages * Skip restore steps after already preping overlay to avoid needlessly downloading the same overlay cache * Revert resource_class to default medium as the build resource usage seldom maxes out 4 cores nor uses more than 2GB RAM * Fix circleci config syntax by setting skip default as empty string to keep it an optional parameter * Fix circleci config syntax missing angle brackets * ignore warning * Revert "Revert resource_class to default medium" This reverts commit 44375a1c6ef6e730e47e30c7d910a15145d4ee2f. * Fix nested defaults to avoid dropping of cache after storing during test jobs by ensuring restore_overlay_workspace still sets restore: true --------- Co-authored-by: ruffsl <[email protected]> * code review * code review * removed unsigned short * lint errer * error codes in main bts * behavior error code range change --------- Co-authored-by: Ruffin <[email protected]> * correct error message (#3631) (#5) * correct error message * clean up * cleanup * remove header Co-authored-by: Joshua Wallace <[email protected]> * Option for ObstacleLayer to not override StaticLayer's unknown parts (#3612) (#6) * Add updateWithMaxWithoutUnknownOverride * Add missing break to switch case * Add additional NO_INFORMATION check to make more robust * Add CombinationMethod enum with combination_method_from_int * Rename override to overwrite * Update docs of combination_method_from_int * Move definitions to costmap_layer and remove function_name param * Replace logger with node's logger * Fix linting errors * Add test * Add CombinationMethod::Max test as a counter-case * Let Navigators have different error codes (#3642) (#7) * Change ERROR to DEBUG * INFO message on init * format code * Replace newlines with spaces * Return feedback from bt action node * Fix feedback type error * Increase wait for action server timeout * Add param to calculate remaining time * Add orientation difference to distance remaining * Fix distance remaining crash * Add doors to distance remaining * Revert "Add doors to distance remaining" This reverts commit e0334ea57a66824d06e1089a400e43f4e87c1867. --------- Signed-off-by: Trung Kien <[email protected]> Signed-off-by: Øystein Sture <[email protected]> Signed-off-by: ryzhikovas <[email protected]> Signed-off-by: Ryan Friedman <[email protected]> Signed-off-by: Nick Lamprianidis <[email protected]> Signed-off-by: ymd-stella <[email protected]> Signed-off-by: Christian Henkel <[email protected]> Signed-off-by: Anton Kesy <[email protected]> Co-authored-by: Steve Macenski <[email protected]> Co-authored-by: Tony Najjar <[email protected]> Co-authored-by: HAIDAR OBEID <[email protected]> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Tony Najjar <[email protected]> Co-authored-by: nakai-omer <[email protected]> Co-authored-by: Alexey Merzlyakov <[email protected]> Co-authored-by: Jose Luis Blanco-Claraco <[email protected]> Co-authored-by: DylanDeCoeyer-Quimesis <[email protected]> Co-authored-by: Trung Kien <[email protected]> Co-authored-by: HovorunB <[email protected]> Co-authored-by: Ruffin <[email protected]> Co-authored-by: Øystein Sture <[email protected]> Co-authored-by: mrmara <[email protected]> Co-authored-by: antoniomarangi <[email protected]> Co-authored-by: Griswald Brooks <[email protected]> Co-authored-by: BriceRenaudeau <[email protected]> Co-authored-by: Dirk Braunschweiger <[email protected]> Co-authored-by: Dirk Braunschweiger <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Alberto Tudela <[email protected]> Co-authored-by: ryzhikovas <[email protected]> Co-authored-by: Alexandr Buyval <[email protected]> Co-authored-by: Hyung-Taik Choi <[email protected]> Co-authored-by: Filipe Cerveira <[email protected]> Co-authored-by: Ryan <[email protected]> Co-authored-by: Nick Lamprianidis <[email protected]> Co-authored-by: gyaanantia <[email protected]> Co-authored-by: ymd-stella <[email protected]> Co-authored-by: Vineet <[email protected]> Co-authored-by: Chuanhong Guo <[email protected]> Co-authored-by: Christian Henkel <[email protected]> Co-authored-by: Hyunseok <[email protected]> Co-authored-by: Anton Kesy <[email protected]> Co-authored-by: redvinaa <[email protected]> Co-authored-by: Joshua Wallace <[email protected]> Co-authored-by: MartiBolet <[email protected]> Co-authored-by: Stevedan Ogochukwu Omodolor <[email protected]> Co-authored-by: turtlewizard73 <[email protected]>
* Update nav2_multirobot_params_2.yaml * Update nav2_multirobot_params_1.yaml * Humble backport of MPPI controller (#3439) * Adding new MPPI controller to Nav2 (#3350) * adding new MPPI controller to Nav2 * fixing rename for Nav2 staging * using larger resource class * fix plugin name * wz typo * add mppi gif * Update defaults.yaml * Update makeflags to match core count of resource_class: large * Bump cache version for testing CI changes * fixing tests * remove unused function * Update config.yml * adding a little more detail * adding contextual note * adding contextual exceptions * Fix using different frame for global and local costmap (#3425) * getGlobalPlanConsideringBoundsInCostmapFrame Replace transformPlanPosesToCostmapFrame and getGlobalPlanConsideringBounds by getGlobalPlanConsideringBoundsInCostmapFrame * use stamp from robot pose for transform * style * fix test * lint test --------- Co-authored-by: Guillaume Doisy <[email protected]> --------- Co-authored-by: ruffsl <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> (cherry picked from commit 8d4f6f4e2dcd37afae94d74e7b5b806ea78e9813) * Replace nav2_core exceptions with std::runtime_error * Get inflation layer parameters from node params * remove changes unrelated to mppi * fix eol * Add reset behavior (draft) * initialize last_time_called_ * add readme for reset_period * Revert "remove changes unrelated to mppi" This reverts commit 55fec35fdb82356e7952c9c9c3ee7fd7195422f4. * changing MPPI's SG filter to 9-point formulation (prev. 5) (#3444) * changing filter to 9 * fix tests (cherry picked from commit 7aee1e7be0349d486a0567aa397c34faa51e1018) * Adapt tests to humble Costmap2DROS constructor * cpplint * Update nav2_mppi_controller/README.md Co-authored-by: Steve Macenski <[email protected]> * address time comment * fix API change rclcpp::ServicesQoS() * fix CI --------- Co-authored-by: Steve Macenski <[email protected]> * fix ServicesQoS error (#3449) * [MPPI] Fix transformed path oscillations (#3443) (#3453) * use path distance instead of euclidean for upper bound search * rename to pruned_plan_end * rename to pruned_plan_end * fix tests * do not use prune_distance to limit the search for the closest pose --------- Co-authored-by: Guillaume Doisy <[email protected]> (cherry picked from commit 34f18d9222e33a2fddb2e45653cd5c0ef7b3bb11) Co-authored-by: Guillaume Doisy <[email protected]> * Update photo_at_waypoint.cpp * Update photo_at_waypoint.hpp * hot patch to fix transform error in MPPI caused by #3425 (#3458) (#3459) (cherry picked from commit d4291438eea0abfdfc1632886cef0adfeea1e831) Co-authored-by: Steve Macenski <[email protected]> * Fix out of bound vector (#3461) (#3463) (cherry picked from commit 0a63bf956e5da6e89946fde131303942e282c23b) Co-authored-by: Tony Najjar <[email protected]> * Trajectory visualizer namespaces (#3467) (#3469) * namespace trajectory visualizer markers (cherry picked from commit 124843cafe13d34d193699278f7163072328bbe3) * fix linters * fix typo (cherry picked from commit d8a22fa21d77ce0df8a8d4fc9693806115114b3b) Co-authored-by: Tony Najjar <[email protected]> * fix segfault when path is empty (#3484) (#3485) a Co-authored-by: Guillaume Doisy <[email protected]> (cherry picked from commit 26ac8104862b25151d98981da1731931fa16d1b3) Co-authored-by: Guillaume Doisy <[email protected]> * Check compile options (#3487) (#3489) (cherry picked from commit e7259030f834ff19599206ae80a1ed5d05cd32d2) Co-authored-by: Tony Najjar <[email protected]> * ackermann motion model bug (#3498) (#3501) Prevent cost to be modified twice. (cherry picked from commit 482017ce02ec08eadd3a23440e619b0e506cb9c5) Co-authored-by: HAIDAR OBEID <[email protected]> * Fix robot navigator params getting overriden (#3562) * Humble sync 6 June 9: 1.1.7 (#3616) * Option allowing to use simple lookupTransform API (#3412) * Option allowing to use simple lookupTransform API ignoring time shifts between source and base frame during the movement * Refine comments * Fix wrong warning message format (#3416) * Fix wrong warning message format (Closes #3415) * fix code formatting * nav2_dwb_controller: add forward_prune_distance parameter (#3374) Until now, the prune_distance was used as distance threshold to shorten the upcoming path when shorten_transformed_plan was enabled. However, the prune and shortening mechanisms are de-correlated mechanisms. One could wish to use a different shortening distance for upcoming points, than the prune distance used for passed points. For this reason, a new parameter "forward_prune_distance" was added. * Fix service_name for server_name in cancel assisted teleop node * Fix mask coordinates calculation in worldToMask (#3418) * Remove goal checker default from follow path node * Correct CostmapFilters copyrights (#3423) * Correct the parameter description for AMCL (#3451) Signed-off-by: Trung Kien <[email protected]> * Add default service name to BTServiceNode (#3448) * Add default service name to BtServiceNode * docstring * fix initialization-list order * Update nav2_behavior_tree/include/nav2_behavior_tree/bt_service_node.hpp Co-authored-by: Steve Macenski <[email protected]> --------- Co-authored-by: Steve Macenski <[email protected]> * Fix Typos (#3452) * removing galactic from table as EOL (#3460) * Support for Dev Containers and Codespaces (#3457) * Alias image tag over current branch name * Duplicate build and push steps for dev tag * Alias image tag over current branch name * Modify build and push steps for dev tag * Build and push dev tag first to not cache from stale stages as otherwise caching from multple regestry images seems error prone * Revert "Build and push dev tag first" as otherwise the build failer durring the dev tag could then still block build of the main tag This reverts commit 12dd5b1a4e3f37847e6333b9e9ae9ef480a80623. * Cache from multple reference images while giving layers from the main tag priority this assumes that cache-from prioritizes firstly listed references https://github.com/moby/buildkit/blob/0ad8d61575be009ce6478edf1d85716849c8ff1a/solver/llbsolver/bridge.go#L92 * Cache tests in dev image as well colcon cache can then skip tests for uneffected packages * Add devcontainer.json * Ignore doc for image builds * Add more extensions * Change workspaceFolder to root src path to avoid auto generating .vscode folder in repo created by ms-iot.vscode-ros extension upon configuring ros packages with c_cpp_properties.json * Enable features for github-cli * Add docs about codespaces and have it opened when starting codespaces * Update update_ci_image.yaml to fix duplicate step ids and add workflow file to push paths * Patch CI actions and Dockerfiles (#3468) * Unset default value for FAIL_ON_TEST_FAILURE as unsetting it via --build-arg seems unreliable https://github.com/docker/compose/issues/3608 * Use build arg default for failing on test failers * Update from deprecated set-output commands https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/ * Use Codespaces prebuilds (#3470) * Add commands to devcontainer * Set builtin bash to be safe https://gist.github.com/mohanpedala/1e2ff5661761d3abd0385e8223e16425 https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ * Setup workspace on create * Revert use of set -u for bash don't raise error due to variables otherwise colcon setup.sh chokes from using an unbounded path variable * Add safe.directory for git config otherwise colcon cache errors out because of issues with git due to complex user mapping magic that vscode does with devcontainers https://stackoverflow.com/questions/72978485/git-submodule-update-failed-with-fatal-detected-dubious-ownership-in-repositor also used by Moveit2: https://github.com/ros-planning/moveit2/pull/1994 https://github.blog/2022-04-12-git-security-vulnerability-announced/ * Set env using remoteEnv instead of inlining them in scripts * Revert to using the main tag now that the tester stage has been replicated with the new devcontainer script commands instead * formating * Scrap `-dev` image tag and use codspaces prebuilds instead * Build incrementally from update content command by copying the build workspace steps from circleci config * Adapt the build workspace steps for bash * Fix for different ceres isinf() API (#3471) * Fixing name of security launch file * Clean up pending service client request on interrupt/timeout (#3479) Signed-off-by: Øystein Sture <[email protected]> * Added str cast to parse int (#3486) Co-authored-by: antoniomarangi <[email protected]> * Add flag to not send request in BTServiceNode (#3431) * Add flag to not send request in BTServiceNode * rename goal to request * Fail if should not send goal * Update nav2_behavior_tree/include/nav2_behavior_tree/bt_service_node.hpp Co-authored-by: Steve Macenski <[email protected]> * Update nav2_behavior_tree/include/nav2_behavior_tree/bt_service_node.hpp Co-authored-by: Steve Macenski <[email protected]> * . * fix linter * fix CI --------- Co-authored-by: Steve Macenski <[email protected]> * Prepare test results to only use junit/xunit schema (#3441) * Set ctest arg to output junit To try and help CircleCI to parse the output files https://stackoverflow.com/a/70774733/2577586 * Replace the original Test.xml by outputting the junit to the same filename Context: https://github.com/colcon/colcon-cmake/blob/8f1b92a190b2ad4289ecf837c3200d540c13fdd9/colcon_cmake/task/cmake/test.py#L133 * Fix default formatting to a list WARNING:colcon.colcon_defaults.argument_parser.defaults:Default value 'ctest-args' for parser 'test' should be a list, not: --output-junit Test.xml * Revert junit file name https://circleci.com/docs/collect-test-data/#ctest-for-c-cxx-tests * Fine and rename ctest summary Test.xml * Fix find path * Simplify extention renaming * Copy ctest junit file into test_results so that they can be stored by CI * Revert ctest config modifications * Prepare Test Results by removing Test.xml generated by ctest to simplify fix for circleci * Reorder storage of test result artifacts before Test.xml files are removed so that they can still be archived and viewed for later * Use find command * Container retention via version tagging (#3491) * Use github action expression syntax to alias over github repository name * Tag by version instead of by timestamp * Avoid pushing untagged image to GHCR by setting provenance to false now that provenance is enabled by default as of v4 of docker/build-push-action - https://github.com/docker/build-push-action/pull/781 - https://github.com/docker/build-push-action/issues/778 * Use checkout action to set version output (#3492) Otherwise there is no source code to use to set the version output. Fixes: #3491 * Change directory to inside checked out repo (#3493) or relative path under $GITHUB_WORKSPACE that actions/checkout places the repository * Write and read from correct output mapping (#3494) * Revert "Change directory to inside checked out repo (#3493)" This reverts commit 332c1fb07bd787bab8a8eeea5fc896a944bb54d8. * Add `version` to outputs for check step and use output from `check` id * Use output from check_ci_files job * updating world in simple commander for TB3 package change (#3495) * Ensure version output is always set (#3503) even when github.event_name != 'push' by moving run step to same job as build-push action. Also set context path provided by checkout action to avoid future nonintuitive behavoir using default Git context, even when the checkout action appears to be being used. - https://github.com/docker/build-push-action#git-context - https://github.com/docker/build-push-action#path-context * Add labels to pushed image versions (#3505) using Pre-Defined Annotation Keys as defined by The OpenContainers Annotations Spec - https://specs.opencontainers.org/image-spec/annotations/#pre-defined-annotation-keys - https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows - https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#get-a-repository * Typo README.md (#3506) * [Velocity smoother] Set zeros command if timeout (#3512) * Set zeros command if timeout * Fix lint * Fix gtest increase time to allow deceleration * Always update last_cmd_ * Revert test modif * remove test logs * Fix paste error * Update velocity_smoother.cpp * Update velocity_smoother.cpp * Improve Dev Container ergonomics (#3482) * Install and enable bash autocompletion by using apt durring on create command and by copying skelton .bashrc file that sources it by default * Edit apt for autocomplete by disabling docker-clean from containerized ubuntu * Add ROS2 Ament Task Provider extension Provides tasks and problem matchers for ROS2 projects using ament https://marketplace.visualstudio.com/items?itemName=althack.ament-task-provider * Source underlay for extentions to allow them to find the path to ros binaries such as ament_cpplint needed for althack.ament-task-provider * Target new dever stage in Dockerfile * Reduce need for internet after image build by installing developer dependencies earlier * Edit apt caching before apt updating * Source underlay systemwide this is a hacky workarround to ensure VS Code can run ShellExecution tasks with the ros envorment included in PATH otherwise, postponing this to the on-create-command results in vscode extentions not finding system installed ros commands this also works for all user shells regardless of how devontainers could change the user * Postpone bashrc setup to postCreateCommand once the dev container has been assigned to a user for the first time * Cleanup onCreateCommand as we don't use ros_entrypoint.sh for development and so it doesn't really need to be updated * Quite down the logs when building devcontainer * Formatting * Add refrence ccp properties config file generated from the vscode ROS extention but with the hardcoded paths in includePath deleted * Update version of cppStandard for ROS Rolling * Update workspaceFolder to use new .vscode folder * Mount ccache directory to volume to speed up rebuilding devcontainer whenever onCreateCommand is triggered because of modifications to .devcontainer/ files * Avoid use of containerEnv to express ccache direcotry as doing so is not possable, for more info: - https://stackoverflow.com/a/75759647/2577586 - https://github.com/microsoft/vscode-remote-release/issues/7147#issuecomment-1237779733 Just target a path in the temp direcotry instead * Stage auto generated includePath * Remove workspace install from include path except for autogenerated headers from message packages * Avoid hardcoded path to sorce folder * Avoid hardcoded path to install folder but this is still rather fragile as the reletive path between workspaceFolder and the colcon workspace isn't fixed * Sort list of paths * Remove cpp properties configuration as it seems it's existance prevents autoupdating the includePaths property unless user manually runs the vscode command `>ROS:Update C++ Properties` https://github.com/ms-iot/vscode-ros/blob/47d8f14f4ec0498cd9e8381e6fcc5f47abb340f2/src/extension.ts#L71 and even when this command is invoked it blows aways any customizated properties anyhow issue about wrong cppStandard tracked here: https://github.com/ms-iot/vscode-ros/issues/818 * Fix typo to move docker-clean from loaded config path * fix data race: addFilter() and resizeMap() can be executed concurrently (#3518) Co-authored-by: Dirk Braunschweiger <[email protected]> * fix data race: prohibit resizeMap() during plugin/filter initialization (#3522) Co-authored-by: Dirk Braunschweiger <[email protected]> * Mount overlay workspace into Dev Container via volume (#3524) * Add volume for overlay to avoid rebuilding it from scratch whenever the dev container is rebuilt this saves startup time locally when fiddling with the configs * Append devcontainerId to volume name to avoid conflicts with other devcontainers note that devcontainerId is stable across rebuilds - https://containers.dev/implementors/json_reference/#variables-in-devcontainerjson * Call updateContentCommand from onCreateCommand to deduplicate scripts and keep setup DRY given the addition of a mounted overlay volume which could include a prebuilt colcon workspace well before the dev container is created/rebuilt * Comment out colcon clean from setup to avoid unintentional removal of built packages from the persistent overlay workspace volume. Users can uncomment the line locally or simply remove the overlay workspace volume if they want to rebuild packages from scratch. * Format json * Add headless and use_rviz LaunchConfigurations to demo launch files (#3527) * Add headless and use_rviz LaunchConfigurations in nav2_simple_commander demo launch files for whether to start rviz or gzclient to simplify their use in headless environments * Fix headless logic to match tb3_simulation_launch.py for launch arg consistency * Fix State-Lattice planner crashes due to FP precision loss (#3531) * Fix State-Lattice planner crashes due to FP precision loss * Move testcase comment * Add PoseProgressChecker (#3530) * add rotation progress checker * clean include * add stopped goal checker reset test * add rotation progress checker tests * uncrustify * better name: PoseProgressChecker instead of RotationProgressChecker * camelCase * uncrustify * rename in tests * more rename * simplify parentheses * faster and better tests --------- Co-authored-by: Guillaume Doisy <[email protected]> * [velocity_smoother] Fix accel and deccel inverted for negative speeds (#3529) * fix inverted accel / deccel * handle speed through 0.0 * add applyConstraints tests * fold logic * same logic in findEtaConstraint * lint * Update nav2_velocity_smoother/src/velocity_smoother.cpp * Update nav2_velocity_smoother/src/velocity_smoother.cpp * findEtaConstraint tests * space * lint * typos * comment typos --------- Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Steve Macenski <[email protected]> * Enable Visualizations for Dev Container (#3523) * Add visualizer stage to install demo dependencies * Install foxglove * Install gzweb * Add hack for resolvable mesh URIs located by the aws SDL model files - https://github.com/aws-robotics/aws-robomaker-small-warehouse-world/pull/24 * Revert hack and use fork that fixes issues with deploy.sh - https://github.com/osrf/gzweb/pull/248 * Update target stage to visualizer * Comment out gzclient and rviz for debugging * Add hack for resolvable mesh URIs as migrating the python3 scripts still hasn't resolved the issue * Reorder stages for readability by keeping sequential builder and tester stages adjacent while keeping tester stage the default exported target * fix typo * Install gdb for launching ros launch files using the ROS VS Code extension - https://github.com/ms-iot/vscode-ros/issues/588 * Add vscode tasks file * Add Start Gzweb task * Add Start Foxglove tasks for bridge and studio * Add Start Foxglove compound task using dependsOn * Set default problemMatcher to empty to avoid nagging the user to select one as currently none really support our use case * Source overlay before running foxglove_bridge to ensure nav2 message types are defined by inlining all args into command and sourcing workspace setup * Formatting * Generalize and simplify hack * Generalize gazebo model discovery * Patch gzserver to run headless using xvfb to avoid host/platform specific x11 quirks exposed by vscode automatic x11 forwarding This is needed to provide gazebo a virtual frame buffer as it still need one after all these years. This also avoids the need modifying launch files to call xvfb-run - https://github.com/microsoft/vscode-remote-release/issues/8031 - https://github.com/gazebosim/gazebo-classic/issues/1602 * Set isBackground for start tasks * Add stop tasks * Add restart foxglove task * Switch to shell for commanding pkill to gracefully return 0 when process is not running allowing sequence of dependsOn tasks to run such as for the restart tasks * Add icons to tasks for readability * Add restart gzweb task * Add global start, stop, and restart tasks for all background visualization tasks * Formatting * Hide tasks users need not run manually to avoid cluttering up the run task quick pick * Shorten label for background tasks so they succinctly show from the running task list * Show global start and stop visualizations tasks as they may be too helpful to hide * Revert "Comment out gzclient and rviz for debugging" This reverts commit 0addae2a1ee70c5771055c5dd8fa050af438b896. * Add --ipc=host to runArgs to enable shared memory transport - https://community.rti.com/kb/communicate-between-two-docker-containers-using-rti-connext-dds-and-shared-memory * Add --pid=host to runArgs to simplify discovery - https://community.rti.com/kb/communicate-between-two-docker-containers-using-rti-connext-dds-and-shared-memory * Add to runArgs to simplify debugging - https://code.visualstudio.com/docs/devcontainers/create-dev-container#_use-docker-compose * Add comments * Comment out runArgs unintended side effects or cross talk between containers by default also avoids interfering with vscode's X11 forwarding * [nav2_planner] Fix costmap thread reset on cleanup (#3548) * remove costmap thread reset on cleanup * Init costmap thread in on_configure method * Move costmap_thread init in on_configure method * Add IsBatteryChargingCondition (#3553) * Add IsBatteryChargingCondition * Minor fixes in battery charging and add testing * Fix format * Added isBatteryChargingCondition BT node to params * Impl noise filtering layer in the costmap_2d (#2567) Signed-off-by: ryzhikovas <[email protected]> * Improve Dev Container Web App Visualization (#3551) * Add Caddyfile to reverse proxy websockets in an attempt to avoid authentication tokens in headers when forwarding ports from codespaces via web interface - https://docs.github.com/en/codespaces/developing-in-codespaces/forwarding-ports-in-your-codespace#using-command-line-tools-and-rest-clients-to-access-ports - https://caddyserver.com/docs/quick-starts/reverse-proxy - https://caddy.community/t/caddy-v2-how-to-proxy-websoket-v2ray-websocket-tls/7040/13 * Update caddy related tasks * Rename Gzweb task to Gzweb Bridge to make room for more gzweb tasks * Add Gzweb Client Task * Add Caddyfile to reverse proxy websockets now for Gzweb * Specify config file to avoid crosstalk between caddy stop commands * Fix reverse proxy for websockets by correcting matcher using headers as websocket request header value is lowercase for gzweb and foxglove * Comment out log output files for debugging * Simplify tasks by removing client tasks * Stop tasks by using terminate via the workbench.action.tasks.terminate command * Move Caddyfile * Add Web Server tasks * Move Caddyfile * Update log output file path * Update root path * Update reverse_proxy for both gzweb and foxglove by using the path argument for respective matchers - https://caddyserver.com/docs/caddyfile/matchers#path-matchers * Use snippets to keep Caddyfile DRY - https://caddyserver.com/docs/caddyfile/concepts#snippets * Use rewrite to catch trailing slash as file_server defaults do not correct reverse_proxy. This make typing the websocket URL more forgiving - https://caddyserver.com/docs/caddyfile/patterns#trailing-slashes * Improve websocket snippet to keep Caddyfile DRY * Use header_regexp for case-insensitive matching given web port forwarding from Codespaces is odd and rewrites the value of this header field to lowercases even when local browser request is sent as `Upgrade` * Add helper index page to web server to link to web apps for reverse proxy * Limit templates to fix gzweb by adding matcher for only root index otherwise gzweb's own index.html gets overwritten * Add comments to Cadyfile to document tricky configuration * Stage working redirect * Simplify index.html * Add helper redirect to simplify foxglove to set the respective queries values to automate websocket setup, and ensure the websocket schema matches the https request * Avoid hardcoding port number * Clean up comments * Use header to compute redirect to take into account requesting forwarding or more codespace port forwarding shenanigans * Use shorthand placeholders - https://caddyserver.com/docs/caddyfile/concepts#placeholders * Formatting * Keep trailing slash to stay consistent with caddy file_server directive that serves a 308 Permanent Redirect for both foxglove and gzweb paths anyway * Refactor matcher logic to account for requests either from host ports from local dev containers or forwarded requests from codespace web port forwarding * Split snippet into globals for composability * Update comments * Add Placeholders for debugging * Use tables to center * Use github markdown - https://github.com/sindresorhus/github-markdown-css * Simplify vars * Rename vars * Revert "Rename vars" as dotted var names do not work in Caddyfile This reverts commit 3e2d1b3fe30f8a4ffb5134fc2f6f5cffd574bcdc. * Add System Monitor to debug CPU load and memory issues * Update headings * Update layout * Update layout * Add Foxglove layout for Nav2 * Symlink assets folder for web server * Fetch Foxglove layout using layoutUrl a new parameter to load layout json data from URL - https://github.com/orgs/foxglove/discussions/217 * Cleanup * Use fork to fetch Foxglove layout using layoutUrl until this PR is merged: - https://github.com/foxglove/studio/pull/5987 * Update Caddyfile to handle relative root by using local srv folder * Inject mobile view html tags using the caddy replace module - https://caddyserver.com/docs/modules/http.handlers.replace_response - https://github.com/caddyserver/replace-response * Simplify Caddyfile * Use snippet for apps * Simplify Caddyfile * Simplify Caddyfile * Build caddy using custom modules * Remove unused symlinks * Add comments * Use environment and defined variables for config to avoid hard coded paths * Add FoxgloveUrl to vars for reuse in templates * Fix trailing slash for DataSourceUrl * Use exec to run gzserver with xvfb to prevent ros launch from orphaning process and ensure gzserver receives SIGTERM signal given gzserver often hangs after only SIGINT - https://unix.stackexchange.com/a/196053/213124 * Update redirect for foxglove to redirect from path /foxglove/autolayout * Add redirect for foxglove to redirect from path /foxglove/autoconnect but does not use LayoutUrl as to not change from cached layout * Use web app manifest to set display as standalone - https://web.dev/add-manifest/ - https://developer.mozilla.org/en-US/docs/Web/Manifest * Template manifest files to embed host info into app name * Add manifests for other web apps * Add shortcuts for Foxglove - https://developer.mozilla.org/en-US/docs/Web/Manifest/shortcuts - https://web.dev/app-shortcuts/ * Format * Update comments * Revert use of fork * Remove debug directive * Improve usability of PWAs in Dev Containers (#3576) * Add WIP icons * Add WIP icons for gzweb * Add WIP icons for glances * Set cross origin to use credentials ensuring auth cookie is included in request header when requesting for web app manifest file thus avoiding CORS policy violations in browser when accessing forwarded codespaces ports from the web > The request for the manifest is made without credentials (even if it's on the same domain), thus if the manifest requires credentials, you must include `crossorigin="use-credentials"` in the manifest tag. - https://web.dev/add-manifest/ - https://stackoverflow.com/a/57184506/2577586 * Use ReqHost variable in templates to account for X-Forwarded-Host value in header * Delete duplicate manifest * Set id property in app manifests so we can address them independently from their start_url - https://developer.chrome.com/blog/pwa-manifest-id/ * Ensure apps are uniquely identifies by adding trailing slash to id and thus different URI directories * Refactor root landing page into nav2 app by moving page file into nav2 sub folder adding root redirect pointing to /nav2/ and updating html, markdown, manifest files respectively * Fix https detection for Caddy reverse proxies by also checking X-Forwarded-Proto in request header * Remove unnecessary files * Prune smaller images * Prune duplicate icon * Clean up html tags * Update manifest icons * Rename icons * Revert "Prune duplicate icon" This reverts commit 571040173ca83716dfd2f6d5db4b351389a557a8. * Add back favicon for shortcut * Add self index for completeness and bookmarking * Simplify icon linking * Delete binary files * Fix hyperlink path * Include image files using gitattributes to track these binary files via git LFS * Add icons using git lfs * Standardized all icon paths * Use external links for icons to avoid the need for using git LFS although this is a bit of a hack * Stage any and maskable icons * Use any and masked icons * Set colors to match maskable icon colors * Update icon * Use lossless compression without removing background - https://shortpixel.com/online-image-compression * Use WebP instead of PNG for smaller file sizes - https://en.wikipedia.org/wiki/WebP * Move icons into icons folder * Use _SRV environment variables for service paths * Download media files from github during docker image build to avoid adding always online dependencies when creating or starting dev containers * Delete media icons from git repo now that we download media from anonymized URLs on github - https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/attaching-files * Add comments * Enable file browsing for non app paths for remote debugging of media and asset files * Consolidate assets into single folder * Add links for file browser paths to Server Diagnostics * Delete unused symlink * Update landing page to match manifest by including same shortcuts and start url * Patch gzweb to disable modelList avoiding 404s for thumbnails as they are hardcoded into js * Update comments * Simplify Caddyfile by reverting to symlinking but add ROOT_SRV env for custom overriding * Loop over nav2 srv folders when symlinking to generalize over folder names * Add matcher for file browsing root directory while still redirecting to nav2 app by default * Use placeholders for root variable to consolidate env default fallback settings e.g `:/srv` * Promote file browser in Nav2 app shortcuts * Fix and update SRV envs * Postpone symlinking for Nav2 web app to when post-create-command script then runs given full repo is not copied into builder stage in Dockerfile. While this could be postponed to update-content-command leaving it here avoids blowing user changes after the container has been created or modified. * Add guard to check if srv folder exists * Add refresh rate shortcuts to glances * Add file browser shortcut to nav2 * Set scope for nav2 PWA to root to allow for opening child apps inside nav2 app * Display child apps in fullscreen mode by default as users can still open them in standalone via nav2 app given the nav2 app's scope is the parent root path * Update shortcuts and landing page * Document PWA scope and installation order when using Nav2 PWA scoped as root * Revert setting scope for nav2 PWA to root path as adding file browser shortcut to nav2 PWA is not worth the trouble of having to explain installation order caveats and URL launch behavior. File browser shortcut is still accessible from inside nav2 pwa launcher but merely displays in browser preview given root / is out of scope for /nav2/ * Update server diagnostics for troubleshooting * Verify checksum of archive before extraction incase anonymized URL changes expected archive * Fix the condition in ackerman motion model constraints (#3581) * Fix the condition in ackerman motion model constraints * Fix ackerman motion model tests * Fix another ackerman motion model test * Fix broken symlink for gzweb (#3585) to load world models * Fix broken link to contributing guidelines (#3587) The original URL (https://navigation.ros.org/contribute/index.html) seems not to exist, returning an HTTP 404. Hence, I've replaced the link with a page that seems most relevant. * Adding Our Sponsors - May 2023 (#3593) * adding our sponsors - may 2023 * adding blurb * adding links * adding links * adding links * adding Open Nav * Add CostmapFilterInfoServer as a component (#3596) * Resolve #3532: reset i (#3597) * [MPPI] empty path_follow_critic proper fix (#3599) * [MPPI] empty path_follow_critic proper fix * fix linting issue --------- Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Steve Macenski <[email protected]> * bumping humble to 1.1.7 for release --------- Signed-off-by: Trung Kien <[email protected]> Signed-off-by: Øystein Sture <[email protected]> Signed-off-by: ryzhikovas <[email protected]> Co-authored-by: Alexey Merzlyakov <[email protected]> Co-authored-by: Jose Luis Blanco-Claraco <[email protected]> Co-authored-by: DylanDeCoeyer-Quimesis <[email protected]> Co-authored-by: Trung Kien <[email protected]> Co-authored-by: HovorunB <[email protected]> Co-authored-by: Tony Najjar <[email protected]> Co-authored-by: Ruffin <[email protected]> Co-authored-by: Øystein Sture <[email protected]> Co-authored-by: mrmara <[email protected]> Co-authored-by: antoniomarangi <[email protected]> Co-authored-by: Tony Najjar <[email protected]> Co-authored-by: Griswald Brooks <[email protected]> Co-authored-by: BriceRenaudeau <[email protected]> Co-authored-by: Dirk Braunschweiger <[email protected]> Co-authored-by: Dirk Braunschweiger <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Alberto Tudela <[email protected]> Co-authored-by: ryzhikovas <[email protected]> Co-authored-by: Alexandr Buyval <[email protected]> Co-authored-by: Hyung-Taik Choi <[email protected]> Co-authored-by: Filipe Cerveira <[email protected]> * Fix merge conflict error (#3619) * fixing a second merge conflict resolution error (#3621) * fixing merge conflicts for release on humble sync 6 (#3623) * Fixing 3629 (#3630) * Fixing 3629 * Update planner_server.cpp * bumping humble to 1.1.8 for release sync 6 + bug patch * Fixing build warning (#3667) (#3673) (cherry picked from commit 7d4b1992811ccc9d36566d29251fdc8eaee66efc) Co-authored-by: Steve Macenski <[email protected]> * Fix the velocity smoother being stuck when the deadband is too high (#3690) (#3715) * Move last_cmd update before deadband * fix lint (cherry picked from commit cb34d0ce1d24c1c437f548834a31a2ee8c4d9889) Co-authored-by: BriceRenaudeau <[email protected]> * Humble sync 7 August 4 1.1.9 (#3739) * Fix map not showing on rviz when navigation is launched with namespace (#3620) * updating mppi's path angle critic for optional bidirectionality (#3624) * updating mppi's path angle critic for optional bidirectionality * Update README.md * fixing path angle critic's non-directional bias (#3632) * fixing path angle critic's non-directional bias * adding reformat * adapting goal critic for speed to goal (#3641) * adapting goal critic for speed to goal * retuning goal critic * add readme entries * Update critics_tests.cpp * Fix uninitialized value (#3651) * In NAV2, this warning is treated as an error Signed-off-by: Ryan Friedman <[email protected]> * Fix rviz panel node arguments (#3655) Signed-off-by: Nick Lamprianidis <[email protected]> * Reduce out-of-range log to DEBUG (#3656) * Adding nan twist rejection for velocity smoother and collision monitor (#3658) * adding nan twist rejection for velocity smoother and collision monitor * deref * MPPI: Support Exact Path Following For Feasible Plans (#3659) * alternative to path align critic for inversion control * fix default behavior (enforce_path_inversion: false) (#3643) Co-authored-by: Guillaume Doisy <[email protected]> * adding dyaw option for path alignment to incentivize following the path's intent where necessary * add docs for use path orientations * fix typo --------- Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> * Fix smoother server tests (#3663) * Fix smoother server tests * Update test_smoother_server.cpp * nav2_bt_navigator: log current location on navigate_to_pose action initialization (#3720) It is very useful to know the current location considered by the bt_navigator for debug purposes. * nav2_behaviors: export all available plugins (#3716) It allows external packages to include those headers and create child classes through inheritance. * changing costmap layers private to protected (#3722) * adding error warnings around incorrect inflation layer setups in MPPI and Smac which impact performance substantially (#3728) * adding error warnings around incorrect inflation layer setups in MPPI and Smac which impact performance substantially * fix test failures * Update RewrittenYaml to support list rewrites (#3727) * allowing leaf key rewrites that aren't dcits (#3730) * adding checks on config and dynamic parameters for proper velocity and acceleration limits (#3731) * Fix Goal updater QoS (#3719) * Fix GoalUpdater QoS * Fixes * bumping Humble to 1.1.9 for release * fix merge conflict resolution in collision monitor node --------- Signed-off-by: Ryan Friedman <[email protected]> Signed-off-by: Nick Lamprianidis <[email protected]> Co-authored-by: Filipe Cerveira <[email protected]> Co-authored-by: Ryan <[email protected]> Co-authored-by: Nick Lamprianidis <[email protected]> Co-authored-by: BriceRenaudeau <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: DylanDeCoeyer-Quimesis <[email protected]> Co-authored-by: gyaanantia <[email protected]> Co-authored-by: Tony Najjar <[email protected]> * Fixing 3768: planner server lifecycle transition down (#3786) * Use ParameterFile (allow_substs) (#3706) (#3806) Signed-off-by: ymd-stella <[email protected]> Co-authored-by: ymd-stella <[email protected]> * Added missing destructor to MPPI critic manager (#3812) * Added missing virtual destructor * Updated CriticManger Destructor to be same as other branches * mppi: return NO_INFORMATION when the checked point is outside the costmap (#3816) (#3818) otherwise the controller crashes at ObstaclesCritic::costAtPose because x_i and y_i isn't initialized. (cherry picked from commit 6b250a7c57536ee43a402c9820ac2a2acdb8bc13) Co-authored-by: Chuanhong Guo <[email protected]> * [Humble] Sync 8 - Sept 25 (#3836) * Same orientation of coordinate frames in rviz ang gazebo (#3751) * rviz view straight in default xy orientation Signed-off-by: Christian Henkel <[email protected]> * gazebo orientation to match rviz Signed-off-by: Christian Henkel <[email protected]> * rotating in direction of view --------- Signed-off-by: Christian Henkel <[email protected]> * Fix flaky costmap filters tests: (#3754) 1. Set forward_prune_distance to 1.0 to robot not getting lost 2. Correct map name for costmap filter tests * Fix missing mutex in PlannerServer::isPathValid (#3756) Signed-off-by: ymd-stella <[email protected]> * Rewrite the scan topic costmap plugins for multi-robot(namespace) before launch navigation. (#3572) * Make it possible to launch namspaced robot which rewrites `<robot_namespace>` to namespace. - It allows to apply namespace automatically on specific target topic path in costmap plugins. Add new nav2 params file for multi-robot(rewriting `<robot_namespace>`) as an example. - nav2_multirobot_params_all.yaml Modify nav2_common.ReplaceString - add condition argument * Update nav2_bringup/launch/bringup_launch.py Co-authored-by: Steve Macenski <[email protected]> * Add new luanch script for multi-robot bringup Rename luanch script for multi-robot simulation bringup Add new nav2_common script - Parse argument - Parse multirobot pose Update README.md * Update README.md Apply suggestions from code review Fix pep257 erors Co-authored-by: Steve Macenski <[email protected]> --------- Co-authored-by: Steve Macenski <[email protected]> * use ros clock for wait (#3782) * use ROS clock for wait * fix backport issue --------- Co-authored-by: Guillaume Doisy <[email protected]> * fixing external users of the BT action node template (#3792) * fixing external users of the BT action node template * Update nav2_behavior_tree/include/nav2_behavior_tree/bt_action_server_impl.hpp Co-authored-by: Guillaume Doisy <[email protected]> --------- Co-authored-by: Guillaume Doisy <[email protected]> * Using Simple Commander API for multi robot systems (#3803) * support multirobot namespaces * add docs * adding copy all params primitive for BT navigator (to ingest into rclcpp) (#3804) * adding copy all params primitive * fix linting * lint * I swear to god, this better be the last linting issue * allowing params to be declared from yaml * Update bt_navigator.cpp * some minor optimizations (#3821) * fix broken behaviortree doc link (#3822) Signed-off-by: Anton Kesy <[email protected]> * [MPPI] complete minor optimaization with floating point calculations (#3827) * floating point calculations * Update optimizer_unit_tests.cpp * Update critics_tests.cpp * Update critics_tests.cpp * 25% speed up of goal critic; 1% speed up from vy striding when not in use * bumping 1.1.9 to 1.1.10 for Humble release --------- Signed-off-by: Christian Henkel <[email protected]> Signed-off-by: ymd-stella <[email protected]> Signed-off-by: Anton Kesy <[email protected]> Co-authored-by: Christian Henkel <[email protected]> Co-authored-by: Alexey Merzlyakov <[email protected]> Co-authored-by: ymd-stella <[email protected]> Co-authored-by: Hyunseok <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Anton Kesy <[email protected]> * Update CMakeLists.txt (#3843) (#3845) (cherry picked from commit 2d6e9a96354c0ea763e70eedd81225635f7b9db5) Co-authored-by: Steve Macenski <[email protected]> * bump to 1.1.11 for release for AVX512 fixes * add option for sse4 and avs512 (#3853) (#3855) (cherry picked from commit 7274811c5cb512a05b87523183e29e75ace77f4a) Co-authored-by: Steve Macenski <[email protected]> * Bumping to 1.1.12 for binary release of AVX512 patches * [MPPI Optimization] adding regenerate noise param + adding docs (#3868) (#3870) * adding regenerate noise param + adding docs * fix tests * remove unnecessary normalization * Update optimizer.cpp (cherry picked from commit 924f167382080f3ccdd000ffc34b921cb64bcf95) # Conflicts: # nav2_mppi_controller/README.md Co-authored-by: Steve Macenski <[email protected]> * Updating default map path * [MPPI] Reworked Path Align Critic; 70% faster + Tracks Paths Better! Edit: strike that, now 80% (#3872) (#3882) * adding regenerate noise param + adding docs * fix tests * remove unnecessary normalization * Update optimizer.cpp * adding refactored path alignment critic * fix visualization bug * speed up another 30% * remove a little jitter * a few more small optimizaitons * fixing unit tests * retain legacy critic * adding tests for legacy (cherry picked from commit 7009ffba5f85c50ac97fd0057924b0f1447c5e85) Co-authored-by: Steve Macenski <[email protected]> * Fix incorrect auto merge conflict issue * Pluginizing BT Navigators (#3345) * initial prototype * linting * Create service get_current_navigator * Publish feedback through blackboard * Expections (#3244) * added result codes for global planner * code review * code review * cleanup * cleanup * update smac lattice planner * update planner instances * cleanup * updates * renaming * fixes * cpplint * uncrusitfy * code review * navfn exceptions * theta_star_planner * fix code review * wrote timeout exception * consistent exception throwing across planners * code review * remove * uncrusitfy * uncrusify * catch exception * expect throw * update string of exceptions * throw with coords * removed start == goal error code * code review * code review * uncrustify * code review * message order * remove remarks * update xml * update xml * Update nav2_behavior_tree/nav2_tree_nodes.xml * fix Co-authored-by: Steve Macenski <[email protected]> Co-authored-by: Joshua Wallace <josho.wallace.com> * Controller exceptions (#3227) * added result codes for global planner * code review * code review * cleanup * cleanup * update smac lattice planner * update planner instances * cleanup * added controller exception * renaming * follow path updates * rename exceptions * updated regulated pure pursuit * completed pure pursuit * completed dwb * linting fixes * cleanup * revert planner server * revert planner server * revert planner server * revert planner server * code review * code review * cleanup * cleanup * bug fix * final cleanup * set follow path error on bt * update groot * code review Co-authored-by: Joshua Wallace <josho.wallace.com> * exceptions for compute path through poses (#3248) * exceptions for compute path through poses * lint fix * code review * code review Co-authored-by: Joshua Wallace <josho.wallace.com> * Pipe error codes (#3251) * issue with finding key * passed up codes to bt_navigator * lint fix * updates * adding error_code_id back in * error codes names in params * bump error codes * lint * spelling * test fix * update behavior trees * cleanup * Update bt_action_server_impl.hpp * code review * lint * code review * log fix * error code for waypoint follower * clean up * remove waypoint error test, too flaky on CI * lint and code review * rough imp for waypoint changes * lint * code review * build fix * clean up * revert * space * remove * try to make github happ * stop gap * loading in param file * working tests :) * lint * fixed cmake * lint * lint * trigger build * added invalid plugin error * added test for piping up error codes * clean up * test waypoint follower * only launch what is needed * waypoint test * revert lines for robot navigator * fix test * waypoint test * switched to uint16 * clean up * code review * todo to note * lint * remove comment * Update nav2_behavior_tree/include/nav2_behavior_tree/bt_action_server_impl.hpp Co-authored-by: Steve Macenski <[email protected]> * rename error_codes * error code for navigate to pose * error codes for navigate through poses. * error codes for navigate through poses * message update for waypoint follower * rename to error code * update node xml Co-authored-by: Joshua Wallace <josho.wallace.com> Co-authored-by: Steve Macenski <[email protected]> * Smoother error codes (#3296) * minimum error code set * test for invalid smoother * undo * added rest of error tests * Solve bug when CostmapInfoServer is reactivated (#3292) * Solve bug when CostmapInfoServer is reactivated * Smoothness metrics update (#3294) * Update metrics for path smoothness * Support Savitzky-Golay smoother * preempt/cancel test for time behavior, spin pluguin (#3301) * include preempt/cancel test for time behavior, spin pluguin * linting * fix bug in code * removed changes to simple_smoother * reverted simple_smoother * revert * revert * updated constrained smoother * revert * added smoother error for invalid path * linting * invalid path test * added error codes * Timeout exception thrown by smoothers * code review Co-authored-by: Joshua Wallace <josho.wallace.com> Co-authored-by: MartiBolet <[email protected]> Co-authored-by: Alexey Merzlyakov <[email protected]> Co-authored-by: Stevedan Ogochukwu Omodolor <[email protected]> * Behavior Tree uses Error Codes (#3324) * rough outline for condition node * completed error code condition * behavior tree with error codes * created generic code ex * test for error_code_condition * generic error code bt node * remove error code condition * updates * updated error code condition * would a controller recovery help * rename * added planner recovery condition * initial draft * complete with one error code as input * revert cmake * bt conversion test * code review * code review * code review * refactor behavior tree tests * cleanup * final cleanup * uncomment * removed logger * function header update * update bt to include would a planner recovery help * copyright cleanup * added bt node for smoother recovery * smoother test * costmap filter test fix * remove include * test if commit counted * update copyright * code review Co-authored-by: Joshua Wallace <josho.wallace.com> * Behavior server error codes (#3539) * empty error codes * add error codes for behaviors * updated assisted teleop * pass tests * added error codes to bt nodes * Enable Visualizations for Dev Container (#3523) * Add visualizer stage to install demo dependencies * Install foxglove * Install gzweb * Add hack for resolvable mesh URIs located by the aws SDL model files - https://github.com/aws-robotics/aws-robomaker-small-warehouse-world/pull/24 * Revert hack and use fork that fixes issues with deploy.sh - https://github.com/osrf/gzweb/pull/248 * Update target stage to visualizer * Comment out gzclient and rviz for debugging * Add hack for resolvable mesh URIs as migrating the python3 scripts still hasn't resolved the issue * Reorder stages for readability by keeping sequential builder and tester stages adjacent while keeping tester stage the default exported target * fix typo * Install gdb for launching ros launch files using the ROS VS Code extension - https://github.com/ms-iot/vscode-ros/issues/588 * Add vscode tasks file * Add Start Gzweb task * Add Start Foxglove tasks for bridge and studio * Add Start Foxglove compound task using dependsOn * Set default problemMatcher to empty to avoid nagging the user to select one as currently none really support our use case * Source overlay before running foxglove_bridge to ensure nav2 message types are defined by inlining all args into command and sourcing workspace setup * Formatting * Generalize and simplify hack * Generalize gazebo model discovery * Patch gzserver to run headless using xvfb to avoid host/platform specific x11 quirks exposed by vscode automatic x11 forwarding This is needed to provide gazebo a virtual frame buffer as it still need one after all these years. This also avoids the need modifying launch files to call xvfb-run - https://github.com/microsoft/vscode-remote-release/issues/8031 - https://github.com/gazebosim/gazebo-classic/issues/1602 * Set isBackground for start tasks * Add stop tasks * Add restart foxglove task * Switch to shell for commanding pkill to gracefully return 0 when process is not running allowing sequence of dependsOn tasks to run such as for the restart tasks * Add icons to tasks for readability * Add restart gzweb task * Add global start, stop, and restart tasks for all background visualization tasks * Formatting * Hide tasks users need not run manually to avoid cluttering up the run task quick pick * Shorten label for background tasks so they succinctly show from the running task list * Show global start and stop visualizations tasks as they may be too helpful to hide * Revert "Comment out gzclient and rviz for debugging" This reverts commit 0addae2a1ee70c5771055c5dd8fa050af438b896. * Add --ipc=host to runArgs to enable shared memory transport - https://community.rti.com/kb/communicate-between-two-docker-containers-using-rti-connext-dds-and-shared-memory * Add --pid=host to runArgs to simplify discovery - https://community.rti.com/kb/communicate-between-two-docker-containers-using-rti-connext-dds-and-shared-memory * Add to runArgs to simplify debugging - https://code.visualstudio.com/docs/devcontainers/create-dev-container#_use-docker-compose * Add comments * Comment out runArgs unintended side effects or cross talk between containers by default also avoids interfering with vscode's X11 forwarding * ignore warning (#3543) * Split overlay setup into multiple steps by skipping slower to build leaf packages during preparation, then store cache and repeat setup without skipping packages * Skip restore steps after already preping overlay to avoid needlessly downloading the same overlay cache * Revert resource_class to default medium as the build resource usage seldom maxes out 4 cores nor uses more than 2GB RAM * Fix circleci config syntax by setting skip default as empty string to keep it an optional parameter * Fix circleci config syntax missing angle brackets * ignore warning * Revert "Revert resource_class to default medium" This reverts commit 44375a1c6ef6e730e47e30c7d910a15145d4ee2f. * Fix nested defaults to avoid dropping of cache after storing during test jobs by ensuring restore_overlay_workspace still sets restore: true --------- Co-authored-by: ruffsl <[email protected]> * code review * code review * removed unsigned short * lint errer * error codes in main bts * behavior error code range change --------- Co-authored-by: Ruffin <[email protected]> * correct error message (#3631) (#5) * correct error message * clean up * cleanup * remove header Co-authored-by: Joshua Wallace <[email protected]> * Option for ObstacleLayer to not override StaticLayer's unknown parts (#3612) (#6) * Add updateWithMaxWithoutUnknownOverride * Add missing break to switch case * Add additional NO_INFORMATION check to make more robust * Add CombinationMethod enum with combination_method_from_int * Rename override to overwrite * Update docs of combination_method_from_int * Move definitions to costmap_layer and remove function_name param * Replace logger with node's logger * Fix linting errors * Add test * Add CombinationMethod::Max test as a counter-case * Let Navigators have different error codes (#3642) (#7) * Change ERROR to DEBUG * INFO message on init * format code * Replace newlines with spaces * Return feedback from bt action node * Fix feedback type error * Increase wait for action server timeout * Add param to calculate remaining time * Add orientation difference to distance remaining * Fix distance remaining crash * Add doors to distance remaining * Revert "Add doors to distance remaining" This reverts commit e0334ea57a66824d06e1089a400e43f4e87c1867. --------- Signed-off-by: Trung Kien <[email protected]> Signed-off-by: Øystein Sture <[email protected]> Signed-off-by: ryzhikovas <[email protected]> Signed-off-by: Ryan Friedman <[email protected]> Signed-off-by: Nick Lamprianidis <[email protected]> Signed-off-by: ymd-stella <[email protected]> Signed-off-by: Christian Henkel <[email protected]> Signed-off-by: Anton Kesy <[email protected]> Co-authored-by: Steve Macenski <[email protected]> Co-authored-by: Tony Najjar <[email protected]> Co-authored-by: HAIDAR OBEID <[email protected]> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Tony Najjar <[email protected]> Co-authored-by: nakai-omer <[email protected]> Co-authored-by: Alexey Merzlyakov <[email protected]> Co-authored-by: Jose Luis Blanco-Claraco <[email protected]> Co-authored-by: DylanDeCoeyer-Quimesis <[email protected]> Co-authored-by: Trung Kien <[email protected]> Co-authored-by: HovorunB <[email protected]> Co-authored-by: Ruffin <[email protected]> Co-authored-by: Øystein Sture <[email protected]> Co-authored-by: mrmara <[email protected]> Co-authored-by: antoniomarangi <[email protected]> Co-authored-by: Griswald Brooks <[email protected]> Co-authored-by: BriceRenaudeau <[email protected]> Co-authored-by: Dirk Braunschweiger <[email protected]> Co-authored-by: Dirk Braunschweiger <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Alberto Tudela <[email protected]> Co-authored-by: ryzhikovas <[email protected]> Co-authored-by: Alexandr Buyval <[email protected]> Co-authored-by: Hyung-Taik Choi <[email protected]> Co-authored-by: Filipe Cerveira <[email protected]> Co-authored-by: Ryan <[email protected]> Co-authored-by: Nick Lamprianidis <[email protected]> Co-authored-by: gyaanantia <[email protected]> Co-authored-by: ymd-stella <[email protected]> Co-authored-by: Vineet <[email protected]> Co-authored-by: Chuanhong Guo <[email protected]> Co-authored-by: Christian Henkel <[email protected]> Co-authored-by: Hyunseok <[email protected]> Co-authored-by: Anton Kesy <[email protected]> Co-authored-by: redvinaa <[email protected]> Co-authored-by: Joshua Wallace <[email protected]> Co-authored-by: MartiBolet <[email protected]> Co-authored-by: Stevedan Ogochukwu Omodolor <[email protected]> Co-authored-by: turtlewizard73 <[email protected]>
* Humble sync 6 June 9: 1.1.7 (ros-navigation#3616) * Option allowing to use simple lookupTransform API (ros-navigation#3412) * Option allowing to use simple lookupTransform API ignoring time shifts between source and base frame during the movement * Refine comments * Fix wrong warning message format (ros-navigation#3416) * Fix wrong warning message format (Closes ros-navigation#3415) * fix code formatting * nav2_dwb_controller: add forward_prune_distance parameter (ros-navigation#3374) Until now, the prune_distance was used as distance threshold to shorten the upcoming path when shorten_transformed_plan was enabled. However, the prune and shortening mechanisms are de-correlated mechanisms. One could wish to use a different shortening distance for upcoming points, than the prune distance used for passed points. For this reason, a new parameter "forward_prune_distance" was added. * Fix service_name for server_name in cancel assisted teleop node * Fix mask coordinates calculation in worldToMask (ros-navigation#3418) * Remove goal checker default from follow path node * Correct CostmapFilters copyrights (ros-navigation#3423) * Correct the parameter description for AMCL (ros-navigation#3451) Signed-off-by: Trung Kien <[email protected]> * Add default service name to BTServiceNode (ros-navigation#3448) * Add default service name to BtServiceNode * docstring * fix initialization-list order * Update nav2_behavior_tree/include/nav2_behavior_tree/bt_service_node.hpp Co-authored-by: Steve Macenski <[email protected]> --------- Co-authored-by: Steve Macenski <[email protected]> * Fix Typos (ros-navigation#3452) * removing galactic from table as EOL (ros-navigation#3460) * Support for Dev Containers and Codespaces (ros-navigation#3457) * Alias image tag over current branch name * Duplicate build and push steps for dev tag * Alias image tag over current branch name * Modify build and push steps for dev tag * Build and push dev tag first to not cache from stale stages as otherwise caching from multple regestry images seems error prone * Revert "Build and push dev tag first" as otherwise the build failer durring the dev tag could then still block build of the main tag This reverts commit 12dd5b1. * Cache from multple reference images while giving layers from the main tag priority this assumes that cache-from prioritizes firstly listed references https://github.com/moby/buildkit/blob/0ad8d61575be009ce6478edf1d85716849c8ff1a/solver/llbsolver/bridge.go#L92 * Cache tests in dev image as well colcon cache can then skip tests for uneffected packages * Add devcontainer.json * Ignore doc for image builds * Add more extensions * Change workspaceFolder to root src path to avoid auto generating .vscode folder in repo created by ms-iot.vscode-ros extension upon configuring ros packages with c_cpp_properties.json * Enable features for github-cli * Add docs about codespaces and have it opened when starting codespaces * Update update_ci_image.yaml to fix duplicate step ids and add workflow file to push paths * Patch CI actions and Dockerfiles (ros-navigation#3468) * Unset default value for FAIL_ON_TEST_FAILURE as unsetting it via --build-arg seems unreliable docker/compose#3608 * Use build arg default for failing on test failers * Update from deprecated set-output commands https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/ * Use Codespaces prebuilds (ros-navigation#3470) * Add commands to devcontainer * Set builtin bash to be safe https://gist.github.com/mohanpedala/1e2ff5661761d3abd0385e8223e16425 https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ * Setup workspace on create * Revert use of set -u for bash don't raise error due to variables otherwise colcon setup.sh chokes from using an unbounded path variable * Add safe.directory for git config otherwise colcon cache errors out because of issues with git due to complex user mapping magic that vscode does with devcontainers https://stackoverflow.com/questions/72978485/git-submodule-update-failed-with-fatal-detected-dubious-ownership-in-repositor also used by Moveit2: moveit/moveit2#1994 https://github.blog/2022-04-12-git-security-vulnerability-announced/ * Set env using remoteEnv instead of inlining them in scripts * Revert to using the main tag now that the tester stage has been replicated with the new devcontainer script commands instead * formating * Scrap `-dev` image tag and use codspaces prebuilds instead * Build incrementally from update content command by copying the build workspace steps from circleci config * Adapt the build workspace steps for bash * Fix for different ceres isinf() API (ros-navigation#3471) * Fixing name of security launch file * Clean up pending service client request on interrupt/timeout (ros-navigation#3479) Signed-off-by: Øystein Sture <[email protected]> * Added str cast to parse int (ros-navigation#3486) Co-authored-by: antoniomarangi <[email protected]> * Add flag to not send request in BTServiceNode (ros-navigation#3431) * Add flag to not send request in BTServiceNode * rename goal to request * Fail if should not send goal * Update nav2_behavior_tree/include/nav2_behavior_tree/bt_service_node.hpp Co-authored-by: Steve Macenski <[email protected]> * Update nav2_behavior_tree/include/nav2_behavior_tree/bt_service_node.hpp Co-authored-by: Steve Macenski <[email protected]> * . * fix linter * fix CI --------- Co-authored-by: Steve Macenski <[email protected]> * Prepare test results to only use junit/xunit schema (ros-navigation#3441) * Set ctest arg to output junit To try and help CircleCI to parse the output files https://stackoverflow.com/a/70774733/2577586 * Replace the original Test.xml by outputting the junit to the same filename Context: https://github.com/colcon/colcon-cmake/blob/8f1b92a190b2ad4289ecf837c3200d540c13fdd9/colcon_cmake/task/cmake/test.py#L133 * Fix default formatting to a list WARNING:colcon.colcon_defaults.argument_parser.defaults:Default value 'ctest-args' for parser 'test' should be a list, not: --output-junit Test.xml * Revert junit file name https://circleci.com/docs/collect-test-data/#ctest-for-c-cxx-tests * Fine and rename ctest summary Test.xml * Fix find path * Simplify extention renaming * Copy ctest junit file into test_results so that they can be stored by CI * Revert ctest config modifications * Prepare Test Results by removing Test.xml generated by ctest to simplify fix for circleci * Reorder storage of test result artifacts before Test.xml files are removed so that they can still be archived and viewed for later * Use find command * Container retention via version tagging (ros-navigation#3491) * Use github action expression syntax to alias over github repository name * Tag by version instead of by timestamp * Avoid pushing untagged image to GHCR by setting provenance to false now that provenance is enabled by default as of v4 of docker/build-push-action - docker/build-push-action#781 - docker/build-push-action#778 * Use checkout action to set version output (ros-navigation#3492) Otherwise there is no source code to use to set the version output. Fixes: ros-navigation#3491 * Change directory to inside checked out repo (ros-navigation#3493) or relative path under $GITHUB_WORKSPACE that actions/checkout places the repository * Write and read from correct output mapping (ros-navigation#3494) * Revert "Change directory to inside checked out repo (ros-navigation#3493)" This reverts commit 332c1fb. * Add `version` to outputs for check step and use output from `check` id * Use output from check_ci_files job * updating world in simple commander for TB3 package change (ros-navigation#3495) * Ensure version output is always set (ros-navigation#3503) even when github.event_name != 'push' by moving run step to same job as build-push action. Also set context path provided by checkout action to avoid future nonintuitive behavoir using default Git context, even when the checkout action appears to be being used. - https://github.com/docker/build-push-action#git-context - https://github.com/docker/build-push-action#path-context * Add labels to pushed image versions (ros-navigation#3505) using Pre-Defined Annotation Keys as defined by The OpenContainers Annotations Spec - https://specs.opencontainers.org/image-spec/annotations/#pre-defined-annotation-keys - https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows - https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#get-a-repository * Typo README.md (ros-navigation#3506) * [Velocity smoother] Set zeros command if timeout (ros-navigation#3512) * Set zeros command if timeout * Fix lint * Fix gtest increase time to allow deceleration * Always update last_cmd_ * Revert test modif * remove test logs * Fix paste error * Update velocity_smoother.cpp * Update velocity_smoother.cpp * Improve Dev Container ergonomics (ros-navigation#3482) * Install and enable bash autocompletion by using apt durring on create command and by copying skelton .bashrc file that sources it by default * Edit apt for autocomplete by disabling docker-clean from containerized ubuntu * Add ROS2 Ament Task Provider extension Provides tasks and problem matchers for ROS2 projects using ament https://marketplace.visualstudio.com/items?itemName=althack.ament-task-provider * Source underlay for extentions to allow them to find the path to ros binaries such as ament_cpplint needed for althack.ament-task-provider * Target new dever stage in Dockerfile * Reduce need for internet after image build by installing developer dependencies earlier * Edit apt caching before apt updating * Source underlay systemwide this is a hacky workarround to ensure VS Code can run ShellExecution tasks with the ros envorment included in PATH otherwise, postponing this to the on-create-command results in vscode extentions not finding system installed ros commands this also works for all user shells regardless of how devontainers could change the user * Postpone bashrc setup to postCreateCommand once the dev container has been assigned to a user for the first time * Cleanup onCreateCommand as we don't use ros_entrypoint.sh for development and so it doesn't really need to be updated * Quite down the logs when building devcontainer * Formatting * Add refrence ccp properties config file generated from the vscode ROS extention but with the hardcoded paths in includePath deleted * Update version of cppStandard for ROS Rolling * Update workspaceFolder to use new .vscode folder * Mount ccache directory to volume to speed up rebuilding devcontainer whenever onCreateCommand is triggered because of modifications to .devcontainer/ files * Avoid use of containerEnv to express ccache direcotry as doing so is not possable, for more info: - https://stackoverflow.com/a/75759647/2577586 - microsoft/vscode-remote-release#7147 (comment) Just target a path in the temp direcotry instead * Stage auto generated includePath * Remove workspace install from include path except for autogenerated headers from message packages * Avoid hardcoded path to sorce folder * Avoid hardcoded path to install folder but this is still rather fragile as the reletive path between workspaceFolder and the colcon workspace isn't fixed * Sort list of paths * Remove cpp properties configuration as it seems it's existance prevents autoupdating the includePaths property unless user manually runs the vscode command `>ROS:Update C++ Properties` https://github.com/ms-iot/vscode-ros/blob/47d8f14f4ec0498cd9e8381e6fcc5f47abb340f2/src/extension.ts#L71 and even when this command is invoked it blows aways any customizated properties anyhow issue about wrong cppStandard tracked here: ms-iot/vscode-ros#818 * Fix typo to move docker-clean from loaded config path * fix data race: addFilter() and resizeMap() can be executed concurrently (ros-navigation#3518) Co-authored-by: Dirk Braunschweiger <[email protected]> * fix data race: prohibit resizeMap() during plugin/filter initialization (ros-navigation#3522) Co-authored-by: Dirk Braunschweiger <[email protected]> * Mount overlay workspace into Dev Container via volume (ros-navigation#3524) * Add volume for overlay to avoid rebuilding it from scratch whenever the dev container is rebuilt this saves startup time locally when fiddling with the configs * Append devcontainerId to volume name to avoid conflicts with other devcontainers note that devcontainerId is stable across rebuilds - https://containers.dev/implementors/json_reference/#variables-in-devcontainerjson * Call updateContentCommand from onCreateCommand to deduplicate scripts and keep setup DRY given the addition of a mounted overlay volume which could include a prebuilt colcon workspace well before the dev container is created/rebuilt * Comment out colcon clean from setup to avoid unintentional removal of built packages from the persistent overlay workspace volume. Users can uncomment the line locally or simply remove the overlay workspace volume if they want to rebuild packages from scratch. * Format json * Add headless and use_rviz LaunchConfigurations to demo launch files (ros-navigation#3527) * Add headless and use_rviz LaunchConfigurations in nav2_simple_commander demo launch files for whether to start rviz or gzclient to simplify their use in headless environments * Fix headless logic to match tb3_simulation_launch.py for launch arg consistency * Fix State-Lattice planner crashes due to FP precision loss (ros-navigation#3531) * Fix State-Lattice planner crashes due to FP precision loss * Move testcase comment * Add PoseProgressChecker (ros-navigation#3530) * add rotation progress checker * clean include * add stopped goal checker reset test * add rotation progress checker tests * uncrustify * better name: PoseProgressChecker instead of RotationProgressChecker * camelCase * uncrustify * rename in tests * more rename * simplify parentheses * faster and better tests --------- Co-authored-by: Guillaume Doisy <[email protected]> * [velocity_smoother] Fix accel and deccel inverted for negative speeds (ros-navigation#3529) * fix inverted accel / deccel * handle speed through 0.0 * add applyConstraints tests * fold logic * same logic in findEtaConstraint * lint * Update nav2_velocity_smoother/src/velocity_smoother.cpp * Update nav2_velocity_smoother/src/velocity_smoother.cpp * findEtaConstraint tests * space * lint * typos * comment typos --------- Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Steve Macenski <[email protected]> * Enable Visualizations for Dev Container (ros-navigation#3523) * Add visualizer stage to install demo dependencies * Install foxglove * Install gzweb * Add hack for resolvable mesh URIs located by the aws SDL model files - aws-robotics/aws-robomaker-small-warehouse-world#24 * Revert hack and use fork that fixes issues with deploy.sh - osrf/gzweb#248 * Update target stage to visualizer * Comment out gzclient and rviz for debugging * Add hack for resolvable mesh URIs as migrating the python3 scripts still hasn't resolved the issue * Reorder stages for readability by keeping sequential builder and tester stages adjacent while keeping tester stage the default exported target * fix typo * Install gdb for launching ros launch files using the ROS VS Code extension - ms-iot/vscode-ros#588 * Add vscode tasks file * Add Start Gzweb task * Add Start Foxglove tasks for bridge and studio * Add Start Foxglove compound task using dependsOn * Set default problemMatcher to empty to avoid nagging the user to select one as currently none really support our use case * Source overlay before running foxglove_bridge to ensure nav2 message types are defined by inlining all args into command and sourcing workspace setup * Formatting * Generalize and simplify hack * Generalize gazebo model discovery * Patch gzserver to run headless using xvfb to avoid host/platform specific x11 quirks exposed by vscode automatic x11 forwarding This is needed to provide gazebo a virtual frame buffer as it still need one after all these years. This also avoids the need modifying launch files to call xvfb-run - microsoft/vscode-remote-release#8031 - gazebosim/gazebo-classic#1602 * Set isBackground for start tasks * Add stop tasks * Add restart foxglove task * Switch to shell for commanding pkill to gracefully return 0 when process is not running allowing sequence of dependsOn tasks to run such as for the restart tasks * Add icons to tasks for readability * Add restart gzweb task * Add global start, stop, and restart tasks for all background visualization tasks * Formatting * Hide tasks users need not run manually to avoid cluttering up the run task quick pick * Shorten label for background tasks so they succinctly show from the running task list * Show global start and stop visualizations tasks as they may be too helpful to hide * Revert "Comment out gzclient and rviz for debugging" This reverts commit 0addae2. * Add --ipc=host to runArgs to enable shared memory transport - https://community.rti.com/kb/communicate-between-two-docker-containers-using-rti-connext-dds-and-shared-memory * Add --pid=host to runArgs to simplify discovery - https://community.rti.com/kb/communicate-between-two-docker-containers-using-rti-connext-dds-and-shared-memory * Add to runArgs to simplify debugging - https://code.visualstudio.com/docs/devcontainers/create-dev-container#_use-docker-compose * Add comments * Comment out runArgs unintended side effects or cross talk between containers by default also avoids interfering with vscode's X11 forwarding * [nav2_planner] Fix costmap thread reset on cleanup (ros-navigation#3548) * remove costmap thread reset on cleanup * Init costmap thread in on_configure method * Move costmap_thread init in on_configure method * Add IsBatteryChargingCondition (ros-navigation#3553) * Add IsBatteryChargingCondition * Minor fixes in battery charging and add testing * Fix format * Added isBatteryChargingCondition BT node to params * Impl noise filtering layer in the costmap_2d (ros-navigation#2567) Signed-off-by: ryzhikovas <[email protected]> * Improve Dev Container Web App Visualization (ros-navigation#3551) * Add Caddyfile to reverse proxy websockets in an attempt to avoid authentication tokens in headers when forwarding ports from codespaces via web interface - https://docs.github.com/en/codespaces/developing-in-codespaces/forwarding-ports-in-your-codespace#using-command-line-tools-and-rest-clients-to-access-ports - https://caddyserver.com/docs/quick-starts/reverse-proxy - https://caddy.community/t/caddy-v2-how-to-proxy-websoket-v2ray-websocket-tls/7040/13 * Update caddy related tasks * Rename Gzweb task to Gzweb Bridge to make room for more gzweb tasks * Add Gzweb Client Task * Add Caddyfile to reverse proxy websockets now for Gzweb * Specify config file to avoid crosstalk between caddy stop commands * Fix reverse proxy for websockets by correcting matcher using headers as websocket request header value is lowercase for gzweb and foxglove * Comment out log output files for debugging * Simplify tasks by removing client tasks * Stop tasks by using terminate via the workbench.action.tasks.terminate command * Move Caddyfile * Add Web Server tasks * Move Caddyfile * Update log output file path * Update root path * Update reverse_proxy for both gzweb and foxglove by using the path argument for respective matchers - https://caddyserver.com/docs/caddyfile/matchers#path-matchers * Use snippets to keep Caddyfile DRY - https://caddyserver.com/docs/caddyfile/concepts#snippets * Use rewrite to catch trailing slash as file_server defaults do not correct reverse_proxy. This make typing the websocket URL more forgiving - https://caddyserver.com/docs/caddyfile/patterns#trailing-slashes * Improve websocket snippet to keep Caddyfile DRY * Use header_regexp for case-insensitive matching given web port forwarding from Codespaces is odd and rewrites the value of this header field to lowercases even when local browser request is sent as `Upgrade` * Add helper index page to web server to link to web apps for reverse proxy * Limit templates to fix gzweb by adding matcher for only root index otherwise gzweb's own index.html gets overwritten * Add comments to Cadyfile to document tricky configuration * Stage working redirect * Simplify index.html * Add helper redirect to simplify foxglove to set the respective queries values to automate websocket setup, and ensure the websocket schema matches the https request * Avoid hardcoding port number * Clean up comments * Use header to compute redirect to take into account requesting forwarding or more codespace port forwarding shenanigans * Use shorthand placeholders - https://caddyserver.com/docs/caddyfile/concepts#placeholders * Formatting * Keep trailing slash to stay consistent with caddy file_server directive that serves a 308 Permanent Redirect for both foxglove and gzweb paths anyway * Refactor matcher logic to account for requests either from host ports from local dev containers or forwarded requests from codespace web port forwarding * Split snippet into globals for composability * Update comments * Add Placeholders for debugging * Use tables to center * Use github markdown - https://github.com/sindresorhus/github-markdown-css * Simplify vars * Rename vars * Revert "Rename vars" as dotted var names do not work in Caddyfile This reverts commit 3e2d1b3. * Add System Monitor to debug CPU load and memory issues * Update headings * Update layout * Update layout * Add Foxglove layout for Nav2 * Symlink assets folder for web server * Fetch Foxglove layout using layoutUrl a new parameter to load layout json data from URL - https://github.com/orgs/foxglove/discussions/217 * Cleanup * Use fork to fetch Foxglove layout using layoutUrl until this PR is merged: - https://github.com/foxglove/studio/pull/5987 * Update Caddyfile to handle relative root by using local srv folder * Inject mobile view html tags using the caddy replace module - https://caddyserver.com/docs/modules/http.handlers.replace_response - https://github.com/caddyserver/replace-response * Simplify Caddyfile * Use snippet for apps * Simplify Caddyfile * Simplify Caddyfile * Build caddy using custom modules * Remove unused symlinks * Add comments * Use environment and defined variables for config to avoid hard coded paths * Add FoxgloveUrl to vars for reuse in templates * Fix trailing slash for DataSourceUrl * Use exec to run gzserver with xvfb to prevent ros launch from orphaning process and ensure gzserver receives SIGTERM signal given gzserver often hangs after only SIGINT - https://unix.stackexchange.com/a/196053/213124 * Update redirect for foxglove to redirect from path /foxglove/autolayout * Add redirect for foxglove to redirect from path /foxglove/autoconnect but does not use LayoutUrl as to not change from cached layout * Use web app manifest to set display as standalone - https://web.dev/add-manifest/ - https://developer.mozilla.org/en-US/docs/Web/Manifest * Template manifest files to embed host info into app name * Add manifests for other web apps * Add shortcuts for Foxglove - https://developer.mozilla.org/en-US/docs/Web/Manifest/shortcuts - https://web.dev/app-shortcuts/ * Format * Update comments * Revert use of fork * Remove debug directive * Improve usability of PWAs in Dev Containers (ros-navigation#3576) * Add WIP icons * Add WIP icons for gzweb * Add WIP icons for glances * Set cross origin to use credentials ensuring auth cookie is included in request header when requesting for web app manifest file thus avoiding CORS policy violations in browser when accessing forwarded codespaces ports from the web > The request for the manifest is made without credentials (even if it's on the same domain), thus if the manifest requires credentials, you must include `crossorigin="use-credentials"` in the manifest tag. - https://web.dev/add-manifest/ - https://stackoverflow.com/a/57184506/2577586 * Use ReqHost variable in templates to account for X-Forwarded-Host value in header * Delete duplicate manifest * Set id property in app manifests so we can address them independently from their start_url - https://developer.chrome.com/blog/pwa-manifest-id/ * Ensure apps are uniquely identifies by adding trailing slash to id and thus different URI directories * Refactor root landing page into nav2 app by moving page file into nav2 sub folder adding root redirect pointing to /nav2/ and updating html, markdown, manifest files respectively * Fix https detection for Caddy reverse proxies by also checking X-Forwarded-Proto in request header * Remove unnecessary files * Prune smaller images * Prune duplicate icon * Clean up html tags * Update manifest icons * Rename icons * Revert "Prune duplicate icon" This reverts commit 5710401. * Add back favicon for shortcut * Add self index for completeness and bookmarking * Simplify icon linking * Delete binary files * Fix hyperlink path * Include image files using gitattributes to track these binary files via git LFS * Add icons using git lfs * Standardized all icon paths * Use external links for icons to avoid the need for using git LFS although this is a bit of a hack * Stage any and maskable icons * Use any and masked icons * Set colors to match maskable icon colors * Update icon * Use lossless compression without removing background - https://shortpixel.com/online-image-compression * Use WebP instead of PNG for smaller file sizes - https://en.wikipedia.org/wiki/WebP * Move icons into icons folder * Use _SRV environment variables for service paths * Download media files from github during docker image build to avoid adding always online dependencies when creating or starting dev containers * Delete media icons from git repo now that we download media from anonymized URLs on github - https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/attaching-files * Add comments * Enable file browsing for non app paths for remote debugging of media and asset files * Consolidate assets into single folder * Add links for file browser paths to Server Diagnostics * Delete unused symlink * Update landing page to match manifest by including same shortcuts and start url * Patch gzweb to disable modelList avoiding 404s for thumbnails as they are hardcoded into js * Update comments * Simplify Caddyfile by reverting to symlinking but add ROOT_SRV env for custom overriding * Loop over nav2 srv folders when symlinking to generalize over folder names * Add matcher for file browsing root directory while still redirecting to nav2 app by default * Use placeholders for root variable to consolidate env default fallback settings e.g `:/srv` * Promote file browser in Nav2 app shortcuts * Fix and update SRV envs * Postpone symlinking for Nav2 web app to when post-create-command script then runs given full repo is not copied into builder stage in Dockerfile. While this could be postponed to update-content-command leaving it here avoids blowing user changes after the container has been created or modified. * Add guard to check if srv folder exists * Add refresh rate shortcuts to glances * Add file browser shortcut to nav2 * Set scope for nav2 PWA to root to allow for opening child apps inside nav2 app * Display child apps in fullscreen mode by default as users can still open them in standalone via nav2 app given the nav2 app's scope is the parent root path * Update shortcuts and landing page * Document PWA scope and installation order when using Nav2 PWA scoped as root * Revert setting scope for nav2 PWA to root path as adding file browser shortcut to nav2 PWA is not worth the trouble of having to explain installation order caveats and URL launch behavior. File browser shortcut is still accessible from inside nav2 pwa launcher but merely displays in browser preview given root / is out of scope for /nav2/ * Update server diagnostics for troubleshooting * Verify checksum of archive before extraction incase anonymized URL changes expected archive * Fix the condition in ackerman motion model constraints (ros-navigation#3581) * Fix the condition in ackerman motion model constraints * Fix ackerman motion model tests * Fix another ackerman motion model test * Fix broken symlink for gzweb (ros-navigation#3585) to load world models * Fix broken link to contributing guidelines (ros-navigation#3587) The original URL (https://navigation.ros.org/contribute/index.html) seems not to exist, returning an HTTP 404. Hence, I've replaced the link with a page that seems most relevant. * Adding Our Sponsors - May 2023 (ros-navigation#3593) * adding our sponsors - may 2023 * adding blurb * adding links * adding links * adding links * adding Open Nav * Add CostmapFilterInfoServer as a component (ros-navigation#3596) * Resolve ros-navigation#3532: reset i (ros-navigation#3597) * [MPPI] empty path_follow_critic proper fix (ros-navigation#3599) * [MPPI] empty path_follow_critic proper fix * fix linting issue --------- Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Steve Macenski <[email protected]> * bumping humble to 1.1.7 for release --------- Signed-off-by: Trung Kien <[email protected]> Signed-off-by: Øystein Sture <[email protected]> Signed-off-by: ryzhikovas <[email protected]> Co-authored-by: Alexey Merzlyakov <[email protected]> Co-authored-by: Jose Luis Blanco-Claraco <[email protected]> Co-authored-by: DylanDeCoeyer-Quimesis <[email protected]> Co-authored-by: Trung Kien <[email protected]> Co-authored-by: HovorunB <[email protected]> Co-authored-by: Tony Najjar <[email protected]> Co-authored-by: Ruffin <[email protected]> Co-authored-by: Øystein Sture <[email protected]> Co-authored-by: mrmara <[email protected]> Co-authored-by: antoniomarangi <[email protected]> Co-authored-by: Tony Najjar <[email protected]> Co-authored-by: Griswald Brooks <[email protected]> Co-authored-by: BriceRenaudeau <[email protected]> Co-authored-by: Dirk Braunschweiger <[email protected]> Co-authored-by: Dirk Braunschweiger <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Alberto Tudela <[email protected]> Co-authored-by: ryzhikovas <[email protected]> Co-authored-by: Alexandr Buyval <[email protected]> Co-authored-by: Hyung-Taik Choi <[email protected]> Co-authored-by: Filipe Cerveira <[email protected]> * Fix merge conflict error (ros-navigation#3619) * fixing a second merge conflict resolution error (ros-navigation#3621) * fixing merge conflicts for release on humble sync 6 (ros-navigation#3623) * Fixing 3629 (ros-navigation#3630) * Fixing 3629 * Update planner_server.cpp * bumping humble to 1.1.8 for release sync 6 + bug patch * Fixing build warning (ros-navigation#3667) (ros-navigation#3673) (cherry picked from commit 7d4b199) Co-authored-by: Steve Macenski <[email protected]> * Fix the velocity smoother being stuck when the deadband is too high (ros-navigation#3690) (ros-navigation#3715) * Move last_cmd update before deadband * fix lint (cherry picked from commit cb34d0c) Co-authored-by: BriceRenaudeau <[email protected]> * Humble sync 7 August 4 1.1.9 (ros-navigation#3739) * Fix map not showing on rviz when navigation is launched with namespace (ros-navigation#3620) * updating mppi's path angle critic for optional bidirectionality (ros-navigation#3624) * updating mppi's path angle critic for optional bidirectionality * Update README.md * fixing path angle critic's non-directional bias (ros-navigation#3632) * fixing path angle critic's non-directional bias * adding reformat * adapting goal critic for speed to goal (ros-navigation#3641) * adapting goal critic for speed to goal * retuning goal critic * add readme entries * Update critics_tests.cpp * Fix uninitialized value (ros-navigation#3651) * In NAV2, this warning is treated as an error Signed-off-by: Ryan Friedman <[email protected]> * Fix rviz panel node arguments (ros-navigation#3655) Signed-off-by: Nick Lamprianidis <[email protected]> * Reduce out-of-range log to DEBUG (ros-navigation#3656) * Adding nan twist rejection for velocity smoother and collision monitor (ros-navigation#3658) * adding nan twist rejection for velocity smoother and collision monitor * deref * MPPI: Support Exact Path Following For Feasible Plans (ros-navigation#3659) * alternative to path align critic for inversion control * fix default behavior (enforce_path_inversion: false) (ros-navigation#3643) Co-authored-by: Guillaume Doisy <[email protected]> * adding dyaw option for path alignment to incentivize following the path's intent where necessary * add docs for use path orientations * fix typo --------- Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> * Fix smoother server tests (ros-navigation#3663) * Fix smoother server tests * Update test_smoother_server.cpp * nav2_bt_navigator: log current location on navigate_to_pose action initialization (ros-navigation#3720) It is very useful to know the current location considered by the bt_navigator for debug purposes. * nav2_behaviors: export all available plugins (ros-navigation#3716) It allows external packages to include those headers and create child classes through inheritance. * changing costmap layers private to protected (ros-navigation#3722) * adding error warnings around incorrect inflation layer setups in MPPI and Smac which impact performance substantially (ros-navigation#3728) * adding error warnings around incorrect inflation layer setups in MPPI and Smac which impact performance substantially * fix test failures * Update RewrittenYaml to support list rewrites (ros-navigation#3727) * allowing leaf key rewrites that aren't dcits (ros-navigation#3730) * adding checks on config and dynamic parameters for proper velocity and acceleration limits (ros-navigation#3731) * Fix Goal updater QoS (ros-navigation#3719) * Fix GoalUpdater QoS * Fixes * bumping Humble to 1.1.9 for release * fix merge conflict resolution in collision monitor node --------- Signed-off-by: Ryan Friedman <[email protected]> Signed-off-by: Nick Lamprianidis <[email protected]> Co-authored-by: Filipe Cerveira <[email protected]> Co-authored-by: Ryan <[email protected]> Co-authored-by: Nick Lamprianidis <[email protected]> Co-authored-by: BriceRenaudeau <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: DylanDeCoeyer-Quimesis <[email protected]> Co-authored-by: gyaanantia <[email protected]> Co-authored-by: Tony Najjar <[email protected]> * Fixing 3768: planner server lifecycle transition down (ros-navigation#3786) * Use ParameterFile (allow_substs) (ros-navigation#3706) (ros-navigation#3806) Signed-off-by: ymd-stella <[email protected]> Co-authored-by: ymd-stella <[email protected]> * Added missing destructor to MPPI critic manager (ros-navigation#3812) * Added missing virtual destructor * Updated CriticManger Destructor to be same as other branches * mppi: return NO_INFORMATION when the checked point is outside the costmap (ros-navigation#3816) (ros-navigation#3818) otherwise the controller crashes at ObstaclesCritic::costAtPose because x_i and y_i isn't initialized. (cherry picked from commit 6b250a7) Co-authored-by: Chuanhong Guo <[email protected]> * [Humble] Sync 8 - Sept 25 (ros-navigation#3836) * Same orientation of coordinate frames in rviz ang gazebo (ros-navigation#3751) * rviz view straight in default xy orientation Signed-off-by: Christian Henkel <[email protected]> * gazebo orientation to match rviz Signed-off-by: Christian Henkel <[email protected]> * rotating in direction of view --------- Signed-off-by: Christian Henkel <[email protected]> * Fix flaky costmap filters tests: (ros-navigation#3754) 1. Set forward_prune_distance to 1.0 to robot not getting lost 2. Correct map name for costmap filter tests * Fix missing mutex in PlannerServer::isPathValid (ros-navigation#3756) Signed-off-by: ymd-stella <[email protected]> * Rewrite the scan topic costmap plugins for multi-robot(namespace) before launch navigation. (ros-navigation#3572) * Make it possible to launch namspaced robot which rewrites `<robot_namespace>` to namespace. - It allows to apply namespace automatically on specific target topic path in costmap plugins. Add new nav2 params file for multi-robot(rewriting `<robot_namespace>`) as an example. - nav2_multirobot_params_all.yaml Modify nav2_common.ReplaceString - add condition argument * Update nav2_bringup/launch/bringup_launch.py Co-authored-by: Steve Macenski <[email protected]> * Add new luanch script for multi-robot bringup Rename luanch script for multi-robot simulation bringup Add new nav2_common script - Parse argument - Parse multirobot pose Update README.md * Update README.md Apply suggestions from code review Fix pep257 erors Co-authored-by: Steve Macenski <[email protected]> --------- Co-authored-by: Steve Macenski <[email protected]> * use ros clock for wait (ros-navigation#3782) * use ROS clock for wait * fix backport issue --------- Co-authored-by: Guillaume Doisy <[email protected]> * fixing external users of the BT action node template (ros-navigation#3792) * fixing external users of the BT action node template * Update nav2_behavior_tree/include/nav2_behavior_tree/bt_action_server_impl.hpp Co-authored-by: Guillaume Doisy <[email protected]> --------- Co-authored-by: Guillaume Doisy <[email protected]> * Using Simple Commander API for multi robot systems (ros-navigation#3803) * support multirobot namespaces * add docs * adding copy all params primitive for BT navigator (to ingest into rclcpp) (ros-navigation#3804) * adding copy all params primitive * fix linting * lint * I swear to god, this better be the last linting issue * allowing params to be declared from yaml * Update bt_navigator.cpp * some minor optimizations (ros-navigation#3821) * fix broken behaviortree doc link (ros-navigation#3822) Signed-off-by: Anton Kesy <[email protected]> * [MPPI] complete minor optimaization with floating point calculations (ros-navigation#3827) * floating point calculations * Update optimizer_unit_tests.cpp * Update critics_tests.cpp * Update critics_tests.cpp * 25% speed up of goal critic; 1% speed up from vy striding when not in use * bumping 1.1.9 to 1.1.10 for Humble release --------- Signed-off-by: Christian Henkel <[email protected]> Signed-off-by: ymd-stella <[email protected]> Signed-off-by: Anton Kesy <[email protected]> Co-authored-by: Christian Henkel <[email protected]> Co-authored-by: Alexey Merzlyakov <[email protected]> Co-authored-by: ymd-stella <[email protected]> Co-authored-by: Hyunseok <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Anton Kesy <[email protected]> * Update CMakeLists.txt (ros-navigation#3843) (ros-navigation#3845) (cherry picked from commit 2d6e9a9) Co-authored-by: Steve Macenski <[email protected]> * bump to 1.1.11 for release for AVX512 fixes * add option for sse4 and avs512 (ros-navigation#3853) (ros-navigation#3855) (cherry picked from commit 7274811) Co-authored-by: Steve Macenski <[email protected]> * Bumping to 1.1.12 for binary release of AVX512 patches * [MPPI Optimization] adding regenerate noise param + adding docs (ros-navigation#3868) (ros-navigation#3870) * adding regenerate noise param + adding docs * fix tests * remove unnecessary normalization * Update optimizer.cpp (cherry picked from commit 924f167) # Conflicts: # nav2_mppi_controller/README.md Co-authored-by: Steve Macenski <[email protected]> * Updating default map path * [MPPI] Reworked Path Align Critic; 70% faster + Tracks Paths Better! Edit: strike that, now 80% (ros-navigation#3872) (ros-navigation#3882) * adding regenerate noise param + adding docs * fix tests * remove unnecessary normalization * Update optimizer.cpp * adding refactored path alignment critic * fix visualization bug * speed up another 30% * remove a little jitter * a few more small optimizaitons * fixing unit tests * retain legacy critic * adding tests for legacy (cherry picked from commit 7009ffb) Co-authored-by: Steve Macenski <[email protected]> * Fix incorrect auto merge conflict issue * Use mutex to protect costmap reads. (backport ros-navigation#3877) (ros-navigation#3897) * Use mutex to protect costmap reads. (ros-navigation#3877) * Use mutex to protect costmap reads. Otherwise costmap can be read during a map update and return 0. * Revert "Use mutex to protect costmap reads." This reverts commit e16a44c. * Lock costmap before running MPPI controller. * Fix typo. * Protect against costmap updates in MPP and RotationShim controllers. --------- Co-authored-by: Leif Terry <[email protected]> (cherry picked from commit a1c9fd5) # Conflicts: # nav2_mppi_controller/src/controller.cpp * fix merge conflict --------- Co-authored-by: LeifHookedWireless <[email protected]> Co-authored-by: Steve Macenski <[email protected]> * Adjust the Variable types in Nav2_costmap_2d pkg in [nav2_humble] ros-navigation#3891 (ros-navigation#3900) (ros-navigation#3902) * image.hpp ros-navigation#3891 * Update image.hpp (cherry picked from commit 7a7c6da) Co-authored-by: GoesM <[email protected]> * Log if BT rate is exceeded (ros-navigation#3909) (ros-navigation#3913) (cherry picked from commit a11cdd8) Co-authored-by: Steve Macenski <[email protected]> * Update theta_star_planner.cpp (ros-navigation#3918) (ros-navigation#3922) (cherry picked from commit 0629ff3) Co-authored-by: Steve Macenski <[email protected]> * Fixing subtree issues with blackboard shared resources (3640) (backport ros-navigation#3911) (ros-navigation#3916) * Fixing subtree issues with blackboard shared resources (3640) (ros-navigation#3911) * fixing subtree issues * Update bt_action_server_impl.hpp (cherry picked from commit 4b4465d) # Conflicts: # nav2_behavior_tree/include/nav2_behavior_tree/bt_action_server_impl.hpp * Update bt_action_server_impl.hpp --------- Co-authored-by: Steve Macenski <[email protected]> * fix build Signed-off-by: kevin <[email protected]> * test Signed-off-by: kevin <[email protected]> * test Signed-off-by: kevin <[email protected]> * disdt Signed-off-by: kevin <[email protected]> * test Signed-off-by: kevin <[email protected]> * test Signed-off-by: kevin <[email protected]> * remove unused Signed-off-by: kevin <[email protected]> * test Signed-off-by: kevin <[email protected]> * test Signed-off-by: kevin <[email protected]> * fix spin Signed-off-by: ladianchad <[email protected]> * remove looprate log Signed-off-by: ladianchad <[email protected]> * removed loop rate waring Signed-off-by: ladianchad <[email protected]> --------- Signed-off-by: Trung Kien <[email protected]> Signed-off-by: Øystein Sture <[email protected]> Signed-off-by: ryzhikovas <[email protected]> Signed-off-by: Ryan Friedman <[email protected]> Signed-off-by: Nick Lamprianidis <[email protected]> Signed-off-by: ymd-stella <[email protected]> Signed-off-by: Christian Henkel <[email protected]> Signed-off-by: Anton Kesy <[email protected]> Signed-off-by: kevin <[email protected]> Signed-off-by: ladianchad <[email protected]> Co-authored-by: Steve Macenski <[email protected]> Co-authored-by: Alexey Merzlyakov <[email protected]> Co-authored-by: Jose Luis Blanco-Claraco <[email protected]> Co-authored-by: DylanDeCoeyer-Quimesis <[email protected]> Co-authored-by: Trung Kien <[email protected]> Co-authored-by: HovorunB <[email protected]> Co-authored-by: Tony Najjar <[email protected]> Co-authored-by: Ruffin <[email protected]> Co-authored-by: Øystein Sture <[email protected]> Co-authored-by: mrmara <[email protected]> Co-authored-by: antoniomarangi <[email protected]> Co-authored-by: Tony Najjar <[email protected]> Co-authored-by: Griswald Brooks <[email protected]> Co-authored-by: BriceRenaudeau <[email protected]> Co-authored-by: Dirk Braunschweiger <[email protected]> Co-authored-by: Dirk Braunschweiger <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Guillaume Doisy <[email protected]> Co-authored-by: Alberto Tudela <[email protected]> Co-authored-by: ryzhikovas <[email protected]> Co-authored-by: Alexandr Buyval <[email protected]> Co-authored-by: Hyung-Taik Choi <[email protected]> Co-authored-by: Filipe Cerveira <[email protected]> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Co-authored-by: Ryan <[email protected]> Co-authored-by: Nick Lamprianidis <[email protected]> Co-authored-by: gyaanantia <[email protected]> Co-authored-by: ymd-stella <[email protected]> Co-authored-by: Vineet <[email protected]> Co-authored-by: Chuanhong Guo <[email protected]> Co-authored-by: Christian Henkel <[email protected]> Co-authored-by: Hyunseok <[email protected]> Co-authored-by: Anton Kesy <[email protected]> Co-authored-by: LeifHookedWireless <[email protected]> Co-authored-by: GoesM <[email protected]> Co-authored-by: kevin <[email protected]>
* Add Caddyfile to reverse proxy websockets in an attempt to avoid authentication tokens in headers when forwarding ports from codespaces via web interface - https://docs.github.com/en/codespaces/developing-in-codespaces/forwarding-ports-in-your-codespace#using-command-line-tools-and-rest-clients-to-access-ports - https://caddyserver.com/docs/quick-starts/reverse-proxy - https://caddy.community/t/caddy-v2-how-to-proxy-websoket-v2ray-websocket-tls/7040/13 * Update caddy related tasks * Rename Gzweb task to Gzweb Bridge to make room for more gzweb tasks * Add Gzweb Client Task * Add Caddyfile to reverse proxy websockets now for Gzweb * Specify config file to avoid crosstalk between caddy stop commands * Fix reverse proxy for websockets by correcting matcher using headers as websocket request header value is lowercase for gzweb and foxglove * Comment out log output files for debugging * Simplify tasks by removing client tasks * Stop tasks by using terminate via the workbench.action.tasks.terminate command * Move Caddyfile * Add Web Server tasks * Move Caddyfile * Update log output file path * Update root path * Update reverse_proxy for both gzweb and foxglove by using the path argument for respective matchers - https://caddyserver.com/docs/caddyfile/matchers#path-matchers * Use snippets to keep Caddyfile DRY - https://caddyserver.com/docs/caddyfile/concepts#snippets * Use rewrite to catch trailing slash as file_server defaults do not correct reverse_proxy. This make typing the websocket URL more forgiving - https://caddyserver.com/docs/caddyfile/patterns#trailing-slashes * Improve websocket snippet to keep Caddyfile DRY * Use header_regexp for case-insensitive matching given web port forwarding from Codespaces is odd and rewrites the value of this header field to lowercases even when local browser request is sent as `Upgrade` * Add helper index page to web server to link to web apps for reverse proxy * Limit templates to fix gzweb by adding matcher for only root index otherwise gzweb's own index.html gets overwritten * Add comments to Cadyfile to document tricky configuration * Stage working redirect * Simplify index.html * Add helper redirect to simplify foxglove to set the respective queries values to automate websocket setup, and ensure the websocket schema matches the https request * Avoid hardcoding port number * Clean up comments * Use header to compute redirect to take into account requesting forwarding or more codespace port forwarding shenanigans * Use shorthand placeholders - https://caddyserver.com/docs/caddyfile/concepts#placeholders * Formatting * Keep trailing slash to stay consistent with caddy file_server directive that serves a 308 Permanent Redirect for both foxglove and gzweb paths anyway * Refactor matcher logic to account for requests either from host ports from local dev containers or forwarded requests from codespace web port forwarding * Split snippet into globals for composability * Update comments * Add Placeholders for debugging * Use tables to center * Use github markdown - https://github.com/sindresorhus/github-markdown-css * Simplify vars * Rename vars * Revert "Rename vars" as dotted var names do not work in Caddyfile This reverts commit 3e2d1b3. * Add System Monitor to debug CPU load and memory issues * Update headings * Update layout * Update layout * Add Foxglove layout for Nav2 * Symlink assets folder for web server * Fetch Foxglove layout using layoutUrl a new parameter to load layout json data from URL - https://github.com/orgs/foxglove/discussions/217 * Cleanup * Use fork to fetch Foxglove layout using layoutUrl until this PR is merged: - https://github.com/foxglove/studio/pull/5987 * Update Caddyfile to handle relative root by using local srv folder * Inject mobile view html tags using the caddy replace module - https://caddyserver.com/docs/modules/http.handlers.replace_response - https://github.com/caddyserver/replace-response * Simplify Caddyfile * Use snippet for apps * Simplify Caddyfile * Simplify Caddyfile * Build caddy using custom modules * Remove unused symlinks * Add comments * Use environment and defined variables for config to avoid hard coded paths * Add FoxgloveUrl to vars for reuse in templates * Fix trailing slash for DataSourceUrl * Use exec to run gzserver with xvfb to prevent ros launch from orphaning process and ensure gzserver receives SIGTERM signal given gzserver often hangs after only SIGINT - https://unix.stackexchange.com/a/196053/213124 * Update redirect for foxglove to redirect from path /foxglove/autolayout * Add redirect for foxglove to redirect from path /foxglove/autoconnect but does not use LayoutUrl as to not change from cached layout * Use web app manifest to set display as standalone - https://web.dev/add-manifest/ - https://developer.mozilla.org/en-US/docs/Web/Manifest * Template manifest files to embed host info into app name * Add manifests for other web apps * Add shortcuts for Foxglove - https://developer.mozilla.org/en-US/docs/Web/Manifest/shortcuts - https://web.dev/app-shortcuts/ * Format * Update comments * Revert use of fork * Remove debug directive Signed-off-by: enricosutera <[email protected]>
This improves the ergonomics of Web App Visualization for Dev Containers, particularly those running from Codespaces, by consolidating the serving of HTTP traffic over a single network port. This simplifies the user experience when traversing the apps themselves, but also facilitates cookie-based authentication when using the secure and private by default port forward settings in Codespaces. This is achieved by using reverse proxies to reroute websocket traffic for each web app to their respective backend bridge interface. This PR also includes a number of other improvements, including a simple landing page for users to open and auto connect each web app from a web browser.