REP: I0004 Title: Assigned Message Identifiers for the Simple Message Protocol Author: G.A. vd. Hoorn <[email protected]> Status: Active Type: Process Content-Type: text/x-rst Created: 01-Jun-2014 Post-History: 15-Aug-2014, 08-Oct-2014, 19-Nov-2014, 06-Jan-2015, 05-Jan-2016, 07-Jun-2016
- Abstract
- Motivation
- Application Procedure
- Assumptions
- Assigned Message Identifiers
- References
- Revision History
- Copyright
This REP documents Simple Message message type identifiers that are
part of the official protocol specification. Both the standard set –
supported by the generic clients in the simple_message
package –
as well as the vendor specific messages are listed. It further
describes procedures for requesting assignment of new identifiers and
for keeping this document up-to-date.
Driver authors may treat this document as the normative reference for assigned message type identifiers within the Simple Message protocol.
Similar to other binary protocols, the ROS-Industrial Simple Message
protocol [1] includes an identifier in its header
structure to allow senders and receivers to uniquely identify
message structure type. This identifier – stored in the msg_type
field – is not only used to determine the correct (de)serialisation
sequence, but also encodes the intention – and indirectly the
semantics – of a message.
In order to be able to provide generic implementations of the Simple Message protocol (de)serialisation libraries, and to avoid potential compatibility issues between clients and servers, a central registration of known message identifiers is essential.
This document provides the normative reference for assigned message type identifiers, both for the standard set of messages and for the special ranges (such as vendor specific ranges).
Requests for assignment (RFA) of a new message identifier, reassignment of an already assigned one or migration of a message type from a special range to the standard set should be posted in the ROS-Industrial ROS Discourse category [2].
RFAs are expected to contain a short description of the message type, its name, intended use and its merit. For a reassignment or migration, a rationale should be provided as to why the current assignment should be changed. For reasons of efficiency, multiple identifiers (or ranges) may be requested using a single RFA. The relevant sections in the RFA should reflect this.
After a three week review period a voting round will be held on the mailing list. Both ROS-Industrial developers and users are eligible to vote. In an ex aequo situation, ROS-Industrial developers may force a decision.
Finally, the proposed changes are only final after the submission of and incorporation of an update to this REP.
Assignment of identifiers to (new) message types will be on a first-come, first-served (FCFS) basis. If the author of an RFA has a preference for a certain identifier (or range of identifiers), such a request may be considered, provided sufficient rationale is given.
It is not possible for anyone to claim an identifier (or range of identifiers) without sending an accompanying RFA – containing all required sections and information – to the ROS-Industrial mailing list. During review, any requested identifiers will have a pending status. Allocation will be made final only on acceptance of the RFA (and subsequent update of this document, as described in the Application Procedure section).
Conflicts between RFAs (e.g. requests for the same identifier(s)) will be resolved by granting assignment of conflicting identifiers to the RFA that was submitted for review first (chronologically), or based on merit (to be determined by ROS-Industrial developers). In all cases such decisions will be subject to voting as described in Application Procedure.
- All message type identifiers are specified in decimal (base-ten) notation.
The following table lists all type identifiers for messages part of the standardised Simple Message message set. In addition, special and reserved ranges are indicated:
ID Name Comment 0 - Reserved 1 PING - 2 GET_VERSION Retrieve version of the current driver 3-9 - Reserved for future use 10 JOINT_POSITION Deprecated, also 'JOINT' 11 JOINT_TRAJ_PT - 12 JOINT_TRAJ - 13 STATUS - 14 JOINT_TRAJ_PT_FULL - 15 JOINT_FEEDBACK - 16-19 - Reserved for future use 20 READ_INPUT Deprecated 21 WRITE_OUTPUT Deprecated 22-999 - Reserved for future use 1000-2999 - Vendor specific 3000-64999 - Reserved for future use 65000-65535 - Freely assignable 65536-2147483647 - Reserved for future use
Note that [1] defines the msg_type
field as a
signed 32 bit integer, but only positive values will be considered
valid identifiers in the context of this REP and the protocol's
implementation.
The IDs allocated to the Vendor specific range may be used by driver authors to add messages that are too specialised to be included in the generic industrial robot client. Note that the standard robot client nodes will not be able to decode messages using these identifiers, and driver authors are expected to provide an extended version of the client able to decode messages with vendor specific message identifiers.
All identifiers allocated to the Freely assignable range may be freely used by users and allows for ID assignment within a limited scope (ie: per project). These messages will also not be decodable by the standard robot client nodes.
All vendor ranges have a length of 100 identifiers. The following table lists assigned vendor specific ranges:
ID Vendor Comment 1000-1099 SwRI - 1100-1199 Universal Robot - 1200-1299 Adept - 1300-1399 ABB - 1400-1499 Fanuc - 1500-1599 Epson - 1600-1699 Stäubli - 1700-1999 Reserved for future use 2000-2099 Motoman - 2100-2999 Reserved for future use
See the next sections for a listing of all assigned message identifiers within these vendor specific ranges.
ID Name Comment 1000-1099 - Reserved for future use
ID Name Comment 1100-1199 - Reserved for future use
ID Name Comment 1200-1299 - Reserved for future use
ID Name Comment 1300-1399 - Reserved for future use
ID Name Comment 1400-1499 - Reserved for future use
ID Name Comment 1500-1599 - Reserved for future use
ID Name Comment 1600-1699 - Reserved for future use
ID Name Comment 2001 MOTOMAN_MOTION_CTRL Control motion-server settings/options 2002 MOTOMAN_MOTION_REPLY - 2003 ROS_MSG_MOTO_READ_IO_BIT Read single I/O point (any address) 2004 ROS_MSG_MOTO_READ_IO_BIT_REPLY - 2005 ROS_MSG_MOTO_WRITE_IO_BIT Write single input point ('Network Inputs' only) 2006 ROS_MSG_MOTO_WRITE_IO_BIT_REPLY - 2007 ROS_MSG_MOTO_READ_IO_GROUP Ready whole group (byte) of I/O (any address) 2008 ROS_MSG_MOTO_READ_IO_GROUP_REPLY - 2009 ROS_MSG_MOTO_WRITE_IO_GROUP Write whole group (byte) of 'Network Inputs' 2010 ROS_MSG_MOTO_WRITE_IO_GROUP_REPLY - 2011 ROS_MSG_MOTO_IOCTRL_REPLY - 2012 ROS_MSG_MOTO_READ_MREGISTER Read M-Register (M000 through M999) 2013 ROS_MSG_MOTO_WRITE_MREGISTER Write M-Register (M000 through M599) 2014-2015 - Reserved for future use 2016 ROS_MSG_MOTO_JOINT_TRAJ_PT_FULL_EX Command multiple control-groups with a single message 2017 ROS_MSG_MOTO_JOINT_FEEDBACK_EX Get feedback position of multiple control-groups with a single message 2018 ROS_MSG_MOTO_SELECT_TOOL Set the active tool file (for PFL function) 2019 - Reserved for future use 2020 ROS_MSG_MOTO_GET_DH_PARAMETERS Get DH parameters for all control-groups connected to the robot controller 2021-2099 - Reserved for future use
[1] | (1, 2) ROS-Industrial simple_message package, ROS Wiki, on-line, retrieved 1 June 2014 (http://wiki.ros.org/simple_message) |
[2] | ROS-Industrial category (ROS Discourse) (https://discourse.ros.org/c/ros-industrial) |
[3] | PING, message definition, industrial_core Github repository, on-line (https://github.com/ros-industrial/industrial_core/blob/12a74a1f9f26aea0ee075edaf4c84473bd8e112a/simple_message/include/simple_message/ping_message.h#L49-L52) |
[4] | JOINT_POSITION, message definition, industrial_core Github repository, on-line (https://github.com/ros-industrial/industrial_core/blob/12a74a1f9f26aea0ee075edaf4c84473bd8e112a/simple_message/include/simple_message/messages/joint_message.h#L65-L83) |
[5] | JOINT_TRAJ_PT, message definition, industrial_core Github repository, on-line (https://github.com/ros-industrial/industrial_core/blob/12a74a1f9f26aea0ee075edaf4c84473bd8e112a/simple_message/include/simple_message/joint_traj_pt.h#L61-L86) |
[6] | JOINT_TRAJ, message definition, industrial_core Github repository, on-line (https://github.com/ros-industrial/industrial_core/blob/12a74a1f9f26aea0ee075edaf4c84473bd8e112a/simple_message/include/simple_message/joint_traj.h#L54-L62) |
[7] | STATUS, message definition, industrial_core Github repository, on-line (https://github.com/ros-industrial/industrial_core/blob/4405b0dc31212a50234eeaedd5d8e3a299f18755/simple_message/include/simple_message/robot_status.h#L95-L114) |
[8] | JOINT_TRAJ_PT_FULL, message definition, industrial_core Github repository, on-line (https://github.com/ros-industrial/industrial_core/blob/12a74a1f9f26aea0ee075edaf4c84473bd8e112a/simple_message/include/simple_message/joint_traj_pt_full.h#L70-L94) |
[9] | JOINT_FEEDBACK, message definition, industrial_core Github repository, on-line (https://github.com/ros-industrial/industrial_core/blob/12a74a1f9f26aea0ee075edaf4c84473bd8e112a/simple_message/include/simple_message/joint_feedback.h#L61-L81) |
2020-11-25 Add Motoman specific messages for accessing M-Registers. 2019-08-20 Add Motoman specific messages: get D-H parameters and tool configuration selection. 2017-03-28 Update Motoman specific I/O messages. 2016-07-07 Consolidate Vendor Specific ranges. Shift start of Freely assignable range by 1 to make it consistent with other range boundaries. 2016-07-07 Add vendor specific ranges for Epson and Stäubli. 2016-01-05 Updated link to STATUS message header. 2015-01-14 Added Vendor Specific Ranges for all currently supported robot platforms. 2015-01-06 Added message identifier for GET_VERSION. Added Motoman specific message identifiers for SINGLE_IO control which were implemented in v1.2.4 of the MotoROS driver. 2014-11-19 Reduced length of assigned vendor specific ranges from 1000 to 100 identifiers 2014-10-08 Updated Vendor specific sections with identifiers currently in use 2014-06-01 Initial revision
This document has been placed in the public domain.