Skip to content

support for additional present current, temperature, load, and voltage#10

Open
bueche wants to merge 1 commit intoROBOTIS-GIT:jazzyfrom
bueche:jazzy
Open

support for additional present current, temperature, load, and voltage#10
bueche wants to merge 1 commit intoROBOTIS-GIT:jazzyfrom
bueche:jazzy

Conversation

@bueche
Copy link

@bueche bueche commented Feb 24, 2026

This PR adds the necessary structure to pull telemetry information for Present Input Voltage, Temperature, Current, and/or load. This is in support of Issue #8 and is a companion PR to ROBOTIS-GIT/dynamixel_hardware_interface#107 which implement the corresponding changes.

Copilot AI review requested due to automatic review settings February 24, 2026 22:39
@gemini-code-assist
Copy link

Summary of Changes

Hello @bueche, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request expands the DynamixelState message definition to incorporate crucial telemetry information from Dynamixel servos. By introducing fields for present temperature, input voltage, current, and load, it establishes the foundational data structure required for comprehensive monitoring and diagnostic capabilities, directly addressing the requirements of Issue #8.

Highlights

  • Enhanced Telemetry Data: Added new array fields to the DynamixelState.msg to support telemetry for present temperature, input voltage, current, and load from Dynamixel servos.
  • Message Structure Clarification: Included comments in the DynamixelState.msg to explain that the new telemetry arrays are in tandem with the id field, clarifying their correspondence to individual servos.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • msg/DynamixelState.msg
    • Added present_temperature (int16[]), present_input_voltage (int16[]), present_current (int16[]), and present_load (int16[]) fields.
    • Included comments to clarify the tandem nature of the new array fields with the servo id.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

The pull request successfully adds new fields for present temperature, input voltage, current, and load to the DynamixelState.msg file, which aligns with the goal of supporting additional telemetry information. The added comment block clarifies that arrays are in tandem, which is helpful. However, to ensure clarity and prevent misinterpretation of the telemetry data, it is important to explicitly define the units and any scaling factors for the new int16[] fields.

Comment on lines +10 to +13
int16[] present_temperature
int16[] present_input_voltage
int16[] present_current
int16[] present_load

Choose a reason for hiding this comment

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

medium

The newly added telemetry fields (present_temperature, present_input_voltage, present_current, present_load) are defined as int16[]. While the general comment states to refer to servo manuals for return values and ranges, it is best practice to explicitly define the units and any scaling factors directly within the .msg file for each field. This prevents ambiguity and ensures that consumers of this message can correctly interpret the data without needing to consult external documentation, improving maintainability and reducing potential for errors.

For example, is present_temperature in Celsius, Fahrenheit, or a raw ADC value? Is present_input_voltage in millivolts, or is it scaled (e.g., 123 means 12.3V)? Clarifying this directly in the message definition is crucial for correct data interpretation.

int16[] present_temperature # e.g., Unit: Celsius, scaled by 1
int16[] present_input_voltage # e.g., Unit: mV, scaled by 10 (123 means 12.3V)
int16[] present_current # e.g., Unit: mA, scaled by 1
int16[] present_load # e.g., Unit: percentage (0-100), scaled by 1

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR extends the DynamixelState ROS interface message to carry additional telemetry (temperature, input voltage, current, load) to address Issue #8 and enable downstream consumers to access these “Present *” control-table values.

Changes:

  • Added telemetry arrays for present temperature, input voltage, current, and load to DynamixelState.msg.
  • Added brief indexing guidance indicating arrays are intended to be aligned by servo index.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +3 to +5
# all arrays in tandem, elements at ith position correspond to servo noted in id[]
# see corresponding servo manuals for return values and ranges

Copy link

Copilot AI Feb 24, 2026

Choose a reason for hiding this comment

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

The index-mapping comment is a bit ambiguous; it would be clearer to state that each array must have the same length as id and that the state for servo id[i] is stored at index i in each array. This reduces the chance of publishers/consumers disagreeing on indexing.

Suggested change
# all arrays in tandem, elements at ith position correspond to servo noted in id[]
# see corresponding servo manuals for return values and ranges
# All per-servo arrays below MUST have the same length as `id`. For each index i,
# servo id[i] has its corresponding state stored at index i in every array.
# See the corresponding servo manuals for return values and ranges.

Copilot uses AI. Check for mistakes.
Comment on lines +4 to +12
# see corresponding servo manuals for return values and ranges

int32 comm_state
int32[] id
bool[] torque_state
int32[] dxl_hw_state
int16[] present_temperature
int16[] present_input_voltage
int16[] present_current
Copy link

Copilot AI Feb 24, 2026

Choose a reason for hiding this comment

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

The new telemetry fields don’t specify whether values are raw Dynamixel control-table units or converted to physical units (°C, V, mA, %, etc.). Given this is a shared interface msg, please document the expected units/scaling for each field so downstream consumers can interpret them consistently (and so different servo models don’t silently differ).

Suggested change
# see corresponding servo manuals for return values and ranges
int32 comm_state
int32[] id
bool[] torque_state
int32[] dxl_hw_state
int16[] present_temperature
int16[] present_input_voltage
int16[] present_current
# Telemetry fields below are direct copies of the corresponding Dynamixel
# control-table items; no additional scaling or unit conversion is applied
# by this message. Consumers must use each servo model's manual to map
# these raw register values to physical units (e.g., °C, V, mA, %, etc.).
int32 comm_state
int32[] id
bool[] torque_state
int32[] dxl_hw_state
# Raw value from the Present Temperature control item.
# Units/scaling are per model; typically 1 LSB = 1 °C, no offset.
int16[] present_temperature
# Raw value from the Present Input Voltage control item.
# Units/scaling are per model; typically 1 LSB = 0.1 V.
int16[] present_input_voltage
# Raw value from the Present Current control item.
# Units/scaling are per model; see the Dynamixel e-manual for exact factor.
int16[] present_current
# Raw value from the Present Load (or Present Torque) control item.
# Units/scaling are per model; often expressed as a signed percentage-like
# value of maximum torque as described in the Dynamixel e-manual.

Copilot uses AI. Check for mistakes.
Comment on lines +10 to +12
int16[] present_temperature
int16[] present_input_voltage
int16[] present_current
Copy link

Copilot AI Feb 24, 2026

Choose a reason for hiding this comment

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

Consider using unsigned types for fields that are inherently non-negative in the Dynamixel control tables (e.g., Present Temperature is typically an unsigned byte and Present Input Voltage is typically an unsigned 16-bit value). Using int16[] allows negative values that are invalid unless you intend to use negatives as a sentinel; if so, please document that explicitly.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants