← Back to packages

Package intrinsic_proto.icon.v1

Service IconApi

Message ActionAndReactionIds

Message ActionAssociation

Message ActionInstance

Message ActionResponse

Message ActionSignature

Message ActionsAndReactions

Message AddStreamRequest

Message AddStreamResponse

Message ClearAllActions

Message ClearFaultsRequest

Message ClearFaultsResponse

Message Comparison

Message Condition

Message ConjunctionCondition

Message DisableRequest

Message DisableResponse

Message EnableRequest

Message EnableResponse

Message GetActionSignatureByNameRequest

Message GetActionSignatureByNameResponse

Message GetConfigRequest

Message GetConfigResponse

Message GetLatestStreamingOutputRequest

Message GetLatestStreamingOutputResponse

Message GetLoggingModeRequest

Message GetLoggingModeResponse

Message GetOperationalStatusRequest

Message GetOperationalStatusResponse

Message GetPartPropertiesRequest

Message GetPartPropertiesResponse

Message GetPayloadRequest

Message GetPayloadResponse

Message GetPlannedTrajectoryRequest

Message GetPlannedTrajectoryResponse

Message GetSpeedOverrideRequest

Message GetSpeedOverrideResponse

Message GetStatusRequest

Message GetStatusResponse

Message InitialSessionData

Message InitialSessionData

Message IsActionCompatibleRequest

Message IsActionCompatibleResponse

Message ListActionSignaturesRequest

Message ListActionSignaturesResponse

Message ListCompatiblePartsRequest

Message ListCompatiblePartsResponse

Message ListPartsRequest

Message ListPartsResponse

Message NegatedCondition

Message OpenSessionRequest

Message OpenSessionResponse

Message OpenWriteStreamRequest

Message OpenWriteStreamResponse

Message OperationalStatus

Message ParameterInfo

Message PartConfig

Message PartGroup

Message PartList

Message PartPropertyValue

Message PartPropertyValues

Message PartSignature

Message PartSlotInfo

Message Reaction

Message ReactionEvent

Message RealtimeSignalInfo

Message Response

Message ServerConfig

Message SessionStatus

Message SetLoggingModeRequest

Message SetLoggingModeResponse

Message SetPartPropertiesRequest

Message SetPartPropertiesResponse

Message SetPayloadRequest

Message SetPayloadResponse

Message SetSpeedOverrideRequest

Message SetSpeedOverrideResponse

Message SlotPartMap

Message StartActionsRequestData

Message StateVariableInfo

Message WatchReactionsRequest

Message WatchReactionsResponse

Message WriteValue

Enum FeatureInterfaceTypes

Enum HardwareGroup

Enum OpEnum

Enum OpEnum

Enum OperationalState

Enum Type

Services

service IconApi intrinsic/icon/proto/v1/service.proto

Gets details of an action type by name. The response's action_signature field is unset if the requested action type is not found.

Gets server configuration, including part-specific configuration info for all parts (e.g. a robot arm might report its number of DOFs).

Gets a snapshot of the server's status, including part-specific status info for all parts. For instance, a robot arm might report its joint angles.

Reports whether an action is compatible with a part or a group of parts.

Lists all parts that are compatible with a list of action types. Each returned part is compatible with all listed action types. If the list of action types is empty, returns all parts.

Starts an action session. This is the main entrypoint into the ICON APIs. ICON allows users to interact with a realtime control system using a few key abstractions: * Parts: Each part is a collection of sensors and actuators that form a logical unit. Each part offers a number of feature interfaces that Actions can interact with. Examples include: * A robot arm * A gripper * A laser rangefinder sensor * Actions: An action is a building block of realtime control behavior. Each action has a number of "slots" that each connect to a feature interface on a part. Actions can also * accept zero or more streaming inputs (see OpenWriteStream) * publish a single optional streaming output (see GetLatestStreamingOutput) * report state variables, which can trigger reactions * Reactions: Users can set up custom reactions that trigger based on the state variables of a running action. ICON evaluates reactions in hard realtime. That is, there is no delay between detecting that a reaction should trigger and the desired effect. Reactions can affect the ICON server in several ways: * Notify gRPC clients of the reaction (see WatchReactions below). * Start a different action ("if the rangefinder reports a distance below 0.1m, stop moving and close the gripper"). * Trigger a signal on the running action, so that it can change its behavior.

Each session can claim zero or more parts. A session without parts can not run actions, but can still register reactions based on part status. Parts claimed by one session are claimed until that session ends. Users can start multiple sessions, but only one session can claim each part at a time.

The parts that a session claims remain stopped until * the user explicitly starts an action, or * a reaction triggers the start of an action

A new action session starts with only the actions in the initial OpenSessionRequest.

The client can signal the end of a session by indicating that writes are done using the grpc::ClientReaderWriter (aka "half-closing" the stream). ICON then ends the session and returns the final status. This includes terminating any ongoing WatchReactions and OpenWriteStream calls for the same session.

If an action session ends for any reason, including the client or server dropping the call, or a request to end the session, the server discards the session, including all actions and reactions. This stops all parts associated with the session and activates their safety actions.

Publishes an OpenSessionResponse when * ICON finishes processing an incoming OpenSessionRequest * a reaction occurs

Opens a write stream for one action of a given session.

Each write stream can send streaming input values to its action. Callers can find information about the streaming inputs offered by an action by calling ListActionSignatures() and inspecting the signature of an action type. The signature's streaming_input_infos field includes: * The name of the input. * A description that explains how the action reacts to input values. * The proto message type name of the input. * A FileDescriptorSet with detailed information about the input's message type, including all sub-messages. If the client does not have the information about the proto in question itself, it can use this FileDescriptorSet for introspection, and determine the structure of the proto message that way.

Note that ICON may terminate an OpenWriteStream request if the corresponding session ends for any reason (whether that is a server-side error or the caller deliberately ending a session).

Requests the latest streaming output value for a given action. Make sure to set the gRPC deadline if you do not want the request to block for too long!

Similar to streaming inputs (see OpenWriteStream() above), callers can find information about the streaming output (if any) offered by an action by calling ListActionSignatures() and inspecting the signature of an action type. The signature's streaming_output_info field includes: * The name of the output. * A description that explains when and how the action populates the output. * The proto message type name of the output. * A FileDescriptorSet with detailed information about the output's message type, including all sub-messages. If the client does not have the information about the proto in question itself, it can use this FileDescriptorSet for introspection, and determine the structure of the proto message that way.

Blocks until the action writes the first streaming output (or the request deadline expires), but returns an error immediately if the corresponding action does not exist at all.

Requests the planned trajectory for a given Action. Returns a kFailedPrecondition if the requested Action/Session combination does not exist, and a kNotFound one if there's no trajectory for an Action existing in the given Session.

Watches reactions that occur during a particular action session.

The server stops sending responses and ends the stream when the associated action session ends. One can only call WatchReactions while there is an active OpenSession stream with the same session ID.

When the server finishes setting up the reaction watcher, it sends a single, empty WatchReactionsResponse to indicate readiness.

There can be only one WatchReactions stream per session at a time. Any additional WatchReactions requests return kUnavailable.

Enables all disabled parts on the server. It is not necessary to call this on startup, because the server automatically enables. Typical use case is to re-enable after a manual call the Disable().

By default, disables all parts on the server and cancels all sessions except read-only sessions. If OPERATIONAL_HARDWARE_ONLY is set, parts that only use cell control hardware modules will keep their status (typically staying enabled).

Remember to set up adequate safety systems and conduct all risk assessments before deploying to real hardware.

Clears all faults. If successful, ICON automatically enables all parts after this finishes. Returns OkStatus if faults were successfully cleared and the server is enabled. Returns ResourceExhausted when a fatal fault is being cleared, which is not completed yet and involves a process restart. In this case, the client should retry until receiving OkStatus.

Returns the summarized status of the server. It contains the operational_status of the all hardware and the cell_control_hardware_status of cell control hardware. Cell control hardware is marked with IconMainConfig.hardware_config.cell_control_hardware. It is a group of hardware modules that does not inherit faults from operational hardware, so it is generally kept enabled (unless any cell control hardware module faults).

Requests restarting the entire server. Clears faults and enables as a side effect. This should not be needed, use ClearFaults() instead.

Updates the speed override value. The speed override factor must be between 0 and 1. That is, no "fast-forward" or "rewind", but "pausing" with an override factor of 0 is possible.

The speed override value acts as a multiplier to the "nominal" velocity of compatible actions. If an action is compatible, it will adjust its motion (even during execution) accordingly when the speed override changes. For example, setting a speed override value of 0.1 means that all compatible actions move at 10% of their original velocity.

Note that actions may not apply the new value instantaneously. This is because instantaneous changes in velocity would violate acceleration and jerk limits. Instead, actions will adjust their velocity as quickly as allowed within the robot's limits.

Configures the logging mode. The logging mode defines which robot-status logs are logged to the cloud. ICON only logs to the cloud if a session is active. Pubsub and local logging are not influenced by this setting.

Returns the current values of all part properties. Note that all values are collected at the same point in time.

Sets the part properties defined in the request. Use this to set parameters on parts. Guarantees that all values in the request are applied on the server at the same time.

Sets a payload on a part. Fails if the part does not exist or the payload contains invalid values.

Gets a payload stored in a part. Fails if the part does not exist or the requested payload does not exist.

Messages

message ActionAndReactionIds intrinsic/icon/proto/v1/types.proto

Lists the ids of actions and reactions in an action state machine

Field Type Description
1 action_instance_ids repeated int64

The ids of action instances in the state machine.

2 reaction_ids repeated int64

The ids of reactions in the state machine.

message ActionAssociation (Nested in intrinsic_proto.icon.v1.Reaction ) intrinsic/icon/proto/v1/types.proto

Field Type Description
1 action_instance_id int64

Action instance that this reaction is associated with.

2 stop_associated_action bool

If true, stops the currently active action that is associated with this reaction in action_instance_id.

If false, the currently active, associated action keeps running and the action (if any) specified in response will be started in parallel.

3 triggered_signal_name optional string

If present this is the name of the signal (associated with action_instance_id) which will be triggered and switched to true, if not already triggered.

message ActionInstance intrinsic/icon/proto/v1/types.proto

ActionInstanceDetails describes an action instance.

Field Type Description
2 action_type_name string

The type of action, corresponding to the type of an available ActionSignature (e.g. "xfa.joint_move").

3 action_instance_id int64

The client-assigned ID of this action instance. The ID of each ActionInstance must be unique for duration of the session.

4 fixed_parameters google.protobuf.Any

Action-specific fixed parameters.

oneof slot_data
5 slot_part_map intrinsic_proto.icon.v1.SlotPartMap

The SlotPartMap to apply to this Action instance.

6 part_name string

The name of a Part to execute this Action on. A SlotPartMap will be inferred if and only if the Action type for this instance uses a single Slot.

message ActionResponse (Nested in intrinsic_proto.icon.v1.OpenSessionResponse ) intrinsic/icon/proto/v1/service.proto

Field Type Description

message ActionSignature intrinsic/icon/proto/v1/types.proto

ActionSignature describes a type of real-time action that can be instantiated.

Field Type Description
1 action_type_name string

Unique name of the action type, e.g. "xfa.joint_move".

2 text_description string

Text description of this action type, for human consumption.

3 fixed_parameters_message_type string

Name of the fixed parameters message type, or empty if the action takes no fixed parameters. If set, the name must be found in fixed_parameters_descriptor_set.

4 fixed_parameters_descriptor_set google.protobuf.FileDescriptorSet

Descriptors of the fixed parameters type (including descriptors of all transitive dependencies).

5 streaming_input_infos repeated intrinsic_proto.icon.v1.ActionSignature.ParameterInfo

Action-specific streaming input parameter descriptions.

7 state_variable_infos repeated intrinsic_proto.icon.v1.ActionSignature.StateVariableInfo

Action-specific state variable metadata, keyed by state variable name.

8 streaming_output_info optional intrinsic_proto.icon.v1.ActionSignature.ParameterInfo

An Action may define an Action-specific streaming output parameter. Note that, while this has a name, it can be accessed implicitly, since there is only (at most) one streaming output.

9 part_slot_infos map<string, PartSlotInfo>

List of Slot names the Action expects.

10 realtime_signal_infos repeated intrinsic_proto.icon.v1.ActionSignature.RealtimeSignalInfo

List of realtime signals that the Action expects. Users may trigger each one via realtime reactions.

message ActionsAndReactions intrinsic/icon/proto/v1/types.proto

Describes a state machine consisting of a list of action_instances acting as nodes and a list of reactions describing the edges.

Field Type Description
1 action_instances repeated intrinsic_proto.icon.v1.ActionInstance

The nodes to build into the action state machine.

2 reactions repeated intrinsic_proto.icon.v1.Reaction

The reactions to build into the action state machine.

message AddStreamRequest intrinsic/icon/proto/v1/service.proto

Field Type Description
1 action_id uint64

The action this request is tied to.

2 field_name string

The name of the field.

message AddStreamResponse intrinsic/icon/proto/v1/service.proto

Field Type Description
1 status google.rpc.Status

message ClearAllActions (Nested in intrinsic_proto.icon.v1.OpenSessionRequest ) intrinsic/icon/proto/v1/service.proto

Field Type Description

message ClearFaultsRequest intrinsic/icon/proto/v1/service.proto

Field Type Description

message ClearFaultsResponse intrinsic/icon/proto/v1/service.proto

Field Type Description

message Comparison intrinsic/icon/proto/v1/types.proto

Comparison describes a real-time condition statement based on the value of a state variable.

Field Type Description
1 state_variable_name string

Name of the action-specific real-time state variable to test against.

2 operation intrinsic_proto.icon.v1.Comparison.OpEnum

Comparison operation to perform between the state variable and value.

5 max_abs_error double

Max absolute value of error (aka "epsilon") for float-point comparisons APPROX_EQUAL and APPROX_NOT_EQUAL. Ignored for other operation types.

oneof value
3 double_value double

Test against this double value.

4 bool_value bool

Test against this boolean value. OpEnum must be EQUAL or NOT_EQUAL.

6 int64_value int64

Test against this integer value.

message Condition intrinsic/icon/proto/v1/types.proto

Field Type Description
oneof condition
1 comparison intrinsic_proto.icon.v1.Comparison
3 conjunction_condition intrinsic_proto.icon.v1.ConjunctionCondition
4 negated_condition intrinsic_proto.icon.v1.NegatedCondition

message ConjunctionCondition intrinsic/icon/proto/v1/types.proto

ConjunctionCondition describes a real-time condition statement based on multiple other (contained) conditions.

Field Type Description
1 operation intrinsic_proto.icon.v1.ConjunctionCondition.OpEnum

The operation to use.

2 conditions repeated intrinsic_proto.icon.v1.Condition

The conditions to evaluate to form this condition.

message DisableRequest intrinsic/icon/proto/v1/service.proto

Field Type Description
1 group intrinsic_proto.icon.v1.DisableRequest.HardwareGroup

With OPERATIONAL_HARDWARE_ONLY, parts that only use hardware modules that are configured with IconMainConfig.hardware_config.cell_control_hardware will be skipped, keeping them enabled if they are enabled. This is useful to disable only operational hardware, while keeping cell control hardware running. One use case is to integrate cell-level control where operational robot hardware can be paused such that automatic mode is not needed, while still reading/writing input/output on a fieldbus hardware module for cell-level control. By default, the Disable request disables all hardware.

message DisableResponse intrinsic/icon/proto/v1/service.proto

Field Type Description

message EnableRequest intrinsic/icon/proto/v1/service.proto

Field Type Description

message EnableResponse intrinsic/icon/proto/v1/service.proto

Field Type Description

message GetActionSignatureByNameRequest intrinsic/icon/proto/v1/service.proto

GetActionSignatureByName() request.

Field Type Description
1 name string

Action type name, e.g. "xfa.joint_move".

message GetActionSignatureByNameResponse intrinsic/icon/proto/v1/service.proto

GetActionSignatureByName() response.

Field Type Description
1 action_signature intrinsic_proto.icon.v1.ActionSignature

Description of the action type, or unset if the action type name is not found.

message GetConfigRequest intrinsic/icon/proto/v1/service.proto

GetConfig() request.

Field Type Description

message GetConfigResponse intrinsic/icon/proto/v1/service.proto

GetConfig() response.

Field Type Description
1 part_configs repeated intrinsic_proto.icon.v1.PartConfig

Static (for the duration of the ICON server's lifetime) data about the parts on this server.

2 control_frequency_hz double

This is the frequency at which ICON's control loop is running.

3 server_config intrinsic_proto.icon.v1.ServerConfig

message GetLatestStreamingOutputRequest intrinsic/icon/proto/v1/service.proto

Field Type Description
1 session_id int64

The ID of the session that the Action we're querying belongs to.

2 action_id uint64

The action whose streaming output we're interested in.

message GetLatestStreamingOutputResponse intrinsic/icon/proto/v1/service.proto

Field Type Description
1 output intrinsic_proto.icon.StreamingOutput

message GetLoggingModeRequest intrinsic/icon/proto/v1/service.proto

Field Type Description

message GetLoggingModeResponse intrinsic/icon/proto/v1/service.proto

Field Type Description
1 logging_mode intrinsic_proto.icon.LoggingMode

message GetOperationalStatusRequest intrinsic/icon/proto/v1/service.proto

Field Type Description

message GetOperationalStatusResponse intrinsic/icon/proto/v1/service.proto

Field Type Description
1 operational_status intrinsic_proto.icon.v1.OperationalStatus

Returns the summarized state of the server. This is the status of all hardware and the server.

2 cell_control_hardware_status intrinsic_proto.icon.v1.OperationalStatus

The status of cell control hardware, which is marked with IconMainConfig.hardware_config.cell_control_hardware. Cell control hardware is a group of hardware modules that does not inherit faults from operational hardware, so it is generally kept enabled (unless any cell control hardware module faults). If no cell control hardware is configured, this is the same as operational_status.

message GetPartPropertiesRequest intrinsic/icon/proto/v1/service.proto

Field Type Description

message GetPartPropertiesResponse intrinsic/icon/proto/v1/service.proto

Field Type Description
1 timestamp_control google.protobuf.Duration

Control timestamp when the property values were collected. This differs from wall time in two ways: 1. The control timestamp is initialized to 0 on startup 2. The control timestamp may advance slower or faster than wall time, especially in simulation.

2 timestamp_wall google.protobuf.Timestamp

Wall timestamp when the property values were collected. This is helpful for cross-referencing with other Intrinsic services.

3 part_properties_by_part_name map<string, PartPropertyValues>

These values are all from the same instant in time.

message GetPayloadRequest intrinsic/icon/proto/v1/service.proto

Field Type Description
1 part_name string

The name of the part containing the payload.

2 payload_name string

The name of the payload.

message GetPayloadResponse intrinsic/icon/proto/v1/service.proto

Field Type Description
1 payload optional intrinsic_proto.world.RobotPayload

The payload. Empty if no payload is set.

message GetPlannedTrajectoryRequest intrinsic/icon/proto/v1/service.proto

Field Type Description
1 session_id int64

The ID of the session that the Action we're querying belongs to.

2 action_id uint64

The action whose planned trajectory we're interested in.

message GetPlannedTrajectoryResponse intrinsic/icon/proto/v1/service.proto

Field Type Description
1 planned_trajectory_segment intrinsic_proto.icon.JointTrajectoryPVA

message GetSpeedOverrideRequest intrinsic/icon/proto/v1/service.proto

Field Type Description

message GetSpeedOverrideResponse intrinsic/icon/proto/v1/service.proto

Field Type Description
1 override_factor double

message GetStatusRequest intrinsic/icon/proto/v1/service.proto

GetStatus() request.

Field Type Description

message GetStatusResponse intrinsic/icon/proto/v1/service.proto

GetStatus() response.

Field Type Description
1 part_status map<string, PartStatus>

The current status (i.e. dynamic data, as opposed to the static data in PartConfig) for all Parts on this server.

2 sessions map<uint64, SessionStatus>

Information about all currently active Sessions.

3 current_speed_override double

The current speed override value, see SetSpeedOverride for more details.

4 safety_status intrinsic_proto.icon.SafetyStatus

The current status of the safety system.

message InitialSessionData (Nested in intrinsic_proto.icon.v1.OpenSessionRequest ) intrinsic/icon/proto/v1/service.proto

Field Type Description
1 allocate_parts intrinsic_proto.icon.v1.PartList

A list of parts to allocate for this session. Parts that are in use by one session cannot be allocated by any other sessions until they are freed. All parts allocated by a session are freed when the session ends.

2 deadline google.protobuf.Timestamp

If ICON cannot open the session by this deadline, it returns an error.

message InitialSessionData (Nested in intrinsic_proto.icon.v1.OpenSessionResponse ) intrinsic/icon/proto/v1/service.proto

Field Type Description
1 session_id int64

The unique identifier for the session. Callers can use this with related requests to further interact with the session: * GetStatus (to find the list of actions that exist in this session) * WatchReactions * OpenWriteStream * GetLatestStreamingOutput * GetPlannedTrajectory

message IsActionCompatibleRequest intrinsic/icon/proto/v1/service.proto

IsActionCompatible() request.

Field Type Description
1 action_type_name string

Action type to check for compatibility.

oneof slot_data
3 slot_part_map intrinsic_proto.icon.v1.SlotPartMap

If this is set, ICON checks for compatibility with this exact SlotPartMap (i.e. specific parts assigned to specific slots of action_type_name).

4 part_name string

If this is set, ICON checks whether part_name is compatible with any of the slots for action_type_name.

message IsActionCompatibleResponse intrinsic/icon/proto/v1/service.proto

IsActionCompatible() response.

Field Type Description
1 is_compatible bool

True iff the action type named action_type_name is compatible with the part or SlotPartMap from the request.

message ListActionSignaturesRequest intrinsic/icon/proto/v1/service.proto

ListActionSignatures() request.

Field Type Description

message ListActionSignaturesResponse intrinsic/icon/proto/v1/service.proto

ListActionSignatures() response.

Field Type Description
1 action_signatures repeated intrinsic_proto.icon.v1.ActionSignature

List of available action types.

message ListCompatiblePartsRequest intrinsic/icon/proto/v1/service.proto

ListCompatibleParts() request.

Field Type Description
1 action_type_names repeated string

List of action types to get compatible parts for. A part is considered compatible if it is compatible with at least one slot of every action type in the list.

message ListCompatiblePartsResponse intrinsic/icon/proto/v1/service.proto

ListCompatibleParts() response.

Field Type Description
1 parts repeated string

Parts that are compatible with all listed action_type_names.

message ListPartsRequest intrinsic/icon/proto/v1/service.proto

ListParts() request.

Field Type Description

message ListPartsResponse intrinsic/icon/proto/v1/service.proto

ListParts() response.

Field Type Description
1 parts repeated string

Parts that are available.

message NegatedCondition intrinsic/icon/proto/v1/types.proto

Field Type Description
1 condition intrinsic_proto.icon.v1.Condition

message OpenSessionRequest intrinsic/icon/proto/v1/service.proto

OpenSession() request. It is valid to send initial_session_data, an ActionRequest, and a start_actions_request all in the same OpenSessionRequest. These fields will always be evaluated in the following order: 1) initial_session_data 2) ActionRequest's are applied 3) start_actions_request Evaluation is stopped at the first error encountered. For example, if there is an error in the ActionRequest, start_actions_request will not be applied.

Field Type Description
1 initial_session_data intrinsic_proto.icon.v1.OpenSessionRequest.InitialSessionData

Initial data for opening a session that must be sent only with the first OpenSessionRequest.

That is, ICON closes the session and returns an error if * the first OpenSessionRequest for a session lacks initial_session_data * any OpenSessionRequest but the first contains initial_session_data

11 log_context intrinsic_proto.data_logger.Context

If specified, ICON tags all logs coming from parts used by this session with this context.

12 start_actions_request optional intrinsic_proto.icon.v1.OpenSessionRequest.StartActionsRequestData

If present, ICON starts the requested action instances. Note that this is truly optional, and multiple requests over the course of a single session can start actions. For example, a client may wish to start a new action in response to a non-real-time reaction, or to data from an outside service.

oneof action_request
5 add_actions_and_reactions intrinsic_proto.icon.v1.ActionsAndReactions

ICON adds the actions and reactions in the ActionsAndReactions to the existing action state machine on the server.

Adding actions and reactions is a transaction and can have one of two results: 1. Success: The action state machine now contains all of the new actions and reactions 2. Failure: The action state machine contains the same actions and reactions as before, and ICON returns an error

Examples of problems that can cause a failure: * Any action_instance_id or reaction_instance_id in the ActionsAndReactions proto is already in use * Any Reaction refers to an action_instance_id that is not present in either the existing action state machine or the ActionsAndReactions proto

6 remove_action_and_reaction_ids intrinsic_proto.icon.v1.ActionAndReactionIds

ICON removes the actions and reactions in the ActionAndReactionIds proto from the action state machine on the server.

If any action id or reaction ID in the ActionAndReactionIds proto does not exist, then ICON does not modify the action state machine and returns an error.

7 clear_all_actions_reactions intrinsic_proto.icon.v1.OpenSessionRequest.ClearAllActions

ICON removes all existing actions and reactions. If any action is currently running, ICON stops that action. After this, the safety action is active for all parts.

message OpenSessionResponse intrinsic/icon/proto/v1/service.proto

OpenSession() response.

Field Type Description
1 status google.rpc.Status

Contains an aborted error if the session should end. May contain other errors for non-session ending failures.

2 initial_session_data intrinsic_proto.icon.v1.OpenSessionResponse.InitialSessionData

Contains information regarding session initialization. ICON sends this only in response to the first request.

oneof response_type
5 action_response intrinsic_proto.icon.v1.OpenSessionResponse.ActionResponse

This is a response to an ActionRequest

message OpenWriteStreamRequest intrinsic/icon/proto/v1/service.proto

OpenWriteStream() request.

In the initial message, the client must write session_id and add_write_stream to set up the stream.

Subsequent calls must set the write_value field to send a value to the corresponding stream.

Field Type Description
1 add_write_stream intrinsic_proto.icon.v1.AddStreamRequest

Adds a write stream. Callers must set this field only in the first message.

3 write_value intrinsic_proto.icon.v1.OpenWriteStreamRequest.WriteValue

The value to write to an already-set-up write stream.

4 session_id int64

The ID of the session this stream belongs to.

message OpenWriteStreamResponse intrinsic/icon/proto/v1/service.proto

Field Type Description
2 write_value_response google.rpc.Status

If the previous message wrote a value, this field contains the status of that write operation.

Note that an OK status means that the value was written but does not guarantee that the corresponding action has received or processed the message.

oneof stream_operation_response
1 add_stream_response intrinsic_proto.icon.v1.AddStreamResponse

message OperationalStatus intrinsic/icon/proto/v1/types.proto

OperationalStatus describes the server's operational status.

Field Type Description
1 state intrinsic_proto.icon.v1.OperationalState

Current operational state of the parts.

2 fault_reason string

A human-readable description of what caused the FAULTED state. When not in the FAULTED state, this is empty.

message ParameterInfo (Nested in intrinsic_proto.icon.v1.ActionSignature ) intrinsic/icon/proto/v1/types.proto

ParameterInfo describes a fixed parameter, streaming input, or streaming output.

Field Type Description
1 parameter_name string

Name of this parameter.

2 text_description string

Text description of this parameter, for human consumption.

3 value_message_type string

Name of the value message type. Must be found in value_descriptor_set.

4 value_descriptor_set google.protobuf.FileDescriptorSet

Descriptors of the value type for this parameter (including descriptors of all transitive dependencies).

message PartConfig intrinsic/icon/proto/v1/types.proto

Configuration for a part. Contains both generic and (optionally) part-specific configuration data.

Field Type Description
1 name string

String identifier for the part.

4 config google.protobuf.Any

Part-specific configuration that does not fit into the format of GenericPartConfig. The message type matches config_message_type in the part's PartSignature. May be empty if config_message_type is the empty string.

Note that even Parts that populate this must also provide a GenericPartConfig.

5 feature_interfaces repeated intrinsic_proto.icon.v1.FeatureInterfaceTypes

The Feature Interfaces that this Part supports.

6 part_type_name string

String identifier for the part's type.

7 config_message_type string

Name of the part's config message type. Must be found in config_descriptor_set. An empty string signifies that the part has no configuration info.

8 config_descriptor_set google.protobuf.FileDescriptorSet

Descriptors of the config type for this part (including descriptors of all transitive dependencies).

9 generic_config intrinsic_proto.icon.GenericPartConfig

Generic Part configuration. No matter what the specific Part type is, this contains the sub-messages corresponding to the Feature Interfaces that the Part supports (see above).

10 hardware_resource_name string

message PartGroup intrinsic/icon/proto/v1/types.proto

PartGroup describes a group of part that can be controlled together with real-time synchronization.

Field Type Description
1 parts repeated string

message PartList intrinsic/icon/proto/v1/types.proto

A list of parts

Field Type Description
1 part repeated string

message PartPropertyValue intrinsic/icon/proto/v1/service.proto

The value of a single part property. These can be scalar boolean or double values. If a part needs to expose more complex data as a property, it uses multiple values. You can read and write multiple values atomically using the GetPartProperties and SetPartProperties methods.

Field Type Description
oneof value
1 bool_value bool
2 double_value double

message PartPropertyValues intrinsic/icon/proto/v1/service.proto

Contains the values of all part properties for a single part.

Field Type Description
1 property_values_by_name map<string, PartPropertyValue>

message PartSignature intrinsic/icon/proto/v1/types.proto

PartSignature describes metadata about a part, including descriptors of the part's config and status messages.

Field Type Description
1 name string

String identifier for the part.

2 config_message_type string

Name of the part's config message type. Must be found in config_descriptor_set. An empty string signifies that the part has no configuration info.

3 config_descriptor_set google.protobuf.FileDescriptorSet

Descriptors of the config type for this part (including descriptors of all transitive dependencies).

4 status_message_type string

Name of the part's status message type. Must be found in status_descriptor_set. An empty string signifies that the part has no status info. DEPRECATED

5 status_descriptor_set google.protobuf.FileDescriptorSet

Descriptors of the status type for this part (including descriptors of all transitive dependencies). DEPRECATED

6 part_type_name string

String identifier for the part's type.

message PartSlotInfo (Nested in intrinsic_proto.icon.v1.ActionSignature ) intrinsic/icon/proto/v1/types.proto

Describes a part slot for an ICON action. To be compatible with a slot, a concrete part must supply at least required_feature_interfaces, and may support optional_feature_interfaces.

If required_feature_interfaces is empty, the slot itself is optional. That is, a SlotPartMap may omit the slot completely.

Field Type Description
2 description string
3 required_feature_interfaces repeated intrinsic_proto.icon.v1.FeatureInterfaceTypes
4 optional_feature_interfaces repeated intrinsic_proto.icon.v1.FeatureInterfaceTypes

message Reaction intrinsic/icon/proto/v1/types.proto

Reaction describes a realtime condition and a response to take when the condition is satisfied. Next ID: 7

Field Type Description
1 reaction_instance_id int64

The client-assigned ID of this reaction. The ID of each Reaction must be unique for duration of the session.

3 condition intrinsic_proto.icon.v1.Condition

Condition which is evaluated by the control layer every control cycle.

4 response optional intrinsic_proto.icon.v1.Response

Response which should occur when the Condition is satisfied. All reactions, even those without an explicit Response, will generate client events observable with the StreamEvents() rpc method. The response field describes additional realtime side-effects that should occur.

5 fire_once bool

If true, the reaction will only trigger once as long as the associated action is active. It can trigger again if the action is executed again. If the reaction is free-standing (no action_instance_id is set), it will only trigger once.

If false, the reaction will trigger on every rising edge again.

This does not effect real-time signal responses. Since signals remain true after the first rising edge, subsequent triggerings have no effect.

6 action_association optional intrinsic_proto.icon.v1.Reaction.ActionAssociation

Associates the reaction with an action instance. The reaction can only trigger if the associated action is active. If not set, the reaction is free-standing.

message ReactionEvent intrinsic/icon/proto/v1/types.proto

Field Type Description
1 previous_action_instance_id optional int64

The previous_action_instance_id of the action this reaction is bound to. If it is not set, the reaction is a free-standing reaction.

2 current_action_instance_id optional int64

The action_instance_id of the action transitioned to. If not set, the reaction does not trigger an action change.

3 reaction_id int64

The reaction that was triggered.

message RealtimeSignalInfo (Nested in intrinsic_proto.icon.v1.ActionSignature ) intrinsic/icon/proto/v1/types.proto

RealtimeSignalInfo describes the type of an action's realtime signal. Realtime signals can trigger a change in behavior of a running action.

Field Type Description
1 signal_name string
2 text_description string

Text description of this signal, for human consumption. Describe what your action does if it receives this signal.

message Response intrinsic/icon/proto/v1/types.proto

Response describes a real-time response. This is part of a realtime Reaction.

Field Type Description
1 start_action_instance_id int64

Start another action.

message ServerConfig intrinsic/icon/proto/v1/types.proto

Server-wide configuration values.

Field Type Description
1 name string

The server name shows up in logs and determines the names of DDS topics, among other things.

2 frequency_hz double

The global control frequency, in Hz. ICON updates Actions/Reactions and sends commands to hardware at this rate.

message SessionStatus (Nested in intrinsic_proto.icon.v1.GetStatusResponse ) intrinsic/icon/proto/v1/service.proto

Field Type Description
1 part_group intrinsic_proto.icon.v1.PartGroup

The Parts claimed by this Session for write access. No other Session can claim any of the Parts in this group.

2 action_ids repeated int64

A list of the actions in this Session. Note that this includes all actions that a user has added and not removed. In particular, the list is not limited to the running actions.

message SetLoggingModeRequest intrinsic/icon/proto/v1/service.proto

Field Type Description
1 logging_mode intrinsic_proto.icon.LoggingMode

message SetLoggingModeResponse intrinsic/icon/proto/v1/service.proto

Field Type Description

message SetPartPropertiesRequest intrinsic/icon/proto/v1/service.proto

Field Type Description
1 part_properties_by_part_name map<string, PartPropertyValues>

ICON applies all of these properties at the same time.

message SetPartPropertiesResponse intrinsic/icon/proto/v1/service.proto

Field Type Description

message SetPayloadRequest intrinsic/icon/proto/v1/service.proto

Field Type Description
1 part_name string

The name of the part to set the payload for.

2 payload_name string

The name of the payload to set.

3 payload intrinsic_proto.world.RobotPayload

The payload to set.

message SetPayloadResponse intrinsic/icon/proto/v1/service.proto

Field Type Description

message SetSpeedOverrideRequest intrinsic/icon/proto/v1/service.proto

Field Type Description
1 override_factor double

Must be between 0 and 1, and modifies the execution speed of compatible actions.

message SetSpeedOverrideResponse intrinsic/icon/proto/v1/service.proto

Field Type Description

message SlotPartMap intrinsic/icon/proto/v1/types.proto

A SlotPartMap maps the slot names used by an Action to global Part names.

Field Type Description
1 slot_name_to_part_name map<string, string>

message StartActionsRequestData (Nested in intrinsic_proto.icon.v1.OpenSessionRequest ) intrinsic/icon/proto/v1/service.proto

Configuration needed when starting a set of actions.

Field Type Description
1 action_instance_ids repeated int64

Actions to start. Those actions must not have overlapping part sets.

2 stop_active_actions bool

If true, ICON stops all active actions before starting the actions in action_instance_ids (if any). This means callers can use this flag with an empty action_instance_ids to stop all actions.

If false, all active actions continue to run, unless one of the actions in action_instance_ids uses an overlapping set of parts. In that case, the newly-started action takes precedence, and ICON stops the action that was using the same parts before.

message StateVariableInfo (Nested in intrinsic_proto.icon.v1.ActionSignature ) intrinsic/icon/proto/v1/types.proto

StateVariableInfo describes the type of an action's state variable.

Field Type Description
1 state_variable_name string

Name of this parameter.

2 text_description string

Text description of this parameter, for human consumption.

3 type intrinsic_proto.icon.v1.ActionSignature.StateVariableInfo.Type

Value type of this state variable.

message WatchReactionsRequest intrinsic/icon/proto/v1/service.proto

Field Type Description
1 session_id int64

The unique identifier of the action session. This should be the session id returned in the initial_session_data of an OpenSession response.

message WatchReactionsResponse intrinsic/icon/proto/v1/service.proto

Field Type Description
1 timestamp google.protobuf.Timestamp

The time when the Reaction occurred.

2 reaction_event intrinsic_proto.icon.v1.ReactionEvent

The reaction that occurred. This is empty for the first message sent to the client.

message WriteValue (Nested in intrinsic_proto.icon.v1.OpenWriteStreamRequest ) intrinsic/icon/proto/v1/service.proto

Field Type Description
2 value google.protobuf.Any

Enums

enum FeatureInterfaceTypes intrinsic/icon/proto/v1/types.proto

Keep in sync with intrinsic/icon/control/parts/feature_interfaces.h

Name Number Description
FEATURE_INTERFACE_INVALID 0
FEATURE_INTERFACE_JOINT_POSITION 1
FEATURE_INTERFACE_JOINT_VELOCITY 2
FEATURE_INTERFACE_JOINT_POSITION_SENSOR 3
FEATURE_INTERFACE_JOINT_VELOCITY_ESTIMATOR 4
FEATURE_INTERFACE_JOINT_ACCELERATION_ESTIMATOR 5
FEATURE_INTERFACE_JOINT_LIMITS 6
FEATURE_INTERFACE_CARTESIAN_LIMITS 7
FEATURE_INTERFACE_SIMPLE_GRIPPER 8
FEATURE_INTERFACE_ADIO 9
FEATURE_INTERFACE_RANGE_FINDER 10
FEATURE_INTERFACE_MANIPULATOR_KINEMATICS 11
FEATURE_INTERFACE_JOINT_TORQUE 12
FEATURE_INTERFACE_JOINT_TORQUE_SENSOR 13
FEATURE_INTERFACE_DYNAMICS 14
FEATURE_INTERFACE_FORCE_TORQUE_SENSOR 15
FEATURE_INTERFACE_LINEAR_GRIPPER 16
FEATURE_INTERFACE_HAND_GUIDING 17
FEATURE_INTERFACE_CONTROL_MODE_EXPORTER 18
FEATURE_INTERFACE_MOVE_OK 19
FEATURE_INTERFACE_IMU 20
FEATURE_INTERFACE_STANDALONE_FORCE_TORQUE_SENSOR 21
FEATURE_INTERFACE_PROCESS_WRENCH_AT_ENDEFFECTOR 22
FEATURE_INTERFACE_PAYLOAD 23
FEATURE_INTERFACE_PAYLOAD_STATE 24
FEATURE_INTERFACE_CARTESIAN_POSITION_STATE 25
FEATURE_INTERFACE_HOMING 26

enum HardwareGroup intrinsic/icon/proto/v1/service.proto

Name Number Description
HARDWARE_GROUP_UNSPECIFIED 0
ALL_HARDWARE 1
OPERATIONAL_HARDWARE_ONLY 2

enum OpEnum intrinsic/icon/proto/v1/types.proto

OpEnum describes available operations.

Name Number Description
UNKNOWN 0
EQUAL 1
NOT_EQUAL 2
APPROX_EQUAL 3
APPROX_NOT_EQUAL 4
LESS_THAN_OR_EQUAL 5
LESS_THAN 6
GREATER_THAN_OR_EQUAL 7
GREATER_THAN 8

enum OpEnum intrinsic/icon/proto/v1/types.proto

OpEnum describes available operations.

Name Number Description
UNKNOWN 0
ALL_OF 1
ANY_OF 2

enum OperationalState intrinsic/icon/proto/v1/types.proto

The summarized state of all or a group of hardware (such as cell control hardware modules) or the real-time control service.

Name Number Description
UNKNOWN 0
DISABLED 1

Indicates that this group of hardware (or the server) is not ready for active control and that no sessions can be started that need to control these parts. This is possible when: - The skill "disable_realtime_control" or Client::Disable() were called. - The server or hardware is starting up. - Faults are being cleared. Read-only sessions are possible for all parts. Part status is being published. icon_client.Enable() can be called to enable full control for all parts.

FAULTED 2

Indicates that at least one part, possibly the entire real-time control service, is faulted. icon_client.ClearFaults() is needed to re-enable control. Depending on the fault, real-time control may or may not be running the safety actions. An example for a single part fault is a robot hardware module reporting an emergency stop but still being connected. An example for a global fault that cannot be cleared is a mistake in the hardware module names in the config. An example for a global fault that can be cleared is a timeout in a simulation reset. If a part is not faulted, read-only sessions reading from them can continue, and part status may still be published.

ENABLED 3

Indicates that the server is ready for a session to begin and all parts are enabled. Part status is being published.

enum Type intrinsic/icon/proto/v1/types.proto

Name Number Description
UNKNOWN 0

Match FieldDescriptorProto Type enum values, just for kicks.

TYPE_DOUBLE 1
TYPE_INT64 3
TYPE_BOOL 8