No version for distro humble showing kilted. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 5.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros-controls/ros2_controllers.git
VCS Type git
VCS Version master
Last Updated 2025-08-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Package to control robots using motion primitives like PTP, LIN and CIRC

Additional Links

Maintainers

  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

  • Mathias Fuhrer

motion_primitive_controllers

Package to control robots using motion primitives like LINEAR_JOINT (PTP/ MOVEJ), LINEAR_CARTESIAN (LIN/ MOVEL) and CIRCULAR_CARTESIAN (CIRC/ MOVEC)

Description

This project provides an interface for sending motion primitives to an industrial robot controller using the ExecuteMotionPrimitiveSequence.action action from control_msgs. The controller receives the primitives via the action interface and forwards them through command interfaces to the robot-specific hardware interface. Currently, hardware interfaces for Universal Robots and KUKA Robots are implemented.

  • Supported motion primitives:
    • LINEAR_JOINT
    • LINEAR_CARTESIAN
    • CIRCULAR_CARTESIAN

If multiple motion primitives are passed to the controller via the action, the controller forwards them to the hardware interface as a sequence. To do this, it first sends MOTION_SEQUENCE_START, followed by each individual primitive, and finally MOTION_SEQUENCE_END. All primitives between these two markers will be executed as a single, continuous sequence. This allows seamless transitions (blending) between primitives.

The action interface also allows stopping the current execution of motion primitives. When a stop request is received, the controller sends STOP_MOTION to the hardware interface, which then halts the robot’s movement. Once the controller receives confirmation that the robot has stopped, it sends RESET_STOP to the hardware interface. After that, new commands can be sent.

Action Image

This can be done, for example, via a Python script as demonstrated in the example python script in the Universal_Robots_ROS2_Driver package.

Command and State Interfaces

To transmit the motion primitives, the following command and state interfaces are required. All interfaces use the naming scheme tf_prefix_ + "motion_primitive/<interface name>" where the tf_prefix is provided to the controller as a parameter.

Command Interfaces

These interfaces are used to send motion primitive data to the hardware interface:

  • motion_type: Type of motion primitive (LINEAR_JOINT, LINEAR_CARTESIAN, CIRCULAR_CARTESIAN)
  • q1q6: Target joint positions for joint-based motion
  • pos_x, pos_y, pos_z: Target Cartesian position
  • pos_qx, pos_qy, pos_qz, pos_qw: Orientation quaternion of the target pose
  • pos_via_x, pos_via_y, pos_via_z: Intermediate via-point position for circular motion
  • pos_via_qx, pos_via_qy, pos_via_qz, pos_via_qw: Orientation quaternion of via-point
  • blend_radius: Blending radius for smooth transitions
  • velocity: Desired motion velocity
  • acceleration: Desired motion acceleration
  • move_time: Optional duration for time-based execution (For LINEAR_JOINT and LINEAR_CARTESIAN. If move_time > 0, velocity and acceleration are ignored)

State Interfaces

These interfaces are used to communicate the internal status of the hardware interface back to the motion_primitives_forward_controller.

  • execution_status: Indicates the current execution state of the primitive. Possible values are:
    • IDLE: No motion in progress
    • EXECUTING: Currently executing a primitive
    • SUCCESS: Last command finished successfully
    • ERROR: An error occurred during execution
    • STOPPING: The hardware interface has received the STOP_MOTION command, but the robot has not yet come to a stop.
    • STOPPED: The robot was stopped using the STOP_MOTION command and must be reset with the RESET_STOP command before executing new commands.
  • ready_for_new_primitive: Boolean flag indicating whether the interface is ready to receive a new motion primitive

## Parameters This controller uses the generate_parameter_library to handle its parameters. The parameter definition file located in the src folder contains descriptions for all the parameters used by the controller. An example parameter file for this controller can be found in the test directory.

Architecture Overview

Architecture for a UR robot with Universal_Robots_ROS2_Driver in motion primitives mode.

UR Robot Architecture

Architecture for a KUKA robot with kuka_eki_motion_primitives_hw_interface.

KUKA Robot Architecture

Demo-Video with UR10e

UR demo video

Demo-Video with KR3

KUKA demo video

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged motion_primitives_forward_controller at Robotics Stack Exchange

No version for distro jazzy showing kilted. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 5.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros-controls/ros2_controllers.git
VCS Type git
VCS Version master
Last Updated 2025-08-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Package to control robots using motion primitives like PTP, LIN and CIRC

Additional Links

Maintainers

  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

  • Mathias Fuhrer

motion_primitive_controllers

Package to control robots using motion primitives like LINEAR_JOINT (PTP/ MOVEJ), LINEAR_CARTESIAN (LIN/ MOVEL) and CIRCULAR_CARTESIAN (CIRC/ MOVEC)

Description

This project provides an interface for sending motion primitives to an industrial robot controller using the ExecuteMotionPrimitiveSequence.action action from control_msgs. The controller receives the primitives via the action interface and forwards them through command interfaces to the robot-specific hardware interface. Currently, hardware interfaces for Universal Robots and KUKA Robots are implemented.

  • Supported motion primitives:
    • LINEAR_JOINT
    • LINEAR_CARTESIAN
    • CIRCULAR_CARTESIAN

If multiple motion primitives are passed to the controller via the action, the controller forwards them to the hardware interface as a sequence. To do this, it first sends MOTION_SEQUENCE_START, followed by each individual primitive, and finally MOTION_SEQUENCE_END. All primitives between these two markers will be executed as a single, continuous sequence. This allows seamless transitions (blending) between primitives.

The action interface also allows stopping the current execution of motion primitives. When a stop request is received, the controller sends STOP_MOTION to the hardware interface, which then halts the robot’s movement. Once the controller receives confirmation that the robot has stopped, it sends RESET_STOP to the hardware interface. After that, new commands can be sent.

Action Image

This can be done, for example, via a Python script as demonstrated in the example python script in the Universal_Robots_ROS2_Driver package.

Command and State Interfaces

To transmit the motion primitives, the following command and state interfaces are required. All interfaces use the naming scheme tf_prefix_ + "motion_primitive/<interface name>" where the tf_prefix is provided to the controller as a parameter.

Command Interfaces

These interfaces are used to send motion primitive data to the hardware interface:

  • motion_type: Type of motion primitive (LINEAR_JOINT, LINEAR_CARTESIAN, CIRCULAR_CARTESIAN)
  • q1q6: Target joint positions for joint-based motion
  • pos_x, pos_y, pos_z: Target Cartesian position
  • pos_qx, pos_qy, pos_qz, pos_qw: Orientation quaternion of the target pose
  • pos_via_x, pos_via_y, pos_via_z: Intermediate via-point position for circular motion
  • pos_via_qx, pos_via_qy, pos_via_qz, pos_via_qw: Orientation quaternion of via-point
  • blend_radius: Blending radius for smooth transitions
  • velocity: Desired motion velocity
  • acceleration: Desired motion acceleration
  • move_time: Optional duration for time-based execution (For LINEAR_JOINT and LINEAR_CARTESIAN. If move_time > 0, velocity and acceleration are ignored)

State Interfaces

These interfaces are used to communicate the internal status of the hardware interface back to the motion_primitives_forward_controller.

  • execution_status: Indicates the current execution state of the primitive. Possible values are:
    • IDLE: No motion in progress
    • EXECUTING: Currently executing a primitive
    • SUCCESS: Last command finished successfully
    • ERROR: An error occurred during execution
    • STOPPING: The hardware interface has received the STOP_MOTION command, but the robot has not yet come to a stop.
    • STOPPED: The robot was stopped using the STOP_MOTION command and must be reset with the RESET_STOP command before executing new commands.
  • ready_for_new_primitive: Boolean flag indicating whether the interface is ready to receive a new motion primitive

## Parameters This controller uses the generate_parameter_library to handle its parameters. The parameter definition file located in the src folder contains descriptions for all the parameters used by the controller. An example parameter file for this controller can be found in the test directory.

Architecture Overview

Architecture for a UR robot with Universal_Robots_ROS2_Driver in motion primitives mode.

UR Robot Architecture

Architecture for a KUKA robot with kuka_eki_motion_primitives_hw_interface.

KUKA Robot Architecture

Demo-Video with UR10e

UR demo video

Demo-Video with KR3

KUKA demo video

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged motion_primitives_forward_controller at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 5.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros-controls/ros2_controllers.git
VCS Type git
VCS Version master
Last Updated 2025-08-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Package to control robots using motion primitives like PTP, LIN and CIRC

Additional Links

Maintainers

  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

  • Mathias Fuhrer

motion_primitive_controllers

Package to control robots using motion primitives like LINEAR_JOINT (PTP/ MOVEJ), LINEAR_CARTESIAN (LIN/ MOVEL) and CIRCULAR_CARTESIAN (CIRC/ MOVEC)

Description

This project provides an interface for sending motion primitives to an industrial robot controller using the ExecuteMotionPrimitiveSequence.action action from control_msgs. The controller receives the primitives via the action interface and forwards them through command interfaces to the robot-specific hardware interface. Currently, hardware interfaces for Universal Robots and KUKA Robots are implemented.

  • Supported motion primitives:
    • LINEAR_JOINT
    • LINEAR_CARTESIAN
    • CIRCULAR_CARTESIAN

If multiple motion primitives are passed to the controller via the action, the controller forwards them to the hardware interface as a sequence. To do this, it first sends MOTION_SEQUENCE_START, followed by each individual primitive, and finally MOTION_SEQUENCE_END. All primitives between these two markers will be executed as a single, continuous sequence. This allows seamless transitions (blending) between primitives.

The action interface also allows stopping the current execution of motion primitives. When a stop request is received, the controller sends STOP_MOTION to the hardware interface, which then halts the robot’s movement. Once the controller receives confirmation that the robot has stopped, it sends RESET_STOP to the hardware interface. After that, new commands can be sent.

Action Image

This can be done, for example, via a Python script as demonstrated in the example python script in the Universal_Robots_ROS2_Driver package.

Command and State Interfaces

To transmit the motion primitives, the following command and state interfaces are required. All interfaces use the naming scheme tf_prefix_ + "motion_primitive/<interface name>" where the tf_prefix is provided to the controller as a parameter.

Command Interfaces

These interfaces are used to send motion primitive data to the hardware interface:

  • motion_type: Type of motion primitive (LINEAR_JOINT, LINEAR_CARTESIAN, CIRCULAR_CARTESIAN)
  • q1q6: Target joint positions for joint-based motion
  • pos_x, pos_y, pos_z: Target Cartesian position
  • pos_qx, pos_qy, pos_qz, pos_qw: Orientation quaternion of the target pose
  • pos_via_x, pos_via_y, pos_via_z: Intermediate via-point position for circular motion
  • pos_via_qx, pos_via_qy, pos_via_qz, pos_via_qw: Orientation quaternion of via-point
  • blend_radius: Blending radius for smooth transitions
  • velocity: Desired motion velocity
  • acceleration: Desired motion acceleration
  • move_time: Optional duration for time-based execution (For LINEAR_JOINT and LINEAR_CARTESIAN. If move_time > 0, velocity and acceleration are ignored)

State Interfaces

These interfaces are used to communicate the internal status of the hardware interface back to the motion_primitives_forward_controller.

  • execution_status: Indicates the current execution state of the primitive. Possible values are:
    • IDLE: No motion in progress
    • EXECUTING: Currently executing a primitive
    • SUCCESS: Last command finished successfully
    • ERROR: An error occurred during execution
    • STOPPING: The hardware interface has received the STOP_MOTION command, but the robot has not yet come to a stop.
    • STOPPED: The robot was stopped using the STOP_MOTION command and must be reset with the RESET_STOP command before executing new commands.
  • ready_for_new_primitive: Boolean flag indicating whether the interface is ready to receive a new motion primitive

## Parameters This controller uses the generate_parameter_library to handle its parameters. The parameter definition file located in the src folder contains descriptions for all the parameters used by the controller. An example parameter file for this controller can be found in the test directory.

Architecture Overview

Architecture for a UR robot with Universal_Robots_ROS2_Driver in motion primitives mode.

UR Robot Architecture

Architecture for a KUKA robot with kuka_eki_motion_primitives_hw_interface.

KUKA Robot Architecture

Demo-Video with UR10e

UR demo video

Demo-Video with KR3

KUKA demo video

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged motion_primitives_forward_controller at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 5.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros-controls/ros2_controllers.git
VCS Type git
VCS Version master
Last Updated 2025-08-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Package to control robots using motion primitives like PTP, LIN and CIRC

Additional Links

Maintainers

  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

  • Mathias Fuhrer

motion_primitive_controllers

Package to control robots using motion primitives like LINEAR_JOINT (PTP/ MOVEJ), LINEAR_CARTESIAN (LIN/ MOVEL) and CIRCULAR_CARTESIAN (CIRC/ MOVEC)

Description

This project provides an interface for sending motion primitives to an industrial robot controller using the ExecuteMotionPrimitiveSequence.action action from control_msgs. The controller receives the primitives via the action interface and forwards them through command interfaces to the robot-specific hardware interface. Currently, hardware interfaces for Universal Robots and KUKA Robots are implemented.

  • Supported motion primitives:
    • LINEAR_JOINT
    • LINEAR_CARTESIAN
    • CIRCULAR_CARTESIAN

If multiple motion primitives are passed to the controller via the action, the controller forwards them to the hardware interface as a sequence. To do this, it first sends MOTION_SEQUENCE_START, followed by each individual primitive, and finally MOTION_SEQUENCE_END. All primitives between these two markers will be executed as a single, continuous sequence. This allows seamless transitions (blending) between primitives.

The action interface also allows stopping the current execution of motion primitives. When a stop request is received, the controller sends STOP_MOTION to the hardware interface, which then halts the robot’s movement. Once the controller receives confirmation that the robot has stopped, it sends RESET_STOP to the hardware interface. After that, new commands can be sent.

Action Image

This can be done, for example, via a Python script as demonstrated in the example python script in the Universal_Robots_ROS2_Driver package.

Command and State Interfaces

To transmit the motion primitives, the following command and state interfaces are required. All interfaces use the naming scheme tf_prefix_ + "motion_primitive/<interface name>" where the tf_prefix is provided to the controller as a parameter.

Command Interfaces

These interfaces are used to send motion primitive data to the hardware interface:

  • motion_type: Type of motion primitive (LINEAR_JOINT, LINEAR_CARTESIAN, CIRCULAR_CARTESIAN)
  • q1q6: Target joint positions for joint-based motion
  • pos_x, pos_y, pos_z: Target Cartesian position
  • pos_qx, pos_qy, pos_qz, pos_qw: Orientation quaternion of the target pose
  • pos_via_x, pos_via_y, pos_via_z: Intermediate via-point position for circular motion
  • pos_via_qx, pos_via_qy, pos_via_qz, pos_via_qw: Orientation quaternion of via-point
  • blend_radius: Blending radius for smooth transitions
  • velocity: Desired motion velocity
  • acceleration: Desired motion acceleration
  • move_time: Optional duration for time-based execution (For LINEAR_JOINT and LINEAR_CARTESIAN. If move_time > 0, velocity and acceleration are ignored)

State Interfaces

These interfaces are used to communicate the internal status of the hardware interface back to the motion_primitives_forward_controller.

  • execution_status: Indicates the current execution state of the primitive. Possible values are:
    • IDLE: No motion in progress
    • EXECUTING: Currently executing a primitive
    • SUCCESS: Last command finished successfully
    • ERROR: An error occurred during execution
    • STOPPING: The hardware interface has received the STOP_MOTION command, but the robot has not yet come to a stop.
    • STOPPED: The robot was stopped using the STOP_MOTION command and must be reset with the RESET_STOP command before executing new commands.
  • ready_for_new_primitive: Boolean flag indicating whether the interface is ready to receive a new motion primitive

## Parameters This controller uses the generate_parameter_library to handle its parameters. The parameter definition file located in the src folder contains descriptions for all the parameters used by the controller. An example parameter file for this controller can be found in the test directory.

Architecture Overview

Architecture for a UR robot with Universal_Robots_ROS2_Driver in motion primitives mode.

UR Robot Architecture

Architecture for a KUKA robot with kuka_eki_motion_primitives_hw_interface.

KUKA Robot Architecture

Demo-Video with UR10e

UR demo video

Demo-Video with KR3

KUKA demo video

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged motion_primitives_forward_controller at Robotics Stack Exchange

No version for distro ardent showing kilted. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 5.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros-controls/ros2_controllers.git
VCS Type git
VCS Version master
Last Updated 2025-08-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Package to control robots using motion primitives like PTP, LIN and CIRC

Additional Links

Maintainers

  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

  • Mathias Fuhrer

motion_primitive_controllers

Package to control robots using motion primitives like LINEAR_JOINT (PTP/ MOVEJ), LINEAR_CARTESIAN (LIN/ MOVEL) and CIRCULAR_CARTESIAN (CIRC/ MOVEC)

Description

This project provides an interface for sending motion primitives to an industrial robot controller using the ExecuteMotionPrimitiveSequence.action action from control_msgs. The controller receives the primitives via the action interface and forwards them through command interfaces to the robot-specific hardware interface. Currently, hardware interfaces for Universal Robots and KUKA Robots are implemented.

  • Supported motion primitives:
    • LINEAR_JOINT
    • LINEAR_CARTESIAN
    • CIRCULAR_CARTESIAN

If multiple motion primitives are passed to the controller via the action, the controller forwards them to the hardware interface as a sequence. To do this, it first sends MOTION_SEQUENCE_START, followed by each individual primitive, and finally MOTION_SEQUENCE_END. All primitives between these two markers will be executed as a single, continuous sequence. This allows seamless transitions (blending) between primitives.

The action interface also allows stopping the current execution of motion primitives. When a stop request is received, the controller sends STOP_MOTION to the hardware interface, which then halts the robot’s movement. Once the controller receives confirmation that the robot has stopped, it sends RESET_STOP to the hardware interface. After that, new commands can be sent.

Action Image

This can be done, for example, via a Python script as demonstrated in the example python script in the Universal_Robots_ROS2_Driver package.

Command and State Interfaces

To transmit the motion primitives, the following command and state interfaces are required. All interfaces use the naming scheme tf_prefix_ + "motion_primitive/<interface name>" where the tf_prefix is provided to the controller as a parameter.

Command Interfaces

These interfaces are used to send motion primitive data to the hardware interface:

  • motion_type: Type of motion primitive (LINEAR_JOINT, LINEAR_CARTESIAN, CIRCULAR_CARTESIAN)
  • q1q6: Target joint positions for joint-based motion
  • pos_x, pos_y, pos_z: Target Cartesian position
  • pos_qx, pos_qy, pos_qz, pos_qw: Orientation quaternion of the target pose
  • pos_via_x, pos_via_y, pos_via_z: Intermediate via-point position for circular motion
  • pos_via_qx, pos_via_qy, pos_via_qz, pos_via_qw: Orientation quaternion of via-point
  • blend_radius: Blending radius for smooth transitions
  • velocity: Desired motion velocity
  • acceleration: Desired motion acceleration
  • move_time: Optional duration for time-based execution (For LINEAR_JOINT and LINEAR_CARTESIAN. If move_time > 0, velocity and acceleration are ignored)

State Interfaces

These interfaces are used to communicate the internal status of the hardware interface back to the motion_primitives_forward_controller.

  • execution_status: Indicates the current execution state of the primitive. Possible values are:
    • IDLE: No motion in progress
    • EXECUTING: Currently executing a primitive
    • SUCCESS: Last command finished successfully
    • ERROR: An error occurred during execution
    • STOPPING: The hardware interface has received the STOP_MOTION command, but the robot has not yet come to a stop.
    • STOPPED: The robot was stopped using the STOP_MOTION command and must be reset with the RESET_STOP command before executing new commands.
  • ready_for_new_primitive: Boolean flag indicating whether the interface is ready to receive a new motion primitive

## Parameters This controller uses the generate_parameter_library to handle its parameters. The parameter definition file located in the src folder contains descriptions for all the parameters used by the controller. An example parameter file for this controller can be found in the test directory.

Architecture Overview

Architecture for a UR robot with Universal_Robots_ROS2_Driver in motion primitives mode.

UR Robot Architecture

Architecture for a KUKA robot with kuka_eki_motion_primitives_hw_interface.

KUKA Robot Architecture

Demo-Video with UR10e

UR demo video

Demo-Video with KR3

KUKA demo video

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged motion_primitives_forward_controller at Robotics Stack Exchange

No version for distro bouncy showing kilted. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 5.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros-controls/ros2_controllers.git
VCS Type git
VCS Version master
Last Updated 2025-08-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Package to control robots using motion primitives like PTP, LIN and CIRC

Additional Links

Maintainers

  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

  • Mathias Fuhrer

motion_primitive_controllers

Package to control robots using motion primitives like LINEAR_JOINT (PTP/ MOVEJ), LINEAR_CARTESIAN (LIN/ MOVEL) and CIRCULAR_CARTESIAN (CIRC/ MOVEC)

Description

This project provides an interface for sending motion primitives to an industrial robot controller using the ExecuteMotionPrimitiveSequence.action action from control_msgs. The controller receives the primitives via the action interface and forwards them through command interfaces to the robot-specific hardware interface. Currently, hardware interfaces for Universal Robots and KUKA Robots are implemented.

  • Supported motion primitives:
    • LINEAR_JOINT
    • LINEAR_CARTESIAN
    • CIRCULAR_CARTESIAN

If multiple motion primitives are passed to the controller via the action, the controller forwards them to the hardware interface as a sequence. To do this, it first sends MOTION_SEQUENCE_START, followed by each individual primitive, and finally MOTION_SEQUENCE_END. All primitives between these two markers will be executed as a single, continuous sequence. This allows seamless transitions (blending) between primitives.

The action interface also allows stopping the current execution of motion primitives. When a stop request is received, the controller sends STOP_MOTION to the hardware interface, which then halts the robot’s movement. Once the controller receives confirmation that the robot has stopped, it sends RESET_STOP to the hardware interface. After that, new commands can be sent.

Action Image

This can be done, for example, via a Python script as demonstrated in the example python script in the Universal_Robots_ROS2_Driver package.

Command and State Interfaces

To transmit the motion primitives, the following command and state interfaces are required. All interfaces use the naming scheme tf_prefix_ + "motion_primitive/<interface name>" where the tf_prefix is provided to the controller as a parameter.

Command Interfaces

These interfaces are used to send motion primitive data to the hardware interface:

  • motion_type: Type of motion primitive (LINEAR_JOINT, LINEAR_CARTESIAN, CIRCULAR_CARTESIAN)
  • q1q6: Target joint positions for joint-based motion
  • pos_x, pos_y, pos_z: Target Cartesian position
  • pos_qx, pos_qy, pos_qz, pos_qw: Orientation quaternion of the target pose
  • pos_via_x, pos_via_y, pos_via_z: Intermediate via-point position for circular motion
  • pos_via_qx, pos_via_qy, pos_via_qz, pos_via_qw: Orientation quaternion of via-point
  • blend_radius: Blending radius for smooth transitions
  • velocity: Desired motion velocity
  • acceleration: Desired motion acceleration
  • move_time: Optional duration for time-based execution (For LINEAR_JOINT and LINEAR_CARTESIAN. If move_time > 0, velocity and acceleration are ignored)

State Interfaces

These interfaces are used to communicate the internal status of the hardware interface back to the motion_primitives_forward_controller.

  • execution_status: Indicates the current execution state of the primitive. Possible values are:
    • IDLE: No motion in progress
    • EXECUTING: Currently executing a primitive
    • SUCCESS: Last command finished successfully
    • ERROR: An error occurred during execution
    • STOPPING: The hardware interface has received the STOP_MOTION command, but the robot has not yet come to a stop.
    • STOPPED: The robot was stopped using the STOP_MOTION command and must be reset with the RESET_STOP command before executing new commands.
  • ready_for_new_primitive: Boolean flag indicating whether the interface is ready to receive a new motion primitive

## Parameters This controller uses the generate_parameter_library to handle its parameters. The parameter definition file located in the src folder contains descriptions for all the parameters used by the controller. An example parameter file for this controller can be found in the test directory.

Architecture Overview

Architecture for a UR robot with Universal_Robots_ROS2_Driver in motion primitives mode.

UR Robot Architecture

Architecture for a KUKA robot with kuka_eki_motion_primitives_hw_interface.

KUKA Robot Architecture

Demo-Video with UR10e

UR demo video

Demo-Video with KR3

KUKA demo video

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged motion_primitives_forward_controller at Robotics Stack Exchange

No version for distro crystal showing kilted. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 5.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros-controls/ros2_controllers.git
VCS Type git
VCS Version master
Last Updated 2025-08-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Package to control robots using motion primitives like PTP, LIN and CIRC

Additional Links

Maintainers

  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

  • Mathias Fuhrer

motion_primitive_controllers

Package to control robots using motion primitives like LINEAR_JOINT (PTP/ MOVEJ), LINEAR_CARTESIAN (LIN/ MOVEL) and CIRCULAR_CARTESIAN (CIRC/ MOVEC)

Description

This project provides an interface for sending motion primitives to an industrial robot controller using the ExecuteMotionPrimitiveSequence.action action from control_msgs. The controller receives the primitives via the action interface and forwards them through command interfaces to the robot-specific hardware interface. Currently, hardware interfaces for Universal Robots and KUKA Robots are implemented.

  • Supported motion primitives:
    • LINEAR_JOINT
    • LINEAR_CARTESIAN
    • CIRCULAR_CARTESIAN

If multiple motion primitives are passed to the controller via the action, the controller forwards them to the hardware interface as a sequence. To do this, it first sends MOTION_SEQUENCE_START, followed by each individual primitive, and finally MOTION_SEQUENCE_END. All primitives between these two markers will be executed as a single, continuous sequence. This allows seamless transitions (blending) between primitives.

The action interface also allows stopping the current execution of motion primitives. When a stop request is received, the controller sends STOP_MOTION to the hardware interface, which then halts the robot’s movement. Once the controller receives confirmation that the robot has stopped, it sends RESET_STOP to the hardware interface. After that, new commands can be sent.

Action Image

This can be done, for example, via a Python script as demonstrated in the example python script in the Universal_Robots_ROS2_Driver package.

Command and State Interfaces

To transmit the motion primitives, the following command and state interfaces are required. All interfaces use the naming scheme tf_prefix_ + "motion_primitive/<interface name>" where the tf_prefix is provided to the controller as a parameter.

Command Interfaces

These interfaces are used to send motion primitive data to the hardware interface:

  • motion_type: Type of motion primitive (LINEAR_JOINT, LINEAR_CARTESIAN, CIRCULAR_CARTESIAN)
  • q1q6: Target joint positions for joint-based motion
  • pos_x, pos_y, pos_z: Target Cartesian position
  • pos_qx, pos_qy, pos_qz, pos_qw: Orientation quaternion of the target pose
  • pos_via_x, pos_via_y, pos_via_z: Intermediate via-point position for circular motion
  • pos_via_qx, pos_via_qy, pos_via_qz, pos_via_qw: Orientation quaternion of via-point
  • blend_radius: Blending radius for smooth transitions
  • velocity: Desired motion velocity
  • acceleration: Desired motion acceleration
  • move_time: Optional duration for time-based execution (For LINEAR_JOINT and LINEAR_CARTESIAN. If move_time > 0, velocity and acceleration are ignored)

State Interfaces

These interfaces are used to communicate the internal status of the hardware interface back to the motion_primitives_forward_controller.

  • execution_status: Indicates the current execution state of the primitive. Possible values are:
    • IDLE: No motion in progress
    • EXECUTING: Currently executing a primitive
    • SUCCESS: Last command finished successfully
    • ERROR: An error occurred during execution
    • STOPPING: The hardware interface has received the STOP_MOTION command, but the robot has not yet come to a stop.
    • STOPPED: The robot was stopped using the STOP_MOTION command and must be reset with the RESET_STOP command before executing new commands.
  • ready_for_new_primitive: Boolean flag indicating whether the interface is ready to receive a new motion primitive

## Parameters This controller uses the generate_parameter_library to handle its parameters. The parameter definition file located in the src folder contains descriptions for all the parameters used by the controller. An example parameter file for this controller can be found in the test directory.

Architecture Overview

Architecture for a UR robot with Universal_Robots_ROS2_Driver in motion primitives mode.

UR Robot Architecture

Architecture for a KUKA robot with kuka_eki_motion_primitives_hw_interface.

KUKA Robot Architecture

Demo-Video with UR10e

UR demo video

Demo-Video with KR3

KUKA demo video

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged motion_primitives_forward_controller at Robotics Stack Exchange

No version for distro eloquent showing kilted. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 5.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros-controls/ros2_controllers.git
VCS Type git
VCS Version master
Last Updated 2025-08-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Package to control robots using motion primitives like PTP, LIN and CIRC

Additional Links

Maintainers

  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

  • Mathias Fuhrer

motion_primitive_controllers

Package to control robots using motion primitives like LINEAR_JOINT (PTP/ MOVEJ), LINEAR_CARTESIAN (LIN/ MOVEL) and CIRCULAR_CARTESIAN (CIRC/ MOVEC)

Description

This project provides an interface for sending motion primitives to an industrial robot controller using the ExecuteMotionPrimitiveSequence.action action from control_msgs. The controller receives the primitives via the action interface and forwards them through command interfaces to the robot-specific hardware interface. Currently, hardware interfaces for Universal Robots and KUKA Robots are implemented.

  • Supported motion primitives:
    • LINEAR_JOINT
    • LINEAR_CARTESIAN
    • CIRCULAR_CARTESIAN

If multiple motion primitives are passed to the controller via the action, the controller forwards them to the hardware interface as a sequence. To do this, it first sends MOTION_SEQUENCE_START, followed by each individual primitive, and finally MOTION_SEQUENCE_END. All primitives between these two markers will be executed as a single, continuous sequence. This allows seamless transitions (blending) between primitives.

The action interface also allows stopping the current execution of motion primitives. When a stop request is received, the controller sends STOP_MOTION to the hardware interface, which then halts the robot’s movement. Once the controller receives confirmation that the robot has stopped, it sends RESET_STOP to the hardware interface. After that, new commands can be sent.

Action Image

This can be done, for example, via a Python script as demonstrated in the example python script in the Universal_Robots_ROS2_Driver package.

Command and State Interfaces

To transmit the motion primitives, the following command and state interfaces are required. All interfaces use the naming scheme tf_prefix_ + "motion_primitive/<interface name>" where the tf_prefix is provided to the controller as a parameter.

Command Interfaces

These interfaces are used to send motion primitive data to the hardware interface:

  • motion_type: Type of motion primitive (LINEAR_JOINT, LINEAR_CARTESIAN, CIRCULAR_CARTESIAN)
  • q1q6: Target joint positions for joint-based motion
  • pos_x, pos_y, pos_z: Target Cartesian position
  • pos_qx, pos_qy, pos_qz, pos_qw: Orientation quaternion of the target pose
  • pos_via_x, pos_via_y, pos_via_z: Intermediate via-point position for circular motion
  • pos_via_qx, pos_via_qy, pos_via_qz, pos_via_qw: Orientation quaternion of via-point
  • blend_radius: Blending radius for smooth transitions
  • velocity: Desired motion velocity
  • acceleration: Desired motion acceleration
  • move_time: Optional duration for time-based execution (For LINEAR_JOINT and LINEAR_CARTESIAN. If move_time > 0, velocity and acceleration are ignored)

State Interfaces

These interfaces are used to communicate the internal status of the hardware interface back to the motion_primitives_forward_controller.

  • execution_status: Indicates the current execution state of the primitive. Possible values are:
    • IDLE: No motion in progress
    • EXECUTING: Currently executing a primitive
    • SUCCESS: Last command finished successfully
    • ERROR: An error occurred during execution
    • STOPPING: The hardware interface has received the STOP_MOTION command, but the robot has not yet come to a stop.
    • STOPPED: The robot was stopped using the STOP_MOTION command and must be reset with the RESET_STOP command before executing new commands.
  • ready_for_new_primitive: Boolean flag indicating whether the interface is ready to receive a new motion primitive

## Parameters This controller uses the generate_parameter_library to handle its parameters. The parameter definition file located in the src folder contains descriptions for all the parameters used by the controller. An example parameter file for this controller can be found in the test directory.

Architecture Overview

Architecture for a UR robot with Universal_Robots_ROS2_Driver in motion primitives mode.

UR Robot Architecture

Architecture for a KUKA robot with kuka_eki_motion_primitives_hw_interface.

KUKA Robot Architecture

Demo-Video with UR10e

UR demo video

Demo-Video with KR3

KUKA demo video

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged motion_primitives_forward_controller at Robotics Stack Exchange

No version for distro dashing showing kilted. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 5.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros-controls/ros2_controllers.git
VCS Type git
VCS Version master
Last Updated 2025-08-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Package to control robots using motion primitives like PTP, LIN and CIRC

Additional Links

Maintainers

  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

  • Mathias Fuhrer

motion_primitive_controllers

Package to control robots using motion primitives like LINEAR_JOINT (PTP/ MOVEJ), LINEAR_CARTESIAN (LIN/ MOVEL) and CIRCULAR_CARTESIAN (CIRC/ MOVEC)

Description

This project provides an interface for sending motion primitives to an industrial robot controller using the ExecuteMotionPrimitiveSequence.action action from control_msgs. The controller receives the primitives via the action interface and forwards them through command interfaces to the robot-specific hardware interface. Currently, hardware interfaces for Universal Robots and KUKA Robots are implemented.

  • Supported motion primitives:
    • LINEAR_JOINT
    • LINEAR_CARTESIAN
    • CIRCULAR_CARTESIAN

If multiple motion primitives are passed to the controller via the action, the controller forwards them to the hardware interface as a sequence. To do this, it first sends MOTION_SEQUENCE_START, followed by each individual primitive, and finally MOTION_SEQUENCE_END. All primitives between these two markers will be executed as a single, continuous sequence. This allows seamless transitions (blending) between primitives.

The action interface also allows stopping the current execution of motion primitives. When a stop request is received, the controller sends STOP_MOTION to the hardware interface, which then halts the robot’s movement. Once the controller receives confirmation that the robot has stopped, it sends RESET_STOP to the hardware interface. After that, new commands can be sent.

Action Image

This can be done, for example, via a Python script as demonstrated in the example python script in the Universal_Robots_ROS2_Driver package.

Command and State Interfaces

To transmit the motion primitives, the following command and state interfaces are required. All interfaces use the naming scheme tf_prefix_ + "motion_primitive/<interface name>" where the tf_prefix is provided to the controller as a parameter.

Command Interfaces

These interfaces are used to send motion primitive data to the hardware interface:

  • motion_type: Type of motion primitive (LINEAR_JOINT, LINEAR_CARTESIAN, CIRCULAR_CARTESIAN)
  • q1q6: Target joint positions for joint-based motion
  • pos_x, pos_y, pos_z: Target Cartesian position
  • pos_qx, pos_qy, pos_qz, pos_qw: Orientation quaternion of the target pose
  • pos_via_x, pos_via_y, pos_via_z: Intermediate via-point position for circular motion
  • pos_via_qx, pos_via_qy, pos_via_qz, pos_via_qw: Orientation quaternion of via-point
  • blend_radius: Blending radius for smooth transitions
  • velocity: Desired motion velocity
  • acceleration: Desired motion acceleration
  • move_time: Optional duration for time-based execution (For LINEAR_JOINT and LINEAR_CARTESIAN. If move_time > 0, velocity and acceleration are ignored)

State Interfaces

These interfaces are used to communicate the internal status of the hardware interface back to the motion_primitives_forward_controller.

  • execution_status: Indicates the current execution state of the primitive. Possible values are:
    • IDLE: No motion in progress
    • EXECUTING: Currently executing a primitive
    • SUCCESS: Last command finished successfully
    • ERROR: An error occurred during execution
    • STOPPING: The hardware interface has received the STOP_MOTION command, but the robot has not yet come to a stop.
    • STOPPED: The robot was stopped using the STOP_MOTION command and must be reset with the RESET_STOP command before executing new commands.
  • ready_for_new_primitive: Boolean flag indicating whether the interface is ready to receive a new motion primitive

## Parameters This controller uses the generate_parameter_library to handle its parameters. The parameter definition file located in the src folder contains descriptions for all the parameters used by the controller. An example parameter file for this controller can be found in the test directory.

Architecture Overview

Architecture for a UR robot with Universal_Robots_ROS2_Driver in motion primitives mode.

UR Robot Architecture

Architecture for a KUKA robot with kuka_eki_motion_primitives_hw_interface.

KUKA Robot Architecture

Demo-Video with UR10e

UR demo video

Demo-Video with KR3

KUKA demo video

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged motion_primitives_forward_controller at Robotics Stack Exchange

No version for distro galactic showing kilted. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 5.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros-controls/ros2_controllers.git
VCS Type git
VCS Version master
Last Updated 2025-08-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Package to control robots using motion primitives like PTP, LIN and CIRC

Additional Links

Maintainers

  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

  • Mathias Fuhrer

motion_primitive_controllers

Package to control robots using motion primitives like LINEAR_JOINT (PTP/ MOVEJ), LINEAR_CARTESIAN (LIN/ MOVEL) and CIRCULAR_CARTESIAN (CIRC/ MOVEC)

Description

This project provides an interface for sending motion primitives to an industrial robot controller using the ExecuteMotionPrimitiveSequence.action action from control_msgs. The controller receives the primitives via the action interface and forwards them through command interfaces to the robot-specific hardware interface. Currently, hardware interfaces for Universal Robots and KUKA Robots are implemented.

  • Supported motion primitives:
    • LINEAR_JOINT
    • LINEAR_CARTESIAN
    • CIRCULAR_CARTESIAN

If multiple motion primitives are passed to the controller via the action, the controller forwards them to the hardware interface as a sequence. To do this, it first sends MOTION_SEQUENCE_START, followed by each individual primitive, and finally MOTION_SEQUENCE_END. All primitives between these two markers will be executed as a single, continuous sequence. This allows seamless transitions (blending) between primitives.

The action interface also allows stopping the current execution of motion primitives. When a stop request is received, the controller sends STOP_MOTION to the hardware interface, which then halts the robot’s movement. Once the controller receives confirmation that the robot has stopped, it sends RESET_STOP to the hardware interface. After that, new commands can be sent.

Action Image

This can be done, for example, via a Python script as demonstrated in the example python script in the Universal_Robots_ROS2_Driver package.

Command and State Interfaces

To transmit the motion primitives, the following command and state interfaces are required. All interfaces use the naming scheme tf_prefix_ + "motion_primitive/<interface name>" where the tf_prefix is provided to the controller as a parameter.

Command Interfaces

These interfaces are used to send motion primitive data to the hardware interface:

  • motion_type: Type of motion primitive (LINEAR_JOINT, LINEAR_CARTESIAN, CIRCULAR_CARTESIAN)
  • q1q6: Target joint positions for joint-based motion
  • pos_x, pos_y, pos_z: Target Cartesian position
  • pos_qx, pos_qy, pos_qz, pos_qw: Orientation quaternion of the target pose
  • pos_via_x, pos_via_y, pos_via_z: Intermediate via-point position for circular motion
  • pos_via_qx, pos_via_qy, pos_via_qz, pos_via_qw: Orientation quaternion of via-point
  • blend_radius: Blending radius for smooth transitions
  • velocity: Desired motion velocity
  • acceleration: Desired motion acceleration
  • move_time: Optional duration for time-based execution (For LINEAR_JOINT and LINEAR_CARTESIAN. If move_time > 0, velocity and acceleration are ignored)

State Interfaces

These interfaces are used to communicate the internal status of the hardware interface back to the motion_primitives_forward_controller.

  • execution_status: Indicates the current execution state of the primitive. Possible values are:
    • IDLE: No motion in progress
    • EXECUTING: Currently executing a primitive
    • SUCCESS: Last command finished successfully
    • ERROR: An error occurred during execution
    • STOPPING: The hardware interface has received the STOP_MOTION command, but the robot has not yet come to a stop.
    • STOPPED: The robot was stopped using the STOP_MOTION command and must be reset with the RESET_STOP command before executing new commands.
  • ready_for_new_primitive: Boolean flag indicating whether the interface is ready to receive a new motion primitive

## Parameters This controller uses the generate_parameter_library to handle its parameters. The parameter definition file located in the src folder contains descriptions for all the parameters used by the controller. An example parameter file for this controller can be found in the test directory.

Architecture Overview

Architecture for a UR robot with Universal_Robots_ROS2_Driver in motion primitives mode.

UR Robot Architecture

Architecture for a KUKA robot with kuka_eki_motion_primitives_hw_interface.

KUKA Robot Architecture

Demo-Video with UR10e

UR demo video

Demo-Video with KR3

KUKA demo video

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged motion_primitives_forward_controller at Robotics Stack Exchange

No version for distro foxy showing kilted. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 5.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros-controls/ros2_controllers.git
VCS Type git
VCS Version master
Last Updated 2025-08-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Package to control robots using motion primitives like PTP, LIN and CIRC

Additional Links

Maintainers

  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

  • Mathias Fuhrer

motion_primitive_controllers

Package to control robots using motion primitives like LINEAR_JOINT (PTP/ MOVEJ), LINEAR_CARTESIAN (LIN/ MOVEL) and CIRCULAR_CARTESIAN (CIRC/ MOVEC)

Description

This project provides an interface for sending motion primitives to an industrial robot controller using the ExecuteMotionPrimitiveSequence.action action from control_msgs. The controller receives the primitives via the action interface and forwards them through command interfaces to the robot-specific hardware interface. Currently, hardware interfaces for Universal Robots and KUKA Robots are implemented.

  • Supported motion primitives:
    • LINEAR_JOINT
    • LINEAR_CARTESIAN
    • CIRCULAR_CARTESIAN

If multiple motion primitives are passed to the controller via the action, the controller forwards them to the hardware interface as a sequence. To do this, it first sends MOTION_SEQUENCE_START, followed by each individual primitive, and finally MOTION_SEQUENCE_END. All primitives between these two markers will be executed as a single, continuous sequence. This allows seamless transitions (blending) between primitives.

The action interface also allows stopping the current execution of motion primitives. When a stop request is received, the controller sends STOP_MOTION to the hardware interface, which then halts the robot’s movement. Once the controller receives confirmation that the robot has stopped, it sends RESET_STOP to the hardware interface. After that, new commands can be sent.

Action Image

This can be done, for example, via a Python script as demonstrated in the example python script in the Universal_Robots_ROS2_Driver package.

Command and State Interfaces

To transmit the motion primitives, the following command and state interfaces are required. All interfaces use the naming scheme tf_prefix_ + "motion_primitive/<interface name>" where the tf_prefix is provided to the controller as a parameter.

Command Interfaces

These interfaces are used to send motion primitive data to the hardware interface:

  • motion_type: Type of motion primitive (LINEAR_JOINT, LINEAR_CARTESIAN, CIRCULAR_CARTESIAN)
  • q1q6: Target joint positions for joint-based motion
  • pos_x, pos_y, pos_z: Target Cartesian position
  • pos_qx, pos_qy, pos_qz, pos_qw: Orientation quaternion of the target pose
  • pos_via_x, pos_via_y, pos_via_z: Intermediate via-point position for circular motion
  • pos_via_qx, pos_via_qy, pos_via_qz, pos_via_qw: Orientation quaternion of via-point
  • blend_radius: Blending radius for smooth transitions
  • velocity: Desired motion velocity
  • acceleration: Desired motion acceleration
  • move_time: Optional duration for time-based execution (For LINEAR_JOINT and LINEAR_CARTESIAN. If move_time > 0, velocity and acceleration are ignored)

State Interfaces

These interfaces are used to communicate the internal status of the hardware interface back to the motion_primitives_forward_controller.

  • execution_status: Indicates the current execution state of the primitive. Possible values are:
    • IDLE: No motion in progress
    • EXECUTING: Currently executing a primitive
    • SUCCESS: Last command finished successfully
    • ERROR: An error occurred during execution
    • STOPPING: The hardware interface has received the STOP_MOTION command, but the robot has not yet come to a stop.
    • STOPPED: The robot was stopped using the STOP_MOTION command and must be reset with the RESET_STOP command before executing new commands.
  • ready_for_new_primitive: Boolean flag indicating whether the interface is ready to receive a new motion primitive

## Parameters This controller uses the generate_parameter_library to handle its parameters. The parameter definition file located in the src folder contains descriptions for all the parameters used by the controller. An example parameter file for this controller can be found in the test directory.

Architecture Overview

Architecture for a UR robot with Universal_Robots_ROS2_Driver in motion primitives mode.

UR Robot Architecture

Architecture for a KUKA robot with kuka_eki_motion_primitives_hw_interface.

KUKA Robot Architecture

Demo-Video with UR10e

UR demo video

Demo-Video with KR3

KUKA demo video

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged motion_primitives_forward_controller at Robotics Stack Exchange

No version for distro iron showing kilted. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 5.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros-controls/ros2_controllers.git
VCS Type git
VCS Version master
Last Updated 2025-08-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Package to control robots using motion primitives like PTP, LIN and CIRC

Additional Links

Maintainers

  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

  • Mathias Fuhrer

motion_primitive_controllers

Package to control robots using motion primitives like LINEAR_JOINT (PTP/ MOVEJ), LINEAR_CARTESIAN (LIN/ MOVEL) and CIRCULAR_CARTESIAN (CIRC/ MOVEC)

Description

This project provides an interface for sending motion primitives to an industrial robot controller using the ExecuteMotionPrimitiveSequence.action action from control_msgs. The controller receives the primitives via the action interface and forwards them through command interfaces to the robot-specific hardware interface. Currently, hardware interfaces for Universal Robots and KUKA Robots are implemented.

  • Supported motion primitives:
    • LINEAR_JOINT
    • LINEAR_CARTESIAN
    • CIRCULAR_CARTESIAN

If multiple motion primitives are passed to the controller via the action, the controller forwards them to the hardware interface as a sequence. To do this, it first sends MOTION_SEQUENCE_START, followed by each individual primitive, and finally MOTION_SEQUENCE_END. All primitives between these two markers will be executed as a single, continuous sequence. This allows seamless transitions (blending) between primitives.

The action interface also allows stopping the current execution of motion primitives. When a stop request is received, the controller sends STOP_MOTION to the hardware interface, which then halts the robot’s movement. Once the controller receives confirmation that the robot has stopped, it sends RESET_STOP to the hardware interface. After that, new commands can be sent.

Action Image

This can be done, for example, via a Python script as demonstrated in the example python script in the Universal_Robots_ROS2_Driver package.

Command and State Interfaces

To transmit the motion primitives, the following command and state interfaces are required. All interfaces use the naming scheme tf_prefix_ + "motion_primitive/<interface name>" where the tf_prefix is provided to the controller as a parameter.

Command Interfaces

These interfaces are used to send motion primitive data to the hardware interface:

  • motion_type: Type of motion primitive (LINEAR_JOINT, LINEAR_CARTESIAN, CIRCULAR_CARTESIAN)
  • q1q6: Target joint positions for joint-based motion
  • pos_x, pos_y, pos_z: Target Cartesian position
  • pos_qx, pos_qy, pos_qz, pos_qw: Orientation quaternion of the target pose
  • pos_via_x, pos_via_y, pos_via_z: Intermediate via-point position for circular motion
  • pos_via_qx, pos_via_qy, pos_via_qz, pos_via_qw: Orientation quaternion of via-point
  • blend_radius: Blending radius for smooth transitions
  • velocity: Desired motion velocity
  • acceleration: Desired motion acceleration
  • move_time: Optional duration for time-based execution (For LINEAR_JOINT and LINEAR_CARTESIAN. If move_time > 0, velocity and acceleration are ignored)

State Interfaces

These interfaces are used to communicate the internal status of the hardware interface back to the motion_primitives_forward_controller.

  • execution_status: Indicates the current execution state of the primitive. Possible values are:
    • IDLE: No motion in progress
    • EXECUTING: Currently executing a primitive
    • SUCCESS: Last command finished successfully
    • ERROR: An error occurred during execution
    • STOPPING: The hardware interface has received the STOP_MOTION command, but the robot has not yet come to a stop.
    • STOPPED: The robot was stopped using the STOP_MOTION command and must be reset with the RESET_STOP command before executing new commands.
  • ready_for_new_primitive: Boolean flag indicating whether the interface is ready to receive a new motion primitive

## Parameters This controller uses the generate_parameter_library to handle its parameters. The parameter definition file located in the src folder contains descriptions for all the parameters used by the controller. An example parameter file for this controller can be found in the test directory.

Architecture Overview

Architecture for a UR robot with Universal_Robots_ROS2_Driver in motion primitives mode.

UR Robot Architecture

Architecture for a KUKA robot with kuka_eki_motion_primitives_hw_interface.

KUKA Robot Architecture

Demo-Video with UR10e

UR demo video

Demo-Video with KR3

KUKA demo video

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged motion_primitives_forward_controller at Robotics Stack Exchange

No version for distro lunar showing kilted. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 5.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros-controls/ros2_controllers.git
VCS Type git
VCS Version master
Last Updated 2025-08-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Package to control robots using motion primitives like PTP, LIN and CIRC

Additional Links

Maintainers

  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

  • Mathias Fuhrer

motion_primitive_controllers

Package to control robots using motion primitives like LINEAR_JOINT (PTP/ MOVEJ), LINEAR_CARTESIAN (LIN/ MOVEL) and CIRCULAR_CARTESIAN (CIRC/ MOVEC)

Description

This project provides an interface for sending motion primitives to an industrial robot controller using the ExecuteMotionPrimitiveSequence.action action from control_msgs. The controller receives the primitives via the action interface and forwards them through command interfaces to the robot-specific hardware interface. Currently, hardware interfaces for Universal Robots and KUKA Robots are implemented.

  • Supported motion primitives:
    • LINEAR_JOINT
    • LINEAR_CARTESIAN
    • CIRCULAR_CARTESIAN

If multiple motion primitives are passed to the controller via the action, the controller forwards them to the hardware interface as a sequence. To do this, it first sends MOTION_SEQUENCE_START, followed by each individual primitive, and finally MOTION_SEQUENCE_END. All primitives between these two markers will be executed as a single, continuous sequence. This allows seamless transitions (blending) between primitives.

The action interface also allows stopping the current execution of motion primitives. When a stop request is received, the controller sends STOP_MOTION to the hardware interface, which then halts the robot’s movement. Once the controller receives confirmation that the robot has stopped, it sends RESET_STOP to the hardware interface. After that, new commands can be sent.

Action Image

This can be done, for example, via a Python script as demonstrated in the example python script in the Universal_Robots_ROS2_Driver package.

Command and State Interfaces

To transmit the motion primitives, the following command and state interfaces are required. All interfaces use the naming scheme tf_prefix_ + "motion_primitive/<interface name>" where the tf_prefix is provided to the controller as a parameter.

Command Interfaces

These interfaces are used to send motion primitive data to the hardware interface:

  • motion_type: Type of motion primitive (LINEAR_JOINT, LINEAR_CARTESIAN, CIRCULAR_CARTESIAN)
  • q1q6: Target joint positions for joint-based motion
  • pos_x, pos_y, pos_z: Target Cartesian position
  • pos_qx, pos_qy, pos_qz, pos_qw: Orientation quaternion of the target pose
  • pos_via_x, pos_via_y, pos_via_z: Intermediate via-point position for circular motion
  • pos_via_qx, pos_via_qy, pos_via_qz, pos_via_qw: Orientation quaternion of via-point
  • blend_radius: Blending radius for smooth transitions
  • velocity: Desired motion velocity
  • acceleration: Desired motion acceleration
  • move_time: Optional duration for time-based execution (For LINEAR_JOINT and LINEAR_CARTESIAN. If move_time > 0, velocity and acceleration are ignored)

State Interfaces

These interfaces are used to communicate the internal status of the hardware interface back to the motion_primitives_forward_controller.

  • execution_status: Indicates the current execution state of the primitive. Possible values are:
    • IDLE: No motion in progress
    • EXECUTING: Currently executing a primitive
    • SUCCESS: Last command finished successfully
    • ERROR: An error occurred during execution
    • STOPPING: The hardware interface has received the STOP_MOTION command, but the robot has not yet come to a stop.
    • STOPPED: The robot was stopped using the STOP_MOTION command and must be reset with the RESET_STOP command before executing new commands.
  • ready_for_new_primitive: Boolean flag indicating whether the interface is ready to receive a new motion primitive

## Parameters This controller uses the generate_parameter_library to handle its parameters. The parameter definition file located in the src folder contains descriptions for all the parameters used by the controller. An example parameter file for this controller can be found in the test directory.

Architecture Overview

Architecture for a UR robot with Universal_Robots_ROS2_Driver in motion primitives mode.

UR Robot Architecture

Architecture for a KUKA robot with kuka_eki_motion_primitives_hw_interface.

KUKA Robot Architecture

Demo-Video with UR10e

UR demo video

Demo-Video with KR3

KUKA demo video

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged motion_primitives_forward_controller at Robotics Stack Exchange

No version for distro jade showing kilted. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 5.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros-controls/ros2_controllers.git
VCS Type git
VCS Version master
Last Updated 2025-08-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Package to control robots using motion primitives like PTP, LIN and CIRC

Additional Links

Maintainers

  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

  • Mathias Fuhrer

motion_primitive_controllers

Package to control robots using motion primitives like LINEAR_JOINT (PTP/ MOVEJ), LINEAR_CARTESIAN (LIN/ MOVEL) and CIRCULAR_CARTESIAN (CIRC/ MOVEC)

Description

This project provides an interface for sending motion primitives to an industrial robot controller using the ExecuteMotionPrimitiveSequence.action action from control_msgs. The controller receives the primitives via the action interface and forwards them through command interfaces to the robot-specific hardware interface. Currently, hardware interfaces for Universal Robots and KUKA Robots are implemented.

  • Supported motion primitives:
    • LINEAR_JOINT
    • LINEAR_CARTESIAN
    • CIRCULAR_CARTESIAN

If multiple motion primitives are passed to the controller via the action, the controller forwards them to the hardware interface as a sequence. To do this, it first sends MOTION_SEQUENCE_START, followed by each individual primitive, and finally MOTION_SEQUENCE_END. All primitives between these two markers will be executed as a single, continuous sequence. This allows seamless transitions (blending) between primitives.

The action interface also allows stopping the current execution of motion primitives. When a stop request is received, the controller sends STOP_MOTION to the hardware interface, which then halts the robot’s movement. Once the controller receives confirmation that the robot has stopped, it sends RESET_STOP to the hardware interface. After that, new commands can be sent.

Action Image

This can be done, for example, via a Python script as demonstrated in the example python script in the Universal_Robots_ROS2_Driver package.

Command and State Interfaces

To transmit the motion primitives, the following command and state interfaces are required. All interfaces use the naming scheme tf_prefix_ + "motion_primitive/<interface name>" where the tf_prefix is provided to the controller as a parameter.

Command Interfaces

These interfaces are used to send motion primitive data to the hardware interface:

  • motion_type: Type of motion primitive (LINEAR_JOINT, LINEAR_CARTESIAN, CIRCULAR_CARTESIAN)
  • q1q6: Target joint positions for joint-based motion
  • pos_x, pos_y, pos_z: Target Cartesian position
  • pos_qx, pos_qy, pos_qz, pos_qw: Orientation quaternion of the target pose
  • pos_via_x, pos_via_y, pos_via_z: Intermediate via-point position for circular motion
  • pos_via_qx, pos_via_qy, pos_via_qz, pos_via_qw: Orientation quaternion of via-point
  • blend_radius: Blending radius for smooth transitions
  • velocity: Desired motion velocity
  • acceleration: Desired motion acceleration
  • move_time: Optional duration for time-based execution (For LINEAR_JOINT and LINEAR_CARTESIAN. If move_time > 0, velocity and acceleration are ignored)

State Interfaces

These interfaces are used to communicate the internal status of the hardware interface back to the motion_primitives_forward_controller.

  • execution_status: Indicates the current execution state of the primitive. Possible values are:
    • IDLE: No motion in progress
    • EXECUTING: Currently executing a primitive
    • SUCCESS: Last command finished successfully
    • ERROR: An error occurred during execution
    • STOPPING: The hardware interface has received the STOP_MOTION command, but the robot has not yet come to a stop.
    • STOPPED: The robot was stopped using the STOP_MOTION command and must be reset with the RESET_STOP command before executing new commands.
  • ready_for_new_primitive: Boolean flag indicating whether the interface is ready to receive a new motion primitive

## Parameters This controller uses the generate_parameter_library to handle its parameters. The parameter definition file located in the src folder contains descriptions for all the parameters used by the controller. An example parameter file for this controller can be found in the test directory.

Architecture Overview

Architecture for a UR robot with Universal_Robots_ROS2_Driver in motion primitives mode.

UR Robot Architecture

Architecture for a KUKA robot with kuka_eki_motion_primitives_hw_interface.

KUKA Robot Architecture

Demo-Video with UR10e

UR demo video

Demo-Video with KR3

KUKA demo video

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged motion_primitives_forward_controller at Robotics Stack Exchange

No version for distro indigo showing kilted. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 5.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros-controls/ros2_controllers.git
VCS Type git
VCS Version master
Last Updated 2025-08-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Package to control robots using motion primitives like PTP, LIN and CIRC

Additional Links

Maintainers

  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

  • Mathias Fuhrer

motion_primitive_controllers

Package to control robots using motion primitives like LINEAR_JOINT (PTP/ MOVEJ), LINEAR_CARTESIAN (LIN/ MOVEL) and CIRCULAR_CARTESIAN (CIRC/ MOVEC)

Description

This project provides an interface for sending motion primitives to an industrial robot controller using the ExecuteMotionPrimitiveSequence.action action from control_msgs. The controller receives the primitives via the action interface and forwards them through command interfaces to the robot-specific hardware interface. Currently, hardware interfaces for Universal Robots and KUKA Robots are implemented.

  • Supported motion primitives:
    • LINEAR_JOINT
    • LINEAR_CARTESIAN
    • CIRCULAR_CARTESIAN

If multiple motion primitives are passed to the controller via the action, the controller forwards them to the hardware interface as a sequence. To do this, it first sends MOTION_SEQUENCE_START, followed by each individual primitive, and finally MOTION_SEQUENCE_END. All primitives between these two markers will be executed as a single, continuous sequence. This allows seamless transitions (blending) between primitives.

The action interface also allows stopping the current execution of motion primitives. When a stop request is received, the controller sends STOP_MOTION to the hardware interface, which then halts the robot’s movement. Once the controller receives confirmation that the robot has stopped, it sends RESET_STOP to the hardware interface. After that, new commands can be sent.

Action Image

This can be done, for example, via a Python script as demonstrated in the example python script in the Universal_Robots_ROS2_Driver package.

Command and State Interfaces

To transmit the motion primitives, the following command and state interfaces are required. All interfaces use the naming scheme tf_prefix_ + "motion_primitive/<interface name>" where the tf_prefix is provided to the controller as a parameter.

Command Interfaces

These interfaces are used to send motion primitive data to the hardware interface:

  • motion_type: Type of motion primitive (LINEAR_JOINT, LINEAR_CARTESIAN, CIRCULAR_CARTESIAN)
  • q1q6: Target joint positions for joint-based motion
  • pos_x, pos_y, pos_z: Target Cartesian position
  • pos_qx, pos_qy, pos_qz, pos_qw: Orientation quaternion of the target pose
  • pos_via_x, pos_via_y, pos_via_z: Intermediate via-point position for circular motion
  • pos_via_qx, pos_via_qy, pos_via_qz, pos_via_qw: Orientation quaternion of via-point
  • blend_radius: Blending radius for smooth transitions
  • velocity: Desired motion velocity
  • acceleration: Desired motion acceleration
  • move_time: Optional duration for time-based execution (For LINEAR_JOINT and LINEAR_CARTESIAN. If move_time > 0, velocity and acceleration are ignored)

State Interfaces

These interfaces are used to communicate the internal status of the hardware interface back to the motion_primitives_forward_controller.

  • execution_status: Indicates the current execution state of the primitive. Possible values are:
    • IDLE: No motion in progress
    • EXECUTING: Currently executing a primitive
    • SUCCESS: Last command finished successfully
    • ERROR: An error occurred during execution
    • STOPPING: The hardware interface has received the STOP_MOTION command, but the robot has not yet come to a stop.
    • STOPPED: The robot was stopped using the STOP_MOTION command and must be reset with the RESET_STOP command before executing new commands.
  • ready_for_new_primitive: Boolean flag indicating whether the interface is ready to receive a new motion primitive

## Parameters This controller uses the generate_parameter_library to handle its parameters. The parameter definition file located in the src folder contains descriptions for all the parameters used by the controller. An example parameter file for this controller can be found in the test directory.

Architecture Overview

Architecture for a UR robot with Universal_Robots_ROS2_Driver in motion primitives mode.

UR Robot Architecture

Architecture for a KUKA robot with kuka_eki_motion_primitives_hw_interface.

KUKA Robot Architecture

Demo-Video with UR10e

UR demo video

Demo-Video with KR3

KUKA demo video

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged motion_primitives_forward_controller at Robotics Stack Exchange

No version for distro hydro showing kilted. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 5.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros-controls/ros2_controllers.git
VCS Type git
VCS Version master
Last Updated 2025-08-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Package to control robots using motion primitives like PTP, LIN and CIRC

Additional Links

Maintainers

  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

  • Mathias Fuhrer

motion_primitive_controllers

Package to control robots using motion primitives like LINEAR_JOINT (PTP/ MOVEJ), LINEAR_CARTESIAN (LIN/ MOVEL) and CIRCULAR_CARTESIAN (CIRC/ MOVEC)

Description

This project provides an interface for sending motion primitives to an industrial robot controller using the ExecuteMotionPrimitiveSequence.action action from control_msgs. The controller receives the primitives via the action interface and forwards them through command interfaces to the robot-specific hardware interface. Currently, hardware interfaces for Universal Robots and KUKA Robots are implemented.

  • Supported motion primitives:
    • LINEAR_JOINT
    • LINEAR_CARTESIAN
    • CIRCULAR_CARTESIAN

If multiple motion primitives are passed to the controller via the action, the controller forwards them to the hardware interface as a sequence. To do this, it first sends MOTION_SEQUENCE_START, followed by each individual primitive, and finally MOTION_SEQUENCE_END. All primitives between these two markers will be executed as a single, continuous sequence. This allows seamless transitions (blending) between primitives.

The action interface also allows stopping the current execution of motion primitives. When a stop request is received, the controller sends STOP_MOTION to the hardware interface, which then halts the robot’s movement. Once the controller receives confirmation that the robot has stopped, it sends RESET_STOP to the hardware interface. After that, new commands can be sent.

Action Image

This can be done, for example, via a Python script as demonstrated in the example python script in the Universal_Robots_ROS2_Driver package.

Command and State Interfaces

To transmit the motion primitives, the following command and state interfaces are required. All interfaces use the naming scheme tf_prefix_ + "motion_primitive/<interface name>" where the tf_prefix is provided to the controller as a parameter.

Command Interfaces

These interfaces are used to send motion primitive data to the hardware interface:

  • motion_type: Type of motion primitive (LINEAR_JOINT, LINEAR_CARTESIAN, CIRCULAR_CARTESIAN)
  • q1q6: Target joint positions for joint-based motion
  • pos_x, pos_y, pos_z: Target Cartesian position
  • pos_qx, pos_qy, pos_qz, pos_qw: Orientation quaternion of the target pose
  • pos_via_x, pos_via_y, pos_via_z: Intermediate via-point position for circular motion
  • pos_via_qx, pos_via_qy, pos_via_qz, pos_via_qw: Orientation quaternion of via-point
  • blend_radius: Blending radius for smooth transitions
  • velocity: Desired motion velocity
  • acceleration: Desired motion acceleration
  • move_time: Optional duration for time-based execution (For LINEAR_JOINT and LINEAR_CARTESIAN. If move_time > 0, velocity and acceleration are ignored)

State Interfaces

These interfaces are used to communicate the internal status of the hardware interface back to the motion_primitives_forward_controller.

  • execution_status: Indicates the current execution state of the primitive. Possible values are:
    • IDLE: No motion in progress
    • EXECUTING: Currently executing a primitive
    • SUCCESS: Last command finished successfully
    • ERROR: An error occurred during execution
    • STOPPING: The hardware interface has received the STOP_MOTION command, but the robot has not yet come to a stop.
    • STOPPED: The robot was stopped using the STOP_MOTION command and must be reset with the RESET_STOP command before executing new commands.
  • ready_for_new_primitive: Boolean flag indicating whether the interface is ready to receive a new motion primitive

## Parameters This controller uses the generate_parameter_library to handle its parameters. The parameter definition file located in the src folder contains descriptions for all the parameters used by the controller. An example parameter file for this controller can be found in the test directory.

Architecture Overview

Architecture for a UR robot with Universal_Robots_ROS2_Driver in motion primitives mode.

UR Robot Architecture

Architecture for a KUKA robot with kuka_eki_motion_primitives_hw_interface.

KUKA Robot Architecture

Demo-Video with UR10e

UR demo video

Demo-Video with KR3

KUKA demo video

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged motion_primitives_forward_controller at Robotics Stack Exchange

No version for distro kinetic showing kilted. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 5.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros-controls/ros2_controllers.git
VCS Type git
VCS Version master
Last Updated 2025-08-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Package to control robots using motion primitives like PTP, LIN and CIRC

Additional Links

Maintainers

  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

  • Mathias Fuhrer

motion_primitive_controllers

Package to control robots using motion primitives like LINEAR_JOINT (PTP/ MOVEJ), LINEAR_CARTESIAN (LIN/ MOVEL) and CIRCULAR_CARTESIAN (CIRC/ MOVEC)

Description

This project provides an interface for sending motion primitives to an industrial robot controller using the ExecuteMotionPrimitiveSequence.action action from control_msgs. The controller receives the primitives via the action interface and forwards them through command interfaces to the robot-specific hardware interface. Currently, hardware interfaces for Universal Robots and KUKA Robots are implemented.

  • Supported motion primitives:
    • LINEAR_JOINT
    • LINEAR_CARTESIAN
    • CIRCULAR_CARTESIAN

If multiple motion primitives are passed to the controller via the action, the controller forwards them to the hardware interface as a sequence. To do this, it first sends MOTION_SEQUENCE_START, followed by each individual primitive, and finally MOTION_SEQUENCE_END. All primitives between these two markers will be executed as a single, continuous sequence. This allows seamless transitions (blending) between primitives.

The action interface also allows stopping the current execution of motion primitives. When a stop request is received, the controller sends STOP_MOTION to the hardware interface, which then halts the robot’s movement. Once the controller receives confirmation that the robot has stopped, it sends RESET_STOP to the hardware interface. After that, new commands can be sent.

Action Image

This can be done, for example, via a Python script as demonstrated in the example python script in the Universal_Robots_ROS2_Driver package.

Command and State Interfaces

To transmit the motion primitives, the following command and state interfaces are required. All interfaces use the naming scheme tf_prefix_ + "motion_primitive/<interface name>" where the tf_prefix is provided to the controller as a parameter.

Command Interfaces

These interfaces are used to send motion primitive data to the hardware interface:

  • motion_type: Type of motion primitive (LINEAR_JOINT, LINEAR_CARTESIAN, CIRCULAR_CARTESIAN)
  • q1q6: Target joint positions for joint-based motion
  • pos_x, pos_y, pos_z: Target Cartesian position
  • pos_qx, pos_qy, pos_qz, pos_qw: Orientation quaternion of the target pose
  • pos_via_x, pos_via_y, pos_via_z: Intermediate via-point position for circular motion
  • pos_via_qx, pos_via_qy, pos_via_qz, pos_via_qw: Orientation quaternion of via-point
  • blend_radius: Blending radius for smooth transitions
  • velocity: Desired motion velocity
  • acceleration: Desired motion acceleration
  • move_time: Optional duration for time-based execution (For LINEAR_JOINT and LINEAR_CARTESIAN. If move_time > 0, velocity and acceleration are ignored)

State Interfaces

These interfaces are used to communicate the internal status of the hardware interface back to the motion_primitives_forward_controller.

  • execution_status: Indicates the current execution state of the primitive. Possible values are:
    • IDLE: No motion in progress
    • EXECUTING: Currently executing a primitive
    • SUCCESS: Last command finished successfully
    • ERROR: An error occurred during execution
    • STOPPING: The hardware interface has received the STOP_MOTION command, but the robot has not yet come to a stop.
    • STOPPED: The robot was stopped using the STOP_MOTION command and must be reset with the RESET_STOP command before executing new commands.
  • ready_for_new_primitive: Boolean flag indicating whether the interface is ready to receive a new motion primitive

## Parameters This controller uses the generate_parameter_library to handle its parameters. The parameter definition file located in the src folder contains descriptions for all the parameters used by the controller. An example parameter file for this controller can be found in the test directory.

Architecture Overview

Architecture for a UR robot with Universal_Robots_ROS2_Driver in motion primitives mode.

UR Robot Architecture

Architecture for a KUKA robot with kuka_eki_motion_primitives_hw_interface.

KUKA Robot Architecture

Demo-Video with UR10e

UR demo video

Demo-Video with KR3

KUKA demo video

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged motion_primitives_forward_controller at Robotics Stack Exchange

No version for distro melodic showing kilted. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 5.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros-controls/ros2_controllers.git
VCS Type git
VCS Version master
Last Updated 2025-08-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Package to control robots using motion primitives like PTP, LIN and CIRC

Additional Links

Maintainers

  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

  • Mathias Fuhrer

motion_primitive_controllers

Package to control robots using motion primitives like LINEAR_JOINT (PTP/ MOVEJ), LINEAR_CARTESIAN (LIN/ MOVEL) and CIRCULAR_CARTESIAN (CIRC/ MOVEC)

Description

This project provides an interface for sending motion primitives to an industrial robot controller using the ExecuteMotionPrimitiveSequence.action action from control_msgs. The controller receives the primitives via the action interface and forwards them through command interfaces to the robot-specific hardware interface. Currently, hardware interfaces for Universal Robots and KUKA Robots are implemented.

  • Supported motion primitives:
    • LINEAR_JOINT
    • LINEAR_CARTESIAN
    • CIRCULAR_CARTESIAN

If multiple motion primitives are passed to the controller via the action, the controller forwards them to the hardware interface as a sequence. To do this, it first sends MOTION_SEQUENCE_START, followed by each individual primitive, and finally MOTION_SEQUENCE_END. All primitives between these two markers will be executed as a single, continuous sequence. This allows seamless transitions (blending) between primitives.

The action interface also allows stopping the current execution of motion primitives. When a stop request is received, the controller sends STOP_MOTION to the hardware interface, which then halts the robot’s movement. Once the controller receives confirmation that the robot has stopped, it sends RESET_STOP to the hardware interface. After that, new commands can be sent.

Action Image

This can be done, for example, via a Python script as demonstrated in the example python script in the Universal_Robots_ROS2_Driver package.

Command and State Interfaces

To transmit the motion primitives, the following command and state interfaces are required. All interfaces use the naming scheme tf_prefix_ + "motion_primitive/<interface name>" where the tf_prefix is provided to the controller as a parameter.

Command Interfaces

These interfaces are used to send motion primitive data to the hardware interface:

  • motion_type: Type of motion primitive (LINEAR_JOINT, LINEAR_CARTESIAN, CIRCULAR_CARTESIAN)
  • q1q6: Target joint positions for joint-based motion
  • pos_x, pos_y, pos_z: Target Cartesian position
  • pos_qx, pos_qy, pos_qz, pos_qw: Orientation quaternion of the target pose
  • pos_via_x, pos_via_y, pos_via_z: Intermediate via-point position for circular motion
  • pos_via_qx, pos_via_qy, pos_via_qz, pos_via_qw: Orientation quaternion of via-point
  • blend_radius: Blending radius for smooth transitions
  • velocity: Desired motion velocity
  • acceleration: Desired motion acceleration
  • move_time: Optional duration for time-based execution (For LINEAR_JOINT and LINEAR_CARTESIAN. If move_time > 0, velocity and acceleration are ignored)

State Interfaces

These interfaces are used to communicate the internal status of the hardware interface back to the motion_primitives_forward_controller.

  • execution_status: Indicates the current execution state of the primitive. Possible values are:
    • IDLE: No motion in progress
    • EXECUTING: Currently executing a primitive
    • SUCCESS: Last command finished successfully
    • ERROR: An error occurred during execution
    • STOPPING: The hardware interface has received the STOP_MOTION command, but the robot has not yet come to a stop.
    • STOPPED: The robot was stopped using the STOP_MOTION command and must be reset with the RESET_STOP command before executing new commands.
  • ready_for_new_primitive: Boolean flag indicating whether the interface is ready to receive a new motion primitive

## Parameters This controller uses the generate_parameter_library to handle its parameters. The parameter definition file located in the src folder contains descriptions for all the parameters used by the controller. An example parameter file for this controller can be found in the test directory.

Architecture Overview

Architecture for a UR robot with Universal_Robots_ROS2_Driver in motion primitives mode.

UR Robot Architecture

Architecture for a KUKA robot with kuka_eki_motion_primitives_hw_interface.

KUKA Robot Architecture

Demo-Video with UR10e

UR demo video

Demo-Video with KR3

KUKA demo video

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged motion_primitives_forward_controller at Robotics Stack Exchange

No version for distro noetic showing kilted. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 5.5.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros-controls/ros2_controllers.git
VCS Type git
VCS Version master
Last Updated 2025-08-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Package to control robots using motion primitives like PTP, LIN and CIRC

Additional Links

Maintainers

  • Bence Magyar
  • Denis Štogl
  • Christoph Froehlich
  • Sai Kishor Kothakota

Authors

  • Mathias Fuhrer

motion_primitive_controllers

Package to control robots using motion primitives like LINEAR_JOINT (PTP/ MOVEJ), LINEAR_CARTESIAN (LIN/ MOVEL) and CIRCULAR_CARTESIAN (CIRC/ MOVEC)

Description

This project provides an interface for sending motion primitives to an industrial robot controller using the ExecuteMotionPrimitiveSequence.action action from control_msgs. The controller receives the primitives via the action interface and forwards them through command interfaces to the robot-specific hardware interface. Currently, hardware interfaces for Universal Robots and KUKA Robots are implemented.

  • Supported motion primitives:
    • LINEAR_JOINT
    • LINEAR_CARTESIAN
    • CIRCULAR_CARTESIAN

If multiple motion primitives are passed to the controller via the action, the controller forwards them to the hardware interface as a sequence. To do this, it first sends MOTION_SEQUENCE_START, followed by each individual primitive, and finally MOTION_SEQUENCE_END. All primitives between these two markers will be executed as a single, continuous sequence. This allows seamless transitions (blending) between primitives.

The action interface also allows stopping the current execution of motion primitives. When a stop request is received, the controller sends STOP_MOTION to the hardware interface, which then halts the robot’s movement. Once the controller receives confirmation that the robot has stopped, it sends RESET_STOP to the hardware interface. After that, new commands can be sent.

Action Image

This can be done, for example, via a Python script as demonstrated in the example python script in the Universal_Robots_ROS2_Driver package.

Command and State Interfaces

To transmit the motion primitives, the following command and state interfaces are required. All interfaces use the naming scheme tf_prefix_ + "motion_primitive/<interface name>" where the tf_prefix is provided to the controller as a parameter.

Command Interfaces

These interfaces are used to send motion primitive data to the hardware interface:

  • motion_type: Type of motion primitive (LINEAR_JOINT, LINEAR_CARTESIAN, CIRCULAR_CARTESIAN)
  • q1q6: Target joint positions for joint-based motion
  • pos_x, pos_y, pos_z: Target Cartesian position
  • pos_qx, pos_qy, pos_qz, pos_qw: Orientation quaternion of the target pose
  • pos_via_x, pos_via_y, pos_via_z: Intermediate via-point position for circular motion
  • pos_via_qx, pos_via_qy, pos_via_qz, pos_via_qw: Orientation quaternion of via-point
  • blend_radius: Blending radius for smooth transitions
  • velocity: Desired motion velocity
  • acceleration: Desired motion acceleration
  • move_time: Optional duration for time-based execution (For LINEAR_JOINT and LINEAR_CARTESIAN. If move_time > 0, velocity and acceleration are ignored)

State Interfaces

These interfaces are used to communicate the internal status of the hardware interface back to the motion_primitives_forward_controller.

  • execution_status: Indicates the current execution state of the primitive. Possible values are:
    • IDLE: No motion in progress
    • EXECUTING: Currently executing a primitive
    • SUCCESS: Last command finished successfully
    • ERROR: An error occurred during execution
    • STOPPING: The hardware interface has received the STOP_MOTION command, but the robot has not yet come to a stop.
    • STOPPED: The robot was stopped using the STOP_MOTION command and must be reset with the RESET_STOP command before executing new commands.
  • ready_for_new_primitive: Boolean flag indicating whether the interface is ready to receive a new motion primitive

## Parameters This controller uses the generate_parameter_library to handle its parameters. The parameter definition file located in the src folder contains descriptions for all the parameters used by the controller. An example parameter file for this controller can be found in the test directory.

Architecture Overview

Architecture for a UR robot with Universal_Robots_ROS2_Driver in motion primitives mode.

UR Robot Architecture

Architecture for a KUKA robot with kuka_eki_motion_primitives_hw_interface.

KUKA Robot Architecture

Demo-Video with UR10e

UR demo video

Demo-Video with KR3

KUKA demo video

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged motion_primitives_forward_controller at Robotics Stack Exchange