Skip to content

Add gripper diagnostics and identity telemetry - #318

Merged
follesoe merged 3 commits into
masterfrom
follesoe/gripper-diagnostics
Oct 9, 2026
Merged

follesoe merged 3 commits into
masterfrom
follesoe/gripper-diagnostics

Conversation

@follesoe

@follesoe follesoe commented Oct 8, 2026 •

Copy link
Copy Markdown
Member

Telemetry for the health and the identity of a gripper, for the logs first of all.

  • GripperDiagnosticsTel, every few seconds: for each device of the gripper (by its address on the gripper's bus), supply voltage, the temperature, humidity and absolute pressure in its housing, motor current, and ReachHardwareStatus, the flags a Reach Robotics device raises (over-pressure and over-humidity of a leaking housing among them). Each value has an is_*_valid bool, as GnssStatus does; a value a device does not report is 0 and not valid.
  • GripperInfoTel, every minute: what the gripper is (GuestPortDeviceID), and its serial number, model number and firmware version.
  • Both carry the guest port of the gripper, so two grippers can be told apart in the log. GetTelemetryReq returns only the one that published last.

Published by the guest-port nodes of p2_drone for a Reach Alpha 2 and a Reach Alpha 5.

Related: BluEye-Robotics/p2_msgs#71, BluEye-Robotics/libblunux#480, BluEye-Robotics/p2_drone#1165.

🤖 Generated with Claude Code

GripperDiagnosticsTel reports the health of each device of a gripper
every few seconds: supply voltage, the temperature, humidity and
pressure in its housing, motor current and the hardware status flags
a Reach Robotics device raises, over-pressure and over-humidity of a
leaking housing among them. A value a device does not report is NaN.

GripperInfoTel reports what a gripper is, as the GuestPortDeviceID of
its connector, and its serial number, model number and firmware
version, every minute.

Both carry the guest port of the gripper, so that two grippers can be
told apart.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@follesoe follesoe added this to the Blunux v5.2 milestone Oct 8, 2026
@follesoe follesoe added enhancement New feature or request new message New message definition labels Oct 8, 2026
@follesoe follesoe self-assigned this Oct 8, 2026
@follesoe
follesoe requested a balanced review from Copilot October 8, 2026 17:52

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The schemas are coherent, documented, backward-compatible additions that match the stated telemetry requirements.

0 open findings

What changed in this PR

Adds gripper identity and diagnostic telemetry to the shared protocol definitions.

Changes:

  • Adds per-device health metrics and hardware-status flags.
  • Adds gripper identity, model, firmware, and guest-port information.
  • Introduces telemetry wrappers for periodic publication.
File Description
protobuf_definitions/​message_formats.proto Defines gripper identity and diagnostic payloads.
protobuf_definitions/​telemetry.proto Adds identity and diagnostic telemetry messages.

🧠 Review effort: Balanced


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@aviggen aviggen left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reuses GuestPortNumber and GuestPortDeviceID (an Alpha 2 shows up as GUEST_PORT_DEVICE_ID_BLUEPRINT_LAB_REACH_ALPHA), and leaves GripperCtrl/GripperVelocities and GripperTel/Gripper alone. Separate telemetry messages rather than new fields in Gripper make sense: different rates, and Gripper is shaped around the arm. For the Alpha 2 these are its first telemetry, since its node publishes no GripperTel.

Main point is the device_id naming clash; the rest are wording, conventions and notes. I haven't checked the flag-to-bit table against Reach's protocol document; that lives in BluEye-Robotics/p2_drone#1165.

Comment thread protobuf_definitions/message_formats.proto Outdated
Comment thread protobuf_definitions/message_formats.proto Outdated
Comment thread protobuf_definitions/message_formats.proto Outdated
Comment thread protobuf_definitions/message_formats.proto Outdated
Comment thread protobuf_definitions/message_formats.proto Outdated
Comment thread protobuf_definitions/message_formats.proto Outdated
Comment thread protobuf_definitions/message_formats.proto Outdated
Comment thread protobuf_definitions/telemetry.proto
A device of a gripper is known by its address on the gripper's bus, as
device_id means a GuestPortDeviceID everywhere else in the protocol,
GripperInfo included. GripperInfo reports a firmware_version, and the
Reach-only flags are ReachHardwareStatus. The comments now say the
housing pressure is absolute, when the hardware status is left out, and
what GetTelemetryReq returns with more than one gripper.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@johannesschrimpf johannesschrimpf left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the diagnostics and identity schema additions as part of the four-PR gripper change, including the latest naming update in 7da1201. No blocking findings.

The new names (ReachHardwareStatus, device address, and firmware_version) match p2_msgs #71 and the mapping updates in p2_drone ec6845bf. Field numbers and wire types are unchanged by the rename. The clarified pressure units and hardware-status presence semantics are consistent with the driver and ROS messages.

All five checks on this revision are green, including protobuf lint and the C++, TypeScript and .NET builds. The companion driver/control fixes were separately re-tested and approved.

A value a device of a gripper did not report was NaN, a convention no
other message has, and one that does not survive a JSON round trip in
the TypeScript package. Each value now has an is_*_valid bool, as
GnssStatus does, and is 0 when not reported.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@follesoe
follesoe merged commit 38c6a3b into master Oct 9, 2026
5 checks passed
@follesoe
follesoe deleted the follesoe/gripper-diagnostics branch October 9, 2026 10:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request new message New message definition

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants