Repository navigation
Add gripper diagnostics and identity telemetry - #318
Conversation
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>
There was a problem hiding this comment.
🟢 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
left a comment
There was a problem hiding this comment.
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.
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
left a comment
There was a problem hiding this comment.
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>
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, andReachHardwareStatus, the flags a Reach Robotics device raises (over-pressure and over-humidity of a leaking housing among them). Each value has anis_*_validbool, asGnssStatusdoes; 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.GetTelemetryReqreturns 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