gazebosim / gazebosim/sdformat

Add DOM classes for *_state elements

Open
#1,554 0 comments 0 reactions 0 assignees View on GitHub
enhancement help wanted
Dominant language
C++
Stars
216
Forks
125
Avg merge
1d 14h
Merged PRs (30d)
14

Description

## Desired behavior

The syntax for specifying model, link, and joint states was updated in the SDFormat specification in https://github.com/gazebosim/sdformat/pull/1461 (inspired by the prototype in https://github.com/gazebosim/gz-sim/pull/2359). The next step is creating DOM classes for the following SDFormat elements to simplify their use in the C++ and python API:

* [ ] Create `JointAxisState` class for `//joint_state/axis_state` and `//joint_state/axis2_state`
* [ ] Create `JointState` class for `//joint_state`
* [ ] Create `LinkState` class for `//link_state`
* [ ] Create `ModelState` class for `//model_state`

## Alternatives considered

## Implementation suggestion

Follow the patterns used by our existing DOM classes.

* `sdf::JointAxis`
* [JointAxis.hh](https://github.com/gazebosim/sdformat/blob/sdf15/include/sdf/JointAxis.hh)
* [JointAxis.cc](https://github.com/gazebosim/sdformat/blob/sdf15/src/JointAxis.cc)
* [pyJointAxis.hh](https://github.com/gazebosim/sdformat/blob/sdf15/python/src/sdf/pyJointAxis.hh)
* [pyJointAxis.cc](https://github.com/gazebosim/sdformat/blob/sdf15/python/src/sdf/pyJointAxis.cc)

## Additional context

Contributor guide

Open the contributing guide

Research direction

Start by reviewing the existing DOM class pattern in JointAxis.hh, JointAxis.cc, pyJointAxis.hh, and pyJointAxis.cc. Use those files as the reference while investigating the four requested state elements. Done means JointAxisState, JointState, LinkState, and ModelState are available through both the C++ and Python APIs.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, python
Domain
api, robotics
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.