Skip to content
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

Enable Visualizations for Dev Container #3523

Merged
merged 38 commits into from
Apr 26, 2023

Conversation

ruffsl
Copy link
Member

@ruffsl ruffsl commented Apr 1, 2023

@ruffsl ruffsl force-pushed the devcontainer-visualization branch from 169a8b6 to 71f5a59 Compare April 3, 2023 14:11
@ruffsl ruffsl added the devcontainer Dev Container label Apr 3, 2023
FROM dever AS visualizer

# install foxglove dependacies
RUN echo "deb https://dl.cloudsmith.io/public/caddy/stable/deb/debian any-version main" > /etc/apt/sources.list.d/caddy-stable.list
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we should have a separate docker container in .devcontainer for this? I'd like to keep the root docker file as straight forward as possible for use as the base of other people's systems.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ruffsl
Copy link
Member Author

ruffsl commented Apr 7, 2023

In continuing to use these PRs as a sudo dev blog, tagged via devcontainer, to document my progress, I'll write down my thoughts so far:

Initially I had intended on incorporating Docker Compose into the dev container configuration, to spin out visualization components as services, as there is a rather nice separation of concerns and interfaces. However, there are a number of pros and cons to such an approach, which I'll document below.

The nice thing about using compose with dev containers is that it would allow for a more modular approach to the development environment, allowing the visualization components to be self-contained, and developed or used independently. Using separate containers would also allow for the dependencies of each to be isolated at build and runtime, avoiding the need to add to the base image for the main development container.

However, there are a long number of caveats in using docker compose with dev containers, largely due to the additional complexity of docker compose itself and incorporating into the dev container workflow.

  • Install Setup
    • Using Docker Compose would require more installation steps, in addition to docker CLI/Engine, which is fine for Codespaces, but tedious for local setup
    • Although, it looks like this has been streamlined since last I checked:
    • https://docs.docker.com/compose/install/linux
  • Lifecycle Management
    • Currently the visualization components are rather stateful, as when gzserver is restarted, the bridges for gzweb or foxglove do not gracefully reconnect. Thus these bridges need to be frequently restarted as well.
    • This is simple enough to do with tasks in VSCode, when such processes are co-located in the same container, but becomes more involved when using docker-compose CLI or docker socket APIs.
  • Integration Complexity
    • To even manage the lifecycle of containers from docker compose, the docker socket must also be granted to the dev container. This is a rather significant resource to grant, and could lead to unintended outcomes for users. E.g. accidentally restarting the main dev container when attempting to only restart peripheral visualization services.
  • Abstract Indirection
    • Using compose can expose a number of footguns, where the abstraction layers across devcontainer.json, docker-compose.yaml, and docker buildx generates a lot of indirection, resulting in quirky behaviors, unintuitive outcomes, and cryptic errors
    • E.g. docker-compose by default prepends the project’s name to all resources it initializes, including containers, volumes, networks, ect. Thus, if a user attempts to specify a volume to mount, named ccache, compose will create/mount the volume name <COMPOSE_PROJECT_NAME>_ccache, or navigation2_devcontainer_ccache in my case.
    • While this helpfully avoids collision across volumes and other project resources, it may not be immediately obvious to the user why an existing volume with the exact name specified was not mounted instead, or why names of things change based on the folder the git repo is cloned into.
  • Consistently
    • While splitting out the visualization into separate containers allows for the use of separate images, it would be harder to keep the image layers from various stages consistent and shared to reduce disk usage, or ensure compatibility across various bridge versions and network transports.
    • Sharing image layers helps reduce any disk usage, which is handy for local development with limited free disk space, but also economical for users of Codespaces, as GB/Month usage cost is based on the total disk usage of all images.
  • Message Interfaces
    • The network based bridge used by Foxglove needs access to the message interface definitions to properly connect and forward network traffic. Nav2 includes a number of custom message types that foxglove_bridge must resolve, which can be done from sourcing the overlay.
    • While this could be done by building just the message packages for the bridge container image used by such a compose service, message packages change relatively infrequently, keeping them consistent and in sync with the rest of the project development would be tedious and error prone.
  • Simulation Assets
    • The gazebo web client needs access to all the respective models and models used in simulation to properly visualize the entire world scene and robots. These models are currently bundled and installed with existing ROS packages, as opposed to some remote model database, like models.gazebosim.org or app.gazebosim.org
    • While these assets could be copied and relocated into a mounted volume shared by both the dev container and gzweb container, again keeping this consistent over development cycles and package updates would not be as simple as a monolithic approach.

As for separate Dockerfiles: while we could split out these stages into separate Dockerfiles, this would complicate our current docker build process, given that such an image could only build FROM stages exported to an image tag. This would require multiple invocations of the docker build command, and would not have the same clear build cache behavior as the current approach, nor would that be as straightforward to implement using the devcontainer config.

As a compromise, I've rearranged the stages to keep the linearity of the nav2 build and test process by moving the visualization stages to the end of the Dockerfile. Yet, I've also added a final stage, that is exported by default, to maintain the same docker build behavior as before. Pointing the devcontainer.json to a stage within this single Dockerfile allows the users to build from the inline cache provided from our CI images, while still allowing them to bust that cache when they need to locally modify earlier stages or layers in the Dockerfile build. If the user wants to avoid installing the additional dependencies for visualization, they can simply update the devcontainer.json to point to a different stage.

These are things we could probably iterate over in the future, as tooling improves, but for now I'll just keep it as simple as I can.

@SteveMacenski
Copy link
Member

SteveMacenski commented Apr 11, 2023

As for separate Dockerfiles: while we could split out these stages into separate Dockerfile

I'm not actually suggesting multiple stage dockerfiles (unless you felt it was best) but rather separating the root dockerfile for basic local use from a more complex one meant for codespaces. You have a .devcontainer directory meant for that sort of asset I think would be logical to have the dockerfile for that contained in. There's nothing preventing us from having a couple of dockerfiles for different purposes with slight differences.

So complete different dockerfiles for different purposes with different "stuff" in it.

@mergify
Copy link
Contributor

mergify bot commented Apr 11, 2023

This pull request is in conflict. Could you fix it @ruffsl?

to install demo dependencies
that fixes issues with deploy.sh
- osrf/gzweb#248
as migrating the python3 scripts still hasn't resolved the issue
by keeping sequential builder and tester stages adjacent
while keeping tester stage the default exported target
for bridge and studio
to avoid nagging the user to select one
as currently none really support our use case
to ensure nav2 message types are defined
by inlining all args into command
and sourcing workspace setup
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
@SteveMacenski
Copy link
Member

Understandable, but I also don't think adding in alot of bloat like gzweb and foxglove is a good trade off to apply to every user considering foxglove is close, but does not yet have everything needed to replace rviz as an option. Exploding docker image sizes is a real concern if folks are using that dockerfile for generating their own images.

or cross talk between containers by default
also avoids interfering with vscode's X11 forwarding
@mergify
Copy link
Contributor

mergify bot commented Apr 18, 2023

@ruffsl, your PR has failed to build. Please check CI outputs and resolve issues.
You may need to rebase or pull in main due to API changes (or your contribution genuinely fails).

@ruffsl
Copy link
Member Author

ruffsl commented Apr 18, 2023

adding in alot of bloat like gzweb and foxglove is a good trade off

Yet, it's not a trade off they have to make. In fact, they'd have to opt into it, by explicitly targeting that stage: a6d9531

docker build -t navigation2:rolling --target=visualizer .

Without targeting that stage, neither will the dever nore the visualizer stage be exported to the image, let alone be built.

It may help to check the Docker documentation to get a better feel for how Dockerfile directives map to Docker image layers:

@ruffsl
Copy link
Member Author

ruffsl commented Apr 18, 2023

Exploding docker image sizes is a real concern if folks are using that dockerfile for generating their own images.

If that is a concern for users, then we should probably approach that issue separately, as minimising docker images for production and distribution would be a different concern than maximizing utility for internal CI and dve infrastructure.

I think that issue would be best addressed by resolving:

Then, users could apt install a minimal runtime image without installing rviz, gazebo, and gigabytes of desktop GUI packages:

FROM ros:rolling as modifer

# https://serverfault.com/a/859394
RUN apt-get update && apt-get download ros-$ROS_DISTRO-navigation2 && \
    dpkg-deb -x ros-$ROS_DISTRO-navigation2_*.deb PackageFolder && \
    dpkg-deb --control ros-$ROS_DISTRO-navigation2_*.deb PackageFolder/DEBIAN && \
    sed -i "s/ ros-$ROS_DISTRO-nav2-rviz-plugins,//g" PackageFolder/DEBIAN/control && \
    dpkg -b PackageFolder navigation2.deb

FROM ros:rolling

# install nav2 without GUIs
COPY --from=modifer /navigation2.deb .
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        ./navigation2.deb \
    && rm -rf /var/lib/apt/lists/*

This would provide a smaller image for production on robots, akin to ros_robot meta package variant. Yet it seems even after removing the nav2_rviz_plugins and rviz depends, some upstream ROS package still manages to install all this X11 bloat.

$ docker build -t navigation2:humble -f humble.Dockerfile .
$ docker build -t navigation2:humble -f humble.Dockerfile --progress=plain .
...
#7 [stage-1 3/3] RUN apt-get update &&     apt-get install -y --no-install-recommends         ./navigation2.deb      && rm -rf /var/lib/apt/lists/*
#7 sha256:69442f58cd8bde7ed3e8ec31afe764793f6e29082011d8d0d23eec78068f71f1
#7 0.750 Get:1 http://archive.ubuntu.com/ubuntu jammy InRelease [270 kB]
#7 0.918 Get:2 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
#7 1.098 Get:3 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
#7 1.157 Get:4 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [108 kB]
#7 1.261 Get:5 http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages [1792 kB]
#7 1.273 Get:6 http://packages.ros.org/ros2/ubuntu jammy InRelease [4673 B]
#7 1.535 Get:7 http://archive.ubuntu.com/ubuntu jammy/universe amd64 Packages [17.5 MB]
#7 1.947 Get:8 http://packages.ros.org/ros2/ubuntu jammy/main amd64 Packages [839 kB]
#7 2.067 Get:9 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages [917 kB]
#7 3.021 Get:10 http://archive.ubuntu.com/ubuntu jammy/multiverse amd64 Packages [266 kB]
#7 3.037 Get:11 http://archive.ubuntu.com/ubuntu jammy/restricted amd64 Packages [164 kB]
#7 3.048 Get:12 http://archive.ubuntu.com/ubuntu jammy-updates/multiverse amd64 Packages [28.6 kB]
#7 3.054 Get:13 http://archive.ubuntu.com/ubuntu jammy-updates/restricted amd64 Packages [1054 kB]
#7 3.121 Get:14 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages [1153 kB]
#7 3.197 Get:15 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [1299 kB]
#7 3.356 Get:16 http://archive.ubuntu.com/ubuntu jammy-backports/main amd64 Packages [49.4 kB]
#7 3.471 Get:17 http://archive.ubuntu.com/ubuntu jammy-backports/universe amd64 Packages [23.3 kB]
#7 28.93 Get:18 http://security.ubuntu.com/ubuntu jammy-security/restricted amd64 Packages [914 kB]
#7 29.87 Get:19 http://security.ubuntu.com/ubuntu jammy-security/universe amd64 Packages [909 kB]
#7 30.14 Get:20 http://security.ubuntu.com/ubuntu jammy-security/multiverse amd64 Packages [23.2 kB]
#7 30.16 Fetched 27.5 MB in 30s (932 kB/s)
#7 30.16 Reading package lists...
#7 31.39 W: http://packages.ros.org/ros2/ubuntu/dists/jammy/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
#7 31.43 Reading package lists...
#7 32.63 Building dependency tree...
#7 32.93 Reading state information...
#7 33.31 The following additional packages will be installed:
#7 33.31   adwaita-icon-theme autoconf automake autotools-dev comerr-dev dbus
#7 33.31   dbus-user-session dconf-gsettings-backend dconf-service gdal-data
#7 33.31   gfortran-11 graphicsmagick-libmagick-dev-compat gtk-update-icon-cache
#7 33.31   hicolor-icon-theme humanity-icon-theme ibverbs-providers icu-devtools
#7 33.31   iso-codes krb5-multidev libaec-dev libaec0 libamd2 libaom-dev libaom3
#7 33.31   libapparmor1 libargon2-1 libarmadillo10 libarpack2 libatk-bridge2.0-0
#7 33.31   libatk1.0-0 libatk1.0-data libatspi2.0-0 libavahi-client3
#7 33.31   libavahi-common-data libavahi-common3 libavcodec-dev libavcodec58
#7 33.31   libavformat-dev libavformat58 libavutil-dev libavutil56 libblas-dev
#7 33.31   libblosc1 libbluray2 libboost-all-dev libboost-atomic-dev
#7 33.31   libboost-atomic1.74-dev libboost-atomic1.74.0 libboost-chrono-dev
#7 33.31   libboost-chrono1.74-dev libboost-chrono1.74.0 libboost-container-dev
#7 33.31   libboost-container1.74-dev libboost-container1.74.0 libboost-context-dev
#7 33.31   libboost-context1.74-dev libboost-context1.74.0 libboost-coroutine-dev
#7 33.31   libboost-coroutine1.74-dev libboost-coroutine1.74.0 libboost-date-time-dev
#7 33.31   libboost-date-time1.74-dev libboost-date-time1.74.0 libboost-dev
#7 33.31   libboost-exception-dev libboost-exception1.74-dev libboost-fiber-dev
#7 33.31   libboost-fiber1.74-dev libboost-fiber1.74.0 libboost-filesystem-dev
#7 33.31   libboost-filesystem1.74-dev libboost-filesystem1.74.0 libboost-graph-dev
#7 33.31   libboost-graph-parallel-dev libboost-graph-parallel1.74-dev
#7 33.31   libboost-graph-parallel1.74.0 libboost-graph1.74-dev libboost-graph1.74.0
#7 33.31   libboost-iostreams-dev libboost-iostreams1.74-dev libboost-iostreams1.74.0
#7 33.31   libboost-locale-dev libboost-locale1.74-dev libboost-locale1.74.0
#7 33.31   libboost-log-dev libboost-log1.74-dev libboost-log1.74.0 libboost-math-dev
#7 33.31   libboost-math1.74-dev libboost-math1.74.0 libboost-mpi-dev
#7 33.31   libboost-mpi-python-dev libboost-mpi-python1.74-dev
#7 33.31   libboost-mpi-python1.74.0 libboost-mpi1.74-dev libboost-mpi1.74.0
#7 33.31   libboost-nowide-dev libboost-nowide1.74-dev libboost-nowide1.74.0
#7 33.31   libboost-numpy-dev libboost-numpy1.74-dev libboost-numpy1.74.0
#7 33.31   libboost-program-options-dev libboost-program-options1.74-dev
#7 33.31   libboost-program-options1.74.0 libboost-python-dev libboost-python1.74-dev
#7 33.31   libboost-python1.74.0 libboost-random-dev libboost-random1.74-dev
#7 33.31   libboost-random1.74.0 libboost-regex-dev libboost-regex1.74-dev
#7 33.31   libboost-regex1.74.0 libboost-serialization-dev
#7 33.31   libboost-serialization1.74-dev libboost-serialization1.74.0
#7 33.31   libboost-stacktrace-dev libboost-stacktrace1.74-dev
#7 33.31   libboost-stacktrace1.74.0 libboost-system-dev libboost-system1.74-dev
#7 33.31   libboost-system1.74.0 libboost-test-dev libboost-test1.74-dev
#7 33.31   libboost-test1.74.0 libboost-thread-dev libboost-thread1.74-dev
#7 33.31   libboost-thread1.74.0 libboost-timer-dev libboost-timer1.74-dev
#7 33.31   libboost-timer1.74.0 libboost-tools-dev libboost-type-erasure-dev
#7 33.31   libboost-type-erasure1.74-dev libboost-type-erasure1.74.0 libboost-wave-dev
#7 33.31   libboost-wave1.74-dev libboost-wave1.74.0 libboost1.74-dev
#7 33.31   libboost1.74-tools-dev libbrotli-dev libbsd-dev libbtf1 libbz2-dev
#7 33.31   libcairo-gobject2 libcamd2 libcap2-bin libcbor0.8 libccd2 libccolamd2
#7 33.31   libceres-dev libceres2 libcfitsio9 libcharls2 libcholmod3 libchromaprint1
#7 33.31   libcodec2-1.0 libcolamd2 libcolord2 libcryptsetup12 libcups2 libcurl4
#7 33.31   libcurl4-openssl-dev libcxsparse3 libdav1d-dev libdav1d5 libdc1394-25
#7 33.31   libdc1394-dev libdconf1 libde265-0 libde265-dev libdeflate-dev
#7 33.31   libdevmapper1.02.1 libdouble-conversion3 libdrm-amdgpu1 libdrm-common
#7 33.31   libdrm-nouveau2 libdrm-radeon1 libdrm2 libdw1 libedit2 libelf1 libepoxy0
#7 33.31   libevent-2.1-7 libevent-core-2.1-7 libevent-dev libevent-extra-2.1-7
#7 33.31   libevent-openssl-2.1-7 libevent-pthreads-2.1-7 libexif-dev libexif12
#7 33.31   libfabric1 libfido2-1 libflann-dev libflann1.9 libfreetype-dev libfreexl1
#7 33.31   libfyba0 libgdal30 libgdcm-dev libgdcm3.0 libgdk-pixbuf-2.0-0
#7 33.31   libgdk-pixbuf2.0-common libgeos-c1v5 libgeos3.10.2 libgeotiff5 libgflags-dev
#7 33.31   libgflags2.2 libgfortran-11-dev libgif7 libgl1 libgl1-mesa-dri libgl2ps1.4
#7 33.31   libglapi-mesa libglew2.2 libglvnd0 libglx-mesa0 libglx0 libgme0
#7 33.31   libgoogle-glog-dev libgoogle-glog0v5 libgphoto2-6 libgphoto2-dev
#7 33.31   libgphoto2-port12 libgraphics-magick-perl libgraphicsmagick++-q16-12
#7 33.31   libgraphicsmagick++1-dev libgraphicsmagick-q16-3 libgraphicsmagick1-dev
#7 33.31   libgsm1 libgssrpc4 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0
#7 33.31   libgtk-3-0 libgtk-3-common libhdf4-0-alt libhdf5-103-1 libhdf5-hl-100
#7 33.31   libhdf5-mpi-dev libhdf5-openmpi-103-1 libhdf5-openmpi-cpp-103-1
#7 33.31   libhdf5-openmpi-dev libhdf5-openmpi-fortran-102 libhdf5-openmpi-hl-100
#7 33.31   libhdf5-openmpi-hl-cpp-100 libhdf5-openmpi-hl-fortran-100 libheif-dev
#7 33.31   libheif1 libhwloc-dev libhwloc-plugins libhwloc15 libibverbs-dev libibverbs1
#7 33.31   libice-dev libicu-dev libilmbase-dev libilmbase25 libip4tc2 libjbig-dev
#7 33.31   libjpeg-dev libjpeg-turbo8-dev libjpeg8-dev libjs-jquery-ui libjson-c5
#7 33.31   libkadm5clnt-mit12 libkadm5srv-mit12 libkdb5-10 libklu1 libkmlbase1
#7 33.31   libkmldom1 libkmlengine1 libkmod2 libkrb5-dev liblapack-dev liblcms2-2
#7 33.31   liblcms2-dev libldl2 liblept5 libllvm15 libltdl-dev liblz4-dev liblzma-dev
#7 33.31   libmd-dev libmetis5 libmfx1 libminizip1 libmongoose2 libmp3lame0 libmpg123-0
#7 33.31   libmysqlclient21 libncurses-dev libncurses5-dev libnetcdf19 libnl-3-200
#7 33.31   libnl-3-dev libnl-route-3-200 libnl-route-3-dev libnorm-dev libnorm1
#7 33.31   libnspr4 libnss3 libnuma-dev libnuma1 libodbc2 libodbcinst2 libode-dev
#7 33.31   libode8 libogdi4.1 libogg0 libopencv-calib3d-dev libopencv-calib3d4.5d
#7 33.31   libopencv-contrib-dev libopencv-contrib4.5d libopencv-core-dev
#7 33.31   libopencv-core4.5d libopencv-dev libopencv-dnn-dev libopencv-dnn4.5d
#7 33.31   libopencv-features2d-dev libopencv-features2d4.5d libopencv-flann-dev
#7 33.31   libopencv-flann4.5d libopencv-highgui-dev libopencv-highgui4.5d
#7 33.31   libopencv-imgcodecs-dev libopencv-imgcodecs4.5d libopencv-imgproc-dev
#7 33.31   libopencv-imgproc4.5d libopencv-ml-dev libopencv-ml4.5d
#7 33.31   libopencv-objdetect-dev libopencv-objdetect4.5d libopencv-photo-dev
#7 33.31   libopencv-photo4.5d libopencv-shape-dev libopencv-shape4.5d
#7 33.31   libopencv-stitching-dev libopencv-stitching4.5d libopencv-superres-dev
#7 33.31   libopencv-superres4.5d libopencv-video-dev libopencv-video4.5d
#7 33.31   libopencv-videoio-dev libopencv-videoio4.5d libopencv-videostab-dev
#7 33.31   libopencv-videostab4.5d libopencv-viz-dev libopencv-viz4.5d libopenexr-dev
#7 33.31   libopenexr25 libopengl0 libopenjp2-7 libopenmpi-dev libopenmpi3 libopenmpt0
#7 33.31   libopus0 liborc-0.4-0 libpam-systemd libpciaccess0 libpgm-5.3-0 libpgm-dev
#7 33.31   libpmix-dev libpmix2 libpng-dev libpoppler118 libpq5 libproj22 libprotobuf23
#7 33.31   libpsm-infinipath1 libpsm2-2 libpthread-stubs0-dev libqhull-r8.0
#7 33.31   librabbitmq4 libraw1394-11 libraw1394-dev librbio2 librdmacm1 librsvg2-2
#7 33.31   librttopo1 libsensors-config libsensors5 libshine3 libsigsegv2 libsliplu1
#7 33.31   libsm-dev libsnappy1v5 libsocket++1 libsodium-dev libsodium23 libsoxr0
#7 33.31   libspatialite7 libspeex1 libspqr2 libsrt1.4-gnutls libssh-gcrypt-4
#7 33.31   libsuitesparse-dev libsuitesparseconfig5 libsuperlu5 libswresample-dev
#7 33.31   libswresample3 libswscale-dev libswscale5 libsystemd0 libsz2 libtbb-dev
#7 33.31   libtbb12 libtbb2 libtbbmalloc2 libtcl8.6 libtesseract4 libtheora0
#7 33.31   libtiff-dev libtiffxx5 libtk8.6 libtwolame0 libucx0 libudfread0 libumfpack5
#7 33.31   libunwind-dev libunwind8 liburiparser1 libusb-1.0-0 libva-drm2 libva-x11-2
#7 33.31   libva2 libvdpau1 libvorbis0a libvorbisenc2 libvorbisfile3 libvpx7 libvtk9.1
#7 33.31   libwayland-client0 libwayland-cursor0 libwayland-egl1 libwebp-dev
#7 33.31   libwebpdemux2 libwebpmux3 libwmf-0.2-7 libwmf-dev libwmflite-0.2-7
#7 33.31   libx11-dev libx11-xcb1 libx264-163 libx265-199 libx265-dev libxau-dev
#7 33.31   libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-sync1
#7 33.31   libxcb-xfixes0 libxcb1-dev libxcomposite1 libxcursor1 libxdamage1
#7 33.31   libxdmcp-dev libxerces-c3.2 libxext-dev libxfixes3 libxft2 libxi6
#7 33.31   libxinerama1 libxkbcommon0 libxml2-dev libxnvctrl0 libxrandr2 libxshmfence1
#7 33.31   libxss1 libxvidcore4 libxxf86vm1 libzmq3-dev libzmq5 libzvbi-common libzvbi0
#7 33.31   m4 mpi-default-bin mpi-default-dev mysql-common nlohmann-json3-dev
#7 33.31   ocl-icd-libopencl1 openmpi-bin openmpi-common openssh-client proj-data
#7 33.31   python3-opencv ros-humble-angles ros-humble-behaviortree-cpp-v3
#7 33.31   ros-humble-bond ros-humble-bondcpp ros-humble-costmap-queue
#7 33.31   ros-humble-cv-bridge ros-humble-diagnostic-updater ros-humble-dwb-core
#7 33.31   ros-humble-dwb-critics ros-humble-dwb-msgs ros-humble-dwb-plugins
#7 33.31   ros-humble-image-transport ros-humble-laser-geometry ros-humble-map-msgs
#7 33.31   ros-humble-nav-2d-msgs ros-humble-nav-2d-utils ros-humble-nav2-amcl
#7 33.31   ros-humble-nav2-behavior-tree ros-humble-nav2-behaviors
#7 33.31   ros-humble-nav2-bt-navigator ros-humble-nav2-collision-monitor
#7 33.31   ros-humble-nav2-common ros-humble-nav2-constrained-smoother
#7 33.31   ros-humble-nav2-controller ros-humble-nav2-core ros-humble-nav2-costmap-2d
#7 33.31   ros-humble-nav2-dwb-controller ros-humble-nav2-lifecycle-manager
#7 33.31   ros-humble-nav2-map-server ros-humble-nav2-msgs
#7 33.31   ros-humble-nav2-navfn-planner ros-humble-nav2-planner
#7 33.31   ros-humble-nav2-regulated-pure-pursuit-controller
#7 33.31   ros-humble-nav2-rotation-shim-controller ros-humble-nav2-simple-commander
#7 33.31   ros-humble-nav2-smac-planner ros-humble-nav2-smoother
#7 33.31   ros-humble-nav2-theta-star-planner ros-humble-nav2-util
#7 33.31   ros-humble-nav2-velocity-smoother ros-humble-nav2-voxel-grid
#7 33.31   ros-humble-nav2-waypoint-follower ros-humble-ompl ros-humble-sensor-msgs-py
#7 33.31   ros-humble-smclib shared-mime-info systemd systemd-sysv ubuntu-mono
#7 33.31   unixodbc-common uuid-dev x11proto-core-dev x11proto-dev xkb-data
#7 33.31   xorg-sgml-doctools xtrans-dev
#7 33.32 Suggested packages:
#7 33.32   autoconf-archive gnu-standards autoconf-doc libtool gettext doc-base
#7 33.32   gfortran-11-multilib gfortran-11-doc libcoarrays-dev isoquery krb5-doc
#7 33.32   libcuda1 libnvcuvid1 libnvidia-encode1 liblapack-doc libbluray-bdj
#7 33.32   libboost-doc libboost1.74-doc gccxml libboost-contract1.74-dev
#7 33.32   libmpfrc++-dev libntl-dev xsltproc doxygen docbook-xml docbook-xsl
#7 33.32   default-jdk fop colord cups-common libcurl4-doc libidn11-dev libldap2-dev
#7 33.32   librtmp-dev libssh2-1-dev freetype2-doc geotiff-bin gdal-bin libgeotiff-epsg
#7 33.32   glew-utils gphoto2 graphicsmagick-dbg graphicsmagick krb5-user
#7 33.32   libvisual-0.4-plugins gstreamer1.0-tools gvfs libhdf4-doc libhdf4-alt-dev
#7 33.32   hdf4-tools libhdf5-doc libhwloc-contrib-plugins libice-doc icu-doc
#7 33.32   libjs-jquery-ui-docs liblcms2-utils libtool-doc liblzma-doc ncurses-doc
#7 33.32   libnorm-doc odbc-postgresql tdsodbc ogdi-bin opencv-doc openmpi-doc
#7 33.32   opus-tools pciutils proj-bin libraw1394-doc librsvg2-bin lm-sensors
#7 33.32   libsm-doc speex libtbb-doc tcl8.6 tk8.6 vtk9-doc vtk9-examples
#7 33.32   libwmf-0.2-7-gtk libwmf-doc libx11-doc libx265-doc libxcb-doc libxext-doc
#7 33.32   m4-doc opencl-icd gfortran | fortran-compiler keychain libpam-ssh
#7 33.32   monkeysphere ssh-askpass systemd-container libtss2-esys-3.0.2-0 libtss2-mu0
#7 33.32   libtss2-rc0 policykit-1
#7 33.32 Recommended packages:
#7 33.32   librsvg2-common at-spi2-core libaacs0 bzip2-doc libpam-cap dmsetup
#7 33.32   libexif-doc proj-bin libgdk-pixbuf2.0-bin libgl1-amber-dri libgphoto2-l10n
#7 33.32   ghostscript gsfonts gstreamer1.0-plugins-base libgtk-3-bin javascript-common
#7 33.32   libtool opencv-data libopencv4.5-java libcoarrays-openmpi-dev libpng-tools
#7 33.32   poppler-data libraw1394-tools libgraphblas-dev va-driver-all | va-driver
#7 33.32   vdpau-driver-all | vdpau-driver fonts-urw-base35 xauth networkd-dispatcher
#7 33.32   systemd-timesyncd | time-daemon libnss-systemd
#7 35.43 The following NEW packages will be installed:
#7 35.43   adwaita-icon-theme autoconf automake autotools-dev comerr-dev dbus
#7 35.43   dbus-user-session dconf-gsettings-backend dconf-service gdal-data
#7 35.43   gfortran-11 graphicsmagick-libmagick-dev-compat gtk-update-icon-cache
#7 35.43   hicolor-icon-theme humanity-icon-theme ibverbs-providers icu-devtools
#7 35.43   iso-codes krb5-multidev libaec-dev libaec0 libamd2 libaom-dev libaom3
#7 35.43   libapparmor1 libargon2-1 libarmadillo10 libarpack2 libatk-bridge2.0-0
#7 35.43   libatk1.0-0 libatk1.0-data libatspi2.0-0 libavahi-client3
#7 35.43   libavahi-common-data libavahi-common3 libavcodec-dev libavcodec58
#7 35.43   libavformat-dev libavformat58 libavutil-dev libavutil56 libblas-dev
#7 35.43   libblosc1 libbluray2 libboost-all-dev libboost-atomic-dev
#7 35.43   libboost-atomic1.74-dev libboost-atomic1.74.0 libboost-chrono-dev
#7 35.43   libboost-chrono1.74-dev libboost-chrono1.74.0 libboost-container-dev
#7 35.43   libboost-container1.74-dev libboost-container1.74.0 libboost-context-dev
#7 35.43   libboost-context1.74-dev libboost-context1.74.0 libboost-coroutine-dev
#7 35.43   libboost-coroutine1.74-dev libboost-coroutine1.74.0 libboost-date-time-dev
#7 35.43   libboost-date-time1.74-dev libboost-date-time1.74.0 libboost-dev
#7 35.43   libboost-exception-dev libboost-exception1.74-dev libboost-fiber-dev
#7 35.43   libboost-fiber1.74-dev libboost-fiber1.74.0 libboost-filesystem-dev
#7 35.43   libboost-filesystem1.74-dev libboost-filesystem1.74.0 libboost-graph-dev
#7 35.43   libboost-graph-parallel-dev libboost-graph-parallel1.74-dev
#7 35.43   libboost-graph-parallel1.74.0 libboost-graph1.74-dev libboost-graph1.74.0
#7 35.43   libboost-iostreams-dev libboost-iostreams1.74-dev libboost-iostreams1.74.0
#7 35.43   libboost-locale-dev libboost-locale1.74-dev libboost-locale1.74.0
#7 35.43   libboost-log-dev libboost-log1.74-dev libboost-log1.74.0 libboost-math-dev
#7 35.43   libboost-math1.74-dev libboost-math1.74.0 libboost-mpi-dev
#7 35.43   libboost-mpi-python-dev libboost-mpi-python1.74-dev
#7 35.43   libboost-mpi-python1.74.0 libboost-mpi1.74-dev libboost-mpi1.74.0
#7 35.43   libboost-nowide-dev libboost-nowide1.74-dev libboost-nowide1.74.0
#7 35.43   libboost-numpy-dev libboost-numpy1.74-dev libboost-numpy1.74.0
#7 35.43   libboost-program-options-dev libboost-program-options1.74-dev
#7 35.43   libboost-program-options1.74.0 libboost-python-dev libboost-python1.74-dev
#7 35.43   libboost-python1.74.0 libboost-random-dev libboost-random1.74-dev
#7 35.43   libboost-random1.74.0 libboost-regex-dev libboost-regex1.74-dev
#7 35.43   libboost-regex1.74.0 libboost-serialization-dev
#7 35.43   libboost-serialization1.74-dev libboost-serialization1.74.0
#7 35.43   libboost-stacktrace-dev libboost-stacktrace1.74-dev
#7 35.43   libboost-stacktrace1.74.0 libboost-system-dev libboost-system1.74-dev
#7 35.43   libboost-system1.74.0 libboost-test-dev libboost-test1.74-dev
#7 35.43   libboost-test1.74.0 libboost-thread-dev libboost-thread1.74-dev
#7 35.43   libboost-thread1.74.0 libboost-timer-dev libboost-timer1.74-dev
#7 35.43   libboost-timer1.74.0 libboost-tools-dev libboost-type-erasure-dev
#7 35.43   libboost-type-erasure1.74-dev libboost-type-erasure1.74.0 libboost-wave-dev
#7 35.43   libboost-wave1.74-dev libboost-wave1.74.0 libboost1.74-dev
#7 35.43   libboost1.74-tools-dev libbrotli-dev libbsd-dev libbtf1 libbz2-dev
#7 35.43   libcairo-gobject2 libcamd2 libcap2-bin libcbor0.8 libccd2 libccolamd2
#7 35.43   libceres-dev libceres2 libcfitsio9 libcharls2 libcholmod3 libchromaprint1
#7 35.43   libcodec2-1.0 libcolamd2 libcolord2 libcryptsetup12 libcups2
#7 35.43   libcurl4-openssl-dev libcxsparse3 libdav1d-dev libdav1d5 libdc1394-25
#7 35.43   libdc1394-dev libdconf1 libde265-0 libde265-dev libdeflate-dev
#7 35.43   libdevmapper1.02.1 libdouble-conversion3 libdrm-amdgpu1 libdrm-common
#7 35.43   libdrm-nouveau2 libdrm-radeon1 libdrm2 libdw1 libedit2 libelf1 libepoxy0
#7 35.43   libevent-2.1-7 libevent-core-2.1-7 libevent-dev libevent-extra-2.1-7
#7 35.43   libevent-openssl-2.1-7 libevent-pthreads-2.1-7 libexif-dev libexif12
#7 35.43   libfabric1 libfido2-1 libflann-dev libflann1.9 libfreetype-dev libfreexl1
#7 35.43   libfyba0 libgdal30 libgdcm-dev libgdcm3.0 libgdk-pixbuf-2.0-0
#7 35.43   libgdk-pixbuf2.0-common libgeos-c1v5 libgeos3.10.2 libgeotiff5 libgflags-dev
#7 35.43   libgflags2.2 libgfortran-11-dev libgif7 libgl1 libgl1-mesa-dri libgl2ps1.4
#7 35.43   libglapi-mesa libglew2.2 libglvnd0 libglx-mesa0 libglx0 libgme0
#7 35.43   libgoogle-glog-dev libgoogle-glog0v5 libgphoto2-6 libgphoto2-dev
#7 35.43   libgphoto2-port12 libgraphics-magick-perl libgraphicsmagick++-q16-12
#7 35.43   libgraphicsmagick++1-dev libgraphicsmagick-q16-3 libgraphicsmagick1-dev
#7 35.43   libgsm1 libgssrpc4 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0
#7 35.43   libgtk-3-0 libgtk-3-common libhdf4-0-alt libhdf5-103-1 libhdf5-hl-100
#7 35.43   libhdf5-mpi-dev libhdf5-openmpi-103-1 libhdf5-openmpi-cpp-103-1
#7 35.43   libhdf5-openmpi-dev libhdf5-openmpi-fortran-102 libhdf5-openmpi-hl-100
#7 35.43   libhdf5-openmpi-hl-cpp-100 libhdf5-openmpi-hl-fortran-100 libheif-dev
#7 35.43   libheif1 libhwloc-dev libhwloc-plugins libhwloc15 libibverbs-dev libibverbs1
#7 35.43   libice-dev libicu-dev libilmbase-dev libilmbase25 libip4tc2 libjbig-dev
#7 35.43   libjpeg-dev libjpeg-turbo8-dev libjpeg8-dev libjs-jquery-ui libjson-c5
#7 35.43   libkadm5clnt-mit12 libkadm5srv-mit12 libkdb5-10 libklu1 libkmlbase1
#7 35.43   libkmldom1 libkmlengine1 libkmod2 libkrb5-dev liblapack-dev liblcms2-2
#7 35.43   liblcms2-dev libldl2 liblept5 libllvm15 libltdl-dev liblz4-dev liblzma-dev
#7 35.43   libmd-dev libmetis5 libmfx1 libminizip1 libmongoose2 libmp3lame0 libmpg123-0
#7 35.43   libmysqlclient21 libncurses-dev libncurses5-dev libnetcdf19 libnl-3-200
#7 35.43   libnl-3-dev libnl-route-3-200 libnl-route-3-dev libnorm-dev libnorm1
#7 35.43   libnspr4 libnss3 libnuma-dev libnuma1 libodbc2 libodbcinst2 libode-dev
#7 35.43   libode8 libogdi4.1 libogg0 libopencv-calib3d-dev libopencv-calib3d4.5d
#7 35.43   libopencv-contrib-dev libopencv-contrib4.5d libopencv-core-dev
#7 35.43   libopencv-core4.5d libopencv-dev libopencv-dnn-dev libopencv-dnn4.5d
#7 35.43   libopencv-features2d-dev libopencv-features2d4.5d libopencv-flann-dev
#7 35.43   libopencv-flann4.5d libopencv-highgui-dev libopencv-highgui4.5d
#7 35.43   libopencv-imgcodecs-dev libopencv-imgcodecs4.5d libopencv-imgproc-dev
#7 35.43   libopencv-imgproc4.5d libopencv-ml-dev libopencv-ml4.5d
#7 35.43   libopencv-objdetect-dev libopencv-objdetect4.5d libopencv-photo-dev
#7 35.43   libopencv-photo4.5d libopencv-shape-dev libopencv-shape4.5d
#7 35.43   libopencv-stitching-dev libopencv-stitching4.5d libopencv-superres-dev
#7 35.43   libopencv-superres4.5d libopencv-video-dev libopencv-video4.5d
#7 35.43   libopencv-videoio-dev libopencv-videoio4.5d libopencv-videostab-dev
#7 35.43   libopencv-videostab4.5d libopencv-viz-dev libopencv-viz4.5d libopenexr-dev
#7 35.43   libopenexr25 libopengl0 libopenjp2-7 libopenmpi-dev libopenmpi3 libopenmpt0
#7 35.43   libopus0 liborc-0.4-0 libpam-systemd libpciaccess0 libpgm-5.3-0 libpgm-dev
#7 35.43   libpmix-dev libpmix2 libpng-dev libpoppler118 libpq5 libproj22 libprotobuf23
#7 35.43   libpsm-infinipath1 libpsm2-2 libpthread-stubs0-dev libqhull-r8.0
#7 35.43   librabbitmq4 libraw1394-11 libraw1394-dev librbio2 librdmacm1 librsvg2-2
#7 35.43   librttopo1 libsensors-config libsensors5 libshine3 libsigsegv2 libsliplu1
#7 35.43   libsm-dev libsnappy1v5 libsocket++1 libsodium-dev libsodium23 libsoxr0
#7 35.43   libspatialite7 libspeex1 libspqr2 libsrt1.4-gnutls libssh-gcrypt-4
#7 35.43   libsuitesparse-dev libsuitesparseconfig5 libsuperlu5 libswresample-dev
#7 35.43   libswresample3 libswscale-dev libswscale5 libsz2 libtbb-dev libtbb12 libtbb2
#7 35.43   libtbbmalloc2 libtcl8.6 libtesseract4 libtheora0 libtiff-dev libtiffxx5
#7 35.43   libtk8.6 libtwolame0 libucx0 libudfread0 libumfpack5 libunwind-dev
#7 35.43   libunwind8 liburiparser1 libusb-1.0-0 libva-drm2 libva-x11-2 libva2
#7 35.43   libvdpau1 libvorbis0a libvorbisenc2 libvorbisfile3 libvpx7 libvtk9.1
#7 35.43   libwayland-client0 libwayland-cursor0 libwayland-egl1 libwebp-dev
#7 35.43   libwebpdemux2 libwebpmux3 libwmf-0.2-7 libwmf-dev libwmflite-0.2-7
#7 35.43   libx11-dev libx11-xcb1 libx264-163 libx265-199 libx265-dev libxau-dev
#7 35.43   libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-sync1
#7 35.43   libxcb-xfixes0 libxcb1-dev libxcomposite1 libxcursor1 libxdamage1
#7 35.43   libxdmcp-dev libxerces-c3.2 libxext-dev libxfixes3 libxft2 libxi6
#7 35.43   libxinerama1 libxkbcommon0 libxml2-dev libxnvctrl0 libxrandr2 libxshmfence1
#7 35.43   libxss1 libxvidcore4 libxxf86vm1 libzmq3-dev libzmq5 libzvbi-common libzvbi0
#7 35.43   m4 mpi-default-bin mpi-default-dev mysql-common nlohmann-json3-dev
#7 35.43   ocl-icd-libopencl1 openmpi-bin openmpi-common openssh-client proj-data
#7 35.43   python3-opencv ros-humble-angles ros-humble-behaviortree-cpp-v3
#7 35.43   ros-humble-bond ros-humble-bondcpp ros-humble-costmap-queue
#7 35.43   ros-humble-cv-bridge ros-humble-diagnostic-updater ros-humble-dwb-core
#7 35.43   ros-humble-dwb-critics ros-humble-dwb-msgs ros-humble-dwb-plugins
#7 35.43   ros-humble-image-transport ros-humble-laser-geometry ros-humble-map-msgs
#7 35.43   ros-humble-nav-2d-msgs ros-humble-nav-2d-utils ros-humble-nav2-amcl
#7 35.43   ros-humble-nav2-behavior-tree ros-humble-nav2-behaviors
#7 35.43   ros-humble-nav2-bt-navigator ros-humble-nav2-collision-monitor
#7 35.43   ros-humble-nav2-common ros-humble-nav2-constrained-smoother
#7 35.43   ros-humble-nav2-controller ros-humble-nav2-core ros-humble-nav2-costmap-2d
#7 35.43   ros-humble-nav2-dwb-controller ros-humble-nav2-lifecycle-manager
#7 35.43   ros-humble-nav2-map-server ros-humble-nav2-msgs
#7 35.43   ros-humble-nav2-navfn-planner ros-humble-nav2-planner
#7 35.43   ros-humble-nav2-regulated-pure-pursuit-controller
#7 35.43   ros-humble-nav2-rotation-shim-controller ros-humble-nav2-simple-commander
#7 35.43   ros-humble-nav2-smac-planner ros-humble-nav2-smoother
#7 35.43   ros-humble-nav2-theta-star-planner ros-humble-nav2-util
#7 35.43   ros-humble-nav2-velocity-smoother ros-humble-nav2-voxel-grid
#7 35.43   ros-humble-nav2-waypoint-follower ros-humble-navigation2 ros-humble-ompl
#7 35.43   ros-humble-sensor-msgs-py ros-humble-smclib shared-mime-info systemd
#7 35.43   systemd-sysv ubuntu-mono unixodbc-common uuid-dev x11proto-core-dev
#7 35.43   x11proto-dev xkb-data xorg-sgml-doctools xtrans-dev
#7 35.43 The following packages will be upgraded:
#7 35.43   libcurl4 libsystemd0
#7 35.51 2 upgraded, 542 newly installed, 0 to remove and 17 not upgraded.
#7 35.51 Need to get 296 MB/296 MB of archives.
#7 35.51 After this operation, 1476 MB of additional disk space will be used.
...

We could create another Nav2 variant without GUI dependencies? Perhaps unnecessary, but could be convenient.

@ruffsl ruffsl marked this pull request as ready for review April 26, 2023 10:59
@ruffsl
Copy link
Member Author

ruffsl commented Apr 26, 2023

Merging for testing with Codespaces

@ruffsl ruffsl merged commit 20e5fed into ros-navigation:main Apr 26, 2023
@ruffsl ruffsl deleted the devcontainer-visualization branch April 26, 2023 11:01
@SteveMacenski
Copy link
Member

SteveMacenski commented Apr 26, 2023

@ruffsl I strongly want to revert this PR. I don't think this is a viable solution, I do not want gzweb and Foxglove builds in docker for everything to satisfy the needs of only a subsection of developers. This should be barebones for CI if its used for CI. If there's other containers needed for other applications, those should be other containers - this is feature creep that has unideal artifacts for everyone (which also makes it confusing for everyone).

As far as I can tell, there should be at least 2 containers, but probably a 3rd

  • CI container, for CI
  • Devcontainer container for codecases use
  • (A production container, like the CI container but without some of the settings and setup for CI and to be customized for users and/or local development use.)

All will have different needs in caching, manual installation of external packages, or simplicity for user customization. I don't think its possible or wise to do them all in once place. That seems like feature creep.

jwallace42 pushed a commit to jwallace42/navigation2 that referenced this pull request Apr 27, 2023
* 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
SteveMacenski pushed a commit that referenced this pull request May 10, 2023
* 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
- 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

* 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 44375a1.

* 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 <roxfoxpox@gmail.com>

* code review

* code review

* removed unsigned short

* lint errer

* error codes in main bts

* behavior error code range change

---------

Co-authored-by: Ruffin <roxfoxpox@gmail.com>
RBT22 pushed a commit to EnjoyRobotics/navigation2 that referenced this pull request May 31, 2023
* empty error codes

* add error codes for behaviors

* updated assisted teleop

* pass tests

* added error codes to bt nodes

* 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

* ignore warning (ros-navigation#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 44375a1.

* 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 <roxfoxpox@gmail.com>

* code review

* code review

* removed unsigned short

* lint errer

* error codes in main bts

* behavior error code range change

---------

Co-authored-by: Ruffin <roxfoxpox@gmail.com>
redvinaa pushed a commit to EnjoyRobotics/navigation2 that referenced this pull request Jun 5, 2023
* empty error codes

* add error codes for behaviors

* updated assisted teleop

* pass tests

* added error codes to bt nodes

* 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

* ignore warning (ros-navigation#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 44375a1.

* 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 <roxfoxpox@gmail.com>

* code review

* code review

* removed unsigned short

* lint errer

* error codes in main bts

* behavior error code range change

---------

Co-authored-by: Ruffin <roxfoxpox@gmail.com>
SteveMacenski pushed a commit that referenced this pull request Jun 9, 2023
* 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
SteveMacenski added a commit that referenced this pull request Jun 9, 2023
* 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 <letrungkien.k53.hut@gmail.com>

* 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 <stevenmacenski@gmail.com>

---------

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* 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 <os@skarvtech.com>

* Added str cast to parse int (#3486)

Co-authored-by: antoniomarangi <antonio.marangi@alba-robot.com>

* 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 <stevenmacenski@gmail.com>

* Update nav2_behavior_tree/include/nav2_behavior_tree/bt_service_node.hpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* .

* fix linter

* fix CI

---------

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* 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 <dirk.braunschweiger@symovo.de>

* fix data race: prohibit resizeMap() during plugin/filter initialization (#3522)

Co-authored-by: Dirk Braunschweiger <dirk.braunschweiger@symovo.de>

* 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 <guillaume@dexory.com>

* [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 <guillaume@dexory.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* 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 <ryzhikovas@gmail.com>

* 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 <guillaume@dexory.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* bumping humble to 1.1.7 for release

---------

Signed-off-by: Trung Kien <letrungkien.k53.hut@gmail.com>
Signed-off-by: Øystein Sture <os@skarvtech.com>
Signed-off-by: ryzhikovas <ryzhikovas@gmail.com>
Co-authored-by: Alexey Merzlyakov <60094858+AlexeyMerzlyakov@users.noreply.github.com>
Co-authored-by: Jose Luis Blanco-Claraco <joseluisblancoc@gmail.com>
Co-authored-by: DylanDeCoeyer-Quimesis <102609575+DylanDeCoeyer-Quimesis@users.noreply.github.com>
Co-authored-by: Trung Kien <letrungkien.k53.hut@gmail.com>
Co-authored-by: HovorunB <87417416+HovorunB@users.noreply.github.com>
Co-authored-by: Tony Najjar <tony.najjar@logivations.com>
Co-authored-by: Ruffin <roxfoxpox@gmail.com>
Co-authored-by: Øystein Sture <oysstu@users.noreply.github.com>
Co-authored-by: mrmara <48493979+mrmara@users.noreply.github.com>
Co-authored-by: antoniomarangi <antonio.marangi@alba-robot.com>
Co-authored-by: Tony Najjar <tony.najjar.1997@gmail.com>
Co-authored-by: Griswald Brooks <griswald.brooks@gmail.com>
Co-authored-by: BriceRenaudeau <48433002+BriceRenaudeau@users.noreply.github.com>
Co-authored-by: Dirk Braunschweiger <1677757+dirkmb@users.noreply.github.com>
Co-authored-by: Dirk Braunschweiger <dirk.braunschweiger@symovo.de>
Co-authored-by: Guillaume Doisy <doisyg@users.noreply.github.com>
Co-authored-by: Guillaume Doisy <guillaume@dexory.com>
Co-authored-by: Alberto Tudela <ajtudela@gmail.com>
Co-authored-by: ryzhikovas <ryzhikovas@gmail.com>
Co-authored-by: Alexandr Buyval <alexbuyval@gmail.com>
Co-authored-by: Hyung-Taik Choi <htc.refactor@gmail.com>
Co-authored-by: Filipe Cerveira <filipecerveira@gmail.com>
RBT22 pushed a commit to EnjoyRobotics/navigation2 that referenced this pull request Oct 18, 2023
* empty error codes

* add error codes for behaviors

* updated assisted teleop

* pass tests

* added error codes to bt nodes

* 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

* ignore warning (ros-navigation#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 44375a1.

* 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 <roxfoxpox@gmail.com>

* code review

* code review

* removed unsigned short

* lint errer

* error codes in main bts

* behavior error code range change

---------

Co-authored-by: Ruffin <roxfoxpox@gmail.com>
RBT22 pushed a commit to EnjoyRobotics/navigation2 that referenced this pull request Oct 18, 2023
* empty error codes

* add error codes for behaviors

* updated assisted teleop

* pass tests

* added error codes to bt nodes

* 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

* ignore warning (ros-navigation#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 44375a1.

* 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 <roxfoxpox@gmail.com>

* code review

* code review

* removed unsigned short

* lint errer

* error codes in main bts

* behavior error code range change

---------

Co-authored-by: Ruffin <roxfoxpox@gmail.com>
RBT22 pushed a commit to EnjoyRobotics/navigation2 that referenced this pull request Oct 18, 2023
* empty error codes

* add error codes for behaviors

* updated assisted teleop

* pass tests

* added error codes to bt nodes

* 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

* ignore warning (ros-navigation#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 44375a1.

* 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 <roxfoxpox@gmail.com>

* code review

* code review

* removed unsigned short

* lint errer

* error codes in main bts

* behavior error code range change

---------

Co-authored-by: Ruffin <roxfoxpox@gmail.com>
RBT22 pushed a commit to EnjoyRobotics/navigation2 that referenced this pull request Oct 24, 2023
* empty error codes

* add error codes for behaviors

* updated assisted teleop

* pass tests

* added error codes to bt nodes

* 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

* ignore warning (ros-navigation#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 44375a1.

* 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 <roxfoxpox@gmail.com>

* code review

* code review

* removed unsigned short

* lint errer

* error codes in main bts

* behavior error code range change

---------

Co-authored-by: Ruffin <roxfoxpox@gmail.com>
RBT22 pushed a commit to EnjoyRobotics/navigation2 that referenced this pull request Oct 24, 2023
* 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 <letrungkien.k53.hut@gmail.com>

* 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 <stevenmacenski@gmail.com>

---------

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* 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 <os@skarvtech.com>

* Added str cast to parse int (ros-navigation#3486)

Co-authored-by: antoniomarangi <antonio.marangi@alba-robot.com>

* 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 <stevenmacenski@gmail.com>

* Update nav2_behavior_tree/include/nav2_behavior_tree/bt_service_node.hpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* .

* fix linter

* fix CI

---------

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* 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 <dirk.braunschweiger@symovo.de>

* fix data race: prohibit resizeMap() during plugin/filter initialization (ros-navigation#3522)

Co-authored-by: Dirk Braunschweiger <dirk.braunschweiger@symovo.de>

* 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 <guillaume@dexory.com>

* [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 <guillaume@dexory.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* 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 <ryzhikovas@gmail.com>

* 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 <guillaume@dexory.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* bumping humble to 1.1.7 for release

---------

Signed-off-by: Trung Kien <letrungkien.k53.hut@gmail.com>
Signed-off-by: Øystein Sture <os@skarvtech.com>
Signed-off-by: ryzhikovas <ryzhikovas@gmail.com>
Co-authored-by: Alexey Merzlyakov <60094858+AlexeyMerzlyakov@users.noreply.github.com>
Co-authored-by: Jose Luis Blanco-Claraco <joseluisblancoc@gmail.com>
Co-authored-by: DylanDeCoeyer-Quimesis <102609575+DylanDeCoeyer-Quimesis@users.noreply.github.com>
Co-authored-by: Trung Kien <letrungkien.k53.hut@gmail.com>
Co-authored-by: HovorunB <87417416+HovorunB@users.noreply.github.com>
Co-authored-by: Tony Najjar <tony.najjar@logivations.com>
Co-authored-by: Ruffin <roxfoxpox@gmail.com>
Co-authored-by: Øystein Sture <oysstu@users.noreply.github.com>
Co-authored-by: mrmara <48493979+mrmara@users.noreply.github.com>
Co-authored-by: antoniomarangi <antonio.marangi@alba-robot.com>
Co-authored-by: Tony Najjar <tony.najjar.1997@gmail.com>
Co-authored-by: Griswald Brooks <griswald.brooks@gmail.com>
Co-authored-by: BriceRenaudeau <48433002+BriceRenaudeau@users.noreply.github.com>
Co-authored-by: Dirk Braunschweiger <1677757+dirkmb@users.noreply.github.com>
Co-authored-by: Dirk Braunschweiger <dirk.braunschweiger@symovo.de>
Co-authored-by: Guillaume Doisy <doisyg@users.noreply.github.com>
Co-authored-by: Guillaume Doisy <guillaume@dexory.com>
Co-authored-by: Alberto Tudela <ajtudela@gmail.com>
Co-authored-by: ryzhikovas <ryzhikovas@gmail.com>
Co-authored-by: Alexandr Buyval <alexbuyval@gmail.com>
Co-authored-by: Hyung-Taik Choi <htc.refactor@gmail.com>
Co-authored-by: Filipe Cerveira <filipecerveira@gmail.com>
turtlewizard73 added a commit to EnjoyRobotics/navigation2 that referenced this pull request Oct 24, 2023
* 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 <guillaume@dexory.com>

---------

Co-authored-by: ruffsl <roxfoxpox@gmail.com>
Co-authored-by: Guillaume Doisy <doisyg@users.noreply.github.com>
Co-authored-by: Guillaume Doisy <guillaume@dexory.com>
(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 <stevenmacenski@gmail.com>

* address time comment

* fix API change rclcpp::ServicesQoS()

* fix CI

---------

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* 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 <guillaume@dexory.com>
(cherry picked from commit 34f18d9222e33a2fddb2e45653cd5c0ef7b3bb11)

Co-authored-by: Guillaume Doisy <doisyg@users.noreply.github.com>

* 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 <stevenmacenski@gmail.com>

* Fix out of bound vector (#3461) (#3463)

(cherry picked from commit 0a63bf956e5da6e89946fde131303942e282c23b)

Co-authored-by: Tony Najjar <tony.najjar.1997@gmail.com>

* 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 <tony.najjar@logivations.com>

* fix segfault when path is empty (#3484) (#3485)

a

Co-authored-by: Guillaume Doisy <guillaume@dexory.com>
(cherry picked from commit 26ac8104862b25151d98981da1731931fa16d1b3)

Co-authored-by: Guillaume Doisy <doisyg@users.noreply.github.com>

* Check compile options (#3487) (#3489)

(cherry picked from commit e7259030f834ff19599206ae80a1ed5d05cd32d2)

Co-authored-by: Tony Najjar <tony.najjar@logivations.com>

* ackermann motion model bug (#3498) (#3501)

Prevent cost to be modified twice.

(cherry picked from commit 482017ce02ec08eadd3a23440e619b0e506cb9c5)

Co-authored-by: HAIDAR OBEID <31267966+ObeidHaidar@users.noreply.github.com>

* 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 <letrungkien.k53.hut@gmail.com>

* 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 <stevenmacenski@gmail.com>

---------

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* 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 <os@skarvtech.com>

* Added str cast to parse int (#3486)

Co-authored-by: antoniomarangi <antonio.marangi@alba-robot.com>

* 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 <stevenmacenski@gmail.com>

* Update nav2_behavior_tree/include/nav2_behavior_tree/bt_service_node.hpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* .

* fix linter

* fix CI

---------

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* 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 <dirk.braunschweiger@symovo.de>

* fix data race: prohibit resizeMap() during plugin/filter initialization (#3522)

Co-authored-by: Dirk Braunschweiger <dirk.braunschweiger@symovo.de>

* 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 <guillaume@dexory.com>

* [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 <guillaume@dexory.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* 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 <ryzhikovas@gmail.com>

* 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 <guillaume@dexory.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* bumping humble to 1.1.7 for release

---------

Signed-off-by: Trung Kien <letrungkien.k53.hut@gmail.com>
Signed-off-by: Øystein Sture <os@skarvtech.com>
Signed-off-by: ryzhikovas <ryzhikovas@gmail.com>
Co-authored-by: Alexey Merzlyakov <60094858+AlexeyMerzlyakov@users.noreply.github.com>
Co-authored-by: Jose Luis Blanco-Claraco <joseluisblancoc@gmail.com>
Co-authored-by: DylanDeCoeyer-Quimesis <102609575+DylanDeCoeyer-Quimesis@users.noreply.github.com>
Co-authored-by: Trung Kien <letrungkien.k53.hut@gmail.com>
Co-authored-by: HovorunB <87417416+HovorunB@users.noreply.github.com>
Co-authored-by: Tony Najjar <tony.najjar@logivations.com>
Co-authored-by: Ruffin <roxfoxpox@gmail.com>
Co-authored-by: Øystein Sture <oysstu@users.noreply.github.com>
Co-authored-by: mrmara <48493979+mrmara@users.noreply.github.com>
Co-authored-by: antoniomarangi <antonio.marangi@alba-robot.com>
Co-authored-by: Tony Najjar <tony.najjar.1997@gmail.com>
Co-authored-by: Griswald Brooks <griswald.brooks@gmail.com>
Co-authored-by: BriceRenaudeau <48433002+BriceRenaudeau@users.noreply.github.com>
Co-authored-by: Dirk Braunschweiger <1677757+dirkmb@users.noreply.github.com>
Co-authored-by: Dirk Braunschweiger <dirk.braunschweiger@symovo.de>
Co-authored-by: Guillaume Doisy <doisyg@users.noreply.github.com>
Co-authored-by: Guillaume Doisy <guillaume@dexory.com>
Co-authored-by: Alberto Tudela <ajtudela@gmail.com>
Co-authored-by: ryzhikovas <ryzhikovas@gmail.com>
Co-authored-by: Alexandr Buyval <alexbuyval@gmail.com>
Co-authored-by: Hyung-Taik Choi <htc.refactor@gmail.com>
Co-authored-by: Filipe Cerveira <filipecerveira@gmail.com>

* 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 <stevenmacenski@gmail.com>

* 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 <48433002+BriceRenaudeau@users.noreply.github.com>

* 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 <ryanfriedman5410+github@gmail.com>

* Fix rviz panel node arguments (#3655)

Signed-off-by: Nick Lamprianidis <info@nlamprian.me>

* 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 <guillaume@dexory.com>

* 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 <doisyg@users.noreply.github.com>
Co-authored-by: Guillaume Doisy <guillaume@dexory.com>

* 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 <ryanfriedman5410+github@gmail.com>
Signed-off-by: Nick Lamprianidis <info@nlamprian.me>
Co-authored-by: Filipe Cerveira <filipecerveira@gmail.com>
Co-authored-by: Ryan <ryanfriedman5410+github@gmail.com>
Co-authored-by: Nick Lamprianidis <info@nlamprian.me>
Co-authored-by: BriceRenaudeau <48433002+BriceRenaudeau@users.noreply.github.com>
Co-authored-by: Guillaume Doisy <doisyg@users.noreply.github.com>
Co-authored-by: Guillaume Doisy <guillaume@dexory.com>
Co-authored-by: DylanDeCoeyer-Quimesis <102609575+DylanDeCoeyer-Quimesis@users.noreply.github.com>
Co-authored-by: gyaanantia <78275262+gyaanantia@users.noreply.github.com>
Co-authored-by: Tony Najjar <tony.najjar@logivations.com>

* Fixing 3768: planner server lifecycle transition down (#3786)

* Use ParameterFile (allow_substs) (#3706) (#3806)

Signed-off-by: ymd-stella <world.applepie@gmail.com>
Co-authored-by: ymd-stella <7959916+ymd-stella@users.noreply.github.com>

* 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 <gch981213@gmail.com>

* [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 <christian.henkel2@de.bosch.com>

* gazebo orientation to match rviz

Signed-off-by: Christian Henkel <christian.henkel2@de.bosch.com>

* rotating in direction of view

---------

Signed-off-by: Christian Henkel <christian.henkel2@de.bosch.com>

* 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 <world.applepie@gmail.com>

* 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 <stevenmacenski@gmail.com>

* 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 <stevenmacenski@gmail.com>

---------

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* use ros clock for wait (#3782)

* use ROS clock for wait

* fix backport issue

---------

Co-authored-by: Guillaume Doisy <guillaume@dexory.com>

* 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 <doisyg@users.noreply.github.com>

---------

Co-authored-by: Guillaume Doisy <doisyg@users.noreply.github.com>

* 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 <antonkesy@gmail.com>

* [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 <christian.henkel2@de.bosch.com>
Signed-off-by: ymd-stella <world.applepie@gmail.com>
Signed-off-by: Anton Kesy <antonkesy@gmail.com>
Co-authored-by: Christian Henkel <6976069+ct2034@users.noreply.github.com>
Co-authored-by: Alexey Merzlyakov <60094858+AlexeyMerzlyakov@users.noreply.github.com>
Co-authored-by: ymd-stella <7959916+ymd-stella@users.noreply.github.com>
Co-authored-by: Hyunseok <yanghyunseok@me.com>
Co-authored-by: Guillaume Doisy <doisyg@users.noreply.github.com>
Co-authored-by: Guillaume Doisy <guillaume@dexory.com>
Co-authored-by: Anton Kesy <antonkesy@gmail.com>

* Update CMakeLists.txt (#3843) (#3845)

(cherry picked from commit 2d6e9a96354c0ea763e70eedd81225635f7b9db5)

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* 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 <stevenmacenski@gmail.com>

* 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 <stevenmacenski@gmail.com>

* 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 <stevenmacenski@gmail.com>

* 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 <stevenmacenski@gmail.com>
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 <stevenmacenski@gmail.com>

* 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 <stevenmacenski@gmail.com>

* 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 <43337758+MartiBolet@users.noreply.github.com>
Co-authored-by: Alexey Merzlyakov <60094858+AlexeyMerzlyakov@users.noreply.github.com>
Co-authored-by: Stevedan Ogochukwu Omodolor <61468301+stevedanomodolor@users.noreply.github.com>

* 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 <roxfoxpox@gmail.com>

* code review

* code review

* removed unsigned short

* lint errer

* error codes in main bts

* behavior error code range change

---------

Co-authored-by: Ruffin <roxfoxpox@gmail.com>

* correct error message (#3631) (#5)

* correct error message

* clean up

* cleanup

* remove header

Co-authored-by: Joshua Wallace <josho.wallace@gmail.com>

* 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 <letrungkien.k53.hut@gmail.com>
Signed-off-by: Øystein Sture <os@skarvtech.com>
Signed-off-by: ryzhikovas <ryzhikovas@gmail.com>
Signed-off-by: Ryan Friedman <ryanfriedman5410+github@gmail.com>
Signed-off-by: Nick Lamprianidis <info@nlamprian.me>
Signed-off-by: ymd-stella <world.applepie@gmail.com>
Signed-off-by: Christian Henkel <christian.henkel2@de.bosch.com>
Signed-off-by: Anton Kesy <antonkesy@gmail.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Co-authored-by: Tony Najjar <tony.najjar@logivations.com>
Co-authored-by: HAIDAR OBEID <31267966+ObeidHaidar@users.noreply.github.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: Guillaume Doisy <doisyg@users.noreply.github.com>
Co-authored-by: Tony Najjar <tony.najjar.1997@gmail.com>
Co-authored-by: nakai-omer <108797279+nakai-omer@users.noreply.github.com>
Co-authored-by: Alexey Merzlyakov <60094858+AlexeyMerzlyakov@users.noreply.github.com>
Co-authored-by: Jose Luis Blanco-Claraco <joseluisblancoc@gmail.com>
Co-authored-by: DylanDeCoeyer-Quimesis <102609575+DylanDeCoeyer-Quimesis@users.noreply.github.com>
Co-authored-by: Trung Kien <letrungkien.k53.hut@gmail.com>
Co-authored-by: HovorunB <87417416+HovorunB@users.noreply.github.com>
Co-authored-by: Ruffin <roxfoxpox@gmail.com>
Co-authored-by: Øystein Sture <oysstu@users.noreply.github.com>
Co-authored-by: mrmara <48493979+mrmara@users.noreply.github.com>
Co-authored-by: antoniomarangi <antonio.marangi@alba-robot.com>
Co-authored-by: Griswald Brooks <griswald.brooks@gmail.com>
Co-authored-by: BriceRenaudeau <48433002+BriceRenaudeau@users.noreply.github.com>
Co-authored-by: Dirk Braunschweiger <1677757+dirkmb@users.noreply.github.com>
Co-authored-by: Dirk Braunschweiger <dirk.braunschweiger@symovo.de>
Co-authored-by: Guillaume Doisy <guillaume@dexory.com>
Co-authored-by: Alberto Tudela <ajtudela@gmail.com>
Co-authored-by: ryzhikovas <ryzhikovas@gmail.com>
Co-authored-by: Alexandr Buyval <alexbuyval@gmail.com>
Co-authored-by: Hyung-Taik Choi <htc.refactor@gmail.com>
Co-authored-by: Filipe Cerveira <filipecerveira@gmail.com>
Co-authored-by: Ryan <ryanfriedman5410+github@gmail.com>
Co-authored-by: Nick Lamprianidis <info@nlamprian.me>
Co-authored-by: gyaanantia <78275262+gyaanantia@users.noreply.github.com>
Co-authored-by: ymd-stella <7959916+ymd-stella@users.noreply.github.com>
Co-authored-by: Vineet <52542471+VineetTambe@users.noreply.github.com>
Co-authored-by: Chuanhong Guo <gch981213@gmail.com>
Co-authored-by: Christian Henkel <6976069+ct2034@users.noreply.github.com>
Co-authored-by: Hyunseok <yanghyunseok@me.com>
Co-authored-by: Anton Kesy <antonkesy@gmail.com>
Co-authored-by: redvinaa <redvinaa@gmail.com>
Co-authored-by: Joshua Wallace <josho.wallace@gmail.com>
Co-authored-by: MartiBolet <43337758+MartiBolet@users.noreply.github.com>
Co-authored-by: Stevedan Ogochukwu Omodolor <61468301+stevedanomodolor@users.noreply.github.com>
Co-authored-by: turtlewizard73 <mate.laszlo703@gmail.com>
turtlewizard73 added a commit to EnjoyRobotics/navigation2 that referenced this pull request Oct 24, 2023
* 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 <guillaume@dexory.com>

---------

Co-authored-by: ruffsl <roxfoxpox@gmail.com>
Co-authored-by: Guillaume Doisy <doisyg@users.noreply.github.com>
Co-authored-by: Guillaume Doisy <guillaume@dexory.com>
(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 <stevenmacenski@gmail.com>

* address time comment

* fix API change rclcpp::ServicesQoS()

* fix CI

---------

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* 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 <guillaume@dexory.com>
(cherry picked from commit 34f18d9222e33a2fddb2e45653cd5c0ef7b3bb11)

Co-authored-by: Guillaume Doisy <doisyg@users.noreply.github.com>

* 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 <stevenmacenski@gmail.com>

* Fix out of bound vector (#3461) (#3463)

(cherry picked from commit 0a63bf956e5da6e89946fde131303942e282c23b)

Co-authored-by: Tony Najjar <tony.najjar.1997@gmail.com>

* 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 <tony.najjar@logivations.com>

* fix segfault when path is empty (#3484) (#3485)

a

Co-authored-by: Guillaume Doisy <guillaume@dexory.com>
(cherry picked from commit 26ac8104862b25151d98981da1731931fa16d1b3)

Co-authored-by: Guillaume Doisy <doisyg@users.noreply.github.com>

* Check compile options (#3487) (#3489)

(cherry picked from commit e7259030f834ff19599206ae80a1ed5d05cd32d2)

Co-authored-by: Tony Najjar <tony.najjar@logivations.com>

* ackermann motion model bug (#3498) (#3501)

Prevent cost to be modified twice.

(cherry picked from commit 482017ce02ec08eadd3a23440e619b0e506cb9c5)

Co-authored-by: HAIDAR OBEID <31267966+ObeidHaidar@users.noreply.github.com>

* 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 <letrungkien.k53.hut@gmail.com>

* 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 <stevenmacenski@gmail.com>

---------

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* 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 <os@skarvtech.com>

* Added str cast to parse int (#3486)

Co-authored-by: antoniomarangi <antonio.marangi@alba-robot.com>

* 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 <stevenmacenski@gmail.com>

* Update nav2_behavior_tree/include/nav2_behavior_tree/bt_service_node.hpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* .

* fix linter

* fix CI

---------

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* 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 <dirk.braunschweiger@symovo.de>

* fix data race: prohibit resizeMap() during plugin/filter initialization (#3522)

Co-authored-by: Dirk Braunschweiger <dirk.braunschweiger@symovo.de>

* 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 <guillaume@dexory.com>

* [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 <guillaume@dexory.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* 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 <ryzhikovas@gmail.com>

* 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 <guillaume@dexory.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* bumping humble to 1.1.7 for release

---------

Signed-off-by: Trung Kien <letrungkien.k53.hut@gmail.com>
Signed-off-by: Øystein Sture <os@skarvtech.com>
Signed-off-by: ryzhikovas <ryzhikovas@gmail.com>
Co-authored-by: Alexey Merzlyakov <60094858+AlexeyMerzlyakov@users.noreply.github.com>
Co-authored-by: Jose Luis Blanco-Claraco <joseluisblancoc@gmail.com>
Co-authored-by: DylanDeCoeyer-Quimesis <102609575+DylanDeCoeyer-Quimesis@users.noreply.github.com>
Co-authored-by: Trung Kien <letrungkien.k53.hut@gmail.com>
Co-authored-by: HovorunB <87417416+HovorunB@users.noreply.github.com>
Co-authored-by: Tony Najjar <tony.najjar@logivations.com>
Co-authored-by: Ruffin <roxfoxpox@gmail.com>
Co-authored-by: Øystein Sture <oysstu@users.noreply.github.com>
Co-authored-by: mrmara <48493979+mrmara@users.noreply.github.com>
Co-authored-by: antoniomarangi <antonio.marangi@alba-robot.com>
Co-authored-by: Tony Najjar <tony.najjar.1997@gmail.com>
Co-authored-by: Griswald Brooks <griswald.brooks@gmail.com>
Co-authored-by: BriceRenaudeau <48433002+BriceRenaudeau@users.noreply.github.com>
Co-authored-by: Dirk Braunschweiger <1677757+dirkmb@users.noreply.github.com>
Co-authored-by: Dirk Braunschweiger <dirk.braunschweiger@symovo.de>
Co-authored-by: Guillaume Doisy <doisyg@users.noreply.github.com>
Co-authored-by: Guillaume Doisy <guillaume@dexory.com>
Co-authored-by: Alberto Tudela <ajtudela@gmail.com>
Co-authored-by: ryzhikovas <ryzhikovas@gmail.com>
Co-authored-by: Alexandr Buyval <alexbuyval@gmail.com>
Co-authored-by: Hyung-Taik Choi <htc.refactor@gmail.com>
Co-authored-by: Filipe Cerveira <filipecerveira@gmail.com>

* 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 <stevenmacenski@gmail.com>

* 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 <48433002+BriceRenaudeau@users.noreply.github.com>

* 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 <ryanfriedman5410+github@gmail.com>

* Fix rviz panel node arguments (#3655)

Signed-off-by: Nick Lamprianidis <info@nlamprian.me>

* 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 <guillaume@dexory.com>

* 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 <doisyg@users.noreply.github.com>
Co-authored-by: Guillaume Doisy <guillaume@dexory.com>

* 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 <ryanfriedman5410+github@gmail.com>
Signed-off-by: Nick Lamprianidis <info@nlamprian.me>
Co-authored-by: Filipe Cerveira <filipecerveira@gmail.com>
Co-authored-by: Ryan <ryanfriedman5410+github@gmail.com>
Co-authored-by: Nick Lamprianidis <info@nlamprian.me>
Co-authored-by: BriceRenaudeau <48433002+BriceRenaudeau@users.noreply.github.com>
Co-authored-by: Guillaume Doisy <doisyg@users.noreply.github.com>
Co-authored-by: Guillaume Doisy <guillaume@dexory.com>
Co-authored-by: DylanDeCoeyer-Quimesis <102609575+DylanDeCoeyer-Quimesis@users.noreply.github.com>
Co-authored-by: gyaanantia <78275262+gyaanantia@users.noreply.github.com>
Co-authored-by: Tony Najjar <tony.najjar@logivations.com>

* Fixing 3768: planner server lifecycle transition down (#3786)

* Use ParameterFile (allow_substs) (#3706) (#3806)

Signed-off-by: ymd-stella <world.applepie@gmail.com>
Co-authored-by: ymd-stella <7959916+ymd-stella@users.noreply.github.com>

* 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 <gch981213@gmail.com>

* [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 <christian.henkel2@de.bosch.com>

* gazebo orientation to match rviz

Signed-off-by: Christian Henkel <christian.henkel2@de.bosch.com>

* rotating in direction of view

---------

Signed-off-by: Christian Henkel <christian.henkel2@de.bosch.com>

* 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 <world.applepie@gmail.com>

* 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 <stevenmacenski@gmail.com>

* 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 <stevenmacenski@gmail.com>

---------

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* use ros clock for wait (#3782)

* use ROS clock for wait

* fix backport issue

---------

Co-authored-by: Guillaume Doisy <guillaume@dexory.com>

* 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 <doisyg@users.noreply.github.com>

---------

Co-authored-by: Guillaume Doisy <doisyg@users.noreply.github.com>

* 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 <antonkesy@gmail.com>

* [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 <christian.henkel2@de.bosch.com>
Signed-off-by: ymd-stella <world.applepie@gmail.com>
Signed-off-by: Anton Kesy <antonkesy@gmail.com>
Co-authored-by: Christian Henkel <6976069+ct2034@users.noreply.github.com>
Co-authored-by: Alexey Merzlyakov <60094858+AlexeyMerzlyakov@users.noreply.github.com>
Co-authored-by: ymd-stella <7959916+ymd-stella@users.noreply.github.com>
Co-authored-by: Hyunseok <yanghyunseok@me.com>
Co-authored-by: Guillaume Doisy <doisyg@users.noreply.github.com>
Co-authored-by: Guillaume Doisy <guillaume@dexory.com>
Co-authored-by: Anton Kesy <antonkesy@gmail.com>

* Update CMakeLists.txt (#3843) (#3845)

(cherry picked from commit 2d6e9a96354c0ea763e70eedd81225635f7b9db5)

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* 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 <stevenmacenski@gmail.com>

* 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 <stevenmacenski@gmail.com>

* 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 <stevenmacenski@gmail.com>

* 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 <stevenmacenski@gmail.com>
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 <stevenmacenski@gmail.com>

* 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 <stevenmacenski@gmail.com>

* 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 <43337758+MartiBolet@users.noreply.github.com>
Co-authored-by: Alexey Merzlyakov <60094858+AlexeyMerzlyakov@users.noreply.github.com>
Co-authored-by: Stevedan Ogochukwu Omodolor <61468301+stevedanomodolor@users.noreply.github.com>

* 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 <roxfoxpox@gmail.com>

* code review

* code review

* removed unsigned short

* lint errer

* error codes in main bts

* behavior error code range change

---------

Co-authored-by: Ruffin <roxfoxpox@gmail.com>

* correct error message (#3631) (#5)

* correct error message

* clean up

* cleanup

* remove header

Co-authored-by: Joshua Wallace <josho.wallace@gmail.com>

* 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 <letrungkien.k53.hut@gmail.com>
Signed-off-by: Øystein Sture <os@skarvtech.com>
Signed-off-by: ryzhikovas <ryzhikovas@gmail.com>
Signed-off-by: Ryan Friedman <ryanfriedman5410+github@gmail.com>
Signed-off-by: Nick Lamprianidis <info@nlamprian.me>
Signed-off-by: ymd-stella <world.applepie@gmail.com>
Signed-off-by: Christian Henkel <christian.henkel2@de.bosch.com>
Signed-off-by: Anton Kesy <antonkesy@gmail.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Co-authored-by: Tony Najjar <tony.najjar@logivations.com>
Co-authored-by: HAIDAR OBEID <31267966+ObeidHaidar@users.noreply.github.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: Guillaume Doisy <doisyg@users.noreply.github.com>
Co-authored-by: Tony Najjar <tony.najjar.1997@gmail.com>
Co-authored-by: nakai-omer <108797279+nakai-omer@users.noreply.github.com>
Co-authored-by: Alexey Merzlyakov <60094858+AlexeyMerzlyakov@users.noreply.github.com>
Co-authored-by: Jose Luis Blanco-Claraco <joseluisblancoc@gmail.com>
Co-authored-by: DylanDeCoeyer-Quimesis <102609575+DylanDeCoeyer-Quimesis@users.noreply.github.com>
Co-authored-by: Trung Kien <letrungkien.k53.hut@gmail.com>
Co-authored-by: HovorunB <87417416+HovorunB@users.noreply.github.com>
Co-authored-by: Ruffin <roxfoxpox@gmail.com>
Co-authored-by: Øystein Sture <oysstu@users.noreply.github.com>
Co-authored-by: mrmara <48493979+mrmara@users.noreply.github.com>
Co-authored-by: antoniomarangi <antonio.marangi@alba-robot.com>
Co-authored-by: Griswald Brooks <griswald.brooks@gmail.com>
Co-authored-by: BriceRenaudeau <48433002+BriceRenaudeau@users.noreply.github.com>
Co-authored-by: Dirk Braunschweiger <1677757+dirkmb@users.noreply.github.com>
Co-authored-by: Dirk Braunschweiger <dirk.braunschweiger@symovo.de>
Co-authored-by: Guillaume Doisy <guillaume@dexory.com>
Co-authored-by: Alberto Tudela <ajtudela@gmail.com>
Co-authored-by: ryzhikovas <ryzhikovas@gmail.com>
Co-authored-by: Alexandr Buyval <alexbuyval@gmail.com>
Co-authored-by: Hyung-Taik Choi <htc.refactor@gmail.com>
Co-authored-by: Filipe Cerveira <filipecerveira@gmail.com>
Co-authored-by: Ryan <ryanfriedman5410+github@gmail.com>
Co-authored-by: Nick Lamprianidis <info@nlamprian.me>
Co-authored-by: gyaanantia <78275262+gyaanantia@users.noreply.github.com>
Co-authored-by: ymd-stella <7959916+ymd-stella@users.noreply.github.com>
Co-authored-by: Vineet <52542471+VineetTambe@users.noreply.github.com>
Co-authored-by: Chuanhong Guo <gch981213@gmail.com>
Co-authored-by: Christian Henkel <6976069+ct2034@users.noreply.github.com>
Co-authored-by: Hyunseok <yanghyunseok@me.com>
Co-authored-by: Anton Kesy <antonkesy@gmail.com>
Co-authored-by: redvinaa <redvinaa@gmail.com>
Co-authored-by: Joshua Wallace <josho.wallace@gmail.com>
Co-authored-by: MartiBolet <43337758+MartiBolet@users.noreply.github.com>
Co-authored-by: Stevedan Ogochukwu Omodolor <61468301+stevedanomodolor@users.noreply.github.com>
Co-authored-by: turtlewizard73 <mate.laszlo703@gmail.com>
kakarrot-anderson pushed a commit to floatic-unicorn/navigation2 that referenced this pull request Jan 24, 2024
* 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 <letrungkien.k53.hut@gmail.com>

* 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 <stevenmacenski@gmail.com>

---------

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* 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 <os@skarvtech.com>

* Added str cast to parse int (ros-navigation#3486)

Co-authored-by: antoniomarangi <antonio.marangi@alba-robot.com>

* 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 <stevenmacenski@gmail.com>

* Update nav2_behavior_tree/include/nav2_behavior_tree/bt_service_node.hpp

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* .

* fix linter

* fix CI

---------

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* 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 <dirk.braunschweiger@symovo.de>

* fix data race: prohibit resizeMap() during plugin/filter initialization (ros-navigation#3522)

Co-authored-by: Dirk Braunschweiger <dirk.braunschweiger@symovo.de>

* 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 <guillaume@dexory.com>

* [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 <guillaume@dexory.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* 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 <ryzhikovas@gmail.com>

* 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 <guillaume@dexory.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* bumping humble to 1.1.7 for release

---------

Signed-off-by: Trung Kien <letrungkien.k53.hut@gmail.com>
Signed-off-by: Øystein Sture <os@skarvtech.com>
Signed-off-by: ryzhikovas <ryzhikovas@gmail.com>
Co-authored-by: Alexey Merzlyakov <60094858+AlexeyMerzlyakov@users.noreply.github.com>
Co-authored-by: Jose Luis Blanco-Claraco <joseluisblancoc@gmail.com>
Co-authored-by: DylanDeCoeyer-Quimesis <102609575+DylanDeCoeyer-Quimesis@users.noreply.github.com>
Co-authored-by: Trung Kien <letrungkien.k53.hut@gmail.com>
Co-authored-by: HovorunB <87417416+HovorunB@users.noreply.github.com>
Co-authored-by: Tony Najjar <tony.najjar@logivations.com>
Co-authored-by: Ruffin <roxfoxpox@gmail.com>
Co-authored-by: Øystein Sture <oysstu@users.noreply.github.com>
Co-authored-by: mrmara <48493979+mrmara@users.noreply.github.com>
Co-authored-by: antoniomarangi <antonio.marangi@alba-robot.com>
Co-authored-by: Tony Najjar <tony.najjar.1997@gmail.com>
Co-authored-by: Griswald Brooks <griswald.brooks@gmail.com>
Co-authored-by: BriceRenaudeau <48433002+BriceRenaudeau@users.noreply.github.com>
Co-authored-by: Dirk Braunschweiger <1677757+dirkmb@users.noreply.github.com>
Co-authored-by: Dirk Braunschweiger <dirk.braunschweiger@symovo.de>
Co-authored-by: Guillaume Doisy <doisyg@users.noreply.github.com>
Co-authored-by: Guillaume Doisy <guillaume@dexory.com>
Co-authored-by: Alberto Tudela <ajtudela@gmail.com>
Co-authored-by: ryzhikovas <ryzhikovas@gmail.com>
Co-authored-by: Alexandr Buyval <alexbuyval@gmail.com>
Co-authored-by: Hyung-Taik Choi <htc.refactor@gmail.com>
Co-authored-by: Filipe Cerveira <filipecerveira@gmail.com>

* 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 <stevenmacenski@gmail.com>

* 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 <48433002+BriceRenaudeau@users.noreply.github.com>

* 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 <ryanfriedman5410+github@gmail.com>

* Fix rviz panel node arguments (ros-navigation#3655)

Signed-off-by: Nick Lamprianidis <info@nlamprian.me>

* 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 <guillaume@dexory.com>

* 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 <doisyg@users.noreply.github.com>
Co-authored-by: Guillaume Doisy <guillaume@dexory.com>

* 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 <ryanfriedman5410+github@gmail.com>
Signed-off-by: Nick Lamprianidis <info@nlamprian.me>
Co-authored-by: Filipe Cerveira <filipecerveira@gmail.com>
Co-authored-by: Ryan <ryanfriedman5410+github@gmail.com>
Co-authored-by: Nick Lamprianidis <info@nlamprian.me>
Co-authored-by: BriceRenaudeau <48433002+BriceRenaudeau@users.noreply.github.com>
Co-authored-by: Guillaume Doisy <doisyg@users.noreply.github.com>
Co-authored-by: Guillaume Doisy <guillaume@dexory.com>
Co-authored-by: DylanDeCoeyer-Quimesis <102609575+DylanDeCoeyer-Quimesis@users.noreply.github.com>
Co-authored-by: gyaanantia <78275262+gyaanantia@users.noreply.github.com>
Co-authored-by: Tony Najjar <tony.najjar@logivations.com>

* 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 <world.applepie@gmail.com>
Co-authored-by: ymd-stella <7959916+ymd-stella@users.noreply.github.com>

* 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 <gch981213@gmail.com>

* [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 <christian.henkel2@de.bosch.com>

* gazebo orientation to match rviz

Signed-off-by: Christian Henkel <christian.henkel2@de.bosch.com>

* rotating in direction of view

---------

Signed-off-by: Christian Henkel <christian.henkel2@de.bosch.com>

* 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 <world.applepie@gmail.com>

* 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 <stevenmacenski@gmail.com>

* 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 <stevenmacenski@gmail.com>

---------

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* use ros clock for wait (ros-navigation#3782)

* use ROS clock for wait

* fix backport issue

---------

Co-authored-by: Guillaume Doisy <guillaume@dexory.com>

* 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 <doisyg@users.noreply.github.com>

---------

Co-authored-by: Guillaume Doisy <doisyg@users.noreply.github.com>

* 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 <antonkesy@gmail.com>

* [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 <christian.henkel2@de.bosch.com>
Signed-off-by: ymd-stella <world.applepie@gmail.com>
Signed-off-by: Anton Kesy <antonkesy@gmail.com>
Co-authored-by: Christian Henkel <6976069+ct2034@users.noreply.github.com>
Co-authored-by: Alexey Merzlyakov <60094858+AlexeyMerzlyakov@users.noreply.github.com>
Co-authored-by: ymd-stella <7959916+ymd-stella@users.noreply.github.com>
Co-authored-by: Hyunseok <yanghyunseok@me.com>
Co-authored-by: Guillaume Doisy <doisyg@users.noreply.github.com>
Co-authored-by: Guillaume Doisy <guillaume@dexory.com>
Co-authored-by: Anton Kesy <antonkesy@gmail.com>

* Update CMakeLists.txt (ros-navigation#3843) (ros-navigation#3845)

(cherry picked from commit 2d6e9a9)

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* 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 <stevenmacenski@gmail.com>

* 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 <stevenmacenski@gmail.com>

* 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 <stevenmacenski@gmail.com>

* 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 <leif@peanutrobotics.com>
(cherry picked from commit a1c9fd5)

# Conflicts:
#	nav2_mppi_controller/src/controller.cpp

* fix merge conflict

---------

Co-authored-by: LeifHookedWireless <leif@hookedwireless.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* 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 <130988564+GoesM@users.noreply.github.com>

* Log if BT rate is exceeded (ros-navigation#3909) (ros-navigation#3913)

(cherry picked from commit a11cdd8)

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* Update theta_star_planner.cpp (ros-navigation#3918) (ros-navigation#3922)

(cherry picked from commit 0629ff3)

Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>

* 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 <stevenmacenski@gmail.com>

* fix build

Signed-off-by: kevin <kevin@floatic.io>

* test

Signed-off-by: kevin <kevin@floatic.io>

* test

Signed-off-by: kevin <kevin@floatic.io>

* disdt

Signed-off-by: kevin <kevin@floatic.io>

* test

Signed-off-by: kevin <kevin@floatic.io>

* test

Signed-off-by: kevin <kevin@floatic.io>

* remove unused

Signed-off-by: kevin <kevin@floatic.io>

* test

Signed-off-by: kevin <kevin@floatic.io>

* test

Signed-off-by: kevin <kevin@floatic.io>

* fix spin

Signed-off-by: ladianchad <qhrejddlvltm@gmail.com>

* remove looprate log

Signed-off-by: ladianchad <qhrejddlvltm@gmail.com>

* removed loop rate waring

Signed-off-by: ladianchad <qhrejddlvltm@gmail.com>

---------

Signed-off-by: Trung Kien <letrungkien.k53.hut@gmail.com>
Signed-off-by: Øystein Sture <os@skarvtech.com>
Signed-off-by: ryzhikovas <ryzhikovas@gmail.com>
Signed-off-by: Ryan Friedman <ryanfriedman5410+github@gmail.com>
Signed-off-by: Nick Lamprianidis <info@nlamprian.me>
Signed-off-by: ymd-stella <world.applepie@gmail.com>
Signed-off-by: Christian Henkel <christian.henkel2@de.bosch.com>
Signed-off-by: Anton Kesy <antonkesy@gmail.com>
Signed-off-by: kevin <kevin@floatic.io>
Signed-off-by: ladianchad <qhrejddlvltm@gmail.com>
Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
Co-authored-by: Alexey Merzlyakov <60094858+AlexeyMerzlyakov@users.noreply.github.com>
Co-authored-by: Jose Luis Blanco-Claraco <joseluisblancoc@gmail.com>
Co-authored-by: DylanDeCoeyer-Quimesis <102609575+DylanDeCoeyer-Quimesis@users.noreply.github.com>
Co-authored-by: Trung Kien <letrungkien.k53.hut@gmail.com>
Co-authored-by: HovorunB <87417416+HovorunB@users.noreply.github.com>
Co-authored-by: Tony Najjar <tony.najjar@logivations.com>
Co-authored-by: Ruffin <roxfoxpox@gmail.com>
Co-authored-by: Øystein Sture <oysstu@users.noreply.github.com>
Co-authored-by: mrmara <48493979+mrmara@users.noreply.github.com>
Co-authored-by: antoniomarangi <antonio.marangi@alba-robot.com>
Co-authored-by: Tony Najjar <tony.najjar.1997@gmail.com>
Co-authored-by: Griswald Brooks <griswald.brooks@gmail.com>
Co-authored-by: BriceRenaudeau <48433002+BriceRenaudeau@users.noreply.github.com>
Co-authored-by: Dirk Braunschweiger <1677757+dirkmb@users.noreply.github.com>
Co-authored-by: Dirk Braunschweiger <dirk.braunschweiger@symovo.de>
Co-authored-by: Guillaume Doisy <doisyg@users.noreply.github.com>
Co-authored-by: Guillaume Doisy <guillaume@dexory.com>
Co-authored-by: Alberto Tudela <ajtudela@gmail.com>
Co-authored-by: ryzhikovas <ryzhikovas@gmail.com>
Co-authored-by: Alexandr Buyval <alexbuyval@gmail.com>
Co-authored-by: Hyung-Taik Choi <htc.refactor@gmail.com>
Co-authored-by: Filipe Cerveira <filipecerveira@gmail.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: Ryan <ryanfriedman5410+github@gmail.com>
Co-authored-by: Nick Lamprianidis <info@nlamprian.me>
Co-authored-by: gyaanantia <78275262+gyaanantia@users.noreply.github.com>
Co-authored-by: ymd-stella <7959916+ymd-stella@users.noreply.github.com>
Co-authored-by: Vineet <52542471+VineetTambe@users.noreply.github.com>
Co-authored-by: Chuanhong Guo <gch981213@gmail.com>
Co-authored-by: Christian Henkel <6976069+ct2034@users.noreply.github.com>
Co-authored-by: Hyunseok <yanghyunseok@me.com>
Co-authored-by: Anton Kesy <antonkesy@gmail.com>
Co-authored-by: LeifHookedWireless <leif@hookedwireless.com>
Co-authored-by: GoesM <130988564+GoesM@users.noreply.github.com>
Co-authored-by: kevin <kevin@floatic.io>
enricosutera pushed a commit to enricosutera/navigation2 that referenced this pull request May 19, 2024
* empty error codes

* add error codes for behaviors

* updated assisted teleop

* pass tests

* added error codes to bt nodes

* 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

* ignore warning (ros-navigation#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 44375a1.

* 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 <roxfoxpox@gmail.com>

* code review

* code review

* removed unsigned short

* lint errer

* error codes in main bts

* behavior error code range change

---------

Co-authored-by: Ruffin <roxfoxpox@gmail.com>
Signed-off-by: enricosutera <enricosutera@outlook.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
devcontainer Dev Container
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants