UNPKG

rclnodejs

Version:
196 lines (171 loc) 6 kB
declare module 'rclnodejs' { type ActionGoal<T> = T extends ActionTypeClassName ? InstanceType<ActionsMap[T]['Goal']> : object; type ActionFeedback<T> = T extends ActionTypeClassName ? InstanceType<ActionsMap[T]['Feedback']> : object; type ActionResult<T> = T extends ActionTypeClassName ? InstanceType<ActionsMap[T]['Result']> : object; /** * Goal handle for working with Action Clients. */ class ClientGoalHandle<T extends TypeClass<ActionTypeClassName>> { /** * Gets the goal Id. */ get goalId(): unique_identifier_msgs.msg.UUID; /** * Gets the goal response timestamp. */ get stamp(): builtin_interfaces.msg.Time; /** * Gets if the goal response was accepted. * @deprecated Use isAccepted() */ get accepted(): boolean; /** * Determine if goal is currently executing * @returns {bool} - True if goal is executing; otherwise return false. */ isAccepted(): boolean; /** * Determine if goal is currently executing * @returns {bool} - True if goal is executing; otherwise return false. */ isExecuting(): boolean; /** * Determine if goal is in the process of canceling. * @returns True if goal is canceling; otherwise return false. */ isCanceling(): boolean; /** * Determine if goal completed successfullly. * @returns True if goal completed successfully; otherwise return false. */ isSucceeded(): boolean; /** * Determine if goal has been canceled. * @returns True if goal has been aborted; otherwise return false. */ isCanceled(): boolean; /** * Determine if goal has been aborted. * @returns True if goal was aborted; otherwise return false. */ isAborted(): boolean; /** * Gets the goal status. */ get status(): number; /** * Send a cancel request for the goal. * * @returns The cancel response. */ cancelGoal(): Promise<action_msgs.srv.CancelGoal_Response>; /** * Request the result for the goal. * * @returns The result response. */ getResult(): Promise<ActionResult<T>>; } /** * ROS Middleware "quality of service" options for action clients. */ interface ActionQoS { /** * Quality of service option for the goal service, default: QoS.profileServicesDefault. */ goalServiceQosProfile?: QoS | QoS.ProfileRef; /** * Quality of service option for the result service, default: QoS.profileServicesDefault. */ resultServiceQosProfile?: QoS | QoS.ProfileRef; /** * Quality of service option for the cancel service, default: QoS.profileServicesDefault. */ cancelServiceQosProfile?: QoS | QoS.ProfileRef; /** * Quality of service option for the feedback subscription, default: new QoS(QoS.HistoryPolicy.RMW_QOS_POLICY_HISTORY_SYSTEM_DEFAULT, 10). */ feedbackSubQosProfile?: QoS | QoS.ProfileRef; /** * Quality of service option for the status subscription, default: QoS.profileActionStatusDefault. */ statusSubQosProfile?: QoS | QoS.ProfileRef; } /** * ROS Action client. */ class ActionClient<T extends TypeClass<ActionTypeClassName>> { /** * Creates a new action client. * * @param node - The ROS node to add the action client to. * @param typeClass - Type of the action. * @param actionName - Name of the action. * @param options - The topic will use TypedArray if necessary, default: true. */ constructor( node: Node, typeClass: T, actionName: string, options?: Options<ActionQoS> ); /** * Send a goal and wait for the goal ACK asynchronously. * * Return a Promise object that is resolved with a ClientGoalHandle when receipt of the goal * is acknowledged by an action server, see client state transition https://docs.ros.org/en/jazzy/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Actions/Understanding-ROS2-Actions.html * * @param goal - The goal request. * @param feedbackCallback - Callback function for feedback associated with the goal. * @param goalUuid - Universally unique identifier for the goal. If None, then a random UUID is generated. * @returns A Promise to a goal handle that resolves when the goal request has been accepted or rejected. */ sendGoal( goal: ActionGoal<T>, feedbackCallback?: (feedbackMessage: ActionFeedback<T>) => void, goalUuid?: unique_identifier_msgs.msg.UUID ): Promise<ClientGoalHandle<T>>; /** * Check if there is an action server ready to process requests from this client. * * @returns True if an action server is ready; otherwise, false. */ isActionServerAvailable(): boolean; /** * Wait until the action server is available or a timeout is reached. This * function polls for the server state so it may not return as soon as the * server is available. * * @param timeout The maximum amount of time to wait for, if timeout * is `undefined` or `< 0`, this will wait indefinitely. * @returns True if the service is available. */ waitForServer(timeout?: number): Promise<boolean>; /** * Destroy the underlying action client handle. */ destroy(): void; /** * Get the number of wait set entities that make up an action entity. * @return - The number of subscriptions, guard_conditions, timers, and clients and services. */ getNumEntities(): object; /** * Configure introspection. * @param clock - Clock to use for service event timestamps * @param QoSProfile - QOS profile for the service event publisher * @param introspectionState - The state to set introspection to */ configureIntrospection( clock: Clock, serviceEventPubQOS: QoS, introspectionState: ServiceIntrospectionStates ): void; } }