Home | Tutorials | Wiki | Issues
Ask Your Question

Erik Stoltenborg's profile - activity

2016-11-09 00:57:32 -0500 received badge  Nice Answer (source)
2016-01-07 06:57:52 -0500 received badge  Nice Answer (source)
2013-09-06 16:16:48 -0500 received badge  Taxonomist
2013-02-19 05:45:14 -0500 received badge  Famous Question (source)
2013-02-19 05:45:14 -0500 received badge  Notable Question (source)
2013-02-19 05:45:14 -0500 received badge  Popular Question (source)
2013-02-18 06:26:09 -0500 received badge  Famous Question (source)
2013-02-18 06:26:09 -0500 received badge  Notable Question (source)
2013-02-18 06:26:09 -0500 received badge  Popular Question (source)
2013-02-09 10:04:39 -0500 received badge  Notable Question (source)
2013-02-09 10:04:39 -0500 received badge  Famous Question (source)
2013-02-09 10:04:39 -0500 received badge  Popular Question (source)
2012-11-30 20:15:25 -0500 received badge  Teacher (source)
2012-11-30 20:11:07 -0500 received badge  Student (source)
2012-11-28 04:35:01 -0500 received badge  Supporter (source)
2012-11-21 09:04:17 -0500 commented question Simulating an impedance controller in gazebo

You should post your answer on here, because others might profit from this knowledge. For what it is worth, i think the problem would not occur when you describe the motion in a `continuous' way.

2012-11-21 08:56:59 -0500 commented question Is there a way to visualize variables in real time?

If so, broadcast the data to a topic, listin to it using something like matlab and plot it.

2012-11-21 08:55:38 -0500 answered a question GetAngleImpl fails on Revolute2 joints

You can not use protected functions like that.

To get the angle(s), use gazebo::physics::joint::GetAngle(int _index).

Alternatively you can just get the child link ptr, to get the link pose (e.g.: GetChild()->GetPose().rot.GetAsEuler().x)).

2012-11-21 08:42:05 -0500 received badge  Commentator
2012-11-21 08:42:05 -0500 commented question Is there a way to visualize variables in real time?

Are you using just gazebo, or ROS based gazebo?

2012-11-20 02:10:02 -0500 commented question SDF 1.2 conversion bug?

*Bump*Nothing?

2012-11-20 02:08:33 -0500 answered a question why the parameters of collision is difference with the visual in one link?

The visual has no influence on the physics engine, only the rendering side.

Collision dynamics calculation are a computationally costly operations, hence sometimes simpler geometry is sometimes selected. Simulation can then run faster, but collisions are slightly less realistic. I do not know what model your are referring, so it is hard to give a fully conclusive answer. (using a smaller size of the same simple geometry might be just an error).

Calculations are done using the collision geometry i.e.: if you have two models of balls with far smaller collision geometry they will appear to move into each other before colliding (and sink in the ground too). Try it in the simulator.

2012-11-15 02:59:09 -0500 commented question SDF 1.2 conversion bug?

I've updated the post, on a side-note: is their a way to write .sdf code that is less sparse? I find 200 lines of code for a three link model a bit inefficient (once fully implemented it would yield ~1000 lines of code).

2012-11-14 10:42:46 -0500 commented question Simulating an impedance controller in gazebo

If you are just pescribing position i think this might be the cause of your error. The gripper then `teleports' into the object, hence gets pushed out. Instead of gradually pushing in.(contact is basically simulated as a spring damper)

2012-11-14 10:35:51 -0500 answered a question Simulating Springs

Hi,

As far as i know, there is no such joint in gazebo (ODE/Bullet), however you could write a simple model plugin to achieve this.

In this plugin, you can use the following code (its better to define variables and pointers in load, but to get the idea):

    public: void OnUpdate()
    {
      double rest_angle = 0;
      double stiffness = 2;
      physics::JointPtr springjoint;
       springjoint =  this->model->GetJoint(int _joint_index);
      double current_angle = springjoint->GetAngle(int _index).Radian());
      springjoint->SetForce(int _index, (rest_angle-current_angle)*stiffness);
    }

Use this code, along with these tutorials and the API and you should be fine!

2012-11-13 05:32:31 -0500 asked a question SDF 1.2 conversion bug?

Dear all,

I think the new SDF is bugged, but i could be wrong:

The latest commit changed <orgin> into <pose>, in the sdf. Since then the pose of the third and second link in my world file gets reverted to default.

This does not happen in 1.2.5, which i use at home, there it is handled correctly: good

Whereas in the 1.2.6 it looks like this: bad

Picture links seem to fail: version 1.2.5: http://imageshack.us/a/img26/6923/gaz... version 1.2.6: http://imageshack.us/a/img90/5282/gaz...

Here is the model.sdf (it is quite large), i tried numeruous combination of poses (defined in the joint and/or link). Only the pose definition in the <link name="table"> link works in 1.2.6.

<?xml version='1.0'?>
  <gazebo version='1.2'>
    <model name="my_robot">
    <static>false</static>
    <!-- angles are not exact (error ~2.5e-4) hence movement occurs because joint friction does not work.-->
    <link name='table'>
        <self_collide>false</self_collide>
            <pose>0.0000 0.0000 0.0000 0.000 0.000 0.000</pose>
            <velocity_decay>
                <linear>100</linear>
                <angular>100</angular>
            </velocity_decay>
            <inertial>
                <mass>100</mass>
            </inertial>

        <collision name='table_c'>
        <geometry>
            <mesh>
                 <uri>model://soccer_table/meshes/table_simple.dae</uri>
                 <scale>0.5 0.5 0.5</scale>
            </mesh>
        <!--box><size>0.6 0.5 0.34</size></box-->
        </geometry>         
        <surface>
            <bounce>
                <restitution_coefficient>0.9</restitution_coefficient>
                <threshold>0.1</threshold>
            </bounce>
            <friction>
                <ode>
                    <mu>0.3</mu>
                    <mu2>0.3</mu2>
                </ode>
            </friction>
        </surface>      
    </collision>

        <visual name='table_v'>
            <geometry>
            <mesh>
                    <uri>model://soccer_table/meshes/table_simple.dae</uri>
                    <scale>0.5 0.5 0.5</scale>
            </mesh>
            <!--box><size>0.6 0.5 0.34</size></box-->
            </geometry>
        </visual>
</link>


<link name="link_1r">
    <pose>0.0000 0.0000 0.06500 0.0000 0.0000 0.0000 </pose>
    <self_collide>false</self_collide>
    <velocity_decay>
        <linear>0.001</linear>
        <angular>0.001</angular>
        </velocity_decay>
    <inertial>
        <mass>0.1</mass>
        <inertia>
            <ixx>0.01</ixx>
            <ixy>0</ixy>
            <ixz>0</ixz>
            <iyy>0.001</iyy>
            <iyz>0</iyz>
            <izz>0.01</izz>
        </inertia>
    </inertial>

    <collision name='link_1r_c'>
        <geometry>
            <box><size>0.0075 0.34 0.0075 </size></box>
        </geometry>
        <surface>
            <bounce>
                <restitution_coefficient>0.9</restitution_coefficient>
                <threshold>0.1</threshold>
            </bounce>
            <friction>
                <ode>
                    <mu>0.3</mu>
                    <mu2>0.3</mu2>
                </ode>
            </friction>
        </surface>  
        </collision>

        <visual name='link_1r_v'>
            <geometry>
        <box><size>0.0075 0.34 0.0075 </size></box>
            </geometry>
        </visual>      
</link>

<link name="puppet">
    <pose>0.0000 0.0000 0.06500 0.0000 0.0000 0.0000 </pose>
    <velocity_decay>
            <linear>0.001</linear>
            <angular>0.001</angular>
        </velocity_decay>
    <self_collide>false</self_collide>
    <inertial>
        <mass>0.002069</mass>
        <inertia>
            <ixx>0.001</ixx>
            <ixy>0</ixy>
            <ixz>0</ixz>
            <iyy>0.0002</iyy>
            <iyz>0</iyz>
            <izz>0.001</izz>
        </inertia>
    </inertial>

    <collision name='puppet_c'>
        <geometry>
            <box><size>0.0075 0.01 0.1</size></box>
        </geometry>
        <surface>
            <bounce>
                <restitution_coefficient>0.9</restitution_coefficient>
                <threshold>0.1</threshold>
            </bounce>
            <friction>
                <ode>
                    <mu>0.3</mu>
                    <mu2>0.3</mu2>
                    <fdir1 ...
(more)
2012-11-13 03:08:53 -0500 commented question Simulating an impedance controller in gazebo

How are you applying the trajectory? Are you simply prescribing the position or are you using a controller (/prescribing a joint force or acceleration).

2012-11-09 14:00:14 -0500 received badge  Editor (source)
2012-11-09 13:56:30 -0500 commented answer gazebo default directory and can not insert model

Ah yes, i missed the ROS in the first sentence. I guess it won't work.

2012-11-09 10:05:10 -0500 answered a question can the simulator_gazebo of ROS do same job as gazebo under ubuntu?

It can do the same job, however the one under ROS uses a different model structure URDF(is beeing deprecated though). Whereas current gazebo uses *.SDF. Some standard settings might be different. However the main difference is that ROS comes with a large library of other robotics tools, and gazebo plugins, which you can couple to gazebo. Hence controlling your robots in under ROS is somewhat simpler(using nodes, services etc.), as what most people need is already programmed by others and added to the package. I prefer just plain gazebo, as i have no use for the ROS control.

2012-11-09 09:53:08 -0500 answered a question gazebo default directory and can not insert model

Answered it earlier, i suggest just posting one question?

You can set the default directories for models using (go sudo gedit ~/.bashrc and add this for example)

export GAZEBO_MODEL_PATH=path/to/models

For world files gazebo looks in your current directory (i think) and the resource path.

export GAZEBO_RESOURCE_PATH=path/to/worlds.

But you can always all this path stuff by creating a world file completely without inserts, yourworld.sdf

<?xml version="1.0" ?>
<gazebo version="1.2">
  <world name="default">
     <model name="yourmodel">
        <link name='yourlink'>
         <self_collide>false</self_collide>
          <pose>0.0000 0.0000 0.0000 0.000 0.000 0.000</pose>

          <collision name='yourlink'>
            <geometry>
            <box><size>0.6 0.5 0.34</size></box>
            </geometry>                 
          </collision>
          <visual name='yourlink'>
          <geometry>
             <box><size>0.6 0.5 0.34</size></box>
          </geometry>
        </visual>
      </link>    
     </model>
  </world>
</gazebo>

Save it as yourmodel.sdf. Then go in prompt and type gazebo yourmodel.sdf (in that directory)

2012-11-09 09:51:56 -0500 commented question uri file attribute in SDF files

I think its the directory of the world file, are you also getting directory not found error?

2012-11-09 09:50:18 -0500 answered a question gazebo difault directory and can not insert model

You can set the default directories for models using (go sudo gedit ~/.bashrc and add this for example)

export GAZEBO_MODEL_PATH=path/to/models

For world files gazebo looks in your current directory (i think) and the resource path.

export GAZEBO_RESOURCE_PATH=path/to/models.

But you can always all this path stuff by creating a world file completely without inserts, yourworld.sdf

<?xml version="1.0" ?>
<gazebo version="1.2">
  <world name="default">
     <model name="yourmodel">
        <link name='yourlink'>
         <self_collide>false</self_collide>
          <pose>0.0000 0.0000 0.0000 0.000 0.000 0.000</pose>

          <collision name='yourlink'>
            <geometry>
            <box><size>0.6 0.5 0.34</size></box>
            </geometry>                 
          </collision>
          <visual name='yourlink'>
          <geometry>
             <box><size>0.6 0.5 0.34</size></box>
          </geometry>
        </visual>
      </link>    
     </model>
  </world>
</gazebo>

Save it as yourmodel.sdf. Then go in prompt and type gazebo yourmodel.sdf (in that directory)

2012-11-09 09:34:22 -0500 asked a question ODE Joint, Static friction

Dear All,

In my model I have a horizontally placed slider joint, this gradually moves because apperently numerical error cause it to not be exactly horizontal (angular noise with a magnitude of ~ |1e-4|). Because there is no friction, it drifts towards it's limit. (The bounce at the limit is somewhat unrealistic too, but im not interested in that atm (it adds energy, despite the settings)).

Not an issue since the real robot will also be imperfect. However static friction in the slider joint should stop it from moving, however this settings seems to have no effect! I've noticed in ODE documentation that regular joints (and Gazebo api), that regular joints don't have such atributes (static friction), only the contact joint has this. I'd be great if static friction would work, any way this is possible. Here is the joint code:

<joint name="joint_2" type="prismatic">
    <parent>link_1r</parent>
    <child>puppet</child>
    <pose>0.0000 0.0000 0.00000 0.0000 0.0000 0.0000 </pose>
    <axis>
        <xyz>0 1 0</xyz>
        <limit>
            <lower>-0.1</lower>
            <upper>0.1</upper>
        </limit>
        <dynamics>
            <damping>0.01</damping>
            <friction>0.1</friction>
        </dynamics>
    </axis>
</joint>

I can create some actual contact friction, by recreating bearings and such, but that seems overly complication and prone to error.

Thanks

2012-11-08 04:01:40 -0500 marked best answer Gazebo 1.2 performance and file structure

Hello All,

I've just installed gazebo 1.2. All went well, i like the look of the GUI(don't use it though). After some struggling with the new SDF syntax (the converter did not work for me, but i like the syntax), I started very basic world with just the groundplane and the sun model included.

The simulation runs at 0.97X(at best) realtime using 100% on all four cores (intel i7 quadcore clocked at 4.ghz, 6GB ram, Ubuntu 12.04 32bits, Radeon 6870). On version 1.0.2 it ran in excess of 25X realtime using the same solver settings and a more challenging world. Quite dissapointing, is this a common problem? What might be the reason?

Apart from that, what is up with the new file/model structuring system(`database')? I understand a uniform folder and naming structure is useful for sharing etcetera. However I don't feel the need to have this restriction locally. Does every model(file) have to be called model.sdf and include a manifest.xml? E.g when editing (gedit) two models, i cannot tell them apart by their filename which is fairly annoying. Is there a way to circumvent this?

Thanks

2012-11-08 04:01:40 -0500 commented answer Gazebo 1.2 performance and file structure

Ok i just tested this the URI thing, i can't get it to work. I tried absolute paths, relative paths (even model://file:// like the error suggested). All result in error: Directory doesn't exist, to be exact: Error [parser.cc:557] Directory doesn't exist[/home/bla/bla/table.sdf].