Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[rcl_interfaces] Homogenize iface definition #23

Merged
merged 4 commits into from
Nov 3, 2017
Merged
Show file tree
Hide file tree
Changes from 3 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
31 changes: 1 addition & 30 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,31 +1,2 @@
# rcl_interfaces
This package contains the messages and services which ROS client libraries will use under the hood to
communicate higher level concepts such as parameters.


## Parameter Groups
Parameters are contained in groups.
The default group is '/'.
It behaves like a filepath, where you can nest sub-groups within groups.

## Standard topics for parameters

The ROS API for a node will be as follows inside the node's namespace.

### Topics:
* `parameter_events`: `ParameterEvent`
* This topic provides a way to subscribe to all parameter updates occuring on the node, including addition removal and changes in value. Every atomic change will be published separately.
* `parameter_event_descriptors`: `ParameterEventDescriptors`
* This topic provides a way to subscribe to all parameter updates occuring on the node, including addition removal and changes in value.
Every atomic change will be published separately. This is provided if large parameter values are expected to slow down the system.

### Services:

* `get_parameters`: `GetParameters`
* The service to get the value of parameters which are set on this node.
* `has_parameters`: `HasParameters`
* Query this node if specific parameters are set.
* `list_parameters`: `ListParameters`
* List the parameters on this node matching the filters.
* `set_parameters`: `SetParameters`
* Set parameters on this node.
A set of packages which contain interface files (.msg and .srv) used for the internal implementation and testing of the client libraries.
Copy link
Member

Choose a reason for hiding this comment

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

I wouldn't consider those "internal". Most of them define public interfaces, no?

Copy link
Member Author

Choose a reason for hiding this comment

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

"used for the implementation and testing" then ?

Copy link
Member

Choose a reason for hiding this comment

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

"defining the interface across client libraries"?

Copy link
Member Author

Choose a reason for hiding this comment

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

Hmm not sure because as you said it is user facing and currently most of them are not used to communicate across client libraries given that they're used mostly/(only?) in rclcpp.

@ros2/team maybe some native speakers have some insights ?

Copy link
Member

Choose a reason for hiding this comment

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

They're definitely public and I would say their primary use is implementation of rcl concepts rather than testing, though they could be used for that too I guess.

"This repository contains a set of packages which themselves contain interface files (i.e. .msg and .srv files) used to implement client library concepts like parameters."

Copy link
Member Author

Choose a reason for hiding this comment

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

my goal here is to give a description of the content of the repository and not only describe the rcl_interfaces package, that's why I talked about testing (given that this repo also contains test_msgs).

I'm fine with "This repository contains a set of packages which themselves contain interface files (i.e. .msg and .srv files) used to implement client library concepts" I just wanted to clarify the scope

Copy link
Member

Choose a reason for hiding this comment

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

Oh, I was confused by the diff and I didn't know there were test messages here. In that case I agree, something like:

"This repository contains a set of packages which themselves contain interface files (i.e. .msg and .srv files) which are used both to implement client library concepts and in testing."

Or something like that.

Copy link
Contributor

Choose a reason for hiding this comment

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

I've updated it with approximately the verbiage of above.

31 changes: 31 additions & 0 deletions rcl_interfaces/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# rcl_interfaces
This package contains the messages and services which ROS client libraries will use under the hood to
communicate higher level concepts such as parameters.


## Parameter Groups
Parameters are contained in groups.
The default group is '/'.
It behaves like a filepath, where you can nest sub-groups within groups.

## Standard topics for parameters

The ROS API for a node will be as follows inside the node's namespace.

### Topics:
* `parameter_events`: `ParameterEvent`
* This topic provides a way to subscribe to all parameter updates occuring on the node, including addition removal and changes in value. Every atomic change will be published separately.
* `parameter_event_descriptors`: `ParameterEventDescriptors`
* This topic provides a way to subscribe to all parameter updates occuring on the node, including addition removal and changes in value.
Every atomic change will be published separately. This is provided if large parameter values are expected to slow down the system.

### Services:

* `get_parameters`: `GetParameters`
* The service to get the value of parameters which are set on this node.
* `has_parameters`: `HasParameters`
* Query this node if specific parameters are set.
* `list_parameters`: `ListParameters`
* List the parameters on this node matching the filters.
* `set_parameters`: `SetParameters`
* Set parameters on this node.
2 changes: 1 addition & 1 deletion rcl_interfaces/srv/DescribeParameters.srv
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ string[] names
# A list of the descriptors of all parameters requested in the same order
# as they were requested.
# This list has the same length as the list of parameters requested.
rcl_interfaces/ParameterDescriptor[] descriptors
ParameterDescriptor[] descriptors
1 change: 1 addition & 0 deletions rcl_interfaces/srv/GetParameterTypes.srv
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,6 @@ string[] names
---

# List of types which is the same length and order as the provided names.
# Type enum defined in ParameterType.msg
# ParameterType.PARAMETER_NOT_SET indicates that the parameter is not currently set.
uint8[] types
2 changes: 1 addition & 1 deletion rcl_interfaces/srv/SetParameters.srv
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# A list of parameters to set
rcl_interfaces/Parameter[] parameters
Parameter[] parameters

---

Expand Down