Repository navigation
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the
|
|
✅ Preview deployed: https://NVIDIA.github.io/IsaacCapture/preview/pr-1325/ Built from commit f84aeb6. It may take a minute for the updated preview to appear. |
7c0c89d to
145356f
Compare
5888fb9 to
b50a5e0
Compare
b50a5e0 to
34a338c
Compare
manus_hand_plugin --remote= builds a RemotePluginSession in the composition root instead of OpenXRPluginSession, so the glove host needs no OpenXR runtime; haptic is unavailable remotely and --remote alone defaults to human,sensors. The manus tracker logs glove count and license state every 5 s. Tools: remote_hand_sender_synthetic (glove-free load and loopback sender) and the latency probe/breakdown scripts with pytest coverage. The manus device page documents --remote. Signed-off-by: Jonghyun Kim <jonghyunk@nvidia.com>
- remote_hand_sender_synthetic: RemoteAddress::ws_path, parse_remote and connect_transport from remote_address.hpp, wrist config in PluginSessionRequirements::wrist_tracking_pull, session-owned pull channel and wrist source, query(XrHandEXT, t), push channels instead of HandTrackingPusher. - manus: drop the [Manus] prefix from pr06's log lines and point the status-line comment at the remote session's "5s:" line. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Jonghyun Kim <jonghyunk@nvidia.com>
- manus --remote and the synthetic sender dial remote_plugin_session::kDefaultBridgePort instead of a 47500 literal - manus: m_next_status starts one kStatusInterval after construction, so log_status() needs no first-call sentinel; comment no longer names --remote or RemotePluginSession; drop "P0" from the haptic comment - synthetic sender: std::numbers::pi, fixed first_joint comment, no "warning:" prefix on a warn() line, no explicit channel resets - latency_breakdown.py: --min-xcorr/--min-edges defaults as module constants with %(default)s help; summary prints EDGE_MAD_K and WINDOW_NS - latency_probe_xrclient.py: drop the undocumented --debug dump - tests: conftest.py puts tools/ on sys.path for both test files; rename the test project to remote-device-bridge-tests - AGENTS.md: drop the shebang bullet the hook already enforces Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Jonghyun Kim <jonghyunk@nvidia.com>
Applied the fact-checked (VERIFIED) findings on code this branch adds: - ws:// addresses without a port dialed the TCP port: Manus and the synthetic sender parse --remote with parse_bridge_remote, which picks the scheme's default port. - Manus parses --remote at startup, rejects it in the same block in builds without the remote session, throws if the remote factory is handed trackers, and reuses the main logger. - --datasets is an optional instead of a string plus an explicit flag. - latency_probe_xrclient.py help text uses %(default)s; the breakdown test writes BRIDGE_HEADER instead of retyping it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Jonghyun Kim <jonghyunk@nvidia.com>
Applied the fact-checked (VERIFIED) findings on code this branch adds: - Manus builds its --remote factory with remote_plugin_session::make_remote_plugin_session_factory and logs the address once at startup. - The synthetic sender uses std::string::starts_with and checks options.hands instead of the left pusher. - latency_breakdown.breakdown returns a frozen Breakdown dataclass. - A test comment no longer cites an unexplained case name. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Jonghyun Kim <jonghyunk@nvidia.com>
c0d2395 to
69a0f6f
Compare
34a338c to
f84aeb6
Compare
|
Update (Oct 30): rebased onto #1320–#1324. main.cpp passes the remote factory only for --remote and uses ManusTracker::instance(config) otherwise. Fixed: ws://host with no port connected to the TCP port (present since the first version; now unit-tested). Manus builds against SDK 3.2.1; the local path opens its OpenXR session again (loader fix in #1320). Real-glove run pending before marking ready. |
Summary
Lets
manus_hand_pluginrun on a host without an OpenXR runtime via--remote=, and adds the remote tools.What changes
--remote=<host:port|ws://…>selectsRemotePluginSessionin the composition root (main.cpp) only; haptic is unavailable remotely and--remotealone defaults tohuman,sensorsremote_hand_sender_synthetic(glove-free sender),latency_probe_xrclient.py/latency_breakdown.py--remoteWhat does not change
Default manus behavior without
--remote; the plugin class has no transport branches.Testing
2 pytest suites for the latency tools. Fresh build: ctest 318/318; the tree equals the full integration branch. ASan/UBSan over the 62 remote C++ cases: clean. Real-robot run (laptop gloves → corp network → bridge on the robot machine → real hands): glove-to-bridge age p50 1.3 ms / p99 31 ms at 177 Hz over 2 min.
Depends on
#1324