UniversalRobots / Universal_Robots_ROS2_Gazebo_Simulation

BSD 3-Clause "New" or "Revised" License
54 stars 24 forks source link

Robot's joints break on Gazebo #19

Closed skhbk closed 6 months ago

skhbk commented 1 year ago

My Environment

Description

When I start simulation by using ros2 launch ur_simulation_gazebo ur_sim_control.launch.py, the robot's joints break as in this image: default_gzclient_camera(1)-2022-11-18T18_07_23 988005

To clarify this phenomenon, I changed the initial joint positions as follows:

shoulder_pan_joint: 0.0
shoulder_lift_joint: -1.4
elbow_joint: 2.2
wrist_1_joint: -2.37
wrist_2_joint: -1.57
wrist_3_joint: 0.0

If the controller is not activated, this does not happen (the robot just lies down).

My Attempts

Turning off gravity

I added turnGravityOff tag for each link in the URDF description:

<gazebo reference="shoulder_link">
    <turnGravityOff>true</turnGravityOff>
</gazebo>

Then the robot looks fine, but it may behave the same for external forces other than gravity.

Increasing damping and friction

Increasing the values of damping and friction for each joint in URDF made the robot stable, but the joints still shift a little.

<dynamics damping="1" friction="1"/>

Adding CFM and ERP

I didn't see the effect of this.

<gazebo reference="shoulder_pan_joint">
    <implicitSpringDamper>true</implicitSpringDamper>
    <stopCfm>0</stopCfm>
    <stopErp>0.2</stopErp>
</gazebo>
fmauch commented 1 year ago

Thanks for reporting this. This package is still in a rather early stage (hence it is not released as binary form) and we currently don't have many resources available to work on this, I'm afraid.

skhbk commented 1 year ago

Thanks for your response. Is this problem specific to my environment?

danzimmerman commented 1 year ago

Thanks for reporting this. This package is still in a rather early stage (hence it is not released as binary form) and we currently don't have many resources available to work on this, I'm afraid.

Are this package and the Ignition sim package in a similar state?

Thanks for your response. Is this problem specific to my environment?

No, I'm seeing something similar on Rolling. The robot is actually undergoing slow relaxation oscillations in the relative joint poses in my case, but unfortunately my Gazebo video capture also isn't working :sweat_smile:

(Edit: the oscillations and breaking joints happen for me in the all-zeros starting posture if I turn on a little bit of x-direction gravity)

skhbk commented 1 year ago

Thanks, @danzimmerman. I captured a video with all-zeros posture and some x-direction gravity.

https://user-images.githubusercontent.com/84374700/206959364-9915f41e-20c0-4255-898d-27afbe76fde0.mp4

danzimmerman commented 1 year ago

I captured a video with all-zeros posture and some x-direction gravity.

Yes, very similar to what I'm seeing. If I figure anything out about workarounds/fixes, I'll post here and/or make a PR.

relffok commented 1 year ago

Yes, very similar to what I'm seeing. If I figure anything out about workarounds/fixes, I'll post here and/or make a PR.

I'm experiencing the same issue on humble (galactic was fine). Feel free to document your process, maybe we can figure it out together!

danzimmerman commented 1 year ago

galactic was fine

That's interesting.

Will definitely document what I find if I find anything. I just got back to working on this.

danzimmerman commented 1 year ago

Can confirm it works fine on Galactic. (Ubuntu 20.04 native install)

https://www.youtube.com/watch?v=wRaylxmKC4w

danzimmerman commented 1 year ago

These issues seem similar, several different suggestions there.

https://github.com/ros-controls/gazebo_ros2_control/issues/73 https://github.com/ros-controls/gazebo_ros2_control/issues/54

danzimmerman commented 1 year ago

@relffok Among other discussion of the Gazebo fmax parameter, I found this comment from a while back (I added the bold emphasis):

_@JaehyunShim Here is my comments https://github.com/ros-controls/gazebo_ros2_control/pull/44#discussion_r565177746. There are several ways to workaround it. Currently, I created an additional gazebo plugin to help calling SetParam("fmax", 0, ) inside the Load() function, so that when joint_limit_interface is ready, I can simply remove my own plugin. You can also modify the gazebo_ros2control to add in your own fix.

It seems like there's something similar in gazebo_ros_control for Noetic here where the joint's fmax is set to the joint's effort limit:

{
  // joint->SetParam("fmax") must be called if joint->SetAngle() or joint->SetParam("vel") are
  // going to be called. joint->SetParam("fmax") must *not* be called if joint->SetForce() is
  // going to be called.
#if GAZEBO_MAJOR_VERSION > 2
  joint->SetParam("fmax", 0, joint_effort_limits_[j]);
#else
  joint->SetMaxForce(0, joint_effort_limits_[j]);
#endif
}

Workaround Comparison

I forked and modified gazebo_ros2_control implementation of GazeboSystem::registerJoints(...) here and set a random large limit:

  // At first we do a test with an arbitrary force limit of 1e6
  this->dataPtr->sim_joints_[j]->SetParam("fmax", 0, 1000000.0);

To get the robot to move, I'm using

ros2 launch ur_robot_driver test_joint_trajectory_controller.launch.py

As-Is ❌

On the as-is humble branch of gazebo_ros2_control, the robot is badly broken:

https://youtu.be/4MPdITYEl54

Workaround ✅

On my dz/humble-fmax-test branch, the robot seems to work fine:

https://youtu.be/Gdoyjp_Gego

Next Steps

According to this comment, this comment and the Noetic code in ROS 1 gazebo_ros_control above, this is something that should be handled with the joint limits interface.

So I need to look into ros2_control/joint_limits_interface to see what's going on there.

I don't think I have access to joint limit data where I hacked it in to gazebo_ros2_control.

Also worth noting is this joint friction/damping plus use_sim_time workaround suggested by @shonigmann here, however my galactic installation has a mix of use_sim_time settings on the nodes, as far as I can tell has zero damping or friction specified in the joints (retrieved with gz model --model-name ur --info) and that works fine.

danzimmerman commented 1 year ago

Another observation:

When I set fmax from the code, the joints' friction parameters change to the value I set.

In gazebo_ros2_control/src/gazebo_system.cpp:

this->dataPtr->sim_joints_[j]->SetParam("fmax", 0, 867530.9);

In the description retrieved with gz model --model-name ur --info:

joint {
  name: "ur::shoulder_pan_joint"
  id: 47
  angle: 0.0059931542239271
  type: REVOLUTE
  parent: "ur::base_link"
  parent_id: 11
  child: "ur::shoulder_link"
  child_id: 16
  pose {
    position {
      x: 0
      y: 0
      z: 0
    }
    orientation {
      x: 0
      y: 0
      z: 0
      w: 1
    }
  }
  axis1 {
    xyz {
      x: 0
      y: 0
      z: 1
    }
    limit_lower: -6.28319
    limit_upper: 6.28319
    limit_effort: 150
    limit_velocity: 3.14159
    damping: 0
    friction: 867530.9                       <---------- Set from code by setting fmax
    use_parent_model_frame: false
    xyz_expressed_in: ""
  }
}

There's a Gazebo Answers post suggesting they need to be set together:

https://answers.gazebosim.org/question/19635/modfy-a-joints-friction-value-deuring-exacution/?answer=19758#post-id-19758

There's an archived Bitbucket PR for Gazebo discussing this a bit:

https://osrf-migration.github.io/gazebo-gh-pages/#!/osrf/gazebo/pull-requests/1221/page/1

danzimmerman commented 1 year ago

Another Gazebo Answers post about fmax and friction:

https://answers.gazebosim.org/question/24487/change-joint-characteristics-at-runtime/

To lock a joint, I would set the fmax field to a large value and vel to 0 (this is also how we set joint friction, using both fmax and vel)

The dParamFMax parameter is set here in ODEJoint::SetParam(...) (and at Line 444 for friction, which as the post says uses vel and fmax).

It also appears that a max_force tag in the SDF would pass through to the fmax parameter here at Line 131.

max_force/fmax seem to be the maximum force for an ODE joint motor as described here:

http://ode.org/wiki/index.php/Manual#Stops_and_motor_parameters

Joint motors solve all these problems: they bring the body up to speed in one time step, provided that does not take more force than is allowed. Joint motors need no extra parameters because they are actually implemented as constraints. They can effectively see one time step into the future to work out the correct force.

In prior implementations it seems like people have been setting fmax to the joint effort limit but given the description above I'm not sure that's right. The effort limit is a separate parameter anyway:

limit_lower: -6.28319
limit_upper: 6.28319
limit_effort: 150            <--- effort limit from URDF xacro
limit_velocity: 3.14159
damping: 0
friction: 867530.9         <--- fmax set in code

Some more docs on joint motors:

https://classic.gazebosim.org/tutorials?tut=set_velocity&cat=#SetJointVelocityUsingJointMotors

The first call sets the key vel to the velocity the joint should travel at. It is meters per second for prismatic joints and radians per second for all others. The other call sets the key fmax. It is the maximum force or torque a joint motor may apply during a time step. Set it larger than the force required to be at the target velocity at the next time step. Set it smaller to apply a force over many time steps until the velocity is reached.

In velocity/position control, I'd think we'd always want to stay well over the minimal amount of joint torque to achieve the next joint velocity in simulation.

I'd think the effort limits from this page should probably be handled some other supervisory way (joint_limits_interface?) if they're included at all in Gazebo simulation. The real UR robot will not start slowly accumulating velocity errors if you exceed its joint limits, it'll just fault.

I'm going to see if I can pass max_force through from the .urdf.xacro file instead of injecting it in the source code.

danzimmerman commented 1 year ago

I'm going to see if I can pass max_force through from the .urdf.xacro file instead of injecting it in the source code.

I didn't get that to work yet. The draft PR mentioned above uses the joints' <dynamics> tags to add "friction" instead, which ultimately sets dParamFMax, but this is specific to ODE and a little confusing.

It's potentially a good interim workaround to this issue if you're planning to use Open Dynamics Engine. It's simple.

relffok commented 1 year ago

Excellent documentation, thanks so much! I haven't had the time to look into the reasons for the parameter adaptions, but I quickly tested the mentioned PR and I can confirm it works on debian humble (UR_gazebo and UR_descr from source) as I used ODE as well.

I also quickly used MoveIt to control the adapted robot, which I can confirm to work as well (with adaptions of https://github.com/UniversalRobots/Universal_Robots_ROS2_Gazebo_Simulation/pull/22) I will have a closer look at your findings as soon as I find the time!

santoshbalaji commented 1 year ago

@danzimmerman your solution was very helpful. thanks !!!

delipl commented 1 year ago

@Wiktor-99 worked with our own manipulator in gazebo simulation on ROS 2 Foxy and he found out solution for moving joints. It is necessary to add dynamics tag with damping and friction and implicitSpringDamper for the joints with the gazebo reference.

<joint name="${prefix}wrist_3_joint" type="revolute">
  [...]
  <dynamics damping="0.7" friction="1.0"/>
</joint>

<gazebo reference="${prefix}wrist_3_joint">
  <implicitSpringDamper>true</implicitSpringDamper>
</gazebo>

I applied this to the ur_description and the joints don't break anymore. image

danzimmerman commented 1 year ago

It is necessary to add dynamics tag with damping and friction and implicitSpringDamper for the joints with the gazebo reference.

In my tests, setting friction is enough. Wonder if that works for you?

delipl commented 1 year ago

@danzimmerman I will check that!

delipl commented 1 year ago

Hi! I tested only friction parameter in dynamics tag:

<dynamics friction="1.0"/>

Here are the videos: Screencast from 18.05.2023 14:25:40.webm Screencast from 18.05.2023 14:21:30.webm

Screencast from 18.05.2023 14:21:04.webm

The best solution is to add this 3 configurations for joints:

<joint name="${prefix}wrist_3_joint" type="revolute">
  [...]
  <dynamics damping="0.7" friction="1.0"/>
</joint>

<gazebo reference="${prefix}wrist_3_joint">
  <implicitSpringDamper>true</implicitSpringDamper>
</gazebo>
danzimmerman commented 1 year ago

Hi! I tested only friction parameter in dynamics tag:

<dynamics friction="1.0"/>

I can confirm this result when friction is set to 1.0 for each joint in the UR3e.

image

UR3e Gazebo model, friction=1.0 in each joint ```YAML name: "ur" id: 10 is_static: false pose { position { x: -0.00029183954658583753 y: -0.00011466868083646661 z: 2.2929547897558578e-05 } orientation { x: -0.0016056360667725928 y: 0.0035283387897651446 z: 1.4765924024855587e-05 w: 0.99999248624185832 } } joint { name: "ur::base_joint" id: 46 type: FIXED parent: "world" parent_id: 0 child: "ur::base_link" child_id: 11 pose { position { x: 0 y: 0 z: 0 } orientation { x: 0 y: 0 z: 0 w: 1 } } } joint { name: "ur::shoulder_pan_joint" id: 47 angle: 0.42819187645724277 type: REVOLUTE parent: "ur::base_link" parent_id: 11 child: "ur::shoulder_link" child_id: 16 pose { position { x: 0 y: 0 z: 2.7755575615628914e-17 } orientation { x: 0 y: 0 z: 0 w: 1 } } axis1 { xyz { x: 0 y: 0 z: 1 } limit_lower: -6.28319 limit_upper: 6.28319 limit_effort: 56 limit_velocity: 3.14159 damping: 0 friction: 1 use_parent_model_frame: false xyz_expressed_in: "" } } joint { name: "ur::shoulder_lift_joint" id: 48 angle: -0.052294021552956593 type: REVOLUTE parent: "ur::shoulder_link" parent_id: 16 child: "ur::upper_arm_link" child_id: 21 pose { position { x: -2.6469779601696886e-23 y: 5.5511151231257827e-17 z: -2.7755575615628914e-17 } orientation { x: 0 y: 0 z: 0 w: 1 } } axis1 { xyz { x: 0 y: 0 z: 1 } limit_lower: -6.28319 limit_upper: 6.28319 limit_effort: 56 limit_velocity: 3.14159 damping: 0 friction: 1 use_parent_model_frame: false xyz_expressed_in: "" } } joint { name: "ur::elbow_joint" id: 49 angle: 1.171561654474381 type: REVOLUTE parent: "ur::upper_arm_link" parent_id: 21 child: "ur::forearm_link" child_id: 26 pose { position { x: -2.7755575615628914e-17 y: 5.5511151231257827e-17 z: -2.7755678763066065e-17 } orientation { x: 0 y: -2.1175823681357508e-22 z: 0 w: 1 } } axis1 { xyz { x: 0 y: 0 z: 1 } limit_lower: -3.14159 limit_upper: 3.14159 limit_effort: 28 limit_velocity: 3.14159 damping: 0 friction: 1 use_parent_model_frame: false xyz_expressed_in: "" } } joint { name: "ur::wrist_1_joint" id: 50 angle: 0.41676511434641839 type: REVOLUTE parent: "ur::forearm_link" parent_id: 26 child: "ur::wrist_1_link" child_id: 31 pose { position { x: -1.1102230246251565e-16 y: 5.5511151231257827e-17 z: -5.5511151231257827e-17 } orientation { x: 0 y: -2.1175823681357508e-22 z: 0 w: 1 } } axis1 { xyz { x: 0 y: 0 z: 1 } limit_lower: -6.28319 limit_upper: 6.28319 limit_effort: 12 limit_velocity: 6.28319 damping: 0 friction: 1 use_parent_model_frame: false xyz_expressed_in: "" } } joint { name: "ur::wrist_2_joint" id: 51 angle: 0.070364197122390948 type: REVOLUTE parent: "ur::wrist_1_link" parent_id: 31 child: "ur::wrist_2_link" child_id: 36 pose { position { x: -4.9960035979239134e-16 y: 2.7755575615628914e-17 z: -1.5265566588595902e-16 } orientation { x: 0 y: 7.5515863655772091e-24 z: 2.0209095383946746e-22 w: 0.99999999999999989 } } axis1 { xyz { x: 0 y: 0 z: 1 } limit_lower: -6.28319 limit_upper: 6.28319 limit_effort: 12 limit_velocity: 6.28319 damping: 0 friction: 1 use_parent_model_frame: false xyz_expressed_in: "" } } joint { name: "ur::wrist_3_joint" id: 52 angle: 0.41523934994008194 type: REVOLUTE parent: "ur::wrist_2_link" parent_id: 36 child: "ur::wrist_3_link" child_id: 41 pose { position { x: -3.8857806413618311e-16 y: -6.2450045135165055e-17 z: 0 } orientation { x: 0 y: -2.9953303857266052e-23 z: 2.995319383283953e-23 w: 1 } } axis1 { xyz { x: 0 y: 0 z: 1 } limit_lower: -6.28319 limit_upper: 6.28319 limit_effort: 12 limit_velocity: 6.28319 damping: 0 friction: 1 use_parent_model_frame: false xyz_expressed_in: "" } } link { id: 11 name: "ur::base_link" self_collide: false gravity: true kinematic: false enabled: true inertial { mass: 2 pose { position { x: 0 y: 0 z: 0 } orientation { x: 0 y: 0 z: 0 w: 1 } } ixx: 0.00305317 ixy: 0 ixz: 0 iyy: 0.00305317 iyz: 0 izz: 0.005625 } pose { position { x: 0 y: 0 z: 0.05 } orientation { x: 0 y: 0 z: 0 w: 1 } } visual { name: "ur::base_link" id: 11 parent_name: "ur" parent_id: 10 pose { position { x: 0 y: 0 z: 0.05 } orientation { x: 0 y: 0 z: 0 w: 1 } } type: LINK } visual { name: "ur::base_link::base_link_inertia_visual" id: 12 parent_name: "ur::base_link" parent_id: 11 pose { position { x: 0 y: 0 z: 0 } orientation { x: 0 y: 0 z: 0 w: 1 } } geometry { type: MESH mesh { filename: "file:///home//ros/gz_ws/install/share/ur_description/meshes/ur3e/visual/base.dae" scale { x: 1 y: 1 z: 1 } } } is_static: false scale { x: 1 y: 1 z: 1 } type: VISUAL } collision { id: 13 name: "ur::base_link::base_link_inertia_collision" laser_retro: 0 pose { position { x: 0 y: 0 z: 0 } orientation { x: 0 y: 0 z: 0 w: 1 } } geometry { type: MESH mesh { filename: "file:///home//ros/gz_ws/install/share/ur_description/meshes/ur3e/collision/base.stl" scale { x: 1 y: 1 z: 1 } } } surface { friction { mu: 1 mu2: 1 fdir1 { x: 0 y: 0 z: 0 } slip1: 0 slip2: 0 torsional { coefficient: 1 use_patch_radius: true patch_radius: 0 surface_radius: 0 ode { slip: 0 } } } restitution_coefficient: 0 bounce_threshold: 100000 soft_cfm: 0 soft_erp: 0.2 kp: 1000000000000 kd: 1 max_vel: 0.01 min_depth: 0 collide_without_contact: false collide_without_contact_bitmask: 1 collide_bitmask: 65535 elastic_modulus: 0 } visual { name: "ur::base_link::base_link_inertia_collision" id: 13 parent_name: "ur::base_link" parent_id: 11 pose { position { x: 0 y: 0 z: 0 } orientation { x: 0 y: 0 z: 0 w: 1 } } type: COLLISION } visual { name: "ur::base_link::base_link_inertia_collision__COLLISION_VISUAL__" id: 14 parent_name: "ur::base_link" parent_id: 11 cast_shadows: false pose { position { x: 0 y: 0 z: 0 } orientation { x: 0 y: 0 z: 0 w: 1 } } geometry { type: MESH mesh { filename: "file:///home//ros/gz_ws/install/share/ur_description/meshes/ur3e/collision/base.stl" scale { x: 1 y: 1 z: 1 } } } material { script { uri: "file://media/materials/scripts/gazebo.material" name: "Gazebo/OrangeTransparent" } } is_static: false type: COLLISION } } canonical: true enable_wind: false } link { id: 16 name: "ur::shoulder_link" self_collide: false gravity: true kinematic: false enabled: true inertial { mass: 2 pose { position { x: 0 y: 0 z: 0 } orientation { x: 0 y: 0 z: 0 w: 1 } } ixx: 0.00809316 ixy: 0 ixz: 0 iyy: 0.00809316 iyz: 0 izz: 0.005625 } pose { position { x: -0.0031929675645683397 y: -0.0024436684988631005 z: 0.2018075259645494 } orientation { x: -0.015931455122378209 y: -0.0046494161702490752 z: 0.97716915521373915 w: -0.21181362979238819 } } visual { name: "ur::shoulder_link" id: 16 parent_name: "ur" parent_id: 10 pose { position { x: -0.0031929675645683397 y: -0.0024436684988631005 z: 0.2018075259645494 } orientation { x: -0.015931455122378209 y: -0.0046494161702490752 z: 0.97716915521373915 w: -0.21181362979238819 } } type: LINK } visual { name: "ur::shoulder_link::shoulder_link_visual" id: 17 parent_name: "ur::shoulder_link" parent_id: 16 pose { position { x: 0 y: 0 z: 0 } orientation { x: 0 y: 0 z: 0.99999999999911982 w: 1.3267948966775328e-06 } } geometry { type: MESH mesh { filename: "file:///home//ros/gz_ws/install/share/ur_description/meshes/ur3e/visual/shoulder.dae" scale { x: 1 y: 1 z: 1 } } } is_static: false scale { x: 1 y: 1 z: 1 } type: VISUAL } collision { id: 18 name: "ur::shoulder_link::shoulder_link_collision" laser_retro: 0 pose { position { x: 0 y: 0 z: 0 } orientation { x: 0 y: 0 z: 0.99999999999911982 w: 1.3267948966775328e-06 } } geometry { type: MESH mesh { filename: "file:///home//ros/gz_ws/install/share/ur_description/meshes/ur3e/collision/shoulder.stl" scale { x: 1 y: 1 z: 1 } } } surface { friction { mu: 1 mu2: 1 fdir1 { x: 0 y: 0 z: 0 } slip1: 0 slip2: 0 torsional { coefficient: 1 use_patch_radius: true patch_radius: 0 surface_radius: 0 ode { slip: 0 } } } restitution_coefficient: 0 bounce_threshold: 100000 soft_cfm: 0 soft_erp: 0.2 kp: 1000000000000 kd: 1 max_vel: 0.01 min_depth: 0 collide_without_contact: false collide_without_contact_bitmask: 1 collide_bitmask: 65535 elastic_modulus: 0 } visual { name: "ur::shoulder_link::shoulder_link_collision" id: 18 parent_name: "ur::shoulder_link" parent_id: 16 pose { position { x: 0 y: 0 z: 0 } orientation { x: 0 y: 0 z: 0.99999999999911982 w: 1.3267948966775328e-06 } } type: COLLISION } visual { name: "ur::shoulder_link::shoulder_link_collision__COLLISION_VISUAL__" id: 19 parent_name: "ur::shoulder_link" parent_id: 16 cast_shadows: false pose { position { x: 0 y: 0 z: 0 } orientation { x: 0 y: 0 z: 0.99999999999911982 w: 1.3267948966775328e-06 } } geometry { type: MESH mesh { filename: "file:///home//ros/gz_ws/install/share/ur_description/meshes/ur3e/collision/shoulder.stl" scale { x: 1 y: 1 z: 1 } } } material { script { uri: "file://media/materials/scripts/gazebo.material" name: "Gazebo/OrangeTransparent" } } is_static: false type: COLLISION } } enable_wind: false } link { id: 21 name: "ur::upper_arm_link" self_collide: false gravity: true kinematic: false enabled: true inertial { mass: 3.42 pose { position { x: -0.121825 y: 0 z: 0.12 } orientation { x: 5.93570830084467e-12 y: 0.70710901804279691 z: 5.93570830084467e-12 w: 0.70710454432322223 } } ixx: 0.0217285 ixy: 0 ixz: 0 iyy: 0.0217285 iyz: 0 izz: 0.00961875 } pose { position { x: -0.00033758897217561832 y: -0.0013243889702794528 z: 0.20182111521721133 } orientation { x: -0.17923352724829547 y: 0.6841869880722663 z: 0.69664348932376774 w: -0.12021379640266194 } } visual { name: "ur::upper_arm_link" id: 21 parent_name: "ur" parent_id: 10 pose { position { x: -0.00033758897217561832 y: -0.0013243889702794528 z: 0.20182111521721133 } orientation { x: -0.17923352724829547 y: 0.6841869880722663 z: 0.69664348932376774 w: -0.12021379640266194 } } type: LINK } visual { name: "ur::upper_arm_link::upper_arm_link_visual" id: 22 parent_name: "ur::upper_arm_link" parent_id: 21 pose { position { x: -7.72917564369549e-23 y: 5.5511151231257827e-17 z: 0.11999999999999997 } orientation { x: 0.49999999999662686 y: -0.5000018366025516 z: -0.49999999999662686 w: 0.49999816339744829 } } geometry { type: MESH mesh { filename: "file:///home//ros/gz_ws/install/share/ur_description/meshes/ur3e/visual/upperarm.dae" scale { x: 1 y: 1 z: 1 } } } is_static: false scale { x: 1 y: 1 z: 1 } type: VISUAL } collision { id: 23 name: "ur::upper_arm_link::upper_arm_link_collision" laser_retro: 0 pose { position { x: -7.72917564369549e-23 y: 5.5511151231257827e-17 z: 0.11999999999999997 } orientation { x: 0.49999999999662686 y: -0.5000018366025516 z: -0.49999999999662686 w: 0.49999816339744829 } } geometry { type: MESH mesh { filename: "file:///home//ros/gz_ws/install/share/ur_description/meshes/ur3e/collision/upperarm.stl" scale { x: 1 y: 1 z: 1 } } } surface { friction { mu: 1 mu2: 1 fdir1 { x: 0 y: 0 z: 0 } slip1: 0 slip2: 0 torsional { coefficient: 1 use_patch_radius: true patch_radius: 0 surface_radius: 0 ode { slip: 0 } } } restitution_coefficient: 0 bounce_threshold: 100000 soft_cfm: 0 soft_erp: 0.2 kp: 1000000000000 kd: 1 max_vel: 0.01 min_depth: 0 collide_without_contact: false collide_without_contact_bitmask: 1 collide_bitmask: 65535 elastic_modulus: 0 } visual { name: "ur::upper_arm_link::upper_arm_link_collision" id: 23 parent_name: "ur::upper_arm_link" parent_id: 21 pose { position { x: -7.72917564369549e-23 y: 5.5511151231257827e-17 z: 0.11999999999999997 } orientation { x: 0.49999999999662686 y: -0.5000018366025516 z: -0.49999999999662686 w: 0.49999816339744829 } } type: COLLISION } visual { name: "ur::upper_arm_link::upper_arm_link_collision__COLLISION_VISUAL__" id: 24 parent_name: "ur::upper_arm_link" parent_id: 21 cast_shadows: false pose { position { x: -7.72917564369549e-23 y: 5.5511151231257827e-17 z: 0.11999999999999997 } orientation { x: 0.49999999999662686 y: -0.5000018366025516 z: -0.49999999999662686 w: 0.49999816339744829 } } geometry { type: MESH mesh { filename: "file:///home//ros/gz_ws/install/share/ur_description/meshes/ur3e/collision/upperarm.stl" scale { x: 1 y: 1 z: 1 } } } material { script { uri: "file://media/materials/scripts/gazebo.material" name: "Gazebo/OrangeTransparent" } } is_static: false type: COLLISION } } enable_wind: false } link { id: 26 name: "ur::forearm_link" self_collide: false gravity: true kinematic: false enabled: true inertial { mass: 1.26 pose { position { x: -0.1066 y: 0 z: 0.027 } orientation { x: 5.93570830084467e-12 y: 0.70710901804279691 z: 5.93570830084467e-12 w: 0.70710454432322223 } } ixx: 0.00654457 ixy: 0 ixz: 0 iyy: 0.00654457 iyz: 0 izz: 0.00354375 } pose { position { x: 0.22955942692413636 y: 0.10321529180164256 z: 0.22386526429097495 } orientation { x: 0.21599623336306034 y: 0.68885990295106492 z: 0.49103362087718117 w: -0.4875486072664596 } } visual { name: "ur::forearm_link" id: 26 parent_name: "ur" parent_id: 10 pose { position { x: 0.22955942692413636 y: 0.10321529180164256 z: 0.22386526429097495 } orientation { x: 0.21599623336306034 y: 0.68885990295106492 z: 0.49103362087718117 w: -0.4875486072664596 } } type: LINK } visual { name: "ur::forearm_link::forearm_link_visual" id: 27 parent_name: "ur::forearm_link" parent_id: 26 pose { position { x: -8.3266738281831529e-17 y: 8.3266726846886741e-17 z: 0.026999999999999958 } orientation { x: 0.49999999999662686 y: -0.5000018366025516 z: -0.49999999999662686 w: 0.49999816339744829 } } geometry { type: MESH mesh { filename: "file:///home//ros/gz_ws/install/share/ur_description/meshes/ur3e/visual/forearm.dae" scale { x: 1 y: 1 z: 1 } } } is_static: false scale { x: 1 y: 1 z: 1 } type: VISUAL } collision { id: 28 name: "ur::forearm_link::forearm_link_collision" laser_retro: 0 pose { position { x: -8.3266738281831529e-17 y: 8.3266726846886741e-17 z: 0.026999999999999958 } orientation { x: 0.49999999999662686 y: -0.5000018366025516 z: -0.49999999999662686 w: 0.49999816339744829 } } geometry { type: MESH mesh { filename: "file:///home//ros/gz_ws/install/share/ur_description/meshes/ur3e/collision/forearm.stl" scale { x: 1 y: 1 z: 1 } } } surface { friction { mu: 1 mu2: 1 fdir1 { x: 0 y: 0 z: 0 } slip1: 0 slip2: 0 torsional { coefficient: 1 use_patch_radius: true patch_radius: 0 surface_radius: 0 ode { slip: 0 } } } restitution_coefficient: 0 bounce_threshold: 100000 soft_cfm: 0 soft_erp: 0.2 kp: 1000000000000 kd: 1 max_vel: 0.01 min_depth: 0 collide_without_contact: false collide_without_contact_bitmask: 1 collide_bitmask: 65535 elastic_modulus: 0 } visual { name: "ur::forearm_link::forearm_link_collision" id: 28 parent_name: "ur::forearm_link" parent_id: 26 pose { position { x: -8.3266738281831529e-17 y: 8.3266726846886741e-17 z: 0.026999999999999958 } orientation { x: 0.49999999999662686 y: -0.5000018366025516 z: -0.49999999999662686 w: 0.49999816339744829 } } type: COLLISION } visual { name: "ur::forearm_link::forearm_link_collision__COLLISION_VISUAL__" id: 29 parent_name: "ur::forearm_link" parent_id: 26 cast_shadows: false pose { position { x: -8.3266738281831529e-17 y: 8.3266726846886741e-17 z: 0.026999999999999958 } orientation { x: 0.49999999999662686 y: -0.5000018366025516 z: -0.49999999999662686 w: 0.49999816339744829 } } geometry { type: MESH mesh { filename: "file:///home//ros/gz_ws/install/share/ur_description/meshes/ur3e/collision/forearm.stl" scale { x: 1 y: 1 z: 1 } } } material { script { uri: "file://media/materials/scripts/gazebo.material" name: "Gazebo/OrangeTransparent" } } is_static: false type: COLLISION } } enable_wind: false } link { id: 31 name: "ur::wrist_1_link" self_collide: false gravity: true kinematic: false enabled: true inertial { mass: 0.8 pose { position { x: 0 y: 0 z: 0 } orientation { x: 0 y: 0 z: 0 w: 1 } } ixx: 0.002085 ixy: 0 ixz: 0 iyy: 0.002085 iyz: 0 izz: 0.00225 } pose { position { x: 0.27815935638517741 y: 0.2686571459299667 z: 0.037768674316212385 } orientation { x: 0.366646034821522 y: 0.59301467442843436 z: 0.4289831492184763 w: -0.57434984003548883 } } visual { name: "ur::wrist_1_link" id: 31 parent_name: "ur" parent_id: 10 pose { position { x: 0.27815935638517741 y: 0.2686571459299667 z: 0.037768674316212385 } orientation { x: 0.366646034821522 y: 0.59301467442843436 z: 0.4289831492184763 w: -0.57434984003548883 } } type: LINK } visual { name: "ur::wrist_1_link::wrist_1_link_visual" id: 32 parent_name: "ur::wrist_1_link" parent_id: 31 pose { position { x: -1.6653340964806023e-16 y: 2.7755575615628914e-17 z: -0.104 } orientation { x: 0.70710807985947366 y: -1.4973541021779167e-22 z: 1.4973596022767479e-22 w: 0.70710548251123639 } } geometry { type: MESH mesh { filename: "file:///home//ros/gz_ws/install/share/ur_description/meshes/ur3e/visual/wrist1.dae" scale { x: 1 y: 1 z: 1 } } } is_static: false scale { x: 1 y: 1 z: 1 } type: VISUAL } collision { id: 33 name: "ur::wrist_1_link::wrist_1_link_collision" laser_retro: 0 pose { position { x: -1.6653340964806023e-16 y: 2.7755575615628914e-17 z: -0.104 } orientation { x: 0.70710807985947366 y: -1.4973541021779167e-22 z: 1.4973596022767479e-22 w: 0.70710548251123639 } } geometry { type: MESH mesh { filename: "file:///home//ros/gz_ws/install/share/ur_description/meshes/ur3e/collision/wrist1.stl" scale { x: 1 y: 1 z: 1 } } } surface { friction { mu: 1 mu2: 1 fdir1 { x: 0 y: 0 z: 0 } slip1: 0 slip2: 0 torsional { coefficient: 1 use_patch_radius: true patch_radius: 0 surface_radius: 0 ode { slip: 0 } } } restitution_coefficient: 0 bounce_threshold: 100000 soft_cfm: 0 soft_erp: 0.2 kp: 1000000000000 kd: 1 max_vel: 0.01 min_depth: 0 collide_without_contact: false collide_without_contact_bitmask: 1 collide_bitmask: 65535 elastic_modulus: 0 } visual { name: "ur::wrist_1_link::wrist_1_link_collision" id: 33 parent_name: "ur::wrist_1_link" parent_id: 31 pose { position { x: -1.6653340964806023e-16 y: 2.7755575615628914e-17 z: -0.104 } orientation { x: 0.70710807985947366 y: -1.4973541021779167e-22 z: 1.4973596022767479e-22 w: 0.70710548251123639 } } type: COLLISION } visual { name: "ur::wrist_1_link::wrist_1_link_collision__COLLISION_VISUAL__" id: 34 parent_name: "ur::wrist_1_link" parent_id: 31 cast_shadows: false pose { position { x: -1.6653340964806023e-16 y: 2.7755575615628914e-17 z: -0.104 } orientation { x: 0.70710807985947366 y: -1.4973541021779167e-22 z: 1.4973596022767479e-22 w: 0.70710548251123639 } } geometry { type: MESH mesh { filename: "file:///home//ros/gz_ws/install/share/ur_description/meshes/ur3e/collision/wrist1.stl" scale { x: 1 y: 1 z: 1 } } } material { script { uri: "file://media/materials/scripts/gazebo.material" name: "Gazebo/OrangeTransparent" } } is_static: false type: COLLISION } } enable_wind: false } link { id: 36 name: "ur::wrist_2_link" self_collide: false gravity: true kinematic: false enabled: true inertial { mass: 0.8 pose { position { x: 0 y: 0 z: 0 } orientation { x: 0 y: 0 z: 0 w: 1 } } ixx: 0.002085 ixy: 0 ixz: 0 iyy: 0.002085 iyz: 0 izz: 0.00225 } pose { position { x: 0.19878929179925789 y: 0.2320294496953221 z: 0.033795121868799155 } orientation { x: -0.14211509513124285 y: 0.70924321835618853 z: -0.14677927280846864 w: -0.67470971686008119 } } visual { name: "ur::wrist_2_link" id: 36 parent_name: "ur" parent_id: 10 pose { position { x: 0.19878929179925789 y: 0.2320294496953221 z: 0.033795121868799155 } orientation { x: -0.14211509513124285 y: 0.70924321835618853 z: -0.14677927280846864 w: -0.67470971686008119 } } type: LINK } visual { name: "ur::wrist_2_link::wrist_2_link_visual" id: 37 parent_name: "ur::wrist_2_link" parent_id: 36 pose { position { x: -4.9960036108159625e-16 y: 2.124844926931163e-50 z: -0.0853500000000001 } orientation { x: 0 y: 1.6155871338926322e-27 z: -7.7048348339792173e-23 w: 0.99999999999999989 } } geometry { type: MESH mesh { filename: "file:///home//ros/gz_ws/install/share/ur_description/meshes/ur3e/visual/wrist2.dae" scale { x: 1 y: 1 z: 1 } } } is_static: false scale { x: 1 y: 1 z: 1 } type: VISUAL } collision { id: 38 name: "ur::wrist_2_link::wrist_2_link_collision" laser_retro: 0 pose { position { x: -4.9960036108159625e-16 y: 2.124844926931163e-50 z: -0.0853500000000001 } orientation { x: 0 y: 1.6155871338926322e-27 z: -7.7048348339792173e-23 w: 0.99999999999999989 } } geometry { type: MESH mesh { filename: "file:///home//ros/gz_ws/install/share/ur_description/meshes/ur3e/collision/wrist2.stl" scale { x: 1 y: 1 z: 1 } } } surface { friction { mu: 1 mu2: 1 fdir1 { x: 0 y: 0 z: 0 } slip1: 0 slip2: 0 torsional { coefficient: 1 use_patch_radius: true patch_radius: 0 surface_radius: 0 ode { slip: 0 } } } restitution_coefficient: 0 bounce_threshold: 100000 soft_cfm: 0 soft_erp: 0.2 kp: 1000000000000 kd: 1 max_vel: 0.01 min_depth: 0 collide_without_contact: false collide_without_contact_bitmask: 1 collide_bitmask: 65535 elastic_modulus: 0 } visual { name: "ur::wrist_2_link::wrist_2_link_collision" id: 38 parent_name: "ur::wrist_2_link" parent_id: 36 pose { position { x: -4.9960036108159625e-16 y: 2.124844926931163e-50 z: -0.0853500000000001 } orientation { x: 0 y: 1.6155871338926322e-27 z: -7.7048348339792173e-23 w: 0.99999999999999989 } } type: COLLISION } visual { name: "ur::wrist_2_link::wrist_2_link_collision__COLLISION_VISUAL__" id: 39 parent_name: "ur::wrist_2_link" parent_id: 36 cast_shadows: false pose { position { x: -4.9960036108159625e-16 y: 2.124844926931163e-50 z: -0.0853500000000001 } orientation { x: 0 y: 1.6155871338926322e-27 z: -7.7048348339792173e-23 w: 0.99999999999999989 } } geometry { type: MESH mesh { filename: "file:///home//ros/gz_ws/install/share/ur_description/meshes/ur3e/collision/wrist2.stl" scale { x: 1 y: 1 z: 1 } } } material { script { uri: "file://media/materials/scripts/gazebo.material" name: "Gazebo/OrangeTransparent" } } is_static: false type: COLLISION } } enable_wind: false } link { id: 41 name: "ur::wrist_3_link" self_collide: false gravity: true kinematic: false enabled: true inertial { mass: 0.35 pose { position { x: 0 y: 0 z: -0.02 } orientation { x: 0 y: 0 z: 0 w: 1 } } ixx: 0.000136267 ixy: 0 ixz: 0 iyy: 0.000136267 iyz: 0 izz: 0.0001792 } pose { position { x: 0.16276614751979787 y: 0.31585212014835995 z: 0.032659652528992549 } orientation { x: 0.5121387620028891 y: 0.53047836407871252 z: 0.26682326057570127 w: -0.62057388062524232 } } visual { name: "ur::wrist_3_link" id: 41 parent_name: "ur" parent_id: 10 pose { position { x: 0.16276614751979787 y: 0.31585212014835995 z: 0.032659652528992549 } orientation { x: 0.5121387620028891 y: 0.53047836407871252 z: 0.26682326057570127 w: -0.62057388062524232 } } type: LINK } visual { name: "ur::wrist_3_link::wrist_3_link_visual" id: 42 parent_name: "ur::wrist_3_link" parent_id: 41 pose { position { x: -3.8857805861880479e-16 y: -6.9388939039072284e-17 z: -0.092099999999999918 } orientation { x: 0.70710807985947366 y: 0 z: 0 w: 0.70710548251123639 } } geometry { type: MESH mesh { filename: "file:///home//ros/gz_ws/install/share/ur_description/meshes/ur3e/visual/wrist3.dae" scale { x: 1 y: 1 z: 1 } } } is_static: false scale { x: 1 y: 1 z: 1 } type: VISUAL } collision { id: 43 name: "ur::wrist_3_link::wrist_3_link_collision" laser_retro: 0 pose { position { x: -3.8857805861880479e-16 y: -6.9388939039072284e-17 z: -0.092099999999999918 } orientation { x: 0.70710807985947366 y: 0 z: 0 w: 0.70710548251123639 } } geometry { type: MESH mesh { filename: "file:///home//ros/gz_ws/install/share/ur_description/meshes/ur3e/collision/wrist3.stl" scale { x: 1 y: 1 z: 1 } } } surface { friction { mu: 1 mu2: 1 fdir1 { x: 0 y: 0 z: 0 } slip1: 0 slip2: 0 torsional { coefficient: 1 use_patch_radius: true patch_radius: 0 surface_radius: 0 ode { slip: 0 } } } restitution_coefficient: 0 bounce_threshold: 100000 soft_cfm: 0 soft_erp: 0.2 kp: 1000000000000 kd: 1 max_vel: 0.01 min_depth: 0 collide_without_contact: false collide_without_contact_bitmask: 1 collide_bitmask: 65535 elastic_modulus: 0 } visual { name: "ur::wrist_3_link::wrist_3_link_collision" id: 43 parent_name: "ur::wrist_3_link" parent_id: 41 pose { position { x: -3.8857805861880479e-16 y: -6.9388939039072284e-17 z: -0.092099999999999918 } orientation { x: 0.70710807985947366 y: 0 z: 0 w: 0.70710548251123639 } } type: COLLISION } visual { name: "ur::wrist_3_link::wrist_3_link_collision__COLLISION_VISUAL__" id: 44 parent_name: "ur::wrist_3_link" parent_id: 41 cast_shadows: false pose { position { x: -3.8857805861880479e-16 y: -6.9388939039072284e-17 z: -0.092099999999999918 } orientation { x: 0.70710807985947366 y: 0 z: 0 w: 0.70710548251123639 } } geometry { type: MESH mesh { filename: "file:///home//ros/gz_ws/install/share/ur_description/meshes/ur3e/collision/wrist3.stl" scale { x: 1 y: 1 z: 1 } } } material { script { uri: "file://media/materials/scripts/gazebo.material" name: "Gazebo/OrangeTransparent" } } is_static: false type: COLLISION } } enable_wind: false } visual { name: "ur" id: 10 parent_name: "default" parent_id: 1 pose { position { x: -0.00029183954658583753 y: -0.00011466868083646661 z: 2.2929547897558578e-05 } orientation { x: -0.0016056360667725928 y: 0.0035283387897651446 z: 1.4765924024855587e-05 w: 0.99999248624185832 } } type: MODEL } scale { x: 1 y: 1 z: 1 } self_collide: false enable_wind: false plugin { name: "gazebo_ros2_control" filename: "libgazebo_ros2_control.so" innerxml: "/home//ros/gz_ws/install/share/ur_simulation_gazebo/config/ur_controllers.yaml\n" } ```
Joint dynamics settings ```XML ```

However, if I set the friction higher, here, to 1.0x the joint's effort limit, the model is stable with no damping. For example, these settings are stable:

UR3e Gazebo model ```YAML name: "ur" id: 10 is_static: false pose { position { x: 1.7664581161916394e-07 y: 9.8421628554235216e-07 z: 6.1777577546606732e-08 } orientation { x: 1.0063997217110073e-05 y: -1.8200132416254767e-06 z: -1.6235609612999127e-07 w: 0.99999999994768851 } } joint { name: "ur::base_joint" id: 46 type: FIXED parent: "world" parent_id: 0 child: "ur::base_link" child_id: 11 pose { position { x: 0 y: 0 z: 0 } orientation { x: 0 y: 0 z: 0 w: 1 } } } joint { name: "ur::shoulder_pan_joint" id: 47 angle: 8.2505567948309988e-05 type: REVOLUTE parent: "ur::base_link" parent_id: 11 child: "ur::shoulder_link" child_id: 16 pose { position { x: 0 y: 0 z: 2.7755575615628914e-17 } orientation { x: 0 y: 0 z: 0 w: 1 } } axis1 { xyz { x: 0 y: 0 z: 1 } limit_lower: -6.28319 limit_upper: 6.28319 limit_effort: 56 limit_velocity: 3.14159 damping: 0 friction: 56 use_parent_model_frame: false xyz_expressed_in: "" } } joint { name: "ur::shoulder_lift_joint" id: 48 angle: -1.569999232182308 type: REVOLUTE parent: "ur::shoulder_link" parent_id: 16 child: "ur::upper_arm_link" child_id: 21 pose { position { x: -2.6469779601696886e-23 y: 5.5511151231257827e-17 z: -2.7755575615628914e-17 } orientation { x: 0 y: 0 z: 0 w: 1 } } axis1 { xyz { x: 0 y: 0 z: 1 } limit_lower: -6.28319 limit_upper: 6.28319 limit_effort: 56 limit_velocity: 3.14159 damping: 0 friction: 56 use_parent_model_frame: false xyz_expressed_in: "" } } joint { name: "ur::elbow_joint" id: 49 angle: -1.614056065690761e-06 type: REVOLUTE parent: "ur::upper_arm_link" parent_id: 21 child: "ur::forearm_link" child_id: 26 pose { position { x: -2.7755575615628914e-17 y: 5.5511151231257827e-17 z: -2.7755678763066065e-17 } orientation { x: 0 y: -2.1175823681357508e-22 z: 0 w: 1 } } axis1 { xyz { x: 0 y: 0 z: 1 } limit_lower: -3.14159 limit_upper: 3.14159 limit_effort: 28 limit_velocity: 3.14159 damping: 0 friction: 28 use_parent_model_frame: false xyz_expressed_in: "" } } joint { name: "ur::wrist_1_joint" id: 50 angle: 9.3461879187017871e-06 type: REVOLUTE parent: "ur::forearm_link" parent_id: 26 child: "ur::wrist_1_link" child_id: 31 pose { position { x: -1.1102230246251565e-16 y: 5.5511151231257827e-17 z: -5.5511151231257827e-17 } orientation { x: 0 y: -2.1175823681357508e-22 z: 0 w: 1 } } axis1 { xyz { x: 0 y: 0 z: 1 } limit_lower: -6.28319 limit_upper: 6.28319 limit_effort: 12 limit_velocity: 6.28319 damping: 0 friction: 12 use_parent_model_frame: false xyz_expressed_in: "" } } joint { name: "ur::wrist_2_joint" id: 51 angle: -0.70649922833953216 type: REVOLUTE parent: "ur::wrist_1_link" parent_id: 31 child: "ur::wrist_2_link" child_id: 36 pose { position { x: -4.9960035979239134e-16 y: 2.7755575615628914e-17 z: -1.5265566588595902e-16 } orientation { x: 0 y: 7.5515863655772091e-24 z: 2.0209095383946746e-22 w: 0.99999999999999989 } } axis1 { xyz { x: 0 y: 0 z: 1 } limit_lower: -6.28319 limit_upper: 6.28319 limit_effort: 12 limit_velocity: 6.28319 damping: 0 friction: 12 use_parent_model_frame: false xyz_expressed_in: "" } } joint { name: "ur::wrist_3_joint" id: 52 angle: 1.6066448162987967e-06 type: REVOLUTE parent: "ur::wrist_2_link" parent_id: 36 child: "ur::wrist_3_link" child_id: 41 pose { position { x: -3.8857806413618311e-16 y: -6.2450045135165055e-17 z: 0 } orientation { x: 0 y: -2.9953303857266052e-23 z: 2.995319383283953e-23 w: 1 } } axis1 { xyz { x: 0 y: 0 z: 1 } limit_lower: -6.28319 limit_upper: 6.28319 limit_effort: 12 limit_velocity: 6.28319 damping: 0 friction: 12 use_parent_model_frame: false xyz_expressed_in: "" } } link { id: 11 name: "ur::base_link" self_collide: false gravity: true kinematic: false enabled: true inertial { mass: 2 pose { position { x: 0 y: 0 z: 0 } orientation { x: 0 y: 0 z: 0 w: 1 } } ixx: 0.00305317 ixy: 0 ixz: 0 iyy: 0.00305317 iyz: 0 izz: 0.005625 } pose { position { x: 0 y: 0 z: 0.05 } orientation { x: 0 y: 0 z: 0 w: 1 } } visual { name: "ur::base_link" id: 11 parent_name: "ur" parent_id: 10 pose { position { x: 0 y: 0 z: 0.05 } orientation { x: 0 y: 0 z: 0 w: 1 } } type: LINK } visual { name: "ur::base_link::base_link_inertia_visual" id: 12 parent_name: "ur::base_link" parent_id: 11 pose { position { x: 0 y: 0 z: 0 } orientation { x: 0 y: 0 z: 0 w: 1 } } geometry { type: MESH mesh { filename: "file:///home/dan/ros/gz_ws/install/share/ur_description/meshes/ur3e/visual/base.dae" scale { x: 1 y: 1 z: 1 } } } is_static: false scale { x: 1 y: 1 z: 1 } type: VISUAL } collision { id: 13 name: "ur::base_link::base_link_inertia_collision" laser_retro: 0 pose { position { x: 0 y: 0 z: 0 } orientation { x: 0 y: 0 z: 0 w: 1 } } geometry { type: MESH mesh { filename: "file:///home/dan/ros/gz_ws/install/share/ur_description/meshes/ur3e/collision/base.stl" scale { x: 1 y: 1 z: 1 } } } surface { friction { mu: 1 mu2: 1 fdir1 { x: 0 y: 0 z: 0 } slip1: 0 slip2: 0 torsional { coefficient: 1 use_patch_radius: true patch_radius: 0 surface_radius: 0 ode { slip: 0 } } } restitution_coefficient: 0 bounce_threshold: 100000 soft_cfm: 0 soft_erp: 0.2 kp: 1000000000000 kd: 1 max_vel: 0.01 min_depth: 0 collide_without_contact: false collide_without_contact_bitmask: 1 collide_bitmask: 65535 elastic_modulus: 0 } visual { name: "ur::base_link::base_link_inertia_collision" id: 13 parent_name: "ur::base_link" parent_id: 11 pose { position { x: 0 y: 0 z: 0 } orientation { x: 0 y: 0 z: 0 w: 1 } } type: COLLISION } visual { name: "ur::base_link::base_link_inertia_collision__COLLISION_VISUAL__" id: 14 parent_name: "ur::base_link" parent_id: 11 cast_shadows: false pose { position { x: 0 y: 0 z: 0 } orientation { x: 0 y: 0 z: 0 w: 1 } } geometry { type: MESH mesh { filename: "file:///home/dan/ros/gz_ws/install/share/ur_description/meshes/ur3e/collision/base.stl" scale { x: 1 y: 1 z: 1 } } } material { script { uri: "file://media/materials/scripts/gazebo.material" name: "Gazebo/OrangeTransparent" } } is_static: false type: COLLISION } } canonical: true enable_wind: false } link { id: 16 name: "ur::shoulder_link" self_collide: false gravity: true kinematic: false enabled: true inertial { mass: 2 pose { position { x: 0 y: 0 z: 0 } orientation { x: 0 y: 0 z: 0 w: 1 } } ixx: 0.00809316 ixy: 0 ixz: 0 iyy: 0.00809316 iyz: 0 izz: 0.005625 } pose { position { x: 2.7853444170520962e-07 y: 1.1372628390970756e-06 z: 0.20184985675060552 } orientation { x: 5.743475973535535e-06 y: 3.123253744542718e-05 z: 0.99999999918315985 w: -2.5004427505359085e-05 } } visual { name: "ur::shoulder_link" id: 16 parent_name: "ur" parent_id: 10 pose { position { x: 2.7853444170520962e-07 y: 1.1372628390970756e-06 z: 0.20184985675060552 } orientation { x: 5.743475973535535e-06 y: 3.123253744542718e-05 z: 0.99999999918315985 w: -2.5004427505359085e-05 } } type: LINK } visual { name: "ur::shoulder_link::shoulder_link_visual" id: 17 parent_name: "ur::shoulder_link" parent_id: 16 pose { position { x: 0 y: 0 z: 0 } orientation { x: 0 y: 0 z: 0.99999999999911982 w: 1.3267948966775328e-06 } } geometry { type: MESH mesh { filename: "file:///home/dan/ros/gz_ws/install/share/ur_description/meshes/ur3e/visual/shoulder.dae" scale { x: 1 y: 1 z: 1 } } } is_static: false scale { x: 1 y: 1 z: 1 } type: VISUAL } collision { id: 18 name: "ur::shoulder_link::shoulder_link_collision" laser_retro: 0 pose { position { x: 0 y: 0 z: 0 } orientation { x: 0 y: 0 z: 0.99999999999911982 w: 1.3267948966775328e-06 } } geometry { type: MESH mesh { filename: "file:///home/dan/ros/gz_ws/install/share/ur_description/meshes/ur3e/collision/shoulder.stl" scale { x: 1 y: 1 z: 1 } } } surface { friction { mu: 1 mu2: 1 fdir1 { x: 0 y: 0 z: 0 } slip1: 0 slip2: 0 torsional { coefficient: 1 use_patch_radius: true patch_radius: 0 surface_radius: 0 ode { slip: 0 } } } restitution_coefficient: 0 bounce_threshold: 100000 soft_cfm: 0 soft_erp: 0.2 kp: 1000000000000 kd: 1 max_vel: 0.01 min_depth: 0 collide_without_contact: false collide_without_contact_bitmask: 1 collide_bitmask: 65535 elastic_modulus: 0 } visual { name: "ur::shoulder_link::shoulder_link_collision" id: 18 parent_name: "ur::shoulder_link" parent_id: 16 pose { position { x: 0 y: 0 z: 0 } orientation { x: 0 y: 0 z: 0.99999999999911982 w: 1.3267948966775328e-06 } } type: COLLISION } visual { name: "ur::shoulder_link::shoulder_link_collision__COLLISION_VISUAL__" id: 19 parent_name: "ur::shoulder_link" parent_id: 16 cast_shadows: false pose { position { x: 0 y: 0 z: 0 } orientation { x: 0 y: 0 z: 0.99999999999911982 w: 1.3267948966775328e-06 } } geometry { type: MESH mesh { filename: "file:///home/dan/ros/gz_ws/install/share/ur_description/meshes/ur3e/collision/shoulder.stl" scale { x: 1 y: 1 z: 1 } } } material { script { uri: "file://media/materials/scripts/gazebo.material" name: "Gazebo/OrangeTransparent" } } is_static: false type: COLLISION } } enable_wind: false } link { id: 21 name: "ur::upper_arm_link" self_collide: false gravity: true kinematic: false enabled: true inertial { mass: 3.42 pose { position { x: -0.121825 y: 0 z: 0.12 } orientation { x: 5.93570830084467e-12 y: 0.70710901804279691 z: 5.93570830084467e-12 w: 0.70710454432322223 } } ixx: 0.0217285 ixy: 0 ixz: 0 iyy: 0.0217285 iyz: 0 izz: 0.00961875 } pose { position { x: 3.918183354635e-07 y: 2.087238063334397e-06 z: 0.20184845911463806 } orientation { x: -0.49983210018104046 y: 0.50021095701643148 z: 0.50019325054294794 w: 0.49976352630078519 } } visual { name: "ur::upper_arm_link" id: 21 parent_name: "ur" parent_id: 10 pose { position { x: 3.918183354635e-07 y: 2.087238063334397e-06 z: 0.20184845911463806 } orientation { x: -0.49983210018104046 y: 0.50021095701643148 z: 0.50019325054294794 w: 0.49976352630078519 } } type: LINK } visual { name: "ur::upper_arm_link::upper_arm_link_visual" id: 22 parent_name: "ur::upper_arm_link" parent_id: 21 pose { position { x: -7.72917564369549e-23 y: 5.5511151231257827e-17 z: 0.11999999999999997 } orientation { x: 0.49999999999662686 y: -0.5000018366025516 z: -0.49999999999662686 w: 0.49999816339744829 } } geometry { type: MESH mesh { filename: "file:///home/dan/ros/gz_ws/install/share/ur_description/meshes/ur3e/visual/upperarm.dae" scale { x: 1 y: 1 z: 1 } } } is_static: false scale { x: 1 y: 1 z: 1 } type: VISUAL } collision { id: 23 name: "ur::upper_arm_link::upper_arm_link_collision" laser_retro: 0 pose { position { x: -7.72917564369549e-23 y: 5.5511151231257827e-17 z: 0.11999999999999997 } orientation { x: 0.49999999999662686 y: -0.5000018366025516 z: -0.49999999999662686 w: 0.49999816339744829 } } geometry { type: MESH mesh { filename: "file:///home/dan/ros/gz_ws/install/share/ur_description/meshes/ur3e/collision/upperarm.stl" scale { x: 1 y: 1 z: 1 } } } surface { friction { mu: 1 mu2: 1 fdir1 { x: 0 y: 0 z: 0 } slip1: 0 slip2: 0 torsional { coefficient: 1 use_patch_radius: true patch_radius: 0 surface_radius: 0 ode { slip: 0 } } } restitution_coefficient: 0 bounce_threshold: 100000 soft_cfm: 0 soft_erp: 0.2 kp: 1000000000000 kd: 1 max_vel: 0.01 min_depth: 0 collide_without_contact: false collide_without_contact_bitmask: 1 collide_bitmask: 65535 elastic_modulus: 0 } visual { name: "ur::upper_arm_link::upper_arm_link_collision" id: 23 parent_name: "ur::upper_arm_link" parent_id: 21 pose { position { x: -7.72917564369549e-23 y: 5.5511151231257827e-17 z: 0.11999999999999997 } orientation { x: 0.49999999999662686 y: -0.5000018366025516 z: -0.49999999999662686 w: 0.49999816339744829 } } type: COLLISION } visual { name: "ur::upper_arm_link::upper_arm_link_collision__COLLISION_VISUAL__" id: 24 parent_name: "ur::upper_arm_link" parent_id: 21 cast_shadows: false pose { position { x: -7.72917564369549e-23 y: 5.5511151231257827e-17 z: 0.11999999999999997 } orientation { x: 0.49999999999662686 y: -0.5000018366025516 z: -0.49999999999662686 w: 0.49999816339744829 } } geometry { type: MESH mesh { filename: "file:///home/dan/ros/gz_ws/install/share/ur_description/meshes/ur3e/collision/upperarm.stl" scale { x: 1 y: 1 z: 1 } } } material { script { uri: "file://media/materials/scripts/gazebo.material" name: "Gazebo/OrangeTransparent" } } is_static: false type: COLLISION } } enable_wind: false } link { id: 26 name: "ur::forearm_link" self_collide: false gravity: true kinematic: false enabled: true inertial { mass: 1.26 pose { position { x: -0.1066 y: 0 z: 0.027 } orientation { x: 5.93570830084467e-12 y: 0.70710901804279691 z: 5.93570830084467e-12 w: 0.70710454432322223 } } ixx: 0.00654457 ixy: 0 ixz: 0 iyy: 0.00654457 iyz: 0 izz: 0.00354375 } pose { position { x: 0.00019775220717024015 y: 2.4873806324927733e-05 z: 0.44539801092770737 } orientation { x: -0.49983279782290546 y: 0.50021076399604825 z: 0.50019298933709466 w: 0.49976328318618751 } } visual { name: "ur::forearm_link" id: 26 parent_name: "ur" parent_id: 10 pose { position { x: 0.00019775220717024015 y: 2.4873806324927733e-05 z: 0.44539801092770737 } orientation { x: -0.49983279782290546 y: 0.50021076399604825 z: 0.50019298933709466 w: 0.49976328318618751 } } type: LINK } visual { name: "ur::forearm_link::forearm_link_visual" id: 27 parent_name: "ur::forearm_link" parent_id: 26 pose { position { x: -8.3266738281831529e-17 y: 8.3266726846886741e-17 z: 0.026999999999999958 } orientation { x: 0.49999999999662686 y: -0.5000018366025516 z: -0.49999999999662686 w: 0.49999816339744829 } } geometry { type: MESH mesh { filename: "file:///home/dan/ros/gz_ws/install/share/ur_description/meshes/ur3e/visual/forearm.dae" scale { x: 1 y: 1 z: 1 } } } is_static: false scale { x: 1 y: 1 z: 1 } type: VISUAL } collision { id: 28 name: "ur::forearm_link::forearm_link_collision" laser_retro: 0 pose { position { x: -8.3266738281831529e-17 y: 8.3266726846886741e-17 z: 0.026999999999999958 } orientation { x: 0.49999999999662686 y: -0.5000018366025516 z: -0.49999999999662686 w: 0.49999816339744829 } } geometry { type: MESH mesh { filename: "file:///home/dan/ros/gz_ws/install/share/ur_description/meshes/ur3e/collision/forearm.stl" scale { x: 1 y: 1 z: 1 } } } surface { friction { mu: 1 mu2: 1 fdir1 { x: 0 y: 0 z: 0 } slip1: 0 slip2: 0 torsional { coefficient: 1 use_patch_radius: true patch_radius: 0 surface_radius: 0 ode { slip: 0 } } } restitution_coefficient: 0 bounce_threshold: 100000 soft_cfm: 0 soft_erp: 0.2 kp: 1000000000000 kd: 1 max_vel: 0.01 min_depth: 0 collide_without_contact: false collide_without_contact_bitmask: 1 collide_bitmask: 65535 elastic_modulus: 0 } visual { name: "ur::forearm_link::forearm_link_collision" id: 28 parent_name: "ur::forearm_link" parent_id: 26 pose { position { x: -8.3266738281831529e-17 y: 8.3266726846886741e-17 z: 0.026999999999999958 } orientation { x: 0.49999999999662686 y: -0.5000018366025516 z: -0.49999999999662686 w: 0.49999816339744829 } } type: COLLISION } visual { name: "ur::forearm_link::forearm_link_collision__COLLISION_VISUAL__" id: 29 parent_name: "ur::forearm_link" parent_id: 26 cast_shadows: false pose { position { x: -8.3266738281831529e-17 y: 8.3266726846886741e-17 z: 0.026999999999999958 } orientation { x: 0.49999999999662686 y: -0.5000018366025516 z: -0.49999999999662686 w: 0.49999816339744829 } } geometry { type: MESH mesh { filename: "file:///home/dan/ros/gz_ws/install/share/ur_description/meshes/ur3e/collision/forearm.stl" scale { x: 1 y: 1 z: 1 } } } material { script { uri: "file://media/materials/scripts/gazebo.material" name: "Gazebo/OrangeTransparent" } } is_static: false type: COLLISION } } enable_wind: false } link { id: 31 name: "ur::wrist_1_link" self_collide: false gravity: true kinematic: false enabled: true inertial { mass: 0.8 pose { position { x: 0 y: 0 z: 0 } orientation { x: 0 y: 0 z: 0 w: 1 } } ixx: 0.002085 ixy: 0 ixz: 0 iyy: 0.002085 iyz: 0 izz: 0.00225 } pose { position { x: 0.00036334252068871383 y: 0.13109407964587383 z: 0.65858557360701964 } orientation { x: -0.49983417795110846 y: 0.50021372516429452 z: 0.50019174872973793 w: 0.49976018069858874 } } visual { name: "ur::wrist_1_link" id: 31 parent_name: "ur" parent_id: 10 pose { position { x: 0.00036334252068871383 y: 0.13109407964587383 z: 0.65858557360701964 } orientation { x: -0.49983417795110846 y: 0.50021372516429452 z: 0.50019174872973793 w: 0.49976018069858874 } } type: LINK } visual { name: "ur::wrist_1_link::wrist_1_link_visual" id: 32 parent_name: "ur::wrist_1_link" parent_id: 31 pose { position { x: -1.6653340964806023e-16 y: 2.7755575615628914e-17 z: -0.104 } orientation { x: 0.70710807985947366 y: -1.4973541021779167e-22 z: 1.4973596022767479e-22 w: 0.70710548251123639 } } geometry { type: MESH mesh { filename: "file:///home/dan/ros/gz_ws/install/share/ur_description/meshes/ur3e/visual/wrist1.dae" scale { x: 1 y: 1 z: 1 } } } is_static: false scale { x: 1 y: 1 z: 1 } type: VISUAL } collision { id: 33 name: "ur::wrist_1_link::wrist_1_link_collision" laser_retro: 0 pose { position { x: -1.6653340964806023e-16 y: 2.7755575615628914e-17 z: -0.104 } orientation { x: 0.70710807985947366 y: -1.4973541021779167e-22 z: 1.4973596022767479e-22 w: 0.70710548251123639 } } geometry { type: MESH mesh { filename: "file:///home/dan/ros/gz_ws/install/share/ur_description/meshes/ur3e/collision/wrist1.stl" scale { x: 1 y: 1 z: 1 } } } surface { friction { mu: 1 mu2: 1 fdir1 { x: 0 y: 0 z: 0 } slip1: 0 slip2: 0 torsional { coefficient: 1 use_patch_radius: true patch_radius: 0 surface_radius: 0 ode { slip: 0 } } } restitution_coefficient: 0 bounce_threshold: 100000 soft_cfm: 0 soft_erp: 0.2 kp: 1000000000000 kd: 1 max_vel: 0.01 min_depth: 0 collide_without_contact: false collide_without_contact_bitmask: 1 collide_bitmask: 65535 elastic_modulus: 0 } visual { name: "ur::wrist_1_link::wrist_1_link_collision" id: 33 parent_name: "ur::wrist_1_link" parent_id: 31 pose { position { x: -1.6653340964806023e-16 y: 2.7755575615628914e-17 z: -0.104 } orientation { x: 0.70710807985947366 y: -1.4973541021779167e-22 z: 1.4973596022767479e-22 w: 0.70710548251123639 } } type: COLLISION } visual { name: "ur::wrist_1_link::wrist_1_link_collision__COLLISION_VISUAL__" id: 34 parent_name: "ur::wrist_1_link" parent_id: 31 cast_shadows: false pose { position { x: -1.6653340964806023e-16 y: 2.7755575615628914e-17 z: -0.104 } orientation { x: 0.70710807985947366 y: -1.4973541021779167e-22 z: 1.4973596022767479e-22 w: 0.70710548251123639 } } geometry { type: MESH mesh { filename: "file:///home/dan/ros/gz_ws/install/share/ur_description/meshes/ur3e/collision/wrist1.stl" scale { x: 1 y: 1 z: 1 } } } material { script { uri: "file://media/materials/scripts/gazebo.material" name: "Gazebo/OrangeTransparent" } } is_static: false type: COLLISION } } enable_wind: false } link { id: 36 name: "ur::wrist_2_link" self_collide: false gravity: true kinematic: false enabled: true inertial { mass: 0.8 pose { position { x: 0 y: 0 z: 0 } orientation { x: 0 y: 0 z: 0 w: 1 } } ixx: 0.002085 ixy: 0 ixz: 0 iyy: 0.002085 iyz: 0 izz: 0.00225 } pose { position { x: 0.085713351212226757 y: 0.13109919831668315 z: 0.65851573804648744 } orientation { x: -0.24477257751200432 y: 0.663697987295043 z: -0.24453624200255489 w: 0.66316920412961489 } } visual { name: "ur::wrist_2_link" id: 36 parent_name: "ur" parent_id: 10 pose { position { x: 0.085713351212226757 y: 0.13109919831668315 z: 0.65851573804648744 } orientation { x: -0.24477257751200432 y: 0.663697987295043 z: -0.24453624200255489 w: 0.66316920412961489 } } type: LINK } visual { name: "ur::wrist_2_link::wrist_2_link_visual" id: 37 parent_name: "ur::wrist_2_link" parent_id: 36 pose { position { x: -4.9960036108159625e-16 y: 2.124844926931163e-50 z: -0.0853500000000001 } orientation { x: 0 y: 1.6155871338926322e-27 z: -7.7048348339792173e-23 w: 0.99999999999999989 } } geometry { type: MESH mesh { filename: "file:///home/dan/ros/gz_ws/install/share/ur_description/meshes/ur3e/visual/wrist2.dae" scale { x: 1 y: 1 z: 1 } } } is_static: false scale { x: 1 y: 1 z: 1 } type: VISUAL } collision { id: 38 name: "ur::wrist_2_link::wrist_2_link_collision" laser_retro: 0 pose { position { x: -4.9960036108159625e-16 y: 2.124844926931163e-50 z: -0.0853500000000001 } orientation { x: 0 y: 1.6155871338926322e-27 z: -7.7048348339792173e-23 w: 0.99999999999999989 } } geometry { type: MESH mesh { filename: "file:///home/dan/ros/gz_ws/install/share/ur_description/meshes/ur3e/collision/wrist2.stl" scale { x: 1 y: 1 z: 1 } } } surface { friction { mu: 1 mu2: 1 fdir1 { x: 0 y: 0 z: 0 } slip1: 0 slip2: 0 torsional { coefficient: 1 use_patch_radius: true patch_radius: 0 surface_radius: 0 ode { slip: 0 } } } restitution_coefficient: 0 bounce_threshold: 100000 soft_cfm: 0 soft_erp: 0.2 kp: 1000000000000 kd: 1 max_vel: 0.01 min_depth: 0 collide_without_contact: false collide_without_contact_bitmask: 1 collide_bitmask: 65535 elastic_modulus: 0 } visual { name: "ur::wrist_2_link::wrist_2_link_collision" id: 38 parent_name: "ur::wrist_2_link" parent_id: 36 pose { position { x: -4.9960036108159625e-16 y: 2.124844926931163e-50 z: -0.0853500000000001 } orientation { x: 0 y: 1.6155871338926322e-27 z: -7.7048348339792173e-23 w: 0.99999999999999989 } } type: COLLISION } visual { name: "ur::wrist_2_link::wrist_2_link_collision__COLLISION_VISUAL__" id: 39 parent_name: "ur::wrist_2_link" parent_id: 36 cast_shadows: false pose { position { x: -4.9960036108159625e-16 y: 2.124844926931163e-50 z: -0.0853500000000001 } orientation { x: 0 y: 1.6155871338926322e-27 z: -7.7048348339792173e-23 w: 0.99999999999999989 } } geometry { type: MESH mesh { filename: "file:///home/dan/ros/gz_ws/install/share/ur_description/meshes/ur3e/collision/wrist2.stl" scale { x: 1 y: 1 z: 1 } } } material { script { uri: "file://media/materials/scripts/gazebo.material" name: "Gazebo/OrangeTransparent" } } is_static: false type: COLLISION } } enable_wind: false } link { id: 41 name: "ur::wrist_3_link" self_collide: false gravity: true kinematic: false enabled: true inertial { mass: 0.35 pose { position { x: 0 y: 0 z: -0.02 } orientation { x: 0 y: 0 z: 0 w: 1 } } ixx: 0.000136267 ixy: 0 ixz: 0 iyy: 0.000136267 iyz: 0 izz: 0.0001792 } pose { position { x: 0.08566066805473424 y: 0.20114854985977121 z: 0.59871981837749 } orientation { x: -0.64201255121099854 y: 0.6422182960257139 z: 0.29639275377029656 w: 0.29584942090501687 } } visual { name: "ur::wrist_3_link" id: 41 parent_name: "ur" parent_id: 10 pose { position { x: 0.08566066805473424 y: 0.20114854985977121 z: 0.59871981837749 } orientation { x: -0.64201255121099854 y: 0.6422182960257139 z: 0.29639275377029656 w: 0.29584942090501687 } } type: LINK } visual { name: "ur::wrist_3_link::wrist_3_link_visual" id: 42 parent_name: "ur::wrist_3_link" parent_id: 41 pose { position { x: -3.8857805861880479e-16 y: -6.9388939039072284e-17 z: -0.092099999999999918 } orientation { x: 0.70710807985947366 y: 0 z: 0 w: 0.70710548251123639 } } geometry { type: MESH mesh { filename: "file:///home/dan/ros/gz_ws/install/share/ur_description/meshes/ur3e/visual/wrist3.dae" scale { x: 1 y: 1 z: 1 } } } is_static: false scale { x: 1 y: 1 z: 1 } type: VISUAL } collision { id: 43 name: "ur::wrist_3_link::wrist_3_link_collision" laser_retro: 0 pose { position { x: -3.8857805861880479e-16 y: -6.9388939039072284e-17 z: -0.092099999999999918 } orientation { x: 0.70710807985947366 y: 0 z: 0 w: 0.70710548251123639 } } geometry { type: MESH mesh { filename: "file:///home/dan/ros/gz_ws/install/share/ur_description/meshes/ur3e/collision/wrist3.stl" scale { x: 1 y: 1 z: 1 } } } surface { friction { mu: 1 mu2: 1 fdir1 { x: 0 y: 0 z: 0 } slip1: 0 slip2: 0 torsional { coefficient: 1 use_patch_radius: true patch_radius: 0 surface_radius: 0 ode { slip: 0 } } } restitution_coefficient: 0 bounce_threshold: 100000 soft_cfm: 0 soft_erp: 0.2 kp: 1000000000000 kd: 1 max_vel: 0.01 min_depth: 0 collide_without_contact: false collide_without_contact_bitmask: 1 collide_bitmask: 65535 elastic_modulus: 0 } visual { name: "ur::wrist_3_link::wrist_3_link_collision" id: 43 parent_name: "ur::wrist_3_link" parent_id: 41 pose { position { x: -3.8857805861880479e-16 y: -6.9388939039072284e-17 z: -0.092099999999999918 } orientation { x: 0.70710807985947366 y: 0 z: 0 w: 0.70710548251123639 } } type: COLLISION } visual { name: "ur::wrist_3_link::wrist_3_link_collision__COLLISION_VISUAL__" id: 44 parent_name: "ur::wrist_3_link" parent_id: 41 cast_shadows: false pose { position { x: -3.8857805861880479e-16 y: -6.9388939039072284e-17 z: -0.092099999999999918 } orientation { x: 0.70710807985947366 y: 0 z: 0 w: 0.70710548251123639 } } geometry { type: MESH mesh { filename: "file:///home/dan/ros/gz_ws/install/share/ur_description/meshes/ur3e/collision/wrist3.stl" scale { x: 1 y: 1 z: 1 } } } material { script { uri: "file://media/materials/scripts/gazebo.material" name: "Gazebo/OrangeTransparent" } } is_static: false type: COLLISION } } enable_wind: false } visual { name: "ur" id: 10 parent_name: "default" parent_id: 1 pose { position { x: 1.7664581161916394e-07 y: 9.8421628554235216e-07 z: 6.1777577546606732e-08 } orientation { x: 1.0063997217110073e-05 y: -1.8200132416254767e-06 z: -1.6235609612999127e-07 w: 0.99999999994768851 } } type: MODEL } scale { x: 1 y: 1 z: 1 } self_collide: false enable_wind: false plugin { name: "gazebo_ros2_control" filename: "libgazebo_ros2_control.so" innerxml: "/home/dan/ros/gz_ws/install/share/ur_simulation_gazebo/config/ur_controllers.yaml\n" } ```

From my fork:

Joint dynamics settings in xacro file ```XML ```
Resulting URDF joints ```XML ```

image

That setting, friction set to 1.0x the joint effort limit, should be equivalent to the ROS 1 behavior.

Will try to figure out where damping goes into ODE and whether either of these approaches alters reported joint efforts while the robot is moving (though it looks like I'm getting all-zero efforts on /joint_states at the moment)

Gaurang-1402 commented 1 year ago

Hi, how are you opening this robot in Gazebo, can you please provide the exact command?

Icon45 commented 1 year ago

Hi @Gaurang-1402,

the exact command I used was:

ros2 launch ur_simulation_gazebo ur_sim_control.launch.py ur_type:=ur10

This launches a ur10. If you want a different robot you can change it after the "=". You can find selectable options in the ur_sim_control.launch.py-file.

danzimmerman commented 11 months ago

@fmauch Based on a quick test here, it looks like https://github.com/ros-controls/gazebo_ros2_control/pull/213 fixed this issue.

https://youtu.be/_63QoHyDAsA

Carrot404 commented 11 months ago

Hi, @danzimmerman, It did not work for me when I am using ros2 branch of Universal_Robots_ROS2_Gazebo_Simulation with latest version of gazebo_ros2_control in ROS Humble. Still need modifications of dynamics or friction ?

Thanks in advance!

fmauch commented 6 months ago

Things seem to be fine by now, so closing this.