choose right ros_control configuration for a kuka arm

asked 2018-05-02 01:59:11 -0600

Markus gravatar image

Hey there,

I currently decided to use a kuka kr 5 robot (one of the ros -industrial robots). I use ros - indigo.

What is the simplest way to control the Endeffectors position accurately?

I mean there a lots of possibilities:

1) What Controller should I choose? (I currently use effort_controllers/Joint Effort controller) 2) What Hardware Interface should I choose? (EffortJointInterface) 3) How to correctly adjust the pid values? 4) Should I choose for every joint the same configuration?

Here is what I have so far (however the last 3 joints are trembling a lot even though I do not do anything with them ...)

Code snippets:

<xacro:arg name="motors_controller_type" default="EffortJointInterface" /> <!-- PositionJointInterface EffortJointInterface-->
    <!-- ros_control plugin -->
    <plugin name="gazebo_ros_control" filename="">
<!--      <robotParam>robot_description</robotParam>  this causes a lot of trouble!!!-->

 <!-- Transmissions for ROS Control same for all 5 joints!-->
<transmission name="tran1">
   <joint name="joint_a1">
   <hardwareInterface>$(arg motors_controller_type)</hardwareInterface>
   <actuator name="motor1">
      <hardwareInterface>$(arg motors_controller_type)</hardwareInterface>

5) Now the joint_effort_limits of the links is what I had to set quite precisely otherwise the robot arm collapses or trembels a lot!

<!--    effort values can be found here:>
    <xacro:property name="joint_effort_limit_1" value="150" />
    <xacro:property name="joint_effort_limit_2" value="150" />
    <xacro:property name="joint_effort_limit_3" value="150" />
    <xacro:property name="joint_effort_limit_4" value="28" />
    <xacro:property name="joint_effort_limit_5" value="0.01" />
    <xacro:property name="joint_effort_limit_6" value="2" /> <!-- let this value low! -->

   <xacro:macro name="kuka_kr5" params="prefix">

<!-- LINKS -->
<!-- base link -->
<link name="${prefix}base_link">
    <origin xyz="-0.017519394031846 8.11394768450848E-07 0.0975924044854325"
            rpy="0 0 0" />
    <mass value="7000" /> <!-- changed mass! 7.58585707666653 -->
        izz="0.0514875586171667" />
    <origin rpy="0 0 0" xyz="0 0 0"/>
      <mesh filename="package://kuka_kr5_description/meshes/kr5_arc/visual/base_link.dae" />
    <origin rpy="0 0 0" xyz="0 0 0"/>
      <mesh filename="package://kuka_kr5_description/meshes/kr5_arc/collision/base_link.stl" />
<!-- link 1 (A1) -->
<link name="${prefix}link_1">
      xyz="0.0359968408135882 0.00783796591813503 -0.0864969937502713"
      rpy="0 0 0" />
      value="5.77242340173648" />
      izz="0.0348614383349291" />
    <origin xyz="0 0 0" rpy="0 0 0"/>
      <mesh filename="package://kuka_kr5_description/meshes/kr5_arc/visual/link_1.dae" />
    <origin xyz="0 0 0" rpy="0 0 0"/>
      <mesh filename="package://kuka_kr5_description/meshes/kr5_arc/collision/link_1.stl" />

6) .pid's should they be choosen for every ros_controller type? I always thought there are some controller types where choosing the pid values is not necessary.....

  # Publish all joint states -----------------------------------
    type: joint_state_controller/JointStateController
    publish_rate: 50  

  # Position Controllers ---------------------------------------
    type: effort_controllers/JointPositionController
    joint: joint_a1
    pid: {p: 1000.00, i: 200.00, d ...
edit retag flag offensive close merge delete


Did you get any solution? I am also facing the same issue. Instead of end effector, my full robot is trembling

Ranjit Kathiriya gravatar image Ranjit Kathiriya  ( 2021-07-30 06:24:09 -0600 )edit