@@ -117,38 +117,40 @@ RUN echo "source ${USER_WORKSPACE}/install/setup.bash" >> /home/$USERNAME/.bashr
117117FROM robot AS desktop
118118
119119ENV DEBIAN_FRONTEND=noninteractive
120- ENV GZ_VERSION=garden
121-
122- # Install Gazebo Garden: https://gazebosim.org/docs/garden/install_ubuntu
123- RUN sudo wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg \
124- && 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" | sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null \
125- && sudo apt-get -q update \
126- && sudo apt-get -y --quiet --no-install-recommends install \
127- gz-garden \
128- && sudo apt-get autoremove -y \
129- && sudo apt-get clean -y \
130- && sudo rm -rf /var/lib/apt/lists/*
131-
132- # Install ArduPilot and ardupilot_gazebo dependencies
133- RUN sudo apt-get -q update \
134- && sudo apt-get -q -y upgrade \
135- && sudo apt-get -q install --no-install-recommends -y \
120+ ENV GZ_VERSION=harmonic
121+
122+ # Install Gazebo Harmonic: https://gazebosim.org/docs/harmonic/install_ubuntu
123+ # Per DL3004, use "USER root" rather than "sudo"
124+ # https://github.com/hadolint/hadolint/wiki/DL3004
125+ USER root
126+ # Install custom rosdep list
127+ ADD --chown=root:root --chmod=0644 https://raw.githubusercontent.com/osrf/osrf-rosdep/master/gz/00-gazebo.list /etc/ros/rosdep/sources.list.d/00-gazebo.list
128+ RUN wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg \
129+ && 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 \
130+ && apt-get -q update \
131+ && apt-get -y --quiet --no-install-recommends install \
132+ gz-${GZ_VERSION} \
133+ python3-pexpect \
136134 python3-wxgtk4.0 \
135+ python3-future \
137136 rapidjson-dev \
138137 xterm \
139- libgz-sim7-dev \
140138 rapidjson-dev \
141139 libopencv-dev \
142- && sudo apt-get autoremove -y \
143- && sudo apt-get clean -y \
144- && sudo rm -rf /var/lib/apt/lists/*
140+ && apt-get autoremove -y \
141+ && apt-get clean -y \
142+ && rm -rf /var/lib/apt/lists/*
143+ USER $USERNAME
145144
146145# Clone ArduSub
147146# ArduSub is installed for simulation purposes ONLY
148147# When deployed onto hardware, the native installation of ArduSub
149148# (on the FCU) will be used.
150149WORKDIR /home/$USERNAME
151- RUN git clone https://github.com/ArduPilot/ardupilot.git --recurse-submodules
150+ # Really should do version pinning but Sub-4.5 is waaaay behind master
151+ # (e.g. it doesn't know about "noble" yet)
152+ ARG ARDUPILOT_RELEASE=master
153+ RUN git clone -b ${ARDUPILOT_RELEASE} https://github.com/ArduPilot/ardupilot.git --recurse-submodules
152154
153155# Install ArduSub dependencies
154156WORKDIR /home/$USERNAME/ardupilot
0 commit comments