|
| 1 | +OPW Kinematics Solver for Industrial Manipulators |
| 2 | +================================================== |
| 3 | + |
| 4 | +Intro |
| 5 | +------ |
| 6 | + |
| 7 | +Taken from `opw_kinematics <https://github.com/Jmeyer1292/opw_kinematics>`_: |
| 8 | +A simple, analytical inverse kinematic library for industrial robots with parallel bases and spherical wrists. |
| 9 | +Based on the paper *An Analytical Solution of the Inverse Kinematics Problem of Industrial Serial Manipulators |
| 10 | +with an Ortho-parallel Basis and a Spherical Wrist* by Mathias Brandstötter, Arthur Angerer, and Michael Hofbaur. |
| 11 | + |
| 12 | +Purpose |
| 13 | +------- |
| 14 | + |
| 15 | +This package is meant to provide a simpler alternative to IK-Fast based solutions in situations where one has an |
| 16 | +industrial robot with a parallel base and spherical wrist. This configuration is extremely common in industrial robots. |
| 17 | + |
| 18 | +The kinematics are parameterized by 7 primary values taken directly from the robot's spec sheet and a set of |
| 19 | +joint-zero offsets. Given this structure, no other setup is required. |
| 20 | + |
| 21 | +Installation |
| 22 | +------------- |
| 23 | + |
| 24 | +The `opw_kinematics_plugin <https://github.com/JeroenDM/moveit_opw_kinematics_plugin>`_ can be installed using ``apt`` on Ubuntu and Debian: :: |
| 25 | + |
| 26 | + sudo apt install ros-noetic-opw-kinematics-plugin |
| 27 | + |
| 28 | +Usage |
| 29 | +------ |
| 30 | + |
| 31 | +- Find the MoveIt `kinematics.yaml <../kinematics_configuration/kinematics_configuration_tutorial.html>`_ file created for your robot. |
| 32 | +- Replace ``kinematics_solver: kdl_kinematics_plugin/KDLKinematicsPlugin`` (or similar) with ``kinematics_solver: moveit_opw_kinematics_plugin/MoveItOPWKinematicsPlugin``. |
| 33 | +- Set parameters to describe the geometry of your manipulator. |
| 34 | + |
| 35 | +The following is an example of the parameters needed for the KUKA KR 6 R700: |
| 36 | + |
| 37 | +.. code-block:: yaml |
| 38 | +
|
| 39 | + manipulator: |
| 40 | + kinematics_solver: moveit_opw_kinematics_plugin/MoveItOPWKinematicsPlugin |
| 41 | + opw_kinematics_geometric_parameters: |
| 42 | + a1: 0.025 |
| 43 | + a2: -0.035 |
| 44 | + b: 0.000 |
| 45 | + c1: 0.400 |
| 46 | + c2: 0.315 |
| 47 | + c3: 0.365 |
| 48 | + c4: 0.080 |
| 49 | + opw_kinematics_joint_offsets: [0.0, -1.57079632679, 0, 0, 0, 0] |
| 50 | + opw_kinematics_joint_sign_corrections: [-1, 1, 1, -1, 1, -1] |
| 51 | +
|
| 52 | +The meaning of the parameters can best be understood with a sketch and some tinkering. The plugin will print a ``ROS_ERROR`` on startup if they |
| 53 | +do not match your URDF, so you can safely guess and test if needed: |
| 54 | + |
| 55 | +.. image:: images/opw.png |
| 56 | + |
| 57 | +Sharing OPW descriptions |
| 58 | +------------------------- |
| 59 | + |
| 60 | +We plan to collect OPW parameter sets as part of the ROS-Industrial robot support packages. This has already started for FANUC. |
| 61 | +Taking the `M-10iA <https://github.com/ros-industrial/fanuc/blob/3ea2842baca3184cc621071b785cbf0c588a4046/fanuc_m10ia_support/config/opw_parameters_m10ia.yaml>`_ as |
| 62 | +an example you can reduce your ``kinematics.yaml`` to the following: |
| 63 | + |
| 64 | +.. code-block:: yaml |
| 65 | +
|
| 66 | + manipulator: |
| 67 | + kinematics_solver: moveit_opw_kinematics_plugin/MoveItOPWKinematicsPlugin |
| 68 | +
|
| 69 | +and then add a ``rosparam`` ``load`` line to your ``launch/planning_context.launch`` which causes the parameters in that file to be loaded onto the parameter server: |
| 70 | + |
| 71 | +.. code-block:: xml |
| 72 | +
|
| 73 | + <!-- Load default settings for kinematics; these settings are overridden by settings in a node's namespace --> |
| 74 | + <group ns="$(arg robot_description)_kinematics"> |
| 75 | + <rosparam command="load" file="$(find opw_tutorial)/config/kinematics.yaml"/> |
| 76 | + <rosparam command="load" ns="manipulator" file="$(find fanuc_lrmate200ib_support)/config/opw_parameters_lrmate200ib.yaml"/> |
| 77 | + </group> |
| 78 | +
|
| 79 | +Note that the ``ns`` parameter has to match the name you gave your planning group during the setup. |
| 80 | + |
| 81 | +The MoveIt Setup Assistant can automatically insert that line, removing the need to manually edit the ``planning_context.launch`` file. On the *Define Planning Group* page, select the *opw_parameters* |
| 82 | +file for your robot in the *Kin. parameters file* field |
| 83 | + |
| 84 | +.. image:: images/assistant.png |
0 commit comments