Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
6 changes: 4 additions & 2 deletions docs/source/device/manus.rst
Original file line number Diff line number Diff line change
Expand Up @@ -221,8 +221,7 @@ Manus flex transforms; hosts that mask against a re-framed skeleton must apply
their own sensor-pose processing.

This path requires CloudXR tensor **push** extensions
(``XR_NVX1_push_tensor`` and ``XR_NVX1_tensor_data``). When sensors first become
available the plugin logs ``sensors=on`` once per side.
(``XR_NVX1_push_tensor`` and ``XR_NVX1_tensor_data``).

Host-side consumption example:

Expand Down Expand Up @@ -300,6 +299,9 @@ Troubleshooting
building, set ``LD_LIBRARY_PATH`` to its ``lib/`` directory.
* - No data received
- Ensure MANUS Core is running and the gloves are connected and calibrated.
The plugin logs ``Left glove connected (ID <n>); start streaming.`` (or
``Right ...``) when MANUS Core reports a glove; without that line it has
no glove to stream.
* - CloudXR runtime errors
- Check that a runtime is serving with ``python -m isaaccapture.cloudxr.service status``,
and that ``~/.cloudxr/run/cloudxr.env`` has been sourced in the same
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,6 @@ class __attribute__((visibility("default"))) ManusTracker
mutable std::mutex m_sensor_mutex;
std::array<uint32_t, 2> m_sensor_count{ { 0, 0 } };
std::array<std::array<ManusTransform, kManusSensorCount>, 2> m_sensor_transforms{};
std::array<bool, 2> m_sensors_logged_on{ { false, false } };

// OpenXR State
std::shared_ptr<core::OpenXRSession> m_session;
Expand Down
10 changes: 3 additions & 7 deletions src/plugins/manus/core/manus_hand_tracking_plugin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -665,7 +665,7 @@ bool ManusTracker::apply_glove_calibration(uint32_t glove_id, bool is_left)
return false;
}

m_logger->info("Applied {} glove calibration file to glove id={}", is_left ? "left" : "right", glove_id);
m_logger->debug("Applied {} glove calibration file to glove id={}", is_left ? "left" : "right", glove_id);
return true;
}

Expand Down Expand Up @@ -765,6 +765,7 @@ void ManusTracker::OnLandscapeStream(const Landscape* landscape)
{
tracker.left_glove_id = glove.id;
tracker.m_calibration_failed[0] = !tracker.apply_glove_calibration(glove.id, true);
tracker.m_logger->info("Left glove connected (ID {}); start streaming.", glove.id);
}
// Fetch bone topology once on connect
uint32_t nc = 0;
Expand All @@ -784,6 +785,7 @@ void ManusTracker::OnLandscapeStream(const Landscape* landscape)
{
tracker.right_glove_id = glove.id;
tracker.m_calibration_failed[1] = !tracker.apply_glove_calibration(glove.id, false);
tracker.m_logger->info("Right glove connected (ID {}); start streaming.", glove.id);
}
uint32_t nc = 0;
if (get_raw_skeleton_node_count(glove.id, nc) == SDKReturnCode::SDKReturnCode_Success && nc > 0)
Expand Down Expand Up @@ -1018,12 +1020,6 @@ void ManusTracker::push_sensor_side(bool is_left, core::SchemaPusher& pusher)
return;
}

if (!m_sensors_logged_on[side])
Comment thread
lotusl-code marked this conversation as resolved.
{
m_sensors_logged_on[side] = true;
m_logger->info("{} sensors=on", is_left ? "left" : "right");
}

std::vector<core::JointSe3Pose> joints;
joints.reserve(static_cast<size_t>(kManusSensorCount));
for (int sensor = 0; sensor < kManusSensorCount; ++sensor)
Expand Down
Loading