-
Notifications
You must be signed in to change notification settings - Fork 413
Add motion_primitives_forward_controller for interfacing motion primitive messages with hardware interfaces
#1636
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
christophfroehlich
merged 105 commits into
ros-controls:master
from
b-robotized-forks:motion_primitive_forward_controller
Aug 24, 2025
Merged
Changes from all commits
Commits
Show all changes
105 commits
Select commit
Hold shift + click to select a range
98cd2e3
added COLCON_IGNORE to every controller folder to not build it every …
mathias31415 783d129
added motion_primitive_forward_controller from https://github.com/mat…
mathias31415 6ed1181
renamed motion_primitives_controller_pkg to motion_primitives_forward…
mathias31415 9074829
added functionallity to execute multiple primitives as a motion sequence
mathias31415 2cf7b09
Added new state interface ready_for_new_primitive to indicate whether…
mathias31415 c09d1fd
removed case 33 block with hardcoded motion sequence (was only for te…
mathias31415 f4abcbd
removed mail
mathias31415 79e47be
added command_mutex_
mathias31415 316ad54
edited readme
mathias31415 28adf54
changed image in readme to white background
mathias31415 e28554d
edited Related packages/ repos in readme
mathias31415 c451fb4
added/ modified copyright headers
mathias31415 188f8b5
removed LICENSE file
mathias31415 93cc787
removed repos files
mathias31415 1122a31
changed license from BSD-3-Clause to Apache License 2.0
mathias31415 af63eab
added email to package.xml
mathias31415 3f3881f
changed version to fit the rest of the repo, added maintainers and ur…
mathias31415 ce8b937
removed .gitignore (was not supposed to be pushed to the repo)
mathias31415 92ee810
removed visibility control
mathias31415 bce1031
removed/ changed license headers from template files
mathias31415 82786cb
Merge branch 'master' into motion_primitive_forward_controller
bmagyar ae083e7
removed license header from motion_primitives_forward_controller.yaml
mathias31415 487e88a
changed license in readme to apache 2.0
mathias31415 e0d87c6
uncommented test_motion_primitives_forward_controller
mathias31415 9fa58b4
changed msg_queue_ form private to protected to be accessible in tests
mathias31415 3eb44c2
changed test_motion_primitives_forward_controller implementation from…
mathias31415 d9d4c67
uncommented test_motion_primitives_forward_controller_preceeding impl…
mathias31415 e76a8d0
changed test_motion_primitives_forward_controller_preceeding implemen…
mathias31415 11bec4d
moved reset_controller_reference_msg into motion_primitives_forward_c…
mathias31415 6c98434
changed get_value() to get_optional()
mathias31415 d2ef095
cleanup on comments and commented code
mathias31415 7c4f167
clarified motion primitive publishing to ~/reference topic
mathias31415 59ecb5b
pre-commit fixes
mathias31415 a2eaaea
added ExecutionState STOPPED and MotionType RESET_STOP
mathias31415 558de38
discard new commands while robot is stopped
mathias31415 29356d5
added missing test_depend's to package.xml
mathias31415 48dd4f1
moved test dependencies to if(BUILD_TESTING) block in CMakeLists.txt
mathias31415 c96da97
changed reference topic to action
mathias31415 53147b9
modified tests for action based controller
mathias31415 7a8bcb2
updated readme
mathias31415 72fa44f
Update motion_primitives_forward_controller/CMakeLists.txt
mathias31415 e670fdd
removed ament_target_dependencies from CMakeLists.txt
mathias31415 a49cbb5
reference the final package destinations in redme and added shematic …
mathias31415 51b7b0a
Removed STATE_MY_ITFS and CMD_MY_ITFS. References to command and stat…
mathias31415 123cdb1
removed static constexpr rmw_qos_profile_t rmw_qos_profile_services_h…
mathias31415 cb2e1d6
changed ExecutionState, MotionType and ReadyForNewPrimitive to enum
mathias31415 f19e43e
removed validate_motion_primitives_forward_controller_parameters.hpp
mathias31415 06ba279
Changed some RCLCPP_INFO prints to _DEBUG to reduce output
mathias31415 cd95fde
renamed robot_stopped_ to robot_stop_requested_ and changed it from b…
mathias31415 14adc0e
removed queue_size_ parameter
mathias31415 c47834c
wrapped moprim_queue_.push with start and end marker into a lambda
mathias31415 1e2691a
Moved functionallity to cancle movement from goal_cancelled_callback(…
mathias31415 5e95340
removed execute_goal() in extra thread. Integrated it into goal_accep…
mathias31415 55a59a3
updated action draw.io
mathias31415 d1b772c
Merge branch 'ros-controls:master' into motion_primitive_forward_cont…
mathias31415 bf3d2f6
changed version to match the other controllers
mathias31415 fddc824
removed name parameter for the moprim controller
mathias31415 f366f46
Merge branch 'ros-controls:master' into motion_primitive_forward_cont…
mathias31415 632ca1a
added std::atomic<bool> moprim_queue_write_enabled_
mathias31415 4a96de5
changed fprintf to RCLCPP_ERROR
mathias31415 40d78fc
changed moprim_queue_ from std::queue to realtime_tools::LockFreeSPSC…
mathias31415 29d5a5e
using realtime_tools::RealtimeServerGoalHandle
mathias31415 c4bc089
Preallocate std::shared_ptr<MotionPrimitive> current_moprim_
mathias31415 01a24e8
using get_latest instead of while(pop)
mathias31415 42542e7
pushing primitives directly into the q instead of using shared pointers
mathias31415 a80e592
added check for remaining q-size before accepting the goal
mathias31415 a0744ab
Merge branch 'ros-controls:master' into motion_primitive_forward_cont…
mathias31415 b942ec5
Using MotionType from msg definition and MotionHelperType from enum i…
mathias31415 1669026
increased moprim_queue_ capacity to 1024
mathias31415 a4c1367
using ros-controls/control_msgs#228 instead of industrial_robot_motio…
mathias31415 371fb50
Add export and install for parameter library
mathias31415 a8bcee3
control_msgs in ros2_controllers.rolling.repos needs to get changed b…
mathias31415 c1e08f8
pass full interface names to the controller (such as $(var tf_prefix)…
mathias31415 5102a82
Wrapped rt_goal_handle_ in RealtimeThreadSafeBox and introduced std::…
mathias31415 3be4bac
Merge branch 'master' into motion_primitive_forward_controller
christophfroehlich 71d3b6b
Update ros2_controllers.rolling.repos
christophfroehlich e5457e4
pre-commit fix
mathias31415 2f205c1
modified tests for full cmd and state interface names
mathias31415 b2550d1
argument_name --> name, argument_value --> value
mathias31415 fac1455
Merge branch 'master' into motion_primitive_forward_controller
christophfroehlich 2502208
added ExecutionState STOPPING
mathias31415 7987abd
removed hka from example python script link
mathias31415 da7f3ec
removed test_motion_primitives_forward_controller_preceeding since it…
mathias31415 5ccfd11
added demo videos to readme
mathias31415 602776f
reject trajectories when the controller isn't active
mathias31415 a30396c
added missing include for lifecycle_msgs
mathias31415 fe8ace9
changed cmake_minimum_required to 3.10
mathias31415 6818ccb
modified compile options, ... to be consistent with other packages
mathias31415 ae0354f
removed license header in readme as it is global in the whole repo
mathias31415 3a00262
removed TODOs from readme
mathias31415 4260634
Merge branch 'ros-controls:master' into motion_primitive_forward_cont…
mathias31415 03d43c8
updated version
mathias31415 c187395
added description for interfaces and linked param files in readme
mathias31415 c69ac43
added motion_primitives_forward_controller to release_notes.rst
mathias31415 5a3d0bd
add extra braces to std::array initializers to fix -Werror=missing-br…
mathias31415 1c5e3d0
Implemented the interface names fixed in the controller.
mathias31415 0302034
/*time*/
mathias31415 c387f43
Merge branch 'master' into motion_primitive_forward_controller
christophfroehlich cb14501
added prefix to interface description in the readme
mathias31415 7d24258
Merge branch 'master' into motion_primitive_forward_controller
christophfroehlich f0d25e6
added rst file
mathias31415 23d39bf
fix end of file empty line
mathias31415 de30311
added doc8 '--ignore-path=motion_primitives_forward_controller/doc/us…
mathias31415 eb261ee
Move rst file to the same location as README
christophfroehlich 43c0ea1
Merge branch 'master' into motion_primitive_forward_controller
christophfroehlich File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,110 @@ | ||
| cmake_minimum_required(VERSION 3.10) | ||
| project(motion_primitives_forward_controller) | ||
|
|
||
| find_package(ros2_control_cmake REQUIRED) | ||
| set_compiler_options() | ||
| export_windows_symbols() | ||
|
|
||
| set(THIS_PACKAGE_INCLUDE_DEPENDS | ||
| control_msgs | ||
| controller_interface | ||
| hardware_interface | ||
| pluginlib | ||
| rclcpp | ||
| rclcpp_lifecycle | ||
| realtime_tools | ||
| std_srvs | ||
| ) | ||
|
|
||
| find_package(ament_cmake REQUIRED) | ||
| find_package(generate_parameter_library REQUIRED) | ||
| foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS}) | ||
| find_package(${Dependency} REQUIRED) | ||
| endforeach() | ||
|
|
||
| generate_parameter_library(motion_primitives_forward_controller_parameters | ||
| src/motion_primitives_forward_controller_parameter.yaml | ||
| ) | ||
| add_library( | ||
| motion_primitives_forward_controller | ||
| SHARED | ||
| src/motion_primitives_forward_controller.cpp | ||
| ) | ||
| target_include_directories(motion_primitives_forward_controller PUBLIC | ||
| $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include> | ||
| $<INSTALL_INTERFACE:include/${PROJECT_NAME}> | ||
| ) | ||
| target_link_libraries(motion_primitives_forward_controller PUBLIC | ||
| motion_primitives_forward_controller_parameters | ||
| controller_interface::controller_interface | ||
| hardware_interface::hardware_interface | ||
| pluginlib::pluginlib | ||
| rclcpp::rclcpp | ||
| rclcpp_lifecycle::rclcpp_lifecycle | ||
| realtime_tools::realtime_tools | ||
| ${control_msgs_TARGETS} | ||
| ${std_srvs_TARGETS} | ||
| ) | ||
|
|
||
| target_compile_definitions(motion_primitives_forward_controller PRIVATE "MOTION_PRIMITIVES_FORWARD_CONTROLLER_BUILDING_DLL") | ||
|
|
||
| pluginlib_export_plugin_description_file( | ||
| controller_interface motion_primitives_forward_controller.xml) | ||
|
|
||
| install( | ||
| TARGETS | ||
| motion_primitives_forward_controller | ||
| motion_primitives_forward_controller_parameters | ||
| EXPORT motion_primitives_forward_controller_targets | ||
| RUNTIME DESTINATION bin | ||
| ARCHIVE DESTINATION lib | ||
| LIBRARY DESTINATION lib | ||
| ) | ||
|
|
||
|
|
||
| install( | ||
| DIRECTORY include/ | ||
| DESTINATION include/${PROJECT_NAME} | ||
| ) | ||
| ament_export_targets(motion_primitives_forward_controller_targets HAS_LIBRARY_TARGET) | ||
|
|
||
| ament_export_include_directories( | ||
| include | ||
| ) | ||
| ament_export_dependencies( | ||
| ${THIS_PACKAGE_INCLUDE_DEPENDS} | ||
| ) | ||
| ament_export_libraries( | ||
| motion_primitives_forward_controller | ||
| ) | ||
|
|
||
| ament_package() | ||
|
|
||
| if(BUILD_TESTING) | ||
| find_package(ament_cmake_gmock REQUIRED) | ||
| find_package(controller_manager REQUIRED) | ||
| find_package(hardware_interface REQUIRED) | ||
| find_package(ros2_control_test_assets REQUIRED) | ||
|
|
||
| ament_add_gmock( | ||
| test_load_motion_primitives_forward_controller | ||
| test/test_load_motion_primitives_forward_controller.cpp | ||
| ) | ||
| target_link_libraries(test_load_motion_primitives_forward_controller | ||
| motion_primitives_forward_controller | ||
| controller_manager::controller_manager | ||
| ros2_control_test_assets::ros2_control_test_assets | ||
| ) | ||
|
|
||
| add_rostest_with_parameters_gmock( | ||
| test_motion_primitives_forward_controller | ||
| test/test_motion_primitives_forward_controller.cpp | ||
| ${CMAKE_CURRENT_SOURCE_DIR}/test/motion_primitives_forward_controller_params.yaml | ||
| ) | ||
| target_link_libraries(test_motion_primitives_forward_controller | ||
| motion_primitives_forward_controller | ||
| controller_interface::controller_interface | ||
| hardware_interface::hardware_interface | ||
| ros2_control_test_assets::ros2_control_test_assets | ||
| ) | ||
| endif() |
mathias31415 marked this conversation as resolved.
Show resolved
Hide resolved
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,68 @@ | ||
| 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](https://github.com/ros-controls/control_msgs/blob/motion_primitives/control_msgs/action/ExecuteMotionPrimitiveSequence.action). 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](https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver) and [KUKA Robots](https://github.com/b-robotized-forks/kuka_experimental/tree/motion_primitive_kuka_driver) 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. | ||
|
|
||
|  | ||
|
|
||
| This can be done, for example, via a Python script as demonstrated in the [`example python script`](https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/blob/main/ur_robot_driver/examples/send_dummy_motion_primitives_ur10e.py) 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) | ||
mathias31415 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| - `q1` – `q6`: 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`](https://github.com/PickNikRobotics/generate_parameter_library) to handle its parameters. The parameter [definition file located in the src folder](https://github.com/ros-controls/ros2_controllers/blob/master/motion_primitives_forward_controller/src/motion_primitives_forward_controller_parameter.yaml) contains descriptions for all the parameters used by the controller. | ||
| An example parameter file for this controller can be found in [the test directory](https://github.com/ros-controls/ros2_controllers/blob/master/motion_primitives_forward_controller/test/motion_primitives_forward_controller_params.yaml). | ||
|
|
||
|
|
||
| # Architecture Overview | ||
| Architecture for a UR robot with [`Universal_Robots_ROS2_Driver` in motion primitives mode](https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver). | ||
|
|
||
|  | ||
|
|
||
| Architecture for a KUKA robot with [`kuka_eki_motion_primitives_hw_interface`](https://github.com/b-robotized-forks/kuka_experimental/tree/motion_primitive_kuka_driver/kuka_eki_motion_primitives_hw_interface). | ||
|
|
||
|  | ||
|
|
||
| # Demo-Video with UR10e | ||
| [](https://youtu.be/SKz6LFvJmhQ) | ||
|
|
||
| # Demo-Video with KR3 | ||
| [](https://youtu.be/_BWCO36j9bg) | ||
99 changes: 99 additions & 0 deletions
99
motion_primitives_forward_controller/doc/Moprim_Controller_ExecuteMotion_Action.drawio
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,99 @@ | ||
| <mxfile host="embed.diagrams.net" agent="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:139.0) Gecko/20100101 Firefox/139.0" version="27.1.4"> | ||
| <diagram name="Page-1" id="9u_5SAsCUr1ULjLXrb9y"> | ||
| <mxGraphModel grid="1" page="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0" adaptiveColors="none"> | ||
| <root> | ||
| <mxCell id="0" /> | ||
| <mxCell id="1" parent="0" /> | ||
| <mxCell id="sG7xvZkgZCj6ZZEBmGvM-1" value="Python Script" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;" vertex="1" parent="1"> | ||
| <mxGeometry x="40" y="280" width="120" height="280" as="geometry" /> | ||
| </mxCell> | ||
| <mxCell id="sG7xvZkgZCj6ZZEBmGvM-2" value="Motion Primitives Forward Controller" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;" vertex="1" parent="1"> | ||
| <mxGeometry x="440" y="280" width="120" height="280" as="geometry" /> | ||
| </mxCell> | ||
| <mxCell id="sG7xvZkgZCj6ZZEBmGvM-4" value="<div>Action</div><div>Server</div>" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=middle;fillColor=#C3C3C3;" vertex="1" parent="1"> | ||
| <mxGeometry x="450" y="320" width="100" height="230" as="geometry" /> | ||
| </mxCell> | ||
| <mxCell id="sG7xvZkgZCj6ZZEBmGvM-5" value="<div>Action</div><div>Client</div>" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=middle;fillColor=#C3C3C3;" vertex="1" parent="1"> | ||
| <mxGeometry x="50" y="320" width="100" height="230" as="geometry" /> | ||
| </mxCell> | ||
| <mxCell id="sG7xvZkgZCj6ZZEBmGvM-6" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.009;entryY=0.086;entryDx=0;entryDy=0;entryPerimeter=0;strokeWidth=2;strokeColor=#0000FF;" edge="1" parent="1" target="sG7xvZkgZCj6ZZEBmGvM-4"> | ||
| <mxGeometry width="50" height="50" relative="1" as="geometry"> | ||
| <mxPoint x="150" y="340" as="sourcePoint" /> | ||
| <mxPoint x="340" y="430" as="targetPoint" /> | ||
| </mxGeometry> | ||
| </mxCell> | ||
| <mxCell id="sG7xvZkgZCj6ZZEBmGvM-7" value="Send Goal (Motion Primitives Sequence)" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=10;" connectable="0" vertex="1" parent="sG7xvZkgZCj6ZZEBmGvM-6"> | ||
| <mxGeometry x="-0.1147" y="1" relative="1" as="geometry"> | ||
| <mxPoint x="17" as="offset" /> | ||
| </mxGeometry> | ||
| </mxCell> | ||
| <mxCell id="sG7xvZkgZCj6ZZEBmGvM-8" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.987;exitY=0.088;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.976;entryY=0.178;entryDx=0;entryDy=0;entryPerimeter=0;strokeWidth=2;strokeColor=#0000FF;" edge="1" parent="1"> | ||
| <mxGeometry width="50" height="50" relative="1" as="geometry"> | ||
| <mxPoint x="450" y="356" as="sourcePoint" /> | ||
| <mxPoint x="147.5999999999999" y="356.93999999999994" as="targetPoint" /> | ||
| </mxGeometry> | ||
| </mxCell> | ||
| <mxCell id="sG7xvZkgZCj6ZZEBmGvM-9" value="Goal accepted or rejected" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=10;" connectable="0" vertex="1" parent="sG7xvZkgZCj6ZZEBmGvM-8"> | ||
| <mxGeometry x="-0.1147" y="1" relative="1" as="geometry"> | ||
| <mxPoint x="-16" y="-3" as="offset" /> | ||
| </mxGeometry> | ||
| </mxCell> | ||
| <mxCell id="sG7xvZkgZCj6ZZEBmGvM-10" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.009;entryY=0.086;entryDx=0;entryDy=0;entryPerimeter=0;strokeWidth=2;strokeColor=#CC0000;" edge="1" parent="1"> | ||
| <mxGeometry width="50" height="50" relative="1" as="geometry"> | ||
| <mxPoint x="150" y="410" as="sourcePoint" /> | ||
| <mxPoint x="450" y="409.5" as="targetPoint" /> | ||
| </mxGeometry> | ||
| </mxCell> | ||
| <mxCell id="sG7xvZkgZCj6ZZEBmGvM-11" value="Cancle Goal request" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=10;" connectable="0" vertex="1" parent="sG7xvZkgZCj6ZZEBmGvM-10"> | ||
| <mxGeometry x="-0.1147" y="1" relative="1" as="geometry"> | ||
| <mxPoint x="17" as="offset" /> | ||
| </mxGeometry> | ||
| </mxCell> | ||
| <mxCell id="sG7xvZkgZCj6ZZEBmGvM-12" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.987;exitY=0.088;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.976;entryY=0.178;entryDx=0;entryDy=0;entryPerimeter=0;strokeWidth=2;strokeColor=#CC0000;" edge="1" parent="1"> | ||
| <mxGeometry width="50" height="50" relative="1" as="geometry"> | ||
| <mxPoint x="449" y="425.5" as="sourcePoint" /> | ||
| <mxPoint x="147" y="426.5" as="targetPoint" /> | ||
| </mxGeometry> | ||
| </mxCell> | ||
| <mxCell id="sG7xvZkgZCj6ZZEBmGvM-13" value="Response code" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=10;" connectable="0" vertex="1" parent="sG7xvZkgZCj6ZZEBmGvM-12"> | ||
| <mxGeometry x="-0.1147" y="1" relative="1" as="geometry"> | ||
| <mxPoint x="-16" y="-2" as="offset" /> | ||
| </mxGeometry> | ||
| </mxCell> | ||
| <mxCell id="sG7xvZkgZCj6ZZEBmGvM-14" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.987;exitY=0.088;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.009;entryY=0.086;entryDx=0;entryDy=0;entryPerimeter=0;strokeWidth=2;strokeColor=#009900;" edge="1" parent="1"> | ||
| <mxGeometry width="50" height="50" relative="1" as="geometry"> | ||
| <mxPoint x="150" y="520" as="sourcePoint" /> | ||
| <mxPoint x="452" y="520" as="targetPoint" /> | ||
| </mxGeometry> | ||
| </mxCell> | ||
| <mxCell id="sG7xvZkgZCj6ZZEBmGvM-15" value="Request result" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=10;" connectable="0" vertex="1" parent="sG7xvZkgZCj6ZZEBmGvM-14"> | ||
| <mxGeometry x="-0.1147" y="1" relative="1" as="geometry"> | ||
| <mxPoint x="17" as="offset" /> | ||
| </mxGeometry> | ||
| </mxCell> | ||
| <mxCell id="sG7xvZkgZCj6ZZEBmGvM-16" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.987;exitY=0.088;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.976;entryY=0.178;entryDx=0;entryDy=0;entryPerimeter=0;strokeWidth=2;strokeColor=#009900;" edge="1" parent="1"> | ||
| <mxGeometry width="50" height="50" relative="1" as="geometry"> | ||
| <mxPoint x="451" y="536" as="sourcePoint" /> | ||
| <mxPoint x="149" y="537" as="targetPoint" /> | ||
| </mxGeometry> | ||
| </mxCell> | ||
| <mxCell id="sG7xvZkgZCj6ZZEBmGvM-17" value="Result" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=10;" connectable="0" vertex="1" parent="sG7xvZkgZCj6ZZEBmGvM-16"> | ||
| <mxGeometry x="-0.1147" y="1" relative="1" as="geometry"> | ||
| <mxPoint x="-16" y="-3" as="offset" /> | ||
| </mxGeometry> | ||
| </mxCell> | ||
| <mxCell id="sG7xvZkgZCj6ZZEBmGvM-18" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.987;exitY=0.088;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.976;entryY=0.178;entryDx=0;entryDy=0;entryPerimeter=0;strokeWidth=2;strokeColor=#7F7F7F;" edge="1" parent="1"> | ||
| <mxGeometry width="50" height="50" relative="1" as="geometry"> | ||
| <mxPoint x="450" y="474" as="sourcePoint" /> | ||
| <mxPoint x="148" y="475" as="targetPoint" /> | ||
| </mxGeometry> | ||
| </mxCell> | ||
| <mxCell id="sG7xvZkgZCj6ZZEBmGvM-19" value="Feedback" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=10;fontColor=#7F7F7F;" connectable="0" vertex="1" parent="sG7xvZkgZCj6ZZEBmGvM-18"> | ||
| <mxGeometry x="-0.1147" y="1" relative="1" as="geometry"> | ||
| <mxPoint x="-16" y="-3" as="offset" /> | ||
| </mxGeometry> | ||
| </mxCell> | ||
| </root> | ||
| </mxGraphModel> | ||
| </diagram> | ||
| </mxfile> |
Binary file added
BIN
+75.9 KB
...itives_forward_controller/doc/Moprim_Controller_ExecuteMotion_Action.drawio.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+780 KB
...itives_forward_controller/doc/moprim_forward_controller_kuka_demo_thumbnail.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+896 KB
...imitives_forward_controller/doc/moprim_forward_controller_ur_demo_thumbnail.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
237 changes: 237 additions & 0 deletions
237
motion_primitives_forward_controller/doc/ros2_control_motion_primitives_kuka.drawio
Large diffs are not rendered by default.
Oops, something went wrong.
Binary file added
BIN
+422 KB
...rimitives_forward_controller/doc/ros2_control_motion_primitives_kuka.drawio.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
369 changes: 369 additions & 0 deletions
369
motion_primitives_forward_controller/doc/ros2_control_motion_primitives_ur.drawio
Large diffs are not rendered by default.
Oops, something went wrong.
Binary file added
BIN
+366 KB
..._primitives_forward_controller/doc/ros2_control_motion_primitives_ur.drawio.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.