Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: temporal evals & perf benchmarks #23

Open
wants to merge 20 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
73d1497
fix(client): race condition when clearing buffer after sending frames
FelixNgFender Jan 17, 2025
8c931c2
feat(server): widen typings in public API for easier usage
FelixNgFender Jan 17, 2025
1530ff5
test(server): tests for new API
FelixNgFender Jan 21, 2025
a85765b
chore: Move transform into seperate entity path (origin pairing is do…
legoeruro Jan 24, 2025
7337432
chore(server): benchmarks scaffolding
FelixNgFender Jan 29, 2025
d61bb7f
fix(client): properly fallback to system clock if no NTP server speci…
FelixNgFender Feb 3, 2025
c09c1ac
style(client): formatting
FelixNgFender Feb 3, 2025
b53f298
perf(client): sending AR frames directly consumes the iterator instea…
FelixNgFender Feb 6, 2025
a40397b
chore(wip): evaluations for spacial/coordinates syncronization
legoeruro Feb 7, 2025
fe517e2
chore(evaluations): precious experiment data for temporal sync evals
FelixNgFender Feb 6, 2025
e0b7e23
chore(evaluations): temporal sync evals diagrams & results
FelixNgFender Feb 10, 2025
920193e
chore(benchmarks): simple empty frames bench
FelixNgFender Feb 14, 2025
c7ed5c6
chore(benchmarks): wip for light, medium, heavy, and mixed load
FelixNgFender Feb 14, 2025
0544daf
feat(client): optimal data transmit parameters
FelixNgFender Feb 23, 2025
8c5ec7c
test(server): add color modality to saving AR frames test
FelixNgFender Feb 23, 2025
8a4340a
chore(benchmarks): send interval vs payload size and batching benches…
FelixNgFender Feb 23, 2025
af2ba65
chore(benchmarks): minor docs cleanup
FelixNgFender Feb 23, 2025
eeca691
Fix: transform not representative in evaluation (rotation is still no…
legoeruro Feb 28, 2025
db73d7f
Merge branch 'main' of https://github.com/FelixNgFender/ARFlow
legoeruro Feb 28, 2025
dcd6a3a
fix: Rotational predictions from ArUco was not correct in Unity's coo…
legoeruro Mar 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@
"cli",
"client",
"examples",
"evaluations",
"benchmarks",
"others"
]
}
8 changes: 8 additions & 0 deletions python/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -181,3 +181,11 @@ pyrightconfig.json

# data files
*.rrd

# benchmark artifacts
benchmarks/payload
benchmarks/results
benchmarks/scenarios/**/payload

# evaluation artifacts
!evaluations/**/*.rrd
35 changes: 35 additions & 0 deletions python/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
FROM python:3.12-slim-bookworm AS base

ENV VIRTUAL_ENV=/app/.venv \
PATH="/app/.venv/bin:$PATH"

FROM base AS builder

ENV POETRY_NO_INTERACTION=1 \
POETRY_VIRTUALENVS_IN_PROJECT=1 \
POETRY_VIRTUALENVS_CREATE=1 \
POETRY_CACHE_DIR=/tmp/poetry_cache

WORKDIR /app

RUN pip install --no-cache-dir poetry==1.8.4

COPY pyproject.toml poetry.lock ./
RUN poetry install --without dev --no-root && rm -rf $POETRY_CACHE_DIR;


FROM base AS runtime

COPY --from=builder ${VIRTUAL_ENV} ${VIRTUAL_ENV}


WORKDIR /app

COPY arflow ./arflow
COPY cakelab ./cakelab

EXPOSE 8500

ENV PORT=8500

ENTRYPOINT ["python", "-m", "arflow._cli", "view"]
20 changes: 20 additions & 0 deletions python/arflow/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,20 @@
SessionStream as SessionStream,
)
from cakelab.arflow_grpc.v1.ar_frame_pb2 import ARFrame as ARFrame
from cakelab.arflow_grpc.v1.audio_frame_pb2 import AudioFrame as AudioFrame
from cakelab.arflow_grpc.v1.color_frame_pb2 import ColorFrame as ColorFrame
from cakelab.arflow_grpc.v1.depth_frame_pb2 import DepthFrame as DepthFrame
from cakelab.arflow_grpc.v1.device_pb2 import Device as Device
from cakelab.arflow_grpc.v1.gyroscope_frame_pb2 import GyroscopeFrame as GyroscopeFrame
from cakelab.arflow_grpc.v1.mesh_detection_frame_pb2 import (
MeshDetectionFrame as MeshDetectionFrame,
)
from cakelab.arflow_grpc.v1.plane_detection_frame_pb2 import (
PlaneDetectionFrame as PlaneDetectionFrame,
)
from cakelab.arflow_grpc.v1.point_cloud_detection_frame_pb2 import (
PointCloudDetectionFrame as PointCloudDetectionFrame,
)
from cakelab.arflow_grpc.v1.session_pb2 import Session as Session
from cakelab.arflow_grpc.v1.transform_frame_pb2 import TransformFrame as TransformFrame

Expand All @@ -19,6 +32,13 @@
"ARFlowServicer",
"ARFrame",
"TransformFrame",
"ColorFrame",
"DepthFrame",
"GyroscopeFrame",
"AudioFrame",
"PlaneDetectionFrame",
"PointCloudDetectionFrame",
"MeshDetectionFrame",
"SessionStream",
"Session",
"Device",
Expand Down
2 changes: 1 addition & 1 deletion python/arflow/_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ def parse_args(
"-p",
"--port",
type=int,
default=8500,
default=int(os.getenv("PORT", 8500)),
help=f"Port to run the server on (default: %(default)s).",
)
view_parser.add_argument(
Expand Down
Loading
Loading