Gazebo | Ignition | Community
Ask Your Question

imlearning's profile - activity

2017-08-31 10:03:38 -0600 received badge  Famous Question (source)
2017-08-31 10:03:37 -0600 received badge  Notable Question (source)
2017-05-21 03:53:01 -0600 received badge  Famous Question (source)
2017-05-21 03:53:01 -0600 received badge  Notable Question (source)
2016-11-18 12:37:01 -0600 received badge  Enthusiast
2016-11-17 09:55:39 -0600 commented answer Gazebo easiest way to apply preload force on a model programmatically?

@Skylion - Did the applied forces work to move links? Were you able to get the joint/ spring in "compression"? Please let me know if you have any thoughts in regards to: http://answers.gazebosim.org/question/14826/how-to-reduce-joint-distance-after-simulation-start/ and http://answers.gazebosim.org/question/14837/how-to-move-a-prismatic-or-other-joint-to-negative-limits/. Applying forces (possibly without a joint even) may be an option?

2016-11-17 09:16:56 -0600 commented answer How to move a prismatic (or other) joint to negative limits?

Please let me know if you notice anything in the collision/ contact dynamics. The goal is to get rope::pivot closer to cylinder::link_0 after simulation start.

2016-11-17 09:10:38 -0600 received badge  Editor (source)
2016-11-16 16:49:56 -0600 commented answer How to move a prismatic (or other) joint to negative limits?

The problem I am having is that there seems to be a hard limit to the travel of the joint independent from the lower limit value (based on the initial distance b/w the two links connected by the joint). Ex: If I allow the joint to behave like a damped spring, the two links never get closer than their initial position. Setting the lower limit to an exaggerated negative value doesn't even seem to solve the problem. If setting the lower limit should work, do you have suggestions for how use?

2016-11-16 16:40:19 -0600 received badge  Popular Question (source)
2016-11-13 16:43:00 -0600 received badge  Student (source)
2016-11-13 04:41:12 -0600 received badge  Popular Question (source)
2016-11-10 09:45:14 -0600 asked a question How to move a prismatic (or other) joint to negative limits?

When creating a prismatic joint between two links, it seems as though that initial distance between the links behaves as a "hard stop" for the joint.

If treating it like a spring, the initial position seems to be the "fully compressed" representation and all spring effects extend from that distance.

Is all this true? Does the "lower limit" = the initial distance between the links?

And if so, is there a way to work around this and move the joint lower than the lower limit (to bring the links closer together than their initial positions)?

(Note: This is an extension of this question.)

Example Code:                         
<model name='Pris_1'>
<link name='rod'>
  <pose frame=''>2.7415 -3.31431 1.27606 -1.5708 -0 -0.37111</pose>
  <inertial>
    <mass>1</mass>
    <inertia>
      <ixx>0.145833</ixx>
      <ixy>0</ixy>
      <ixz>0</ixz>
      <iyy>0.145833</iyy>
      <iyz>0</iyz>
      <izz>0.125</izz>
    </inertia>
    <pose frame=''>0 0 0 0 -0 0</pose>
  </inertial>
  <self_collide>0</self_collide>
  <kinematic>1</kinematic>
  <visual name='visual'>
    <pose frame=''>0 0 0 0 -0 0</pose>
    <geometry>
      <cylinder>
        <radius>0.003</radius>
        <length>0.1</length>
      </cylinder>
    </geometry>
    <cast_shadows>1</cast_shadows>
    <transparency>0</transparency>
  </visual>
  <collision name='collision'>
    <laser_retro>0</laser_retro>
    <max_contacts>10</max_contacts>
    <pose frame=''>0 0 0 0 -0 0</pose>
    <geometry>
      <cylinder>
        <radius>0.0025</radius>
        <length>0.1</length>
      </cylinder>
    </geometry>
    <surface>
      <friction>
        <ode>
          <mu>1</mu>
          <mu2>1</mu2>
          <fdir1>0 0 0</fdir1>
          <slip1>0</slip1>
          <slip2>0</slip2>
        </ode>
        <torsional>
          <coefficient>1</coefficient>
          <patch_radius>0</patch_radius>
          <surface_radius>0</surface_radius>
          <use_patch_radius>1</use_patch_radius>
          <ode>
            <slip>0</slip>
          </ode>
        </torsional>
      </friction>
      <bounce>
        <restitution_coefficient>0</restitution_coefficient>
        <threshold>1e+06</threshold>
      </bounce>
      <contact>
        <collide_without_contact>0</collide_without_contact>
        <collide_without_contact_bitmask>1</collide_without_contact_bitmask>
        <collide_bitmask>1</collide_bitmask>
        <ode>
          <soft_cfm>0</soft_cfm>
          <soft_erp>0.2</soft_erp>
          <kp>1e+13</kp>
          <kd>1</kd>
          <max_vel>0.01</max_vel>
          <min_depth>0</min_depth>
        </ode>
        <bullet>
          <split_impulse>1</split_impulse>
          <split_impulse_penetration_threshold>-0.01</split_impulse_penetration_threshold>
          <soft_cfm>0</soft_cfm>
          <soft_erp>0.2</soft_erp>
          <kp>1e+13</kp>
          <kd>1</kd>
        </bullet>
      </contact>
    </surface>
  </collision>
</link>
<model name='rope'>
  <pose frame=''>3.00263 -3.42589 1.02758 -3.0832 -0.749567 2.76636</pose>
  <link name='pivot'>
    <pose frame=''>0.4048 0 0 0 -0 0</pose>
    <inertial>
      <mass>0.1</mass>
      <inertia>
        <ixx>0.01</ixx>
        <ixy>0</ixy>
        <ixz>0</ixz>
        <iyy>0.01</iyy>
        <iyz>0</iyz>
        <izz>0.01</izz>
      </inertia>
    </inertial>
    <collision name='pivot_collision'>
      <geometry>
        <mesh>
          <scale>0.1 0.1 0.1</scale>
          <uri>model://ball.stl</uri>
        </mesh>
      </geometry>
      <surface>
        <contact>
          <ode>
            <min_depth>0.005</min_depth>
          </ode>
        </contact>
        <friction>
          <ode>
            <mu>1</mu>
            <mu2>1</mu2>
          </ode>
          <torsional>
            <ode/>
          </torsional>
        </friction>
        <bounce/>
      </surface>
      <max_contacts>10</max_contacts>
    </collision>
    <visual name='pivot_vis'>
      <geometry>
        <mesh>
          <scale>0.1 0.1 0.1</scale>
          <uri>model://ball.stl</uri>
        </mesh>
      </geometry>
    </visual>
    <self_collide>0</self_collide>
    <kinematic>0</kinematic>
  </link>
 </model>
 <model name='cylinder'>
  <link name='link_0'>
    <pose frame=''>5e-06 3e-06 0.5 1.5708 -0 0</pose>
    <inertial>
      <mass>1</mass>
      <inertia>
        <ixx>0.166667 ...
(more)
2016-11-09 16:30:58 -0600 commented question How to reduce joint distance after simulation start?

I am still having a problem getting the joint to move into, what I presume is, the negative lower limits. Regardless of what I specify the lower limit to be, it seems the link always returns to a distance equivalent to the starting distance. (I am trying various combinations of frame references, joint limits, and other parameters. Will vary dynamics more next, but I am not sure if I can get it closer together than the initial position this way)

2016-11-09 13:25:24 -0600 commented question How to reduce joint distance after simulation start?

Actually, do the prismatic joint parameters allow the needed "correction" to happen automatically? (Do you have some recommended settings if so?)

2016-11-09 13:24:05 -0600 commented question How to reduce joint distance after simulation start?

It would be preferable not to have to add a control for the solution (if there's any "automatic" solution I could initiate instead by varying initial parameters). This way I could use a ball joint, etc. However, this is a great idea and will be my backup plan.

2016-11-09 12:50:30 -0600 asked a question How to reduce joint distance after simulation start?

I am currently creating a model as a .sdf which will respond to gravity. (No plugins or control at this point)

I have a joint between two links in separate models (joint type and parent/child relationship can be varied). In order to build the model more easily, I need to begin with a distance between the two links. However, once the simulation begins, I would like this distance to be removed so that there is contact between the two objects.*

Is there a way to adjust the joint length from the initial state?

I am not sure if some combination of CFM/ ERP would apply here since I am starting with a separation versus joint error.

*One of the models is not rigid, but is built as if rigid until the simulation starts. The length of the model in this form is longer than the distance between the two points which it is to be constrained by. Once the simulation begins, the goal is for the flexible model to "hang" between these two points. I am attempting to adapt the joint offset so that the model does not need to be positioned in its flexible state prior to simulation.