diff --git a/.gitignore b/.gitignore
index 42b69f4..1506230 100644
--- a/.gitignore
+++ b/.gitignore
@@ -20,3 +20,4 @@ server*.cfg
_savebackup/
*.swatches
/imgui.ini
+backtrace.log
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index e95c5e0..d04cf3b 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -17,4 +17,4 @@ When creating a pull request to this repository, make sure that:
### Additional information
-We recommend you to read [O3DE contribution guide](https://github.com/o3de/community/blob/main/CONTRIBUTING.md) and [ROS contribution guide](https://docs.ros.org/en/humble/Contributing.html) as well.
+We recommend you to read [O3DE contribution guide](https://github.com/o3de/community/blob/main/CONTRIBUTING.md) and [ROS contribution guide](https://docs.ros.org/en/jazzy/Contributing.html) as well.
diff --git a/Docker/Dockerfile b/Docker/Dockerfile
index 124a7a3..32913fe 100644
--- a/Docker/Dockerfile
+++ b/Docker/Dockerfile
@@ -2,27 +2,21 @@
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
#
# SPDX-License-Identifier: Apache-2.0 OR MIT
-#
-# Collect the arguments for the base ros image
-ARG ROS_VERSION=humble
-ARG UBUNTU_VERSION=jammy
+ARG ROS_VERSION=jazzy
+ARG UBUNTU_VERSION=noble
FROM ros:${ROS_VERSION}-ros-base-${UBUNTU_VERSION}
ARG ROS_VERSION
ARG UBUNTU_VERSION
-
# Argument to determining the image type ('simulation' or 'navstack')
-ARG IMAGE_TYPE=simulation # Default to 'simulation'
-
-# Arguments for the source repos needed for the robot vacuum sample docker
-ARG O3DE_REPO=https://github.com/o3de/o3de.git
-ARG O3DE_BRANCH=2310.1
+ARG IMAGE_TYPE=simulation
-ARG O3DE_EXTRAS_REPO=https://github.com/o3de/o3de-extras.git
-ARG O3DE_EXTRAS_BRANCH=2310.1
+# O3DE SDK installer URL and install path
+ARG O3DE_DEB_URL=https://o3debinaries.org/stabilization-26050/Latest/Linux/o3de_latest.deb
+ARG O3DE_INSTALL_DIR=/opt/O3DE/26.05
ARG LOFT_GEM_REPO=https://github.com/o3de/loft-arch-vis-sample.git
ARG LOFT_GEM_BRANCH=main
@@ -30,113 +24,114 @@ ARG LOFT_GEM_BRANCH=main
ARG ROBOT_VAC_SAMPLE_REPO=https://github.com/o3de/RobotVacuumSample.git
ARG ROBOT_VAC_SAMPLE_BRANCH=main
-# Additional argument to control build concurrency
-ARG CMAKE_JOBS=8
-
ENV WORKSPACE=/data/workspace
WORKDIR $WORKSPACE
RUN apt-get update && apt-get upgrade -y
-# Add additional package repositories needed for packages
-RUN apt-get install -y --no-install-recommends gpg wget curl
-
-
-# For ubuntu 20.04 (focal) then default version of cmake is not supported. Update and get version 3.24.1 from kitware
-RUN if [ "${UBUNTU_VERSION}" = "focal" ]; then \
- wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | \
- gpg --dearmor - | \
- tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null \
- && echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ focal main' | \
- tee /etc/apt/sources.list.d/kitware.list >/dev/null \
- && apt-get update; \
+RUN apt-get install -y --no-install-recommends wget curl
+
+# Install build tools, O3DE system dependencies, and ROS 2 navigation packages
+RUN apt-get install -y --no-install-recommends \
+ git \
+ git-lfs \
+ clang \
+ ninja-build \
+ cmake \
+ libglu1-mesa-dev \
+ libxcb-xinerama0 \
+ libxcb-xinput0 \
+ libxcb-xinput-dev \
+ libxcb-xfixes0-dev \
+ libxcb-xkb-dev \
+ libxkbcommon-dev \
+ libxkbcommon-x11-dev \
+ libfontconfig1-dev \
+ libcurl4-openssl-dev \
+ libsdl2-dev \
+ zlib1g-dev \
+ mesa-common-dev \
+ libssl-dev \
+ libxcb-icccm4 \
+ libxcb-image0 \
+ libxcb-keysyms1 \
+ libxcb-render-util0 \
+ libxcb-randr0 \
+ ufw \
+ ros-${ROS_DISTRO}-desktop \
+ ros-${ROS_DISTRO}-slam-toolbox \
+ ros-${ROS_DISTRO}-navigation2 \
+ ros-${ROS_DISTRO}-nav2-bringup \
+ ros-${ROS_DISTRO}-pointcloud-to-laserscan \
+ ros-${ROS_DISTRO}-gazebo-msgs \
+ ros-${ROS_DISTRO}-ackermann-msgs \
+ ros-${ROS_DISTRO}-rmw-cyclonedds-cpp \
+ ros-${ROS_DISTRO}-control-toolbox \
+ ros-${ROS_DISTRO}-vision-msgs \
+ ros-${ROS_DISTRO}-nav-msgs
+
+# Download and install the O3DE SDK
+RUN if [ "${IMAGE_TYPE}" = "simulation" ]; then \
+ wget -O /tmp/o3de_latest.deb ${O3DE_DEB_URL} && \
+ apt-get install -y /tmp/o3de_latest.deb && \
+ rm /tmp/o3de_latest.deb; \
fi
-#
-# Install packages needed for cloning and building from the source repos
-#
+# Initialize O3DE Python environment, register the engine, and download required Gems
+RUN if [ "${IMAGE_TYPE}" = "simulation" ]; then \
+ ${O3DE_INSTALL_DIR}/python/get_python.sh && \
+ ${O3DE_INSTALL_DIR}/scripts/o3de.sh register --this-engine && \
+ ${O3DE_INSTALL_DIR}/scripts/o3de.sh register --repo-uri https://canonical.o3de.org && \
+ ${O3DE_INSTALL_DIR}/scripts/o3de.sh download --gem-name LevelGeoreferencing && \
+ ${O3DE_INSTALL_DIR}/scripts/o3de.sh download --gem-name ROS2 && \
+ ${O3DE_INSTALL_DIR}/scripts/o3de.sh download --gem-name ROS2Controllers && \
+ ${O3DE_INSTALL_DIR}/scripts/o3de.sh download --gem-name ROS2Sensors; \
+ fi
-# Install the git and build tools
-RUN apt-get install -y --no-install-recommends git \
- git-lfs \
- clang-12 \
- ninja-build \
- cmake \
- libglu1-mesa-dev \
- libxcb-xinerama0 \
- libxcb-xinput0 \
- libxcb-xinput-dev \
- libxcb-xfixes0-dev \
- libxcb-xkb-dev \
- libxkbcommon-dev \
- libxkbcommon-x11-dev \
- libfontconfig1-dev \
- libcurl4-openssl-dev \
- libsdl2-dev \
- zlib1g-dev \
- mesa-common-dev \
- libssl-dev libxcb-icccm4 \
- libxcb-image0 \
- libxcb-keysyms1 \
- libxcb-render-util0 \
- libxcb-randr0 \
- libnvidia-gl-470 \
- ufw \
- ros-${ROS_DISTRO}-slam-toolbox \
- ros-${ROS_DISTRO}-navigation2 \
- ros-${ROS_DISTRO}-nav2-bringup \
- ros-${ROS_DISTRO}-pointcloud-to-laserscan \
- ros-${ROS_DISTRO}-gazebo-msgs \
- ros-${ROS_DISTRO}-ackermann-msgs \
- ros-${ROS_DISTRO}-rmw-cyclonedds-cpp \
- ros-${ROS_DISTRO}-control-toolbox \
- ros-${ROS_DISTRO}-nav-msgs
-
-COPY cleanup.bash /data/workspace/cleanup.bash
-
-# Clone O3DE repos, register, build, and cleanup in the same layer to reduce the size
+# Clone and register the Loft Scene Gem
RUN if [ "${IMAGE_TYPE}" = "simulation" ]; then \
- apt-get install -y --no-install-recommends ros-${ROS_DISTRO}-desktop && \
- cd $WORKSPACE && \
- git clone $O3DE_REPO && \
- git -C $WORKSPACE/o3de checkout $O3DE_BRANCH &&\
- git -C $WORKSPACE/o3de lfs install && \
- git -C $WORKSPACE/o3de lfs pull && \
- $WORKSPACE/o3de/python/get_python.sh && \
- $WORKSPACE/o3de/scripts/o3de.sh register -ep $WORKSPACE/o3de && \
- git clone $O3DE_EXTRAS_REPO && \
- git -C $WORKSPACE/o3de-extras checkout $O3DE_EXTRAS_BRANCH &&\
- $WORKSPACE/o3de/scripts/o3de.sh register -gp $WORKSPACE/o3de-extras/Gems/ROS2 && \
- git clone $LOFT_GEM_REPO && \
- git -C $WORKSPACE/loft-arch-vis-sample checkout $LOFT_GEM_BRANCH &&\
+ git clone ${LOFT_GEM_REPO} --depth 1 -b ${LOFT_GEM_BRANCH} $WORKSPACE/loft-arch-vis-sample && \
git -C $WORKSPACE/loft-arch-vis-sample lfs install && \
git -C $WORKSPACE/loft-arch-vis-sample lfs pull && \
- $WORKSPACE/o3de/scripts/o3de.sh register -gp $WORKSPACE/loft-arch-vis-sample/Gems/ArchVis/ && \
- git clone $ROBOT_VAC_SAMPLE_REPO && \
- git -C $WORKSPACE/RobotVacuumSample checkout $ROBOT_VAC_SAMPLE_BRANCH &&\
+ ${O3DE_INSTALL_DIR}/scripts/o3de.sh register -gp $WORKSPACE/loft-arch-vis-sample/Gems/ArchVis; \
+ fi
+
+# Clone and register the Robot Vacuum Sample project
+RUN if [ "${IMAGE_TYPE}" = "simulation" ]; then \
+ git clone ${ROBOT_VAC_SAMPLE_REPO} --depth 1 -b ${ROBOT_VAC_SAMPLE_BRANCH} $WORKSPACE/RobotVacuumSample && \
git -C $WORKSPACE/RobotVacuumSample lfs install && \
git -C $WORKSPACE/RobotVacuumSample lfs pull && \
- $WORKSPACE/o3de/scripts/o3de.sh register -pp $WORKSPACE/RobotVacuumSample/ && \
- . /opt/ros/${ROS_VERSION}/setup.sh && \
- cmake -B $WORKSPACE/RobotVacuumSample/build/linux -S $WORKSPACE/RobotVacuumSample -G "Ninja Multi-Config" -DLY_STRIP_DEBUG_SYMBOLS=TRUE -DLY_DISABLE_TEST_MODULES=ON && \
- cmake --build $WORKSPACE/RobotVacuumSample/build/linux --config profile --target AssetProcessorBatch RobotVacuumSample.GameLauncher RobotVacuumSample.Assets -j $CMAKE_JOBS && \
- $WORKSPACE/cleanup.bash; \
- elif [ "${IMAGE_TYPE}" = "navstack" ]; then \
- apt-get install -y --no-install-recommends ros-${ROS_DISTRO}-desktop && \
- cd $WORKSPACE && \
- git clone --recursive $ROBOT_VAC_SAMPLE_REPO && \
- git -C $WORKSPACE/RobotVacuumSample checkout $ROBOT_VAC_SAMPLE_BRANCH; \
+ ${O3DE_INSTALL_DIR}/scripts/o3de.sh register -pp $WORKSPACE/RobotVacuumSample; \
+ elif [ "${IMAGE_TYPE}" = "navstack" ]; then \
+ git clone --depth 1 -b ${ROBOT_VAC_SAMPLE_BRANCH} ${ROBOT_VAC_SAMPLE_REPO} $WORKSPACE/RobotVacuumSample; \
else \
echo "Unsupported IMAGE_TYPE: ${IMAGE_TYPE}" && exit 1; \
fi
+RUN apt-get install -y --no-install-recommends
+
+# Build the project
+RUN if [ "${IMAGE_TYPE}" = "simulation" ]; then \
+ . /opt/ros/${ROS_DISTRO}/setup.sh && \
+ cmake -B $WORKSPACE/RobotVacuumSample/build/linux \
+ -S $WORKSPACE/RobotVacuumSample \
+ -G "Ninja Multi-Config" \
+ -DLY_STRIP_DEBUG_SYMBOLS=TRUE \
+ -DLY_DISABLE_TEST_MODULES=ON && \
+ cmake --build $WORKSPACE/RobotVacuumSample/build/linux \
+ --config profile \
+ --target RobotVacuumSample RobotVacuumSample.GameLauncher RobotVacuumSample.Assets; \
+ fi
+
+# Remove source files of Loft scene to reduce image size
+RUN rm -rf $WORKSPACE/loft-arch-vis-sample
COPY LaunchSimulation.bash /data/workspace/LaunchSimulation.bash
COPY LaunchNavStack.bash /data/workspace/LaunchNavStack.bash
-ENV RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
+ENV RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
ENV LAUNCH_FULLSCREEN_OPT=0
-ENV NVIDIA_VISIBLE_DEVICES all
-ENV NVIDIA_DRIVER_CAPABILITIES all
-
+ENV NVIDIA_VISIBLE_DEVICES=all
+ENV NVIDIA_DRIVER_CAPABILITIES=all
+
ENTRYPOINT ["/bin/bash", "-c"]
diff --git a/Docker/README.md b/Docker/README.md
index 1a08cbe..7c1f8fc 100644
--- a/Docker/README.md
+++ b/Docker/README.md
@@ -1,139 +1,132 @@
-# Docker scripts for running the O3DE Demo Project
+# Docker scripts for running the O3DE Robot Vacuum Sample
-The following Dockerfiles defined in this path will prepare the appropiate ROS2 package
-(Ubuntu 20.04/Focal + Galactic or Ubuntu 22.04/Jammy + Humble) based environment and build
-the components necessary to run the O3DE demo project simulator through the O3DE engine.
+This directory contains a Dockerfile and helper scripts for building and running the O3DE Robot Vacuum Sample project.
+The Docker image is based on Ubuntu 24.04 (Noble) with ROS 2 Jazzy.
+
+> **Note:** The O3DE simulation is also compatible with Ubuntu 22.04 and ROS 2 Humble.
+> However, the navigation launch files have been updated for ROS 2 Jazzy and would need to be reverted for Humble.
+> See [Humble compatibility](#humble-compatibility) for details.
## Prerequisites
-* [Hardware requirements of o3de](https://www.o3de.org/docs/welcome-guide/requirements/)
-* Ubuntu 20.04 (Focal) or 22.04 (Jammy)
+* [Hardware requirements of O3DE](https://www.o3de.org/docs/welcome-guide/requirements/)
* At least 60 GB of free disk space
* Docker installed and configured
- * **Note** It is recommended to have Docker installed correctly and in a secure manner so that the docker commands in this guide do not require elevated priviledges (sudo) in order to run them. See [Docker Engine post-installation steps](https://docs.docker.com/engine/install/linux-postinstall/) for more details.
-* [NVidia container toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker)
+ * **Note:** It is recommended to have Docker installed correctly and in a secure manner so that the Docker commands in this guide do not require elevated privileges (sudo). See [Docker Engine post-installation steps](https://docs.docker.com/engine/install/linux-postinstall/) for more details.
+* [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker)
## Building the Docker Image
-By default, the docker script provided in this project will build a docker image to run the Robot Vacuum sample project
-on Ubuntu 22.04 (jammy) with the ROS2 Humble distribution. For example, to build the docker image, run the following
-command:
-
-```
+By default, the Dockerfile builds a simulation image for Ubuntu 24.04 (Noble) with ROS 2 Jazzy.
+All Docker commands below should be run from the `Docker/` directory:
+```shell
+cd Docker
docker build -t o3de_robot_vacuum_simulation:latest .
```
-**Note**
-The above command example tags specific commits for o3de, the ros2 gem, and the loft scene asset repos and are based on known working commits. See the Advanced Options section below for more information.
-
+This creates a Docker image named `o3de_robot_vacuum_simulation` that contains the simulation launcher,
+the navigation stack, and helper scripts (`LaunchSimulation.bash` and `LaunchNavStack.bash`).
-This will create a docker image named 'o3de_robot_vacuum_simulation' with the tag 'latest' that contains both the simulation launcher and the
-navigation stack. It will also contain helper scripts that will launch either the simulation (LaunchSimulation.bash) or
-the RViz2 (LaunchNavStack.bash).
+You can also create a separate image that contains only the navigation stack and RViz2:
-You can also create a separate docker image that only contains the navigation stack and RViz2 by supplying the argument
-```IMAGE_TYPE``` and setting it to 'navstack':
-
-```
+```shell
docker build --build-arg IMAGE_TYPE=navstack -t o3de_robot_vacuum_navstack:latest .
```
-ROS2 allows for communication across multiple docker images running on the same host, provided that they specify the 'bridge'
-network type when launching the docker image.
-
-
## Running the Docker Image
-Launching O3DE applications in a Docker container requires GPU acceleration support. (Make sure that the [nvidia-docker 2](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker) is installed.)
+Launching O3DE applications in a Docker container requires GPU acceleration support.
+Make sure the [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker) is installed.
-### Direct Access to the X Server
-The simulation docker image should be launched first before bringing up the robot application. To run the robot application,
-first allow the container root user to access the running X server for display
+### Step 1 — Allow display access
-```
+```shell
xhost +local:root
```
-Then launch the built simulation docker image with the following command
+### Step 2 — Launch the simulation
-```
-docker run --rm --network="bridge" --gpus all -e DISPLAY=:1 -v /tmp/.X11-unix:/tmp/.X11-unix -it o3de_robot_vacuum_simulation:latest /data/workspace/LaunchSimulation.bash
+```shell
+docker run --rm --network=host --gpus all \
+ -e DISPLAY=$DISPLAY \
+ -v /tmp/.X11-unix:/tmp/.X11-unix \
+ o3de_robot_vacuum_simulation:latest \
+ /data/workspace/LaunchSimulation.bash
```
-Once the simulation is up and running, launch the navigation stack inside the simulation docker image, which will bring up RViz to control the robot.
+### Step 3 — Launch the navigation stack
-```
-docker run --rm --network="bridge" --gpus all -e DISPLAY=:1 -v /tmp/.X11-unix:/tmp/.X11-unix -it o3de_robot_vacuum_simulation:latest /data/workspace/LaunchNavStack.bash
+Once the simulation is running, start the navigation stack in a second terminal.
+You can use the same simulation image:
+```shell
+docker run --rm --network=host --gpus all \
+ -e DISPLAY=$DISPLAY \
+ -v /tmp/.X11-unix:/tmp/.X11-unix \
+ o3de_robot_vacuum_simulation:latest \
+ /data/workspace/LaunchNavStack.bash
```
-If you created a separate docker image 'o3de_robot_vacuum_navstack:latest' which only contains the navigation stack and RViz2, you can launch it using that image, provided that the simulation docker image 'o3de_robot_vacuum_simulation' is running.
+Or the dedicated navstack image if you built one separately:
+```shell
+docker run --rm --network=host --gpus all \
+ -e DISPLAY=$DISPLAY \
+ -v /tmp/.X11-unix:/tmp/.X11-unix \
+ o3de_robot_vacuum_navstack:latest \
+ /data/workspace/LaunchNavStack.bash
```
-docker run --rm --network="bridge" --gpus all -e DISPLAY=:1 -v /tmp/.X11-unix:/tmp/.X11-unix -it o3de_robot_vacuum_navstack:latest /data/workspace/LaunchNavStack.bash
-```
-
-
-Make sure to revoke access to the X server when the simulation ends.
+### Step 4 — Revoke display access when done
-```
+```shell
xhost -local:root
```
-### Running using Rocker
+> **Note:** `--network=host` is recommended over `--network=bridge` to avoid ROS 2 multicast routing issues between containers on the same machine.
-Alternatively, you can use [Rocker](https://github.com/osrf/rocker) to run a GPU-accelerated docker image.
+## Advanced Options
-Launch the built simulation docker image with the following rocker command
+### Custom SDK installer
-```
-rocker --x11 --nvidia --network="bridge" o3de_robot_vacuum_simulation:latest /data/workspace/LaunchSimulation.bash
-```
+| Argument | Description | Default |
+|----------------|----------------------------------|-----------------------------------------------------------------------------|
+| `O3DE_DEB_URL` | URL of the O3DE SDK `.deb` file | `https://o3debinaries.org/stabilization-26050/Latest/Linux/o3de_latest.deb` |
-Once the simulation is up and running, launch the robot application docker image, which will bring up RViz to control the robot.
+### Custom source repositories and branches
-```
-rocker --x11 --nvidia --network="bridge" o3de_robot_vacuum_navstack:latest /data/workspace/LaunchNavStack.bash
-```
+| Argument | Repository | Default |
+|-------------------------|--------------------------|----------------------------------------------------|
+| `LOFT_GEM_REPO` | Loft ArchVis Scene Gem | `https://github.com/o3de/loft-arch-vis-sample.git` |
+| `ROBOT_VAC_SAMPLE_REPO` | Robot Vacuum Sample | `https://github.com/o3de/RobotVacuumSample.git` |
-Note: you might reuse the simulation docker image instead.
-```
-rocker --x11 --nvidia --network="bridge" o3de_robot_vacuum_simulation:latest /data/workspace/LaunchNavStack.bash
-```
-
-## Advanced Options
+| Argument | Repository | Default |
+|---------------------------|--------------------------|---------|
+| `LOFT_GEM_BRANCH` | Loft ArchVis Scene Gem | `main` |
+| `ROBOT_VAC_SAMPLE_BRANCH` | Robot Vacuum Sample | `main` |
-### Target ROS2 Distribution
-The Docker script defaults to building an image based on Ubuntu 20.04 (bionic) and the ROS2 Humble distribution. This can be overridden
-with a combination if the ```ROS_VERSION``` and ```UBUNTU_VERSION``` arguments.
+### Optimizing the build
-| ROS2 Distro | Repository |
-|---------------|-------------------------------------------|
-| galactic | ROS_VERSION=galactic UBUNTU_VERSION=focal |
-| humble | ROS_VERSION=humble UBUNTU_VERSION=humble |
+`CMAKE_JOBS` controls the number of parallel compile jobs (default: `8`):
+```shell
+docker build --build-arg CMAKE_JOBS=16 -t o3de_robot_vacuum_simulation:latest .
+```
-### Custom source repos and branches
-
-The Dockerscripts use the following arguments to determine the repository to pull the source from.
+## Humble compatibility
-| Argument | Repository | Default |
-|-----------------------|----------------------------------|-------------|
-| O3DE_REPO | O3DE | https://github.com/o3de/o3de.git |
-| O3DE_EXTRAS_REPO | O3DE Extras | https://github.com/o3de/o3de-extras.git |
-| LOFT_GEM_REPO | Loft ArchVis Sample Scene | https://github.com/o3de/loft-arch-vis-sample.git |
-| ROBOT_VAC_SAMPLE_REPO | Loft Scene Simulation repository | https://github.com/o3de/RobotVacuumSample |
+The O3DE simulation is also compatible with Ubuntu 22.04 and ROS 2 Humble. However, the navigation launch files
+in the `launch/` directory have been updated for ROS 2 Jazzy in two ways:
-In addition the repositories, the following arguments target the branch, commit, or tag to pull from their corresponding repository
+- Plugin names in `launch/config/navigation_params.yaml` use the `::` separator (e.g., `nav2_navfn_planner::NavfnPlanner`), while Humble expects `/` (e.g., `nav2_navfn_planner/NavfnPlanner`).
+- The `recoveries_server` node (Humble) was replaced by `behavior_server` (Jazzy) in the same file.
-| Argument | Repository | Default |
-|-------------------------|----------------------------------|-------------|
-| O3DE_BRANCH | O3DE | 2310.1 |
-| O3DE_EXTRAS_BRANCH | O3DE Extras | 2310.1 |
-| LOFT_GEM_BRANCH | Loft ArchVis Sample Scene | main |
-| ROBOT_VAC_SAMPLE_BRANCH | Loft Scene Simulation repository | main |
+To use Humble, change the Dockerfile defaults and revert those names in `navigation_params.yaml`:
-### Optimizing the build process ###
-The docker script provides a cmake-specific argument override to control the number of parallel jobs that can be used during the build of the docker image. ```CMAKE_JOBS``` sets the maximum number of concurrent jobs cmake will run during its build process and defaults to 8 jobs. This number can be adjusted to better suit the hardware which is running the docker image build.
+```shell
+docker build \
+ --build-arg ROS_VERSION=humble \
+ --build-arg UBUNTU_VERSION=jammy \
+ -t o3de_robot_vacuum_simulation:humble .
+```
diff --git a/Docker/cleanup.bash b/Docker/cleanup.bash
deleted file mode 100755
index 90e2444..0000000
--- a/Docker/cleanup.bash
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/bin/bash
-
-# Copyright (c) Contributors to the Open 3D Engine Project.
-# For complete copyright and license terms please see the LICENSE at the root of this distribution.
-#
-# SPDX-License-Identifier: Apache-2.0 OR MIT
-#
-
-# Delete files that were only needed for the Client and AssetProcessing after a build of the code and assets are complete
-
-DELETE_LIST=(o3de-extras/ \
- loft-arch-vis-sample/ \
- ~/.o3de/3rdParty/ \
- o3de/.git \
- o3de/AutomatedTesting \
- o3de/python/downloaded_packages \
- o3de/Code \
- o3de/Gems \
- RobotVacuumSample/.git \
- RobotVacuumSample/Gem \
- RobotVacuumSample/Source \
- RobotVacuumSample/Levels \
- RobotVacuumSample/ReflectionProbes \
- RobotVacuumSample/build/linux/Azcg/ \
- RobotVacuumSample/build/linux/CMake \
- RobotVacuumSample/build/linux/CMakeFiles/ \
- RobotVacuumSample/build/linux/External/ \
- RobotVacuumSample/build/linux/Testing/ \
- RobotVacuumSample/build/linux/_deps/ \
- RobotVacuumSample/build/linux/cmake \
- RobotVacuumSample/build/linux/lib/ \
- RobotVacuumSample/build/linux/o3de/ \
- RobotVacuumSample/build/linux/packages/ \
- RobotVacuumSample/build/linux/runtime_dependencies/ \
- RobotVacuumSample/build/linux/bin/profile/*.Editor.so \
- RobotVacuumSample/build/linux/bin/profile/EditorPlugins \
- RobotVacuumSample/build/linux/bin/profile/Editor \
- RobotVacuumSample/build/linux/bin/profile/AssetProcessor \
- RobotVacuumSample/build/linux/bin/profile/AssetProcessorBatch \
- RobotVacuumSample/build/linux/bin/profile/MaterialEditor \
- RobotVacuumSample/build/linux/bin/profile/AssetBuilder \
- RobotVacuumSample/build/linux/bin/profile/MaterialCanvas )
-
-for i in ${DELETE_LIST[@]}
-do
- echo "Deleting /data/workspace/$i"
- rm -rf $i
-done
-
-exit 0
-
diff --git a/Levels/Loft/Loft.prefab b/Levels/Loft/Loft.prefab
index 84d0bfa..4011098 100644
--- a/Levels/Loft/Loft.prefab
+++ b/Levels/Loft/Loft.prefab
@@ -24,7 +24,7 @@
"Entity_[4857644544770]",
"Entity_[50747416825914]",
"Entity_[2425721989581]",
- ""
+ "Instance_[2783631341276]/ContainerEntity"
]
},
"Component_[15230859088967841193]": {
@@ -2897,7 +2897,8 @@
"CameraEntityId": "",
"ApertureF": 0.20000000298023224,
"FNumber": 0.5988770723342896,
- "FocusDistance": 5.0
+ "FocusDistance": 5.0,
+ "FocusedEntityId": ""
}
}
},
@@ -5812,265 +5813,6 @@
"Instance_[2783631341276]": {
"Source": "Assets/RoboVac/RobotVacuum.prefab",
"Patches": [
- {
- "op": "replace",
- "path": "/Entities/Entity_[29879337505275]/Components/Component_[8911318239089158695]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_screenbody.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[30046841229819]/Components/Component_[2944624180499581291]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_wheel_right.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29909402276347]/Components/Component_[2190499505831493840]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/default_robot_vacuum_backbumper_67301715_5cb3_52f8_917e_6921a5bf842c_.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29978121753083]/Components/Component_[3883591470894058362]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_o_leftsensor.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[30059726131707]/Components/Component_[13270684703792889476]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_osensorboardholder.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29960941883899]/Components/Component_[3606538888856163283]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_suspensionbracketleft.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29849272734203]/Components/Component_[4490309095897116918]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_suspensionbracketright.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29870747570683]/Components/Component_[16343894006606552871]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_pariscopesenesor.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29917992210939]/Components/Component_[3733454906690206524]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_screenboltright.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[30042546262523]/Components/Component_[13523723562617065969]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_rightdrivegear.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[30038251295227]/Components/Component_[9002846224351078899]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_gearboxright.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29896517374459]/Components/Component_[4028256576739017793]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_battery.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[30033956327931]/Components/Component_[1788839891950967143]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_brushc.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29892222407163]/Components/Component_[15483889718527123585]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_navdisplaycamera.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[30055431164411]/Components/Component_[15286078445589088466]/ShapeConfigs/0/CookedData",
- "value": "TlhTAUNWWE0OAAAAAAAAAElDRQFDTEhMCQAAACAAAAAwAAAAEgAAAGAAAAAcSiq+iRKNPQrXo7scSiq+iRKNPQrXozt9VQK+e1UCPgrXozt9VQK+e1UCPgrXo7vsUTi+DSyHsgrXo7vsUTi+DSyHsgrXozuKEo09HEoqPgrXozt8VQI+fFUCPgrXozt8VQI+fFUCPgrXo7uKEo09HEoqPgrXo7sNLAey7FE4PgrXo7sNLAey7FE4PgrXozsbSiq+jRKNvQrXo7t7VQK+fVUCvgrXo7t7VQK+fVUCvgrXozsbSiq+jRKNvQrXozuHEo29HEoqvgrXo7uHEo29HEoqvgrXozsUwsoy7FE4vgrXo7sUwsoy7FE4vgrXozsbSio+ixKNPQrXozsbSio+ixKNPQrXo7uMEo29G0oqPgrXozuOEo09G0oqvgrXozt+VQI+e1UCvgrXozsdSio+hxKNvQrXozvsUTg+AAAAAArXozvsUTg+AAAAAArXo7uMEo29G0oqPgrXo7sdSio+hxKNvQrXo7t+VQI+e1UCvgrXo7uOEo09G0oqvgrXo7sAAAAAAAAAAAAAgD8K16O7AAAQADHbVL/aOQ4/AAAAAELHNL4QAAQYvhR7v7rFRz4AAAAAQsc0vhQABBncOQ4/MNtUPwAAAABCxzS+GAAEDbrFRz6+FHs/AAAAAELHNL4cAAQQLttUv9w5Dr8AAAAAQcc0viAABAe+FHu/yMVHvgAAAABDxzS+JAAEFNg5Dr8z21S/AAAAAEHHNL4oAAQGu8VHvr4Ue78AAAAAQsc0viwABAYx21Q/2jkOPwAAAABCxzS+MAAEDL4Uez/IxUc+AAAAAELHNL40AAQE3DkOvzDbVD8AAAAAQsc0vjgABBfIxUe+vhR7PwAAAABDxzS+PAAEEjPbVD/YOQ6/AAAAAEPHNL5AAAQAwBR7P7PFR74AAAAAQ8c0vkQABAQAAAAAAAAAAAAAgL8K16O7SAAQAdw5Dj8w21S/AAAAAELHNL5YAAQCyMVHPr4Ue78AAAAAQ8c0vlwABAoUBwYLFgIBBQ8OERMXGBkaAAECAwAEBQEGBwgJBgkKCwwNDg8MDwUEEBEODRASExEUFQgHFBobFRwDAhYcFgsKHRkYHh0bGhkfEhANDAQAAxwKCQgVGx0eHx4YFx8XExIACQADAAQADAALAAEAAgAGAAUABwAIABEAEAANAA4ACgECAQsBDwIPAgYDCQMPAwQEDwQMBQ8FBwUGBg8HCAcPCA8IEQkKCQ8KDgoPCw8LDAwPDQ4NEA0PDg8PEQ8QEBEBAg8AAQIAAQsBCw8CBg8AAgYAAwQAAwkDCQ8DBA8EDA8ABAwFBg8FBw8ABQcABQYHCA8ABwgIDxEACBEACQoJCg8ACwwAEBEADRAADQ4ACg4KDg8LDA8NDg8NDxAPEBEAAAAA7FE4vuxROL4K16O77FE4PuxROD4K16M7KQOCOuaDAzccpd4p4Xv9Jhyl3inmgwM39lA9nOF7/Sb2UD2cZmCDN160DzHmQoYxpySmrgAAgL8AAIC/CtejO2a7Nz6nLz07py89Ow=="
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[30003891556859]/Components/Component_[1999492667193267803]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_rails.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29969531818491]/Components/Component_[17440446447410127143]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_pariscopetube2.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29973826785787]/Components/Component_[16545126784841313456]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_navsensor_right.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29935172080123]/Components/Component_[15829508757323248550]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_o_rightsensor.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[30021071426043]/Components/Component_[15570075083272083678]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_towerstablebase.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[30025366393339]/Components/Component_[13415828729565192744]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_bottomwheeltwo.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29982416720379]/Components/Component_[4293762197237276665]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_gearboxleft.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29905107309051]/Components/Component_[5284750579111323888]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_depthdensorleft.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[30008186524155]/Components/Component_[17267597419950408018]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_capture.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29853567701499]/Components/Component_[10128585282897083339]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_pariscopetube1.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29844977766907]/Components/Component_[16257108268870135419]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_display.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29943762014715]/Components/Component_[2885749364514971795]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_towertop.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29939467047419]/Components/Component_[3619274201172812811]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_suspensionpinright.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29986711687675]/Components/Component_[12461709617141381815]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_suspensionpinleft.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29857862668795]/Components/Component_[575749947944104586]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_pariscope.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[30012481491451]/Components/Component_[4887345707029686]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_pariscopetube3.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29948056982011]/Components/Component_[10958693856247034196]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_backbumpersensor.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29922287178235]/Components/Component_[8700461298150480671]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_navlogicboard.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[30029661360635]/Components/Component_[10241546628040874120]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_mainlogicboard.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29991006654971]/Components/Component_[16696465630512642554]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_navsensor_left.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[8859800736551]/Components/Component_[14081951032431453423]/Child Entity Order/0",
- "value": "Entity_[5002252716067]"
- },
- {
- "op": "remove",
- "path": "/Entities/Entity_[8859800736551]/Components/Component_[14081951032431453423]/Child Entity Order/1"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29952351949307]/Components/Component_[14941610346605136382]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_brushb.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29875042537979]/Components/Component_[14628550509204703666]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_o_centersensor.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29887927439867]/Components/Component_[6737035184120536175]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_cpucover.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29995301622267]/Components/Component_[7755340245799285993]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_vacvasedoor.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29900812341755]/Components/Component_[1622304547483087437]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_cpucoverdoor.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[30051136197115]/Components/Component_[10171691559656925088]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_vaccase.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29926582145531]/Components/Component_[12993371939032694725]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_screenglass.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29862157636091]/Components/Component_[6266003952878640001]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_bottombase.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29956646916603]/Components/Component_[2603373599504855572]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_wheel_left.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29866452603387]/Components/Component_[8795666149603220285]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_cpucase.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29913697243643]/Components/Component_[14236251140759845637]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_depthdensorright.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29930877112827]/Components/Component_[10442046716566583284]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_pariscopeglass.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29965236851195]/Components/Component_[299216117097721405]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_o_sensor_board.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29883632472571]/Components/Component_[9350595258357518349]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_pariscopetube.fbx.azmodel"
- },
- {
- "op": "replace",
- "path": "/Entities/Entity_[29999596589563]/Components/Component_[6116338082524157478]/Controller/Configuration/ModelAsset/assetHint",
- "value": "assets/robovac/assets/robot_vacuum_bottomwheelone.fbx.azmodel"
- },
{
"op": "replace",
"path": "/ContainerEntity/Components/Component_[10968750635921263389]/Parent Entity",
@@ -6079,7 +5821,7 @@
{
"op": "replace",
"path": "/ContainerEntity/Components/Component_[10968750635921263389]/Transform Data/Translate/0",
- "value": -1.4129999876022339
+ "value": -1.412999987602234
},
{
"op": "replace",
diff --git a/Levels/Loft/ReflectionProbes/RefProb_Inter_Main__DAF9AB51-457F-4498-A181-AA207B78BF33__iblspecularcm512.dds b/Levels/Loft/ReflectionProbes/RefProb_Inter_Main__DAF9AB51-457F-4498-A181-AA207B78BF33__iblspecularcm512.dds
deleted file mode 100644
index 2f49265..0000000
--- a/Levels/Loft/ReflectionProbes/RefProb_Inter_Main__DAF9AB51-457F-4498-A181-AA207B78BF33__iblspecularcm512.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:2978dd97c2c56f67fa541f243e967ce6a02cbb5690d90c4c1b39c5213b526d8b
-size 50331796
diff --git a/Levels/Loft/ReflectionProbes/Reflection_ComputerDesk__C8761F0C-24E4-4160-8D76-FC9CC08875F0__iblspecularcm128.dds b/Levels/Loft/ReflectionProbes/Reflection_ComputerDesk__C8761F0C-24E4-4160-8D76-FC9CC08875F0__iblspecularcm128.dds
deleted file mode 100644
index 7391c20..0000000
--- a/Levels/Loft/ReflectionProbes/Reflection_ComputerDesk__C8761F0C-24E4-4160-8D76-FC9CC08875F0__iblspecularcm128.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:62856909b31244ef2e690081fa4c9324ebae7592013b660d9c1dc889d4d0cf87
-size 50331796
diff --git a/Levels/Loft/ReflectionProbes/Reflection_Kitchen__BC3D31DC-2109-4B78-AAAC-A819D100F77F__iblspecularcm128.dds b/Levels/Loft/ReflectionProbes/Reflection_Kitchen__BC3D31DC-2109-4B78-AAAC-A819D100F77F__iblspecularcm128.dds
deleted file mode 100644
index b0d7150..0000000
--- a/Levels/Loft/ReflectionProbes/Reflection_Kitchen__BC3D31DC-2109-4B78-AAAC-A819D100F77F__iblspecularcm128.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:708d840b620102577b2bcd863d0830c552a20d2521be6b0a55eb7dab670b1b98
-size 50331796
diff --git a/Levels/Loft/ReflectionProbes/Reflection_LivingRoom__08EADCE6-DA11-42DE-B55D-62AAE4D80878__iblspecularcm128.dds b/Levels/Loft/ReflectionProbes/Reflection_LivingRoom__08EADCE6-DA11-42DE-B55D-62AAE4D80878__iblspecularcm128.dds
deleted file mode 100644
index ea356c6..0000000
--- a/Levels/Loft/ReflectionProbes/Reflection_LivingRoom__08EADCE6-DA11-42DE-B55D-62AAE4D80878__iblspecularcm128.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ef5b37a6ae1c9b16a6f988d687b1a2e9fa373e160ebf3b5638cc4627e909a3e6
-size 50331796
diff --git a/README.md b/README.md
index e6dea88..d28757b 100644
--- a/README.md
+++ b/README.md
@@ -12,11 +12,14 @@ https://user-images.githubusercontent.com/82551958/229621938-da2244c7-69c1-4240-
## Requirements
-This project will run on
-- Ubuntu 20.04 with ROS 2 Galactic
-- Ubuntu 22.04 with ROS 2 Humble
+This project was tested on the following platforms:
+- Ubuntu 24.04 with ROS 2 Jazzy
-The ROS 2 Gem is not yet developed for Windows.
+> **Note:** The O3DE simulation is also compatible with Ubuntu 22.04 and ROS 2 Humble.
+> However, the navigation launch files have been updated for ROS 2 Jazzy and would need to be reverted for Humble.
+> See the [Docker README](Docker/README.md#humble-compatibility) for details.
+
+The ROS 2 Gem is not available for Windows.
Refer to the [O3DE System Requirements](https://www.o3de.org/docs/welcome-guide/requirements/) documentation to make sure that the system/hardware requirements are met
@@ -24,7 +27,7 @@ This project has the following dependencies:
- [O3DE](https://github.com/o3de/o3de)
- [ROS2 Gem](https://github.com/o3de/o3de-extras/tree/development/Gems/ROS2)
- - ROS 2 (Galactic or Humble) itself is also required, see [Gem Requirements](https://github.com/o3de/o3de-extras/tree/development/Gems/ROS2#requirements)
+ - ROS 2 Jazzy itself is also required, see [Gem Requirements](https://github.com/o3de/o3de-extras/tree/development/Gems/ROS2#requirements)
- [Loft Scene Sample](https://github.com/o3de/loft-arch-vis-sample)
- ` main` branch should work.
- [Robot Vacuum Sample Project](https://github.com/o3de/RobotVacuumSample)
@@ -36,91 +39,104 @@ The following steps will assume the following
- The instructions will be based off of a common base folder: $DEMO_BASE (absolute path). For the steps below, we will use DEMO_BASE of ~/ for simplicty.
- This current project has been fetched to $DEMO_BASE
-- You have [ROS2 Galactic](https://docs.ros.org/en/galactic/Installation/Ubuntu-Install-Debians.html) or [ROS2 Humble](https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html) installed and sourced
- - for debian package Galactic installation, in your bash console, run:
- - For ROS2 Galactic: `source /opt/ros/galactic/setup.bash`
- - For ROS2 Humble: `source /opt/ros/humble/setup.bash`
+- You have [ROS 2](https://docs.ros.org/en/jazzy/Installation/Ubuntu-Install-Debians.html) installed and sourced:
+ - for ROS 2 Jazzy: `source /opt/ros/jazzy/setup.bash`
- you could also add this line to your `.profile` or `.bashrc`
- - check if ROS 2 is sourced in your current console with `echo $ROS_DISTRO`. You should see `galactic` or `humble`.
-
-### 1. Clone O3DE (or install) and register the engine
+ - check if ROS 2 is sourced in your current console with `echo $ROS_DISTRO`. You should see `jazzy`.
-```
-$ cd $DEMO_BASE
-~$ git clone https://github.com/o3de/o3de.git -b main
-~$ cd o3de
-~/o3de$ git lfs install
-~/o3de$ git lfs pull
-~/o3de$ python/get_python.sh
-~/o3de$ scripts/o3de.sh register --this-engine
-```
+### 1. Install and register the engine
-### 2. Clone and register the ROS2 Gem locally
+```shell
+# TODO: change to 2605.0 release when available
+wget https://o3debinaries.org/stabilization-26050/Latest/Linux/o3de_latest.deb
+sudo dpkg -i o3de_latest.deb
+/opt/O3DE/26.05/python/get_python.sh
+/opt/O3DE/26.05/scripts/o3de.sh register --this-engine
```
-~$ cd $DEMO_BASE
-~$ git clone https://github.com/o3de/o3de-extras.git -b main
-~$ $DEMO_BASE/o3de/scripts/o3de.sh register -gp $DEMO_BASE/o3de-extras/Gems/ROS2
+
+### 2. Download and register required Gems
+```shell
+/opt/O3DE/26.05/scripts/o3de.sh register --repo-uri https://canonical.o3de.org
+/opt/O3DE/26.05/scripts/o3de.sh download --gem-name LevelGeoreferencing
+/opt/O3DE/26.05/scripts/o3de.sh download --gem-name ROS2
+/opt/O3DE/26.05/scripts/o3de.sh download --gem-name ROS2Controllers
+/opt/O3DE/26.05/scripts/o3de.sh download --gem-name ROS2Sensors
```
### 3. Clone and register the Loft Scene project locally
-```
-$ cd $DEMO_BASE
-~$ git clone https://github.com/o3de/loft-arch-vis-sample.git -b main
-~$ cd loft-arch-vis-sample
-~/loft-arch-vis-sample$ git lfs install
-~/loft-arch-vis-sample$ git lfs pull
-~/loft-arch-vis-sample$ $DEMO_BASE/o3de/scripts/o3de.sh register -gp $DEMO_BASE/loft-arch-vis-sample/Gems/ArchVis
+```shell
+cd $DEMO_BASE
+git clone https://github.com/o3de/loft-arch-vis-sample.git -b main
+cd loft-arch-vis-sample
+git lfs install
+git lfs pull
+/opt/O3DE/26.05/scripts/o3de.sh register -gp $DEMO_BASE/loft-arch-vis-sample/Gems/ArchVis
```
-### 4. Clone and Register this project and build it
+> **Tip:** To reduce download size and disk usage, you can clone only the latest commit by adding `--depth 1` to the clone command:
+> ```shell
+> git clone https://github.com/o3de/loft-arch-vis-sample.git -b main --depth 1
+> ```
-```
-$ cd $DEMO_BASE
-~$ git clone https://github.com/o3de/RobotVacuumSample.git
-~$ cd RobotVacuumSample
-~/RobotVacuumSample$ git lfs install
-~/RobotVacuumSample$ $DEMO_BASE/o3de/scripts/o3de.sh register -pp .
-~/RobotVacuumSample$ cmake -B build/linux -G "Ninja Multi-Config" -DLY_STRIP_DEBUG_SYMBOLS=TRUE -DLY_DISABLE_TEST_MODULES=ON
-~/RobotVacuumSample$ cmake --build build/linux --config profile --target RobotVacuumSample Editor AssetProcessor
+### 4. Clone this project and build it
+
+```shell
+cd $DEMO_BASE
+git clone https://github.com/o3de/RobotVacuumSample.git
+cd RobotVacuumSample
+git lfs install
+cmake -B build/linux -G "Ninja Multi-Config" -DLY_STRIP_DEBUG_SYMBOLS=TRUE -DLY_DISABLE_TEST_MODULES=ON
+cmake --build build/linux --config profile --target RobotVacuumSample RobotVacuumSample.GameLauncher RobotVacuumSample.Assets
```
-### 5. Launch Editor
+> **Tip:** To reduce download size and disk usage, you can clone only the latest commit by adding `--depth 1` to the clone command:
+> ```shell
+> git clone https://github.com/o3de/RobotVacuumSample.git --depth 1
+> ```
+### 5. Launch the simulation
+
+```shell
+cd $DEMO_BASE
+./build/linux/bin/profile/RobotVacuumSample.GameLauncher -bg_ConnectToAssetProcessor=0
```
-$ cd $DEMO_BASE
-~$ cd RobotVacuumSample/build/linux/bin/profile
-~/RobotVacuumSample/build/linux/bin/profile$ ./Editor
-```
-## Running ROS2 navigation example
+## Running with Docker
+
+As an alternative to the manual setup above, a Docker-based workflow is available in the [`Docker/`](Docker/) directory.
+See [Docker/README.md](Docker/README.md) for build and run instructions.
+
+## Running ROS 2 navigation example
-We can run ROS2 navigation stack with our simulation scene and robot. When we run the navigation stack, it will start SLAM and build the map of environment based on Lidar sensor data. You can set navigation goals for the robot using RViz2 (which is also started with the launch file).
+We can run ROS 2 navigation stack with our simulation scene and robot. When we run the navigation stack, it will start SLAM and build the map of environment based on Lidar sensor data. You can set navigation goals for the robot using RViz2 (which is also started with the launch file).
-- It is assumed that you have your [ROS2 environment sourced](https://docs.ros.org/en/rolling/Tutorials/Configuring-ROS2-Environment.html).
-- It is also assumed that you followed all the steps before build and launch the Editor.
+- It is assumed that you have your [ROS 2 environment sourced](https://docs.ros.org/en/rolling/Tutorials/Configuring-ROS2-Environment.html).
+- It is also assumed that you followed all the steps before and launched the simulation.
### 1. Install dependencies for navigation
-These packages are required to run ROS 2 navigation stack for our robot. For ROS 2 Humble, replace `galactic` with `humble`.
+These packages are required to run ROS 2 navigation stack for our robot.
-```
-source /opt/ros/galactic/setup.bash
+```shell
sudo apt install -y ros-${ROS_DISTRO}-slam-toolbox ros-${ROS_DISTRO}-navigation2 ros-${ROS_DISTRO}-nav2-bringup ros-${ROS_DISTRO}-pointcloud-to-laserscan ros-${ROS_DISTRO}-ackermann-msgs ros-${ROS_DISTRO}-control-toolbox ros-${ROS_DISTRO}-gazebo-msgs
```
### 2. Run the simulation
-1. In `O3DE` Editor, select the `Loft` Level.
-1. Start simulation by clicking `Play Game` button or press `CTRL+G`
+```shell
+cd $DEMO_BASE
+./build/linux/bin/profile/RobotVacuumSample.GameLauncher -bg_ConnectToAssetProcessor=0
+```
### 3. Run the navigation stack
The launch file is included in this repository
-```
-~/RobotVacuumSample/launch$ ros2 launch navigation.launch.py
+```shell
+cd $DEMO_BASE/launch
+ros2 launch navigation.launch.py
```
You should see output in the console as well as RViz2 window.
@@ -132,16 +148,30 @@ You can drag it to indicate direction you would like your robot to face when rea
Watch your robot go. You can set subsequent goals.
+## Modifying the simulation
+
+To modify the scene, robot, or sensor configuration, launch the O3DE Editor. The Editor also runs the `AssetProcessor` in the background, which processes any changed assets before they appear in the simulation.
+
+```shell
+cmake --build build/linux --config profile --target Editor
+/opt/O3DE/26.05/bin/Linux/profile/Default/Editor --project-path $DEMO_BASE
+```
+
+> **Note:** You might want to start `AssetProcessor` before the first start of the Editor, to ensure all assets are processed first.
+> ```shell
+> /opt/O3DE/26.05/bin/Linux/profile/Default/AssetProcessor --project-path $DEMO_BASE
+> ```
+
## Troubleshooting
#### AssetProcessor resource problems
-Sometimes when there were problems while the AssetProcessor was working (for example, disk space ran out),
-subsequent executions of the Editor fail to re-start the process for such Assets. This might be due to a
+Sometimes when there were problems while the `AssetProcessor` was working (for example, disk space ran out),
+subsequent executions of the `Editor` fail to re-start the process for such Assets. This might be due to a
limitation of the number of files that can be watched by a single user. You can fix this by increasing the
value, for example:
-```
+```shell
sudo sysctl -w fs.inotify.max_user_watches=524288
```
@@ -152,7 +182,3 @@ To make this setting permanent, add it to `/etc/systctl.conf` file.
This could be caused by a firewall, disabled multicast or issues with docker.
Please refer to [ROS 2 troubleshooting guide](https://docs.ros.org/en/rolling/How-To-Guides/Installation-Troubleshooting.html).
-
-#### Memory / resource issues with the scene
-
-If your machine is a bit less powerful, you can try a lightweight, [simple Warehouse scene](https://github.com/RobotecAI/Ros2WarehouseDemo) instead of the Loft scene.
diff --git a/ReflectionProbes/Main__DE1E474F-F59F-4C6F-9CCB-56210AF6B90E__iblspecularcm256.dds b/ReflectionProbes/Main__DE1E474F-F59F-4C6F-9CCB-56210AF6B90E__iblspecularcm256.dds
deleted file mode 100644
index 5772450..0000000
--- a/ReflectionProbes/Main__DE1E474F-F59F-4C6F-9CCB-56210AF6B90E__iblspecularcm256.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f706b49da6548cf24138a00942cf072b172dd492e09419fb6cb770331b011ac5
-size 50331796
diff --git a/ReflectionProbes/Probe__1821F24E-77CE-4188-841A-5A58999A2A75__iblspecularcm256.dds b/ReflectionProbes/Probe__1821F24E-77CE-4188-841A-5A58999A2A75__iblspecularcm256.dds
deleted file mode 100644
index 5d6520b..0000000
--- a/ReflectionProbes/Probe__1821F24E-77CE-4188-841A-5A58999A2A75__iblspecularcm256.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b9e3cafaf0ef233bba3443631cd40b8fdffc32e153b1290f2b01e38d7369f85b
-size 50331796
diff --git a/ReflectionProbes/Probe__73FF337C-1FC5-4457-B439-A0FD55A967A3__iblspecularcm256.dds b/ReflectionProbes/Probe__73FF337C-1FC5-4457-B439-A0FD55A967A3__iblspecularcm256.dds
deleted file mode 100644
index 77d35e7..0000000
--- a/ReflectionProbes/Probe__73FF337C-1FC5-4457-B439-A0FD55A967A3__iblspecularcm256.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:965c5c6a7805fd012c1d03db9f553d79acab4de5f975ccd0ed0c26094d2ce471
-size 50331796
diff --git a/ReflectionProbes/Probe__BE837235-E9EB-4986-B374-9649FBED7062__iblspecularcm256.dds b/ReflectionProbes/Probe__BE837235-E9EB-4986-B374-9649FBED7062__iblspecularcm256.dds
deleted file mode 100644
index 187d12b..0000000
--- a/ReflectionProbes/Probe__BE837235-E9EB-4986-B374-9649FBED7062__iblspecularcm256.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:45debbc91315b2cfc995e0e4c195cd5841a67adc976733ca48eb3bd5d205028e
-size 50331796
diff --git a/ReflectionProbes/RefProb_Inter_Main__8382355B-30C6-40E3-B1F1-28B7931DCC5A__iblspecularcm512.dds b/ReflectionProbes/RefProb_Inter_Main__8382355B-30C6-40E3-B1F1-28B7931DCC5A__iblspecularcm512.dds
deleted file mode 100644
index 6fe61f3..0000000
--- a/ReflectionProbes/RefProb_Inter_Main__8382355B-30C6-40E3-B1F1-28B7931DCC5A__iblspecularcm512.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ded7e68f4b095cf3367885d9d1b750e53ee21dab64a99ce1bc95d2d2c7259b3e
-size 50331796
diff --git a/ReflectionProbes/Reflection_ComputerDesk__A6F05F8D-4BE2-45F6-A0AF-0CF51FE3647E__iblspecularcm256.dds b/ReflectionProbes/Reflection_ComputerDesk__A6F05F8D-4BE2-45F6-A0AF-0CF51FE3647E__iblspecularcm256.dds
deleted file mode 100644
index 79ecb49..0000000
--- a/ReflectionProbes/Reflection_ComputerDesk__A6F05F8D-4BE2-45F6-A0AF-0CF51FE3647E__iblspecularcm256.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6bdb6565cabf0a234cc7b7f506febe7d1e8d1943afeb8575a1f4c245f2cb2849
-size 50331796
diff --git a/ReflectionProbes/Reflection_Kitchen__328870C3-BAC8-4971-8D26-DA3100346626__iblspecularcm256.dds b/ReflectionProbes/Reflection_Kitchen__328870C3-BAC8-4971-8D26-DA3100346626__iblspecularcm256.dds
deleted file mode 100644
index c860602..0000000
--- a/ReflectionProbes/Reflection_Kitchen__328870C3-BAC8-4971-8D26-DA3100346626__iblspecularcm256.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a038bcfbc67531df6fa4e4160096126337b72bb578c7aed089a3b4baba271e9f
-size 50331796
diff --git a/ReflectionProbes/Reflection_Kitchen__6B6213D0-759E-411E-A1C1-F6F7F4382E18__iblspecularcm256.dds b/ReflectionProbes/Reflection_Kitchen__6B6213D0-759E-411E-A1C1-F6F7F4382E18__iblspecularcm256.dds
deleted file mode 100644
index 32ffd1e..0000000
--- a/ReflectionProbes/Reflection_Kitchen__6B6213D0-759E-411E-A1C1-F6F7F4382E18__iblspecularcm256.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:130cd93ee63defa05f4a912c3b81fe603f98e133743ec0abf1053b38c6eaeeb9
-size 50331796
diff --git a/ReflectionProbes/Reflection_LivingRoom__2D91EF46-63B6-451A-B0DA-6F466FD2EF57__iblspecularcm256.dds b/ReflectionProbes/Reflection_LivingRoom__2D91EF46-63B6-451A-B0DA-6F466FD2EF57__iblspecularcm256.dds
deleted file mode 100644
index c9a2a96..0000000
--- a/ReflectionProbes/Reflection_LivingRoom__2D91EF46-63B6-451A-B0DA-6F466FD2EF57__iblspecularcm256.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:73c5c4d63ec4c561d8eb87699fe661b73d2bfec7dfe184b0398d0ca81277fe09
-size 50331796
diff --git a/ReflectionProbes/Reflection_main__43B8D0A0-6C55-419E-B0FA-387F8DAB0827__iblspecularcm256.dds b/ReflectionProbes/Reflection_main__43B8D0A0-6C55-419E-B0FA-387F8DAB0827__iblspecularcm256.dds
deleted file mode 100644
index 6d53b3b..0000000
--- a/ReflectionProbes/Reflection_main__43B8D0A0-6C55-419E-B0FA-387F8DAB0827__iblspecularcm256.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:3fb099c3dcf2b723b08a94d5ac239e52f16646f3dcd304798c5576e18e68cc1e
-size 50331796
diff --git a/Registry/mouse.setreg b/Registry/mouse.setreg
new file mode 100644
index 0000000..7157183
--- /dev/null
+++ b/Registry/mouse.setreg
@@ -0,0 +1,12 @@
+{
+ "O3DE":
+ {
+ "InputSystem":
+ {
+ "Mouse":
+ {
+ "CaptureMouseCursor": false
+ }
+ }
+ }
+}
diff --git a/launch/config/navigation_params.yaml b/launch/config/navigation_params.yaml
index c5e347d..6174c7a 100644
--- a/launch/config/navigation_params.yaml
+++ b/launch/config/navigation_params.yaml
@@ -13,45 +13,6 @@ bt_navigator:
odom_topic: /odom
bt_loop_duration: 10
default_server_timeout: 20
- enable_groot_monitoring: True
- groot_zmq_publisher_port: 1666
- groot_zmq_server_port: 1667
- plugin_lib_names:
- - nav2_compute_path_to_pose_action_bt_node
- - nav2_compute_path_through_poses_action_bt_node
- - nav2_follow_path_action_bt_node
- - nav2_back_up_action_bt_node
- - nav2_spin_action_bt_node
- - nav2_wait_action_bt_node
- - nav2_clear_costmap_service_bt_node
- - nav2_is_stuck_condition_bt_node
- - nav2_goal_reached_condition_bt_node
- - nav2_goal_updated_condition_bt_node
- - nav2_initial_pose_received_condition_bt_node
- - nav2_reinitialize_global_localization_service_bt_node
- - nav2_rate_controller_bt_node
- - nav2_distance_controller_bt_node
- - nav2_speed_controller_bt_node
- - nav2_truncate_path_action_bt_node
- - nav2_goal_updater_node_bt_node
- - nav2_recovery_node_bt_node
- - nav2_pipeline_sequence_bt_node
- - nav2_round_robin_node_bt_node
- - nav2_transform_available_condition_bt_node
- - nav2_time_expired_condition_bt_node
- - nav2_distance_traveled_condition_bt_node
- - nav2_single_trigger_bt_node
- - nav2_is_battery_low_condition_bt_node
- - nav2_navigate_through_poses_action_bt_node
- - nav2_navigate_to_pose_action_bt_node
- - nav2_remove_passed_goals_action_bt_node
- - nav2_planner_selector_bt_node
- - nav2_controller_selector_bt_node
- - nav2_goal_checker_selector_bt_node
-
-bt_navigator_rclcpp_node:
- ros__parameters:
- use_sim_time: True
controller_server:
ros__parameters:
@@ -115,10 +76,6 @@ controller_server:
RotateToGoal.slowing_factor: 5.0
RotateToGoal.lookahead_time: -1.0
-controller_server_rclcpp_node:
- ros__parameters:
- use_sim_time: True
-
local_costmap:
local_costmap:
ros__parameters:
@@ -160,13 +117,6 @@ local_costmap:
static_layer:
map_subscribe_transient_local: True
always_send_full_costmap: True
- local_costmap_client:
- ros__parameters:
- use_sim_time: True
- local_costmap_rclcpp_node:
- ros__parameters:
- use_sim_time: True
-
global_costmap:
global_costmap:
ros__parameters:
@@ -201,13 +151,6 @@ global_costmap:
cost_scaling_factor: 3.0
inflation_radius: 0.4
always_send_full_costmap: True
- global_costmap_client:
- ros__parameters:
- use_sim_time: True
- global_costmap_rclcpp_node:
- ros__parameters:
- use_sim_time: True
-
map_saver:
ros__parameters:
use_sim_time: True
@@ -222,28 +165,24 @@ planner_server:
use_sim_time: True
planner_plugins: ["GridBased"]
GridBased:
- plugin: "nav2_navfn_planner/NavfnPlanner"
+ plugin: "nav2_navfn_planner::NavfnPlanner"
tolerance: 0.5
use_astar: true
use_final_approach_orientation: true
allow_unknown: true
-planner_server_rclcpp_node:
- ros__parameters:
- use_sim_time: True
-
-recoveries_server:
+behavior_server:
ros__parameters:
costmap_topic: local_costmap/costmap_raw
footprint_topic: local_costmap/published_footprint
cycle_frequency: 10.0
- recovery_plugins: ["spin", "backup", "wait"]
+ behavior_plugins: ["spin", "backup", "wait"]
spin:
- plugin: "nav2_recoveries/Spin"
+ plugin: "nav2_behaviors::Spin"
backup:
- plugin: "nav2_recoveries/BackUp"
+ plugin: "nav2_behaviors::BackUp"
wait:
- plugin: "nav2_recoveries/Wait"
+ plugin: "nav2_behaviors::Wait"
global_frame: odom
robot_base_frame: base_link
transform_timeout: 0.1
@@ -253,6 +192,73 @@ recoveries_server:
min_rotational_vel: 0.4
rotational_acc_lim: 3.2
+velocity_smoother:
+ ros__parameters:
+ use_sim_time: True
+ smoothing_frequency: 20.0
+ scale_velocities: False
+ feedback: "OPEN_LOOP"
+ max_velocity: [1.0, 0.0, 2.0]
+ min_velocity: [-1.0, 0.0, -2.0]
+ max_accel: [2.5, 0.0, 3.2]
+ max_decel: [-2.5, 0.0, -3.2]
+ odom_topic: "odom"
+ odom_duration: 0.1
+ deadband_velocity: [0.0, 0.0, 0.0]
+ velocity_timeout: 1.0
+
+collision_monitor:
+ ros__parameters:
+ use_sim_time: True
+ base_frame_id: "base_link"
+ odom_frame_id: "odom"
+ cmd_vel_in_topic: "cmd_vel_smoothed"
+ cmd_vel_out_topic: "cmd_vel"
+ state_topic: "collision_monitor_state"
+ transform_tolerance: 0.2
+ source_timeout: 1.0
+ base_shift_correction: True
+ stop_pub_timeout: 2.0
+ polygons: ["FootprintApproach"]
+ FootprintApproach:
+ type: "polygon"
+ action_type: "approach"
+ footprint_topic: "/local_costmap/published_footprint"
+ time_before_collision: 1.2
+ simulation_time_step: 0.1
+ min_points: 6
+ visualize: False
+ enabled: True
+ observation_sources: ["scan"]
+ scan:
+ type: "scan"
+ topic: "/scan"
+ min_height: 0.15
+ max_height: 2.0
+ enabled: True
+
+docking_server:
+ ros__parameters:
+ use_sim_time: True
+ controller_frequency: 50.0
+ initial_perception_timeout: 5.0
+ wait_charge_timeout: 5.0
+ dock_approach_timeout: 30.0
+ undock_linear_tolerance: 0.05
+ undock_angular_tolerance: 0.05
+ max_retries: 3
+ base_frame: "base_link"
+ fixed_frame: "odom"
+ dock_backwards: false
+ dock_prestaging_tolerance: 0.5
+ dock_plugins: ["simple_charging_dock"]
+ simple_charging_dock:
+ plugin: "opennav_docking::SimpleChargingDock"
+ docking_threshold: 0.05
+ staging_x_offset: -0.7
+ use_external_detection_pose: true
+ use_battery_status: false
+
robot_state_publisher:
ros__parameters:
use_sim_time: True
diff --git a/launch/navigation.launch.py b/launch/navigation.launch.py
index 0293a8b..ef77d9e 100644
--- a/launch/navigation.launch.py
+++ b/launch/navigation.launch.py
@@ -36,7 +36,7 @@ def generate_launch_description():
IncludeLaunchDescription(
PythonLaunchDescriptionSource([str(navigation_launch_file)]),
launch_arguments={
- 'params_file': str(navigation_param_file)
+ 'params_file': str(navigation_param_file),
}.items()
),
Node(
diff --git a/launch/slam.launch.py b/launch/slam.launch.py
index 9cf2670..e989367 100644
--- a/launch/slam.launch.py
+++ b/launch/slam.launch.py
@@ -36,7 +36,8 @@ def generate_launch_description():
parameters=[{
'min_height': 0.0,
'max_height': 0.5,
- 'range_min': 0.1
+ 'range_min': 0.1,
+ 'qos_overrides./scan.publisher.reliability': 'reliable',
}],
remappings=[
('/cloud_in', '/pc'),
diff --git a/preview.png b/preview.png
index 82234db..cab737e 100644
--- a/preview.png
+++ b/preview.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:1cf8339fb51f82a68d2ab475c0476960e75a79d96d239c5b7cd272fbe4990ffe
-size 2770
+oid sha256:7771fb0e4c56136acd3bd8a82418fbc1f86b477d344fc7c799f516d388a75914
+size 169415
diff --git a/project.json b/project.json
index 94e8b34..c214bfc 100644
--- a/project.json
+++ b/project.json
@@ -2,7 +2,7 @@
"project_name": "RobotVacuumSample",
"project_id": "{9ed699a2-4b64-468e-ad9c-9cff6c0dfd3f}",
"origin": "https://github.com/o3de/RobotVacuumSample",
- "license": "https://opensource.org/licenses/Apache-2.0 Or https://opensource.org/licenses/MIT etc.",
+ "license": "https://opensource.org/licenses/Apache-2.0 or https://opensource.org/licenses/MIT",
"display_name": "RobotVacuumSample",
"summary": "Demo of a Robot Vacuum using the O3DE Loft Scene.",
"canonical_tags": [
@@ -12,7 +12,7 @@
"RobotVacuumSample"
],
"icon_path": "preview.png",
- "engine": "o3de",
+ "engine": "o3de-sdk",
"external_subdirectories": [
"Gem"
],
@@ -24,14 +24,17 @@
"DebugDraw",
"GameState",
"ImGui",
+ "LevelGeoreferencing",
"LyShine",
"PhysX5",
"PrimitiveAssets",
"PrefabBuilder",
"ROS2>=3.1.0",
+ "ROS2Controllers",
+ "ROS2Sensors",
"ScriptEvents",
"StartingPointInput",
"TextureAtlas"
],
- "engine_version": "4.1.0"
+ "engine_version": "2.6.0"
}