Skip to content

How to Tune Parameters for Velocity Controller #719

Closed
@Yeesha-R

Description

@Yeesha-R

Affected ROS Driver version(s)

ROS noetic

Used ROS distribution.

Noetic

Which combination of platform is the ROS driver running on.

Linux with realtime patch

How is the UR ROS Driver installed.

Build both the ROS driver and UR Client Library from source

Which robot platform is the driver connected to.

UR E-series robot, Real robot

Robot SW / URSim version(s)

5.12.4

How is the ROS driver used.

Through the robot teach pendant using External Control URCap

Issue details

Summary

I want to reduce the stiffness of my robot joints by tuning the PID values of the controller.

Issue details

I am controlling my UR5e robot arm with ROS.
I tried to modify the proportional (P) values within the scaled_vel_joint_traj_controller in my .yaml file (see the code below).

scaled_vel_joint_traj_controller:
   type: velocity_controllers/ScaledJointTrajectoryController
   joints: *robot_joints
   constraints:
      goal_time: 0.6
      stopped_velocity_tolerance: 0.05
      shoulder_pan_joint: {trajectory: 0.1, goal: 0.1}
      shoulder_lift_joint: {trajectory: 0.1, goal: 0.1}
      elbow_joint: {trajectory: 0.1, goal: 0.1}
      wrist_1_joint: {trajectory: 0.1, goal: 0.1}
      wrist_2_joint: {trajectory: 0.1, goal: 0.1}
      wrist_3_joint: {trajectory: 0.1, goal: 0.1}
   gains:
      #!!These values have not been optimized!!
      shoulder_pan_joint:  {p: 5.0,  i: 0.05, d: 0.1, i_clamp: 1}
      shoulder_lift_joint: {p: 5.0,  i: 0.05, d: 0.1, i_clamp: 1}
      elbow_joint:         {p: 5.0,  i: 0.05, d: 0.1, i_clamp: 1}
      wrist_1_joint:       {p: 5.0,  i: 0.05, d: 0.1, i_clamp: 1}
      wrist_2_joint:       {p: 5.0,  i: 0.05, d: 0.1, i_clamp: 1}
      wrist_3_joint:       {p: 5.0,  i: 0.05, d: 0.1, i_clamp: 1}
   # Use a feedforward term to reduce the size of PID gains
   velocity_ff:
      shoulder_pan_joint: 1.0
      shoulder_lift_joint: 1.0
      elbow_joint: 1.0
      wrist_1_joint: 1.0
      wrist_2_joint: 1.0
      wrist_3_joint: 1.0
   stop_trajectory_duration: 0.5
   state_publish_rate: *loop_hz
   action_monitor_rate: 20

Initially, I increased the P value of the shoulder_pan_joint to 6.0, which caused the controller to produce some noise. I then changed the P value back to the default value of 5.0. Afterwards, I experimented with random values between 3.0 and 6.5, and the noise stopped, but the stiffness of the base joint did not change. Additionally, I updated the transmission_hw_interface in the .xacro file to EffortJointInterface using the following line
transmission_hw_interface:=hardware_interface/EffortJointInterface

My questions are:

  1. Is it possible to include PID tuning in the scaled_pos_joint_traj_controller?

  2. How can I effectively reduce the stiffness of the joints? I am particularly interested in reducing the stiffness when the robot is in freedrive mode.

  3. How can I effectively tune the PID values to achieve my goal of reducing the joint stiffness?

Thank you.

Relevant log output

No response

Accept Public visibility

  • I agree to make this context public

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions