Commit Graph
8 Commits
Author SHA1 Message Date
AngePierreandClaude Opus 5 cabca69c4d wrapper: build libk4arecord_v2.so — the library the recorder actually dlopens
The recorder does not load the stock libk4a/libk4arecord. It dlopens a single
custom libk4arecord_v2.so: the wrapper's MKV-writing sources linked to a
pure-data shim (k4a_shim.cpp) instead of libk4a, so recording has no OrbbecSDK
dependency. That target is FTF's own (wrapper/recordv2/), absent from the stock
wrapper the Orin carried — so ship it and inject+build it, the same pattern as
the recorder in the SDK examples tree. Idempotent; only added when missing.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-10 17:26:06 +02:00
AngePierreandClaude Opus 5 526d654f68 build_sdk: pin SDK v2.8.6 (recorder API) and stop double-nesting the build dir
The recorder uses ob::Error::getStatus(), present in v2.8.6 (the Nano) but not
v2.4.3 (the version pre-placed on the Orin), so pin the version the recorder is
written against. Also configure from $root/build with 'cmake ..' — the SDK's
cmake makes its own linux_<arch> output subdir, so creating one first put the
libs at build/linux_aarch64/linux_arm64/lib where find_build could not see them.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-10 17:12:25 +02:00
AngePierreandClaude Opus 5 0ba428b27c recorder: default OB_SDK_LIB_NAME to OrbbecSDK for SDK v2.4.3
The example CMakeLists expected OB_SDK_LIB_NAME, which SDK v2.8.6 sets in the
example scope but v2.4.3 (JetPack 6) does not — leaving a link to bare "ob::"
that fails at generate time. The stock examples link ob::OrbbecSDK, so default
to that when unset. Keeps the Nano's build working.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-10 17:04:52 +02:00
AngePierreandClaude Opus 5 948bf0cc8a build_sdk: also reuse an SDK pre-placed under ~/Downloads
The Orin came with the SDK source at ~/Downloads/OrbbecSDK_v2; add it to the
reuse candidates so a clean install finds the build there instead of cloning a
second copy.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-10 17:03:42 +02:00
AngePierreandClaude Opus 5 d9b32cd148 install_deps: tolerate a broken apt source (update best-effort)
A fresh Orin image carried a stale third-party apt source that made apt-get
update fail; with set -e that aborted the install. The packages come from the
main Ubuntu repos, so update is now best-effort and install proceeds.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-10 17:01:28 +02:00
AngePierreandClaude Opus 5 e0727d957b detect_platform: %q-escape output so eval survives spaces in MODEL
The Jetson model string has spaces; emitted unquoted, eval ran its second word
as a command ("Jetson: command not found"). printf %q makes the output safe to
eval, which is how every other script consumes it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-10 16:57:53 +02:00
AngePierreandClaude Opus 5 23b30ac1e8 Add the MKV recorder so a node can Record, not only preview
The recorder was the gap: it is FTF's own customised SDK example (a 1139-line
K4A MKV writer), not a stock sample, and it lived only in one machine's build
tree. Bring its source into the repo and build it as part of install.

It writes K4A-format MKV — the format the rest of Ithaca reads — so it stays,
and gets its libk4a from the Orbbec K4A wrapper rather than Microsoft's Azure
Kinect SDK, which is set aside. build_k4a_wrapper.sh builds that wrapper;
build_sdk.sh injects the recorder into the SDK examples tree and builds it there
against the wrapper (it depends on the SDK's own cmake targets). Found by rpath
at runtime, so no LD_LIBRARY_PATH.

install.sh now builds wrapper -> SDK+recorder -> preview server, each reusing an
existing build so the Nano is untouched. If the wrapper is unavailable the
install still completes preview-only and says so.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-10 16:21:44 +02:00
AngePierreandClaude Opus 5 c167c836e6 Portable Ithaca capture node: one install for every Jetson
Extract the install that was applied by hand to the Jetson Nano into a single
checkout that builds itself for whatever Jetson it lands on.

The two nodes on the rig share no JetPack — tegra210 caps at 4, tegra234 needs
5+ — so nothing binary is portable between them. The source and the procedure
are: install.sh detects the platform (L4T / JetPack / SoC), installs deps,
builds the OrbbecSDK and the preview server from source locally, and generates
a per-user config and systemd unit. The tested bridge.py ships verbatim; all
machine-specific paths live in the generated config, so it stays unmodified —
its one hardcoded path is made home-relative.

The retired GStreamer/RTSP target is dropped: the direct route encodes no video.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-10 15:57:15 +02:00