update untracked files

This commit is contained in:
2026-01-12 10:56:52 +01:00
parent c286dafcf7
commit 9df4bc9013
5 changed files with 155 additions and 155 deletions

4
.gitignore vendored
View File

@@ -1,3 +1,3 @@
licenses/** licenses/**
pkgs/exwayz_3d_mapping* pkgs/exwayz_3d_mapping*
tmp/** tmp/**

138
README.md
View File

@@ -1,69 +1,69 @@
# **Project Overview** # **Project Overview**
This repository contains the container and supporting files used by the LENA autonomous vehicle project. It packages the Exwayz 3D Mapping / SLAM executables into a Docker image that can run as part of the vehicle microservices stack. This repository contains the container and supporting files used by the LENA autonomous vehicle project. It packages the Exwayz 3D Mapping / SLAM executables into a Docker image that can run as part of the vehicle microservices stack.
**Repository Contents** **Repository Contents**
- **`exwayz_test.dockerfile`**: Dockerfile used to build the container image for testing and integration. - **`exwayz_test.dockerfile`**: Dockerfile used to build the container image for testing and integration.
- **`src/**`: all code that we have written which runs on the container. - **`src/**`: all code that we have written which runs on the container.
- **`tmp/data/`**: sample data including `exwayz_sample_data_slam_01.bag` used for demonstrations and tests. Download this from the link to their google drive on [the Exwayz docs site](https://exwayz.notion.site/Exwayz-3D-Mapping-v1-latest-1ea57c917367810ea1e9f8bf83e2e9d4) - **`tmp/data/`**: sample data including `exwayz_sample_data_slam_01.bag` used for demonstrations and tests. Download this from the link to their google drive on [the Exwayz docs site](https://exwayz.notion.site/Exwayz-3D-Mapping-v1-latest-1ea57c917367810ea1e9f8bf83e2e9d4)
- **`media/`**: screenshots and demos (GIFs) used in documentation. - **`media/`**: screenshots and demos (GIFs) used in documentation.
- **`licenses/`**: licensing information for included components. - **`licenses/`**: licensing information for included components.
**Contributing** **Contributing**
Please open issues or PRs for fixes and improvements. If you work on vehicle deployment or CI, include small, testable changes and document any required secrets or hardware assumptions. Please open issues or PRs for fixes and improvements. If you work on vehicle deployment or CI, include small, testable changes and document any required secrets or hardware assumptions.
# **Quick Start** # **Quick Start**
Build the image (from the repository root): Build the image (from the repository root):
```powershell ```powershell
docker build -f exwayz_test.dockerfile -t exwayz_test:latest . docker build -f exwayz_test.dockerfile -t exwayz_test:latest .
``` ```
Run the container (example; adjust mounts and environment for your platform): Run the container (example; adjust mounts and environment for your platform):
```powershell ```powershell
# Example (WSL on systems with X11 forwarding available) # Example (WSL on systems with X11 forwarding available)
docker run -it --rm \ docker run -it --rm \
--env="DISPLAY=$DISPLAY" \ --env="DISPLAY=$DISPLAY" \
--env="QT_X11_NO_MITSHM=1" \ --env="QT_X11_NO_MITSHM=1" \
--volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \ --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
-v "${PWD}:/app" \ -v "${PWD}:/app" \
exwayz_test:latest \ exwayz_test:latest \
/bin/bash /bin/bash
``` ```
On POSIX shells use `$DISPLAY` and `$(pwd)` as usual. On POSIX shells use `$DISPLAY` and `$(pwd)` as usual.
Run the Exwayz SLAM pipeline against the sample bag inside the container (example): Run the Exwayz SLAM pipeline against the sample bag inside the container (example):
```bash ```bash
exwayz_slam --bag tmp/data/exwayz_sample_data_slam_01.bag \ exwayz_slam --bag tmp/data/exwayz_sample_data_slam_01.bag \
--bag-hesai /hesai/pandar_packets \ --bag-hesai /hesai/pandar_packets \
--hesai-model PandarXT-32 \ --hesai-model PandarXT-32 \
--d-write 0.1 -o ./slam_session_tutorial --no-date --d-write 0.1 -o ./slam_session_tutorial --no-date
``` ```
Adjust paths and model names to match your sensor and bag file layout. Adjust paths and model names to match your sensor and bag file layout.
You should see something like this: You should see something like this:
![Gif of demo](media\Exwayz_slam_demo_working.gif) ![Gif of demo](media\Exwayz_slam_demo_working.gif)
# **Status** # **Status**
- Docker image: mostly working for local testing. - Docker image: mostly working for local testing.
- Secrets: currently not included in the image; build-time and runtime secrets need secure handling (see TODOs). - Secrets: currently not included in the image; build-time and runtime secrets need secure handling (see TODOs).
- Target: this repo should evolve into the deploy-and-run repo for vehicle microservices. - Target: this repo should evolve into the deploy-and-run repo for vehicle microservices.
# **Todos** # **Todos**
- [x] **Prototype Docker Image**: Get a prototype docker image working and run their demos. - [x] **Prototype Docker Image**: Get a prototype docker image working and run their demos.
- [x] **Refine README**: polish documentation and examples (in progress). - [x] **Refine README**: polish documentation and examples (in progress).
- [ ] **Fix Cross Compiling**: Cross compiling failing for aarch64. - [ ] **Fix Cross Compiling**: Cross compiling failing for aarch64.
- [ ] **Secrets Handling**: implement secure secret injection for builds and runtime (Docker BuildKit, secret manager, or CI secrets). - [ ] **Secrets Handling**: implement secure secret injection for builds and runtime (Docker BuildKit, secret manager, or CI secrets).
- [ ] **Standardized Scripts**: add `build_image.ps1` and `run_container.ps1` (and POSIX equivalents) to standardize workflows. - [ ] **Standardized Scripts**: add `build_image.ps1` and `run_container.ps1` (and POSIX equivalents) to standardize workflows.
- [ ] **CI Build**: add GitHub Actions workflow equivalent to Gitea to build (and optionally scan) images on push/PR. - [ ] **CI Build**: add GitHub Actions workflow equivalent to Gitea to build (and optionally scan) images on push/PR.
- [ ] **Vehicle Deployment Guide**: document runtime flags, service templates, and health-checks for deployment on the vehicle. - [ ] **Vehicle Deployment Guide**: document runtime flags, service templates, and health-checks for deployment on the vehicle.
- [ ] **Integration Test**: add tests that run the pipeline against `tmp/data/exwayz_sample_data_slam_01.bag` to detect regressions. - [ ] **Integration Test**: add tests that run the pipeline against `tmp/data/exwayz_sample_data_slam_01.bag` to detect regressions.

View File

@@ -1,57 +1,57 @@
# syntax=docker/dockerfile:1.3 # syntax=docker/dockerfile:1.3
FROM ros:jazzy-ros-core FROM ros:jazzy-ros-core
# Build argument provided by buildx/BuildKit: `TARGETARCH` (amd64, arm64, etc.). # Build argument provided by buildx/BuildKit: `TARGETARCH` (amd64, arm64, etc.).
# Default to amd64 when not provided. # Default to amd64 when not provided.
ARG TARGETARCH=amd64 ARG TARGETARCH=amd64
ARG GRAPICAL_ENV=TRUE ARG GRAPICAL_ENV=TRUE
# Copy both architecture-specific packages into the image and choose the right one at build time # Copy both architecture-specific packages into the image and choose the right one at build time
COPY pkgs/exwayz_3d_mapping-1.2.2-linux-u24.04-amd64.deb /tmp/exwayz_amd64.deb COPY pkgs/exwayz_3d_mapping-1.2.2-linux-u24.04-amd64.deb /tmp/exwayz_amd64.deb
COPY pkgs/exwayz_3d_mapping-1.2.2-linux-u24.04-aarch64.deb /tmp/exwayz_aarch64.deb COPY pkgs/exwayz_3d_mapping-1.2.2-linux-u24.04-aarch64.deb /tmp/exwayz_aarch64.deb
# Install dependencies and setup for GUI applications # Install dependencies and setup for GUI applications
ENV DISPLAY=:0 ENV DISPLAY=:0
ENV WAYLAND_DISPLAY=wayland-0 ENV WAYLAND_DISPLAY=wayland-0
ENV XDG_SESSION_TYPE=x11 ENV XDG_SESSION_TYPE=x11
ENV XDG_RUNTIME_DIR=/mnt/wslg/runtime-dir ENV XDG_RUNTIME_DIR=/mnt/wslg/runtime-dir
#If debug, install the following: #If debug, install the following:
RUN if [ "$GRAPHICAL_ENV" = "TRUE" ]; then \ RUN if [ "$GRAPHICAL_ENV" = "TRUE" ]; then \
apt update && apt install -y libgl1-mesa-dev libosmesa6-dev libglew-dev libgles2-mesa-dev libglfw3-dev libstdc++6 mesa-utils; \ apt update && apt install -y libgl1-mesa-dev libosmesa6-dev libglew-dev libgles2-mesa-dev libglfw3-dev libstdc++6 mesa-utils; \
fi fi
#TODO we're installing unneccessary things like the humanity-icons package, clean this up later. #TODO we're installing unneccessary things like the humanity-icons package, clean this up later.
# RUN --mount=type=secret,id=exwayz_license set -eux; \ # RUN --mount=type=secret,id=exwayz_license set -eux; \
# if [ "${TARGETARCH}" = "aarch64" ]; then \ # if [ "${TARGETARCH}" = "aarch64" ]; then \
# pkg=/tmp/exwayz_aarch64.deb; \ # pkg=/tmp/exwayz_aarch64.deb; \
# else \ # else \
# pkg=/tmp/exwayz_amd64.deb; \ # pkg=/tmp/exwayz_amd64.deb; \
# fi; \ # fi; \
# apt-get update; \ # apt-get update; \
# apt-get install -fy "$pkg"; \ # apt-get install -fy "$pkg"; \
# if [ -s /run/secrets/exwayz_license ]; then \ # if [ -s /run/secrets/exwayz_license ]; then \
# exwayz_license --query "$(cat /run/secrets/exwayz_license)" || true; \ # exwayz_license --query "$(cat /run/secrets/exwayz_license)" || true; \
# fi; \ # fi; \
# rm -f /tmp/exwayz_amd64.deb /tmp/exwayz_aarch64.deb; \ # rm -f /tmp/exwayz_amd64.deb /tmp/exwayz_aarch64.deb; \
# rm -rf /var/lib/apt/lists/* # rm -rf /var/lib/apt/lists/*
COPY licenses/exwayz_liscence.lic /tmp/exwayz_license COPY licenses/exwayz_liscence.lic /tmp/exwayz_license
RUN set -eux; \ RUN set -eux; \
apt-get update; \ apt-get update; \
apt-get install -fy /tmp/exwayz_amd64.deb; \ apt-get install -fy /tmp/exwayz_amd64.deb; \
if [ -f /tmp/exwayz_license ]; then \ if [ -f /tmp/exwayz_license ]; then \
exwayz_license --query "$(cat /tmp/exwayz_license)" || true; \ exwayz_license --query "$(cat /tmp/exwayz_license)" || true; \
else \ else \
echo "No license file provided"; \ echo "No license file provided"; \
exit 1; \ exit 1; \
fi; \ fi; \
rm -f /tmp/exwayz_amd64.deb /tmp/exwayz_aarch64.deb; \ rm -f /tmp/exwayz_amd64.deb /tmp/exwayz_aarch64.deb; \
rm -f /tmp/exwayz_license; \ rm -f /tmp/exwayz_license; \
rm -rf /var/lib/apt/lists/* rm -rf /var/lib/apt/lists/*
# # Change the working directory to /app # # Change the working directory to /app
# WORKDIR /app # WORKDIR /app
# Set entrypoint # Set entrypoint
ENTRYPOINT ["/ros_entrypoint.sh"] ENTRYPOINT ["/ros_entrypoint.sh"]

View File

@@ -1,17 +1,17 @@
## Secrets ## Secrets
Secrets currently not working. Secrets currently not working.
I ran the liscencing script inside the container manually and all worked as expected. I ran the liscencing script inside the container manually and all worked as expected.
Need to debug and see how we can do this on build. Need to debug and see how we can do this on build.
## Data ## Data
Pulled data from the Exwayz demo on notion's [drive link](https://drive.google.com/drive/folders/1oC_iTZT5e3NsNjVr1Tsyn-uNB1uE5P68). Pulled data from the Exwayz demo on notion's [drive link](https://drive.google.com/drive/folders/1oC_iTZT5e3NsNjVr1Tsyn-uNB1uE5P68).
Placed it here: `tmp\data\exwayz_sample_data_slam_01.bag` Placed it here: `tmp\data\exwayz_sample_data_slam_01.bag`
When running demo with this repo mounted at `/app` it seems to have worked well. When running demo with this repo mounted at `/app` it seems to have worked well.
Had a full successful run. See [gif](media\Exwayz_slam_demo_working.gif). Had a full successful run. See [gif](media\Exwayz_slam_demo_working.gif).
![Gif of demo](media\Exwayz_slam_demo_working.gif) ![Gif of demo](media\Exwayz_slam_demo_working.gif)
## Cross arch compatibility ## Cross arch compatibility
Started working on cross arch compat. Builds for `aarch64` taking much longer as expected. Started working on cross arch compat. Builds for `aarch64` taking much longer as expected.
But failing... not as expected. But failing... not as expected.

View File

@@ -1,12 +1,12 @@
This is where you want to put the packages from Exwayz. This is where you want to put the packages from Exwayz.
Download them from the latest relaease on [Exwayz 3D Mapping releases](https://exwayz.notion.site/Exwayz-3D-Mapping-releases-19057c917367807bb19de8007c4243cc) Download them from the latest relaease on [Exwayz 3D Mapping releases](https://exwayz.notion.site/Exwayz-3D-Mapping-releases-19057c917367807bb19de8007c4243cc)
Alternatively, if these links still work you need: Alternatively, if these links still work you need:
### Linux (Ubuntu 24.04) ### Linux (Ubuntu 24.04)
**x86_64:** [exwayz_3d_mapping-1.2.2-linux-u24.04-amd64.deb](https://exwayz-releases.s3.eu-west-3.amazonaws.com/1.2.2/exwayz_3d_mapping-1.2.2-linux-u24.04-amd64.deb?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAYS2NSS62CY7QV437%2F20260103%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20260103T021624Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=f6fba24ace0a163eafbebed4a0a0d19949f8e5c384222d32d440de0fd2df4209 **x86_64:** [exwayz_3d_mapping-1.2.2-linux-u24.04-amd64.deb](https://exwayz-releases.s3.eu-west-3.amazonaws.com/1.2.2/exwayz_3d_mapping-1.2.2-linux-u24.04-amd64.deb?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAYS2NSS62CY7QV437%2F20260103%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20260103T021624Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=f6fba24ace0a163eafbebed4a0a0d19949f8e5c384222d32d440de0fd2df4209
) )
**ARMv8:** [exwayz_3d_mapping-1.2.2-linux-u24.04-aarch64.deb](https://exwayz-releases.s3.eu-west-3.amazonaws.com/1.2.2/exwayz_3d_mapping-1.2.2-linux-u24.04-aarch64.deb?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAYS2NSS62CY7QV437%2F20260103%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20260103T021622Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=d051d59e1339001affde1527ceace4d4f851348f4a5ff40b96e86bbb1b4c29bc **ARMv8:** [exwayz_3d_mapping-1.2.2-linux-u24.04-aarch64.deb](https://exwayz-releases.s3.eu-west-3.amazonaws.com/1.2.2/exwayz_3d_mapping-1.2.2-linux-u24.04-aarch64.deb?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAYS2NSS62CY7QV437%2F20260103%2Feu-west-3%2Fs3%2Faws4_request&X-Amz-Date=20260103T021622Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=d051d59e1339001affde1527ceace4d4f851348f4a5ff40b96e86bbb1b4c29bc
) )