From 174fde683f56b136880392dc7f0f43f45da301e6 Mon Sep 17 00:00:00 2001 From: samminhch <45446622+samminhch@users.noreply.github.com> Date: Wed, 24 Sep 2025 22:07:51 -0500 Subject: [PATCH 01/11] fix: Updated Dockerfile following Gazebo Garden deprecation Additionally, added files for a nix development shell --- .envrc | 1 + .gitignore | 2 + Docker/Dockerfile | 148 +++++++++++++++++++++------------------------- flake.lock | 44 ++++++++++++++ flake.nix | 40 +++++++++++++ 5 files changed, 153 insertions(+), 82 deletions(-) create mode 100644 .envrc create mode 100644 flake.lock create mode 100644 flake.nix diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..3550a30 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake diff --git a/.gitignore b/.gitignore index 674860a..cc5980f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ src/log/ src/build/ src/install/ +*backup +.direnv .config/nvim/ .config/setup-development-enviornment.sh diff --git a/Docker/Dockerfile b/Docker/Dockerfile index 2cbbb51..2b20545 100644 --- a/Docker/Dockerfile +++ b/Docker/Dockerfile @@ -1,112 +1,98 @@ +# [TODO] Find faster mirrors again, and uncomment this and `sed` lines +# ARG MIRROR='http://dal.mirrors.clouvider.net' # [INFO] Found using apt-select --country US -t 10 +ARG ROS_DISTRO='humble' +ARG DEBIAN_FRONTEND='noninteractive' + ############### # BUILD IMAGE # ############### -FROM ros:humble-ros-core AS builder +FROM ros:${ROS_DISTRO}-ros-core AS builder SHELL ["/bin/bash", "-c"] # Use Faster Mirrors -## INFO: Found using apt-select --country US -t 10 -ARG MIRROR='http://dal.mirrors.clouvider.net' -RUN sed -r -i "s,http://(.*).ubuntu.com,${MIRROR}," /etc/apt/sources.list +# RUN sed -r -i "s,http://(.*).ubuntu.com,${MIRROR}," /etc/apt/sources.list # Setup Environment - -## ROS2 -ARG ROS_DISTRO='humble' -ARG DEBIAN_FRONTEND='noninteractive' - ENV USER='root' ENV HOME="/${USER}" -ENV BOAT_WS='/root/roboboat_ws' - -# Install some packages -RUN apt-get update && apt-get -y --no-install-recommends install \ - cmake wget curl git lsb-release \ - build-essential software-properties-common && \ - apt-get clean && rm -rf /var/lib/apt/lists/* -## Setup Workspace +# Setup Workspace +ENV BOAT_WS="${HOME}/roboboat_ws" RUN mkdir -p "${BOAT_WS}/src" -WORKDIR "${BOAT_WS}/src" -##################### -# BUILD IMAGE (VRX) # -##################### -FROM builder AS builder_vrx - -## Add Gazebo Repository +# [INFO] Install the default Gazebo pairing with the ROS2 distribution RUN wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg && \ - echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null && \ - add-apt-repository -y universe && \ - apt-get update && apt-get -y --no-install-recommends install \ - python3-sdformat13 gz-garden \ - ros-${ROS_DISTRO}-xacro \ - ros-${ROS_DISTRO}-ros-gzgarden \ - python3-colcon-common-extensions \ - ros-${ROS_DISTRO}-image-transport && \ - apt-get clean && rm -rf /var/lib/apt/lists/* - + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null && \ + add-apt-repository -y universe && \ + apt-get update && apt-get -y --no-install-recommends install \ + cmake wget curl git lsb-release build-essential \ + software-properties-common python3-sdformat13 \ + # ROS2 Gazebo Packages + gz-fortress \ + ros-${ROS_DISTRO}-ros-gzfortress \ + ros-${ROS_DISTRO}-xacro \ + python3-colcon-common-extensions \ + ros-${ROS_DISTRO}-image-transport && \ + apt-get clean && rm -rf /var/lib/apt/lists/* + +# [TODO] Add ZED SDK support +# [INFO] Build the VRX simulation and ZED ROS2 Wrapper packages +ARG VRX_REPO='osrf/vrx' +ARG VRX_BRANCH='v3.0.4' +# ARG ZED_REPO='stereolabs/zed-ros2-wrapper' +# ARG ZED_BRANCH='humble-v5.0.0' WORKDIR ${BOAT_WS}/src -RUN git clone --progress --verbose --recursive --depth 1 --branch 2.4.1 https://github.com/osrf/vrx.git && \ - cd ${BOAT_WS} && source /opt/ros/${ROS_DISTRO}/setup.bash && \ - colcon build --parallel-workers $(nproc) --base-paths src --merge-install && \ - apt-get clean && rm -rf /var/lib/apt/lists/* - +RUN git clone --progress --verbose --recursive --depth 1 --branch ${VRX_BRANCH} https://github.com/${VRX_REPO}.git && \ + # git clone --progress --verbose --recursive --depth 1 --branch ${ZED_BRANCH} https://github.com/${ZED_REPO}.git && \ + cd ${BOAT_WS} && source /opt/ros/${ROS_DISTRO}/setup.bash && \ + colcon build --symlink-install --parallel-workers $(nproc) --cmake-args=-DCMAKE_BUILD_TYPE=Release --base-paths src && \ + apt-get clean && rm -rf /var/lib/apt/lists/* ############## # BASE IMAGE # ############## - FROM ros:humble-ros-core AS base SHELL ["/bin/bash", "-c"] -# Use Faster Mirrors -ARG MIRROR='http://dal.mirrors.clouvider.net' # INFO: Found using apt-select --country US -t 10 -RUN sed -r -i "s,http://(.*).ubuntu.com,${MIRROR}," /etc/apt/sources.list +# RUN sed -r -i "s,http://(.*).ubuntu.com,${MIRROR}," /etc/apt/sources.list # Setup Environment ENV USER='root' ENV HOME="/${USER}" - -ENV BOAT_WS='/root/roboboat_ws' +ENV BOAT_WS="${HOME}/roboboat_ws" RUN mkdir -p ${BOAT_WS} ## ROS2 -ARG DEBIAN_FRONTEND='noninteractive' ENV RMW_IMPLEMENTATION=rmw_cyclonedds_cpp ## .bashrc COPY .config/.bashrc ${HOME}/.bashrc COPY .config/.bash.d ${HOME}/.bash.d -# Install Developer Packges -RUN apt-get update && apt-get -y --no-install-recommends install \ - software-properties-common apt-utils wget curl \ - python3-minimal python-is-python3 python3-pip && \ - apt-get clean && rm -rf /var/lib/apt/lists/* - -# Setup ROS2 Humble packages +# Install common packges RUN apt-get update && apt-get -y --no-install-recommends install \ - python3-vcstool ros-dev-tools \ - python3-colcon-common-extensions \ - ros-${ROS_DISTRO}-point-cloud-transport \ - ros-${ROS_DISTRO}-robot-localization \ - ros-${ROS_DISTRO}-velodyne \ - ros-${ROS_DISTRO}-rmw-cyclonedds-cpp && \ - apt-get clean && rm -rf /var/lib/apt/lists/* + software-properties-common apt-utils wget curl \ + python3-minimal python-is-python3 python3-pip \ + python3-vcstool ros-dev-tools \ + python3-colcon-common-extensions \ + ros-${ROS_DISTRO}-point-cloud-transport \ + ros-${ROS_DISTRO}-robot-localization \ + ros-${ROS_DISTRO}-velodyne \ + ros-${ROS_DISTRO}-rmw-cyclonedds-cpp && \ + apt-get clean && rm -rf /var/lib/apt/lists/* # Add ROS2-Specific configurations to `.bashrc` RUN echo "source ${BOAT_WS}/install/setup.bash" >> ${HOME}/.bashrc && \ - echo "source /opt/ros/${ROS_DISTRO}/setup.bash" >> ${HOME}/.bashrc && \ - echo "source /usr/share/colcon_cd/function/colcon_cd.sh" >> ${HOME}/.bashrc && \ - echo "source /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bash" >> ${HOME}/.bashrc && \ - echo "export _colcon_cd_root=/opt/ros/${ROS_DISTRO}/" >> ${HOME}/.bashrc && \ - echo "cd ${BOAT_WS}" >> ${HOME}/.bashrc + echo "source /opt/ros/${ROS_DISTRO}/setup.bash" >> ${HOME}/.bashrc && \ + echo "source /usr/share/colcon_cd/function/colcon_cd.sh" >> ${HOME}/.bashrc && \ + echo "source /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bash" >> ${HOME}/.bashrc && \ + echo "export _colcon_cd_root=/opt/ros/${ROS_DISTRO}/" >> ${HOME}/.bashrc && \ + echo "cd ${BOAT_WS}" >> ${HOME}/.bashrc # Set Entrypoint Script COPY ./Docker/entrypoint.sh ${HOME} RUN chmod +x ${HOME}/entrypoint.sh -ENTRYPOINT ["/root/entrypoint.sh"] +ENTRYPOINT "${HOME}/entrypoint.sh" ##################### # DEVELOPMENT IMAGE # @@ -118,23 +104,21 @@ COPY --from=builder_vrx ${BOAT_WS}/install ${BOAT_WS}/install # Install Dependencies RUN apt-get update && apt-get -y --no-install-recommends install \ - net-tools iputils-ping \ - libturbojpeg && \ - apt-get clean && rm -rf /var/lib/apt/lists/* + net-tools iputils-ping \ + libturbojpeg && \ + apt-get clean && rm -rf /var/lib/apt/lists/* # Install Gazebo Garden - -## Add Gazebo Repository RUN wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg && \ - echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null -RUN apt-get update && apt-get -y --no-install-recommends install \ - python3-sdformat13 gz-garden \ - python3-colcon-common-extensions \ - ros-${ROS_DISTRO}-xacro \ - ros-${ROS_DISTRO}-ros-gzgarden \ - ros-${ROS_DISTRO}-image-transport \ - ros-${ROS_DISTRO}-rmw-cyclonedds-cpp && \ - apt-get clean && rm -rf /var/lib/apt/lists/* + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null && \ + apt-get update && apt-get -y --no-install-recommends install \ + python3-sdformat13 gz-fortress \ + python3-colcon-common-extensions \ + ros-${ROS_DISTRO}-xacro \ + ros-${ROS_DISTRO}-ros-gzgarden \ + ros-${ROS_DISTRO}-image-transport \ + ros-${ROS_DISTRO}-rmw-cyclonedds-cpp && \ + apt-get clean && rm -rf /var/lib/apt/lists/* ################# # RELEASE IMAGE # @@ -144,5 +128,5 @@ FROM base AS release WORKDIR ${BOAT_WS}/src COPY ./src/roboboat2025_ros2 . RUN source /opt/ros/${ROS_DISTRO}/setup.bash && \ - colcon build --parallel-workers $(nproc) --merge-install --base-paths src && \ - apt-get clean && rm -rf /var/lib/apt/lists/* + colcon build --parallel-workers $(nproc) --merge-install --base-paths src && \ + apt-get clean && rm -rf /var/lib/apt/lists/* diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..7c2201a --- /dev/null +++ b/flake.lock @@ -0,0 +1,44 @@ +{ + "nodes": { + "nix-conf": { + "flake": false, + "locked": { + "lastModified": 1758359326, + "narHash": "sha256-4qSMaKJb6rImkTs5w0SMJyZVAMUAq9G0ieluMbZfg80=", + "owner": "wentasah", + "repo": "nix-conf", + "rev": "5c6b082770719127817cb92051f7c3a6f1e86d97", + "type": "github" + }, + "original": { + "owner": "wentasah", + "repo": "nix-conf", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1758346548, + "narHash": "sha256-afXE7AJ7MY6wY1pg/Y6UPHNYPy5GtUKeBkrZZ/gC71E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b2a3852bd078e68dd2b3dfa8c00c67af1f0a7d20", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nix-conf": "nix-conf", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..3a61ddf --- /dev/null +++ b/flake.nix @@ -0,0 +1,40 @@ +{ + description = "A quick flake for Dockerfile development"; + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05"; + nix-conf = { + url = "github:wentasah/nix-conf"; + flake = false; + }; + }; + + outputs = + inputs@{ self, nixpkgs, ... }: + let + system = "x86_64-linux"; + in + { + devShells."${system}".default = + let + pkgs = import nixpkgs { + inherit system; + }; + # Import the veridian package from nix-conf + veridian = pkgs.callPackage "${inputs.nix-conf}/pkgs/veridian/default.nix" { }; + in + pkgs.mkShell { + # create an environment with nodejs_18, pnpm, and yarn + packages = with pkgs; [ + dockerfile-language-server-nodejs + docker-compose-language-service + yaml-language-server + lazygit + ]; + + shellHook = '' + echo "You're in the SystemVerilog development shell using the 'iverilog' simulator" + ''; + }; + }; +} + From 7e3544a645ed3703689bfa853beb24515c65b263 Mon Sep 17 00:00:00 2001 From: samminhch <45446622+samminhch@users.noreply.github.com> Date: Fri, 26 Sep 2025 14:48:51 -0500 Subject: [PATCH 02/11] feat(devops): Added flake packages for docker-compose and docker buildx, and ignore nix results --- .gitignore | 1 + flake.lock | 17 ----------------- flake.nix | 20 +++++++++++--------- 3 files changed, 12 insertions(+), 26 deletions(-) diff --git a/.gitignore b/.gitignore index cc5980f..3220ad6 100644 --- a/.gitignore +++ b/.gitignore @@ -3,5 +3,6 @@ src/build/ src/install/ *backup .direnv +result .config/nvim/ .config/setup-development-enviornment.sh diff --git a/flake.lock b/flake.lock index 7c2201a..59c4288 100644 --- a/flake.lock +++ b/flake.lock @@ -1,21 +1,5 @@ { "nodes": { - "nix-conf": { - "flake": false, - "locked": { - "lastModified": 1758359326, - "narHash": "sha256-4qSMaKJb6rImkTs5w0SMJyZVAMUAq9G0ieluMbZfg80=", - "owner": "wentasah", - "repo": "nix-conf", - "rev": "5c6b082770719127817cb92051f7c3a6f1e86d97", - "type": "github" - }, - "original": { - "owner": "wentasah", - "repo": "nix-conf", - "type": "github" - } - }, "nixpkgs": { "locked": { "lastModified": 1758346548, @@ -34,7 +18,6 @@ }, "root": { "inputs": { - "nix-conf": "nix-conf", "nixpkgs": "nixpkgs" } } diff --git a/flake.nix b/flake.nix index 3a61ddf..cc109ab 100644 --- a/flake.nix +++ b/flake.nix @@ -2,10 +2,6 @@ description = "A quick flake for Dockerfile development"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05"; - nix-conf = { - url = "github:wentasah/nix-conf"; - flake = false; - }; }; outputs = @@ -19,22 +15,28 @@ pkgs = import nixpkgs { inherit system; }; - # Import the veridian package from nix-conf - veridian = pkgs.callPackage "${inputs.nix-conf}/pkgs/veridian/default.nix" { }; in pkgs.mkShell { # create an environment with nodejs_18, pnpm, and yarn packages = with pkgs; [ + harper + marksman + docker-compose + docker-client + docker-buildx dockerfile-language-server-nodejs docker-compose-language-service yaml-language-server lazygit ]; - shellHook = '' - echo "You're in the SystemVerilog development shell using the 'iverilog' simulator" + mkdir -p "$HOME/.docker/cli-plugins" + ln -sf "$(which docker-buildx)" "$HOME/.docker/cli-plugins/docker-buildx" ''; + # Environment variables + COMPOSE_BAKE = true; + DOCKER_BUILDKIT = true; + COMPOSE_DOCKER_CLI_BUILD = true; }; }; } - From c624b7ce9b54bce73b6189b3eea3011610f1f036 Mon Sep 17 00:00:00 2001 From: samminhch <45446622+samminhch@users.noreply.github.com> Date: Fri, 26 Sep 2025 14:49:12 -0500 Subject: [PATCH 03/11] docs: Updated README.md for MacOS-specific help --- README.md | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 03ddf81..39ef99b 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,33 @@ -# RoboBoat 2025 Codebase +# UTD RoboBoat Codebase ```bash . ├── .config/ -│   ├── .bash.d -│   ├── .bashrc -│   ├── setup-development-enviornment.sh -│   └── starship.toml ├── Docker/ │   ├── Dockerfile │   └── entrypoint.sh ├── docker-compose.yml +├── flake.nix +├── flake.lock ├── README.md └── src/ └── roboboat2025/ ``` +## Development with MacOS +The images _should_ work on MacOS, seeing as the docker images also build for `linux/arm64`. The only issue that _could_ happen is through display forwarding (i.e. graphical applications not showing on MacOS), in which `xquartz` would be required: + +>[!CAUTION] +> None of these instructions were tested _at all_ by me! I just happened to find them from GitHub Gists ([Gist A](https://gist.github.com/cschiewek/246a244ba23da8b9f0e7b11a68bf3285) and [Gist B](https://gist.github.com/sorny/969fe55d85c9b0035b0109a31cbcb088)) + +1. Make sure you have [Homebrew](https://brew.sh/) (a package manager for MacOS) installed. +2. Install `xquartz` with `brew install --cask xquartz`. +3. Open the application and on its `preferences -> security` tab, check the box that says "**Allow connections from network clients**". +4. Relaunch the application +5. On you terminal, enter `xhost +host.docker.internal` to allow connections from Docker +6. ...you should be good to go! + + ## Running Development Container in a Detached State You would normally do this whenever you are starting the container in order to attach to it in a code editor such as VSCode: From 4b2593c5f93b90789590b8944eacc4901a0a9206 Mon Sep 17 00:00:00 2001 From: samminhch <45446622+samminhch@users.noreply.github.com> Date: Fri, 26 Sep 2025 15:31:20 -0500 Subject: [PATCH 04/11] Attempt to get faster mirrors --- Docker/Dockerfile | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Docker/Dockerfile b/Docker/Dockerfile index 2b20545..eb4f5c4 100644 --- a/Docker/Dockerfile +++ b/Docker/Dockerfile @@ -1,5 +1,4 @@ # [TODO] Find faster mirrors again, and uncomment this and `sed` lines -# ARG MIRROR='http://dal.mirrors.clouvider.net' # [INFO] Found using apt-select --country US -t 10 ARG ROS_DISTRO='humble' ARG DEBIAN_FRONTEND='noninteractive' @@ -9,8 +8,8 @@ ARG DEBIAN_FRONTEND='noninteractive' FROM ros:${ROS_DISTRO}-ros-core AS builder SHELL ["/bin/bash", "-c"] -# Use Faster Mirrors -# RUN sed -r -i "s,http://(.*).ubuntu.com,${MIRROR}," /etc/apt/sources.list +# Use faster mirrors +RUN sed -i "s,http://[^ ]*archive\.ubuntu\.com/ubuntu,mirror://mirrors.ubuntu.com/mirrors.txt,g" /etc/apt/sources.list # Setup Environment ENV USER='root' @@ -54,7 +53,7 @@ RUN git clone --progress --verbose --recursive --depth 1 --branch ${VRX_BRANCH} FROM ros:humble-ros-core AS base SHELL ["/bin/bash", "-c"] -# RUN sed -r -i "s,http://(.*).ubuntu.com,${MIRROR}," /etc/apt/sources.list +RUN sed -i 's,http://[^ ]*archive\.ubuntu\.com/ubuntu,mirror://mirrors.ubuntu.com/mirrors.txt,g' /etc/apt/sources.list # Setup Environment ENV USER='root' From 8c6f1eb6c84e0dd4f39500ded51f07125dd642e4 Mon Sep 17 00:00:00 2001 From: samminhch <45446622+samminhch@users.noreply.github.com> Date: Fri, 26 Sep 2025 15:32:47 -0500 Subject: [PATCH 05/11] feat(Dockerfile): update to ROS2 Jazzy --- Docker/Dockerfile | 60 +++++++++++++++++++---------------------------- 1 file changed, 24 insertions(+), 36 deletions(-) diff --git a/Docker/Dockerfile b/Docker/Dockerfile index eb4f5c4..fd75d7a 100644 --- a/Docker/Dockerfile +++ b/Docker/Dockerfile @@ -1,5 +1,5 @@ # [TODO] Find faster mirrors again, and uncomment this and `sed` lines -ARG ROS_DISTRO='humble' +ARG ROS_DISTRO='jazzy' ARG DEBIAN_FRONTEND='noninteractive' ############### @@ -19,20 +19,20 @@ ENV HOME="/${USER}" ENV BOAT_WS="${HOME}/roboboat_ws" RUN mkdir -p "${BOAT_WS}/src" +# Install base packages +RUN apt-get update && apt-get -y --no-install-recommends install \ + cmake wget curl git lsb-release build-essential \ + gnupg software-properties-common \ + && apt-get clean && rm -rf /var/lib/apt/lists/* + # [INFO] Install the default Gazebo pairing with the ROS2 distribution -RUN wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg && \ - echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null && \ - add-apt-repository -y universe && \ +RUN add-apt-repository -y universe && \ apt-get update && apt-get -y --no-install-recommends install \ - cmake wget curl git lsb-release build-essential \ - software-properties-common python3-sdformat13 \ - # ROS2 Gazebo Packages - gz-fortress \ - ros-${ROS_DISTRO}-ros-gzfortress \ + ros-${ROS_DISTRO}-ros-gz \ ros-${ROS_DISTRO}-xacro \ + ros-${ROS_DISTRO}-image-transport \ python3-colcon-common-extensions \ - ros-${ROS_DISTRO}-image-transport && \ - apt-get clean && rm -rf /var/lib/apt/lists/* + && apt-get clean && rm -rf /var/lib/apt/lists/* # [TODO] Add ZED SDK support # [INFO] Build the VRX simulation and ZED ROS2 Wrapper packages @@ -44,13 +44,13 @@ WORKDIR ${BOAT_WS}/src RUN git clone --progress --verbose --recursive --depth 1 --branch ${VRX_BRANCH} https://github.com/${VRX_REPO}.git && \ # git clone --progress --verbose --recursive --depth 1 --branch ${ZED_BRANCH} https://github.com/${ZED_REPO}.git && \ cd ${BOAT_WS} && source /opt/ros/${ROS_DISTRO}/setup.bash && \ - colcon build --symlink-install --parallel-workers $(nproc) --cmake-args=-DCMAKE_BUILD_TYPE=Release --base-paths src && \ + colcon build --merge-install --parallel-workers $(nproc) --cmake-args=-DCMAKE_BUILD_TYPE=Release --base-paths src && \ apt-get clean && rm -rf /var/lib/apt/lists/* ############## # BASE IMAGE # ############## -FROM ros:humble-ros-core AS base +FROM ros:${ROS_DISTRO}-ros-core AS base SHELL ["/bin/bash", "-c"] RUN sed -i 's,http://[^ ]*archive\.ubuntu\.com/ubuntu,mirror://mirrors.ubuntu.com/mirrors.txt,g' /etc/apt/sources.list @@ -61,18 +61,14 @@ ENV HOME="/${USER}" ENV BOAT_WS="${HOME}/roboboat_ws" RUN mkdir -p ${BOAT_WS} -## ROS2 -ENV RMW_IMPLEMENTATION=rmw_cyclonedds_cpp - ## .bashrc COPY .config/.bashrc ${HOME}/.bashrc COPY .config/.bash.d ${HOME}/.bash.d # Install common packges RUN apt-get update && apt-get -y --no-install-recommends install \ - software-properties-common apt-utils wget curl \ - python3-minimal python-is-python3 python3-pip \ - python3-vcstool ros-dev-tools \ + software-properties-common apt-utils wget curl libturbojpeg\ + python3-minimal python-is-python3 python3-pip python3-vcstool \ python3-colcon-common-extensions \ ros-${ROS_DISTRO}-point-cloud-transport \ ros-${ROS_DISTRO}-robot-localization \ @@ -80,6 +76,12 @@ RUN apt-get update && apt-get -y --no-install-recommends install \ ros-${ROS_DISTRO}-rmw-cyclonedds-cpp && \ apt-get clean && rm -rf /var/lib/apt/lists/* +## ROS2 +ENV RMW_IMPLEMENTATION=rmw_cyclonedds_cpp + + +# Copy files from the builder +COPY --from=builder ${BOAT_WS}/install ${BOAT_WS}/install # Add ROS2-Specific configurations to `.bashrc` RUN echo "source ${BOAT_WS}/install/setup.bash" >> ${HOME}/.bashrc && \ echo "source /opt/ros/${ROS_DISTRO}/setup.bash" >> ${HOME}/.bashrc && \ @@ -98,25 +100,11 @@ ENTRYPOINT "${HOME}/entrypoint.sh" ##################### FROM base AS development -# Copy files from the builder -COPY --from=builder_vrx ${BOAT_WS}/install ${BOAT_WS}/install - # Install Dependencies RUN apt-get update && apt-get -y --no-install-recommends install \ - net-tools iputils-ping \ - libturbojpeg && \ - apt-get clean && rm -rf /var/lib/apt/lists/* - -# Install Gazebo Garden -RUN wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg && \ - echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null && \ - apt-get update && apt-get -y --no-install-recommends install \ - python3-sdformat13 gz-fortress \ - python3-colcon-common-extensions \ - ros-${ROS_DISTRO}-xacro \ - ros-${ROS_DISTRO}-ros-gzgarden \ - ros-${ROS_DISTRO}-image-transport \ - ros-${ROS_DISTRO}-rmw-cyclonedds-cpp && \ + net-tools iputils-ping ros-dev-tools \ + ros-${ROS_DISTRO}-ros-gz \ + && \ apt-get clean && rm -rf /var/lib/apt/lists/* ################# From 1505f9192db822aace06f643601d381657d885c6 Mon Sep 17 00:00:00 2001 From: samminhch <45446622+samminhch@users.noreply.github.com> Date: Thu, 2 Oct 2025 10:14:26 -0500 Subject: [PATCH 06/11] hotfix: MVP development ROS2 Docker images for MacOS, Windows, and Linux Updated the Dockerfile to support ROS2 development for the x86_64 and arm64 computer architectures. Additionally, --- Docker/Dockerfile | 181 +++++++++++++++++++++++---------------------- docker-compose.yml | 64 ++++++++-------- 2 files changed, 127 insertions(+), 118 deletions(-) diff --git a/Docker/Dockerfile b/Docker/Dockerfile index fd75d7a..1e37b88 100644 --- a/Docker/Dockerfile +++ b/Docker/Dockerfile @@ -1,64 +1,96 @@ -# [TODO] Find faster mirrors again, and uncomment this and `sed` lines -ARG ROS_DISTRO='jazzy' -ARG DEBIAN_FRONTEND='noninteractive' - -############### -# BUILD IMAGE # -############### -FROM ros:${ROS_DISTRO}-ros-core AS builder -SHELL ["/bin/bash", "-c"] - -# Use faster mirrors -RUN sed -i "s,http://[^ ]*archive\.ubuntu\.com/ubuntu,mirror://mirrors.ubuntu.com/mirrors.txt,g" /etc/apt/sources.list - -# Setup Environment -ENV USER='root' -ENV HOME="/${USER}" +ARG ROS_DISTRO="humble" + +ARG USER="root" +ARG HOME="/${USER}" +ARG BOAT_WS="${HOME}/roboboat_ws" + +ARG PKGS_BASE="git wget curl jq" +ARG PKGS_DEV="software-properties-common apt-utils python3-minimal python-is-python3 python3-pip python3-vcstool python3-colcon-common-extensions net-tools iputils-ping ros-dev-tools ros-${ROS_DISTRO}-velodyne ros-${ROS_DISTRO}-rmw-cyclonedds-cpp ros-${ROS_DISTRO}-point-cloud-transport ros-${ROS_DISTRO}-robot-localization libturbojpeg" +ARG PKGS_SIM="gz-harmonic" + +# ZED SDK args +ARG ZED_SDK_URL="https://download.stereolabs.com/zedsdk/5.0/cu12/ubuntu22" +ARG PKGS_ZED_SDK="zstd less cmake gnupg2 build-essential python3 python3-pip python3-dev python3-setuptools python3-wheel libusb-1.0-0-dev libgeographic-dev libdraco-dev zlib1g-dev lsb-release udev build-essential libpq-dev usbutils" +ARG PKGS_PIP_ZED_SDK="cython numpy opencv-python-headless protobuf" + +########### +# BUILDER # +########### +# The goal of this image is to build the following images: +# - osrf/vrx (2.4.1) +# - sterolabs/zed-ros2-wrapper +FROM ros:${ROS_DISTRO}-ros-base AS builder +ENV DEBIAN_FRONTEND=noninteractive + +# Redeclare global args +ARG PKGS_BASE +ARG PKGS_SIM +ARG PKGS_ZED_SDK +ARG PKGS_PIP_ZED_SDK +ARG BOAT_WS +ARG ZED_SDK_URL +ARG ROS_DISTRO + +RUN apt-get update -y && apt-get install -y --no-install-recommends \ + ${PKGS_BASE} && \ + apt-get clean && rm -rf /var/lib/apt/lists/* -# Setup Workspace -ENV BOAT_WS="${HOME}/roboboat_ws" -RUN mkdir -p "${BOAT_WS}/src" +# Install the ZED SDK +# RUN echo "[INFO] ZED SDK link: $ZED_SDK_URL" && \ +# if [ "$(curl -L -I "${ZED_SDK_URL}" -o /dev/null -s -w '%{http_code}\n' | head -n 1)" = "200" ]; then \ +# echo "[OKAY] ZedSDK URL exists"; \ +# else \ +# echo "[ERROR] ZedSDK URL does not point to a .run file or the file does not exist."; \ +# exit 1; \ +# fi; \ +# wget -q -O ZED_SDK_Linux_Ubuntu.run ${ZED_SDK_URL} && \ +# chmod +x ZED_SDK_Linux_Ubuntu.run && \ +# ./ZED_SDK_Linux_Ubuntu.run -- silent skip_tools skip_cuda && \ +# ln -sf /lib/x86_64-linux-gnu/libusb-1.0.so.0 /usr/lib/x86_64-linux-gnu/libusb-1.0.so && \ +# rm ZED_SDK_Linux_Ubuntu.run && \ +# rm -rf /var/lib/apt/lists/* + +# Install Gazebo Harmonic, dependency for osrf/vrx +RUN curl https://packages.osrfoundation.org/gazebo.gpg --output /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg && \ + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] https://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null && \ + apt-get update -y && apt-get install -y --no-install-recommends ${PKGS_SIM} -# Install base packages -RUN apt-get update && apt-get -y --no-install-recommends install \ - cmake wget curl git lsb-release build-essential \ - gnupg software-properties-common \ - && apt-get clean && rm -rf /var/lib/apt/lists/* - -# [INFO] Install the default Gazebo pairing with the ROS2 distribution -RUN add-apt-repository -y universe && \ - apt-get update && apt-get -y --no-install-recommends install \ - ros-${ROS_DISTRO}-ros-gz \ - ros-${ROS_DISTRO}-xacro \ - ros-${ROS_DISTRO}-image-transport \ - python3-colcon-common-extensions \ - && apt-get clean && rm -rf /var/lib/apt/lists/* - -# [TODO] Add ZED SDK support -# [INFO] Build the VRX simulation and ZED ROS2 Wrapper packages ARG VRX_REPO='osrf/vrx' ARG VRX_BRANCH='v3.0.4' -# ARG ZED_REPO='stereolabs/zed-ros2-wrapper' -# ARG ZED_BRANCH='humble-v5.0.0' -WORKDIR ${BOAT_WS}/src -RUN git clone --progress --verbose --recursive --depth 1 --branch ${VRX_BRANCH} https://github.com/${VRX_REPO}.git && \ +ARG ZED_REPO='stereolabs/zed-ros2-wrapper' +ARG ZED_BRANCH='humble-v5.0.0' +RUN /bin/bash -c "mkdir -p "${BOAT_WS}/src" && cd "${BOAT_WS}/src" && \ + apt-get update -y && \ + ls -la /opt/ros/${ROS_DISTRO} && source /opt/ros/${ROS_DISTRO}/setup.bash && \ + git clone --progress --verbose --recursive --depth 1 --branch ${VRX_BRANCH} https://github.com/${VRX_REPO}.git && \ # git clone --progress --verbose --recursive --depth 1 --branch ${ZED_BRANCH} https://github.com/${ZED_REPO}.git && \ - cd ${BOAT_WS} && source /opt/ros/${ROS_DISTRO}/setup.bash && \ - colcon build --merge-install --parallel-workers $(nproc) --cmake-args=-DCMAKE_BUILD_TYPE=Release --base-paths src && \ - apt-get clean && rm -rf /var/lib/apt/lists/* + cd ${BOAT_WS} && \ + rosdep update && rosdep install --from-paths src --ignore-src -r -y && \ + colcon build --parallel-workers $(nproc) --merge-install \ + --event-handlers console_direct+ --base-paths src" +# These are for ZED SDK +# --cmake-args ' -DCMAKE_BUILD_TYPE=Release' \ +# ' -DCMAKE_LIBRARY_PATH=/usr/local/cuda/lib64/stubs' \ +# ' -DCMAKE_CXX_FLAGS=\"-Wl,--allow-shlib-undefined\"'" -############## -# BASE IMAGE # -############## -FROM ros:${ROS_DISTRO}-ros-core AS base -SHELL ["/bin/bash", "-c"] +##################### +# DEVELOPMENT IMAGE # +##################### +FROM ros:${ROS_DISTRO}-ros-core AS development RUN sed -i 's,http://[^ ]*archive\.ubuntu\.com/ubuntu,mirror://mirrors.ubuntu.com/mirrors.txt,g' /etc/apt/sources.list # Setup Environment -ENV USER='root' -ENV HOME="/${USER}" -ENV BOAT_WS="${HOME}/roboboat_ws" +ARG PKGS_BASE +ARG PKGS_SIM +ARG BOAT_WS +ARG ROS_DISTRO +ARG USER="root" +ARG HOME="/${USER}" + +ENV USER=${USER} +ENV HOME=${HOME} +ENV BOAT_WS=${BOAT_WS} RUN mkdir -p ${BOAT_WS} ## .bashrc @@ -67,53 +99,24 @@ COPY .config/.bash.d ${HOME}/.bash.d # Install common packges RUN apt-get update && apt-get -y --no-install-recommends install \ - software-properties-common apt-utils wget curl libturbojpeg\ - python3-minimal python-is-python3 python3-pip python3-vcstool \ - python3-colcon-common-extensions \ - ros-${ROS_DISTRO}-point-cloud-transport \ - ros-${ROS_DISTRO}-robot-localization \ - ros-${ROS_DISTRO}-velodyne \ - ros-${ROS_DISTRO}-rmw-cyclonedds-cpp && \ + ${PKGS_BASE} ${PKGS_DEV} && \ apt-get clean && rm -rf /var/lib/apt/lists/* -## ROS2 +# Set the RMW implementation to CycloneDDS ENV RMW_IMPLEMENTATION=rmw_cyclonedds_cpp - # Copy files from the builder COPY --from=builder ${BOAT_WS}/install ${BOAT_WS}/install # Add ROS2-Specific configurations to `.bashrc` -RUN echo "source ${BOAT_WS}/install/setup.bash" >> ${HOME}/.bashrc && \ - echo "source /opt/ros/${ROS_DISTRO}/setup.bash" >> ${HOME}/.bashrc && \ - echo "source /usr/share/colcon_cd/function/colcon_cd.sh" >> ${HOME}/.bashrc && \ - echo "source /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bash" >> ${HOME}/.bashrc && \ - echo "export _colcon_cd_root=/opt/ros/${ROS_DISTRO}/" >> ${HOME}/.bashrc && \ - echo "cd ${BOAT_WS}" >> ${HOME}/.bashrc +RUN /bin/bash -c "\ + echo 'source /opt/ros/${ROS_DISTRO}/setup.bash' >> ${HOME}/.bashrc; \ + echo 'source ${BOAT_WS}/install/setup.bash' >> ${HOME}/.bashrc; \ + echo 'source /usr/share/colcon_cd/function/colcon_cd.sh' >> ${HOME}/.bashrc; \ + echo 'source /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bash' >> ${HOME}/.bashrc; \ + echo 'export _colcon_cd_root=/opt/ros/${ROS_DISTRO}/' >> ${HOME}/.bashrc; \ + echo 'cd ${BOAT_WS}' >> ${HOME}/.bashrc" # Set Entrypoint Script COPY ./Docker/entrypoint.sh ${HOME} RUN chmod +x ${HOME}/entrypoint.sh ENTRYPOINT "${HOME}/entrypoint.sh" - -##################### -# DEVELOPMENT IMAGE # -##################### -FROM base AS development - -# Install Dependencies -RUN apt-get update && apt-get -y --no-install-recommends install \ - net-tools iputils-ping ros-dev-tools \ - ros-${ROS_DISTRO}-ros-gz \ - && \ - apt-get clean && rm -rf /var/lib/apt/lists/* - -################# -# RELEASE IMAGE # -################# -FROM base AS release - -WORKDIR ${BOAT_WS}/src -COPY ./src/roboboat2025_ros2 . -RUN source /opt/ros/${ROS_DISTRO}/setup.bash && \ - colcon build --parallel-workers $(nproc) --merge-install --base-paths src && \ - apt-get clean && rm -rf /var/lib/apt/lists/* diff --git a/docker-compose.yml b/docker-compose.yml index 46ac823..a5e408b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -19,6 +19,9 @@ services: context: . dockerfile: Docker/Dockerfile target: development + platforms: + - 'linux/amd64' + - 'linux/arm64' # Interactive shell tty: True stdin_open: True @@ -27,7 +30,7 @@ services: network_mode: host ipc: host # NVidia Runtime - runtime: nvidia + # runtime: nvidia environment: # Needed to define a TurtleBot3 model type - TURTLEBOT3_MODEL=burger @@ -57,31 +60,34 @@ services: tty: False stdin_open: False command: ros2 doctor - release: - image: utdrobosub/roboboat-2025:release - build: - context: . - dockerfile: Docker/Dockerfile - target: release - # Interactive shell - tty: True - stdin_open: True - privileged: True - # Networking and IPC for ROS 2 - network_mode: host - ipc: host - # NVidia Runtime - runtime: nvidia - environment: - # Needed to define a TurtleBot3 model type - - TURTLEBOT3_MODEL=burger - # Allows graphical programs in the container. - - DISPLAY=${DISPLAY} - - QT_X11_NO_MITSHM=1 - - NVIDIA_DRIVER_CAPABILITIES=all - # Devices: - device_cgroup_rules: - - "c 189:* rmw" - volumes: - # Access to all Host Devices - - /dev:/dev + # release: + # image: utdrobosub/roboboat-2025:release + # build: + # context: . + # dockerfile: Docker/Dockerfile + # target: release + # platforms: + # - 'linux/amd64' + # - 'linux/arm64' + # # Interactive shell + # tty: True + # stdin_open: True + # privileged: True + # # Networking and IPC for ROS 2 + # network_mode: host + # ipc: host + # # NVidia Runtime + # runtime: nvidia + # environment: + # # Needed to define a TurtleBot3 model type + # - TURTLEBOT3_MODEL=burger + # # Allows graphical programs in the container. + # - DISPLAY=${DISPLAY} + # - QT_X11_NO_MITSHM=1 + # - NVIDIA_DRIVER_CAPABILITIES=all + # # Devices: + # device_cgroup_rules: + # - "c 189:* rmw" + # volumes: + # # Access to all Host Devices + # - /dev:/dev From 7049603001d1c7736c105473a4a66705827fdd3b Mon Sep 17 00:00:00 2001 From: samminhch <45446622+samminhch@users.noreply.github.com> Date: Thu, 2 Oct 2025 10:41:29 -0500 Subject: [PATCH 07/11] fix(workflow): install ros-humble-ros-gzharmonic --- Docker/Dockerfile | 15 +++++++++------ docker-compose.yml | 4 ++-- src/roboboat2025_ros2 | 2 +- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/Docker/Dockerfile b/Docker/Dockerfile index 1e37b88..02e32eb 100644 --- a/Docker/Dockerfile +++ b/Docker/Dockerfile @@ -6,7 +6,7 @@ ARG BOAT_WS="${HOME}/roboboat_ws" ARG PKGS_BASE="git wget curl jq" ARG PKGS_DEV="software-properties-common apt-utils python3-minimal python-is-python3 python3-pip python3-vcstool python3-colcon-common-extensions net-tools iputils-ping ros-dev-tools ros-${ROS_DISTRO}-velodyne ros-${ROS_DISTRO}-rmw-cyclonedds-cpp ros-${ROS_DISTRO}-point-cloud-transport ros-${ROS_DISTRO}-robot-localization libturbojpeg" -ARG PKGS_SIM="gz-harmonic" +ARG PKGS_SIM="ros-${ROS_DISTRO}-ros-gzharmonic gz-harmonic" # ZED SDK args ARG ZED_SDK_URL="https://download.stereolabs.com/zedsdk/5.0/cu12/ubuntu22" @@ -53,7 +53,8 @@ RUN apt-get update -y && apt-get install -y --no-install-recommends \ # Install Gazebo Harmonic, dependency for osrf/vrx RUN curl https://packages.osrfoundation.org/gazebo.gpg --output /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg && \ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] https://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null && \ - apt-get update -y && apt-get install -y --no-install-recommends ${PKGS_SIM} + apt-get update -y && apt-get install -y --no-install-recommends ${PKGS_SIM} \ + && apt-get clean && rm -rf /var/lib/apt/lists/* ARG VRX_REPO='osrf/vrx' ARG VRX_BRANCH='v3.0.4' @@ -83,6 +84,7 @@ RUN sed -i 's,http://[^ ]*archive\.ubuntu\.com/ubuntu,mirror://mirrors.ubuntu.co # Setup Environment ARG PKGS_BASE ARG PKGS_SIM +ARG PKGS_DEV ARG BOAT_WS ARG ROS_DISTRO ARG USER="root" @@ -97,10 +99,11 @@ RUN mkdir -p ${BOAT_WS} COPY .config/.bashrc ${HOME}/.bashrc COPY .config/.bash.d ${HOME}/.bash.d -# Install common packges -RUN apt-get update && apt-get -y --no-install-recommends install \ - ${PKGS_BASE} ${PKGS_DEV} && \ - apt-get clean && rm -rf /var/lib/apt/lists/* +RUN curl https://packages.osrfoundation.org/gazebo.gpg --output /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg && \ + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] https://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null && \ + apt-get update -y && apt-get install -y --no-install-recommends \ + ${PKGS_BASE} ${PKGS_DEV} ${PKGS_SIM} \ + && apt-get clean && rm -rf /var/lib/apt/lists/* # Set the RMW implementation to CycloneDDS ENV RMW_IMPLEMENTATION=rmw_cyclonedds_cpp diff --git a/docker-compose.yml b/docker-compose.yml index a5e408b..8ac709c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -37,7 +37,7 @@ services: # Allows graphical programs in the container. - DISPLAY=${DISPLAY} - QT_X11_NO_MITSHM=1 - - NVIDIA_DRIVER_CAPABILITIES=all + # - NVIDIA_DRIVER_CAPABILITIES=all # Devices: device_cgroup_rules: - "c 189:* rmw" @@ -54,7 +54,7 @@ services: extends: development tty: False stdin_open: False - command: ros2 launch vrx_gz competition.launch.py + command: ros2 launch vrx_gz vrx_environment.launch.py world:=nbpark healthcheck: extends: development tty: False diff --git a/src/roboboat2025_ros2 b/src/roboboat2025_ros2 index 79b7ea5..b4b0653 160000 --- a/src/roboboat2025_ros2 +++ b/src/roboboat2025_ros2 @@ -1 +1 @@ -Subproject commit 79b7ea5e48acc26d288f947742c2ff13d12b2fca +Subproject commit b4b0653fe72d2029410cfe44e0f26e7a9b336039 From d3548a7a6568012fff73cee1376471e87e2570eb Mon Sep 17 00:00:00 2001 From: JMANY42 <2187.j.man@gmail.com> Date: Thu, 2 Oct 2025 20:33:37 -0500 Subject: [PATCH 08/11] fixed gz-harmonic --- Docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Docker/Dockerfile b/Docker/Dockerfile index 02e32eb..b9faa10 100644 --- a/Docker/Dockerfile +++ b/Docker/Dockerfile @@ -6,7 +6,7 @@ ARG BOAT_WS="${HOME}/roboboat_ws" ARG PKGS_BASE="git wget curl jq" ARG PKGS_DEV="software-properties-common apt-utils python3-minimal python-is-python3 python3-pip python3-vcstool python3-colcon-common-extensions net-tools iputils-ping ros-dev-tools ros-${ROS_DISTRO}-velodyne ros-${ROS_DISTRO}-rmw-cyclonedds-cpp ros-${ROS_DISTRO}-point-cloud-transport ros-${ROS_DISTRO}-robot-localization libturbojpeg" -ARG PKGS_SIM="ros-${ROS_DISTRO}-ros-gzharmonic gz-harmonic" +ARG PKGS_SIM="ros-${ROS_DISTRO}-ros-gz gz-harmonic" # ZED SDK args ARG ZED_SDK_URL="https://download.stereolabs.com/zedsdk/5.0/cu12/ubuntu22" From 3426a7179a412e4751451549bff47bd3ef5147a4 Mon Sep 17 00:00:00 2001 From: JMANY42 <2187.j.man@gmail.com> Date: Thu, 2 Oct 2025 20:43:51 -0500 Subject: [PATCH 09/11] changed sim launch world to include boat --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 8ac709c..2af13f4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -54,7 +54,7 @@ services: extends: development tty: False stdin_open: False - command: ros2 launch vrx_gz vrx_environment.launch.py world:=nbpark + command: ros2 launch vrx_gz competition.launch.py healthcheck: extends: development tty: False From 469a93bf51c16ffe91780baf065c070266602ce2 Mon Sep 17 00:00:00 2001 From: JMANY42 <2187.j.man@gmail.com> Date: Thu, 2 Oct 2025 21:08:34 -0500 Subject: [PATCH 10/11] removed roboboat2025_ros2 submodule --- docker-compose.yml | 2 +- src/roboboat2025_ros2 | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) delete mode 160000 src/roboboat2025_ros2 diff --git a/docker-compose.yml b/docker-compose.yml index 2af13f4..cbb50b7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -49,7 +49,7 @@ services: - /dev:/dev # Share config / src Directories - ./.config:/root/.config - - ./src/roboboat2025_ros2:/root/roboboat_ws/src/roboboat2025_ros2 + # - ./src/roboboat2025_ros2:/root/roboboat_ws/src/roboboat2025_ros2 sim: extends: development tty: False diff --git a/src/roboboat2025_ros2 b/src/roboboat2025_ros2 deleted file mode 160000 index b4b0653..0000000 --- a/src/roboboat2025_ros2 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit b4b0653fe72d2029410cfe44e0f26e7a9b336039 From 1884bfdf0f2d850aaaaf7442e805fef5f5820b5a Mon Sep 17 00:00:00 2001 From: JMANY42 <2187.j.man@gmail.com> Date: Fri, 3 Oct 2025 13:47:09 -0500 Subject: [PATCH 11/11] removed all refrenes to removed submodule --- .gitmodules | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 .gitmodules diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index a4fa479..0000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "src/roboboat2025_ros2"] - path = src/roboboat2025_ros2 - url = https://github.com/ROboSub-UTD/roboboat2025_ros2