Gazebo | Ignition | Community
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Transient state with SetVelocity.

Hello. I'm using gazebo-5.0. I'm trying to give velocity command to Simple Arm Robot.

I made ModelPlugin for Simple Arm Robot and inside used Joint::SetVelocity method to give velocity command.

And in world update loop, I did print out the result. I think this result is weird.

[Msg]   cnt vel
[Msg]   0   20
[Msg]   1   20
[Msg]   2   20
[Msg]   3   20
[Msg]   4   20
[Msg]   5   20
[Msg]   6   20
[Msg]   7   20
[Msg]   8   20
[Msg]   9   20
[Msg]   10  20
[Msg]   11  20
 ... and so on...

As you can see, the velocity jumped up to desired velocity. What I expected was gradually increasing velocity value from 0 to desired.

And I also tried Joint::SetMaxForce method. According to the documentation, it should limit the force which applied to joint when using Joint::SetVelocity method. But it seems like this method does not have any effect on the robot's behavior.

//Set the max allowed force of an axis(index) when using Joint::SetVelocity.
virtual void SetMaxForce(unsigned int _index, double _force);

What I want to ask is as follows.

  • Anybody can explain why this happens?

    My guess is Joint::SetVelocity does not consider any Dynamics, it's just Kinematics-related method.

  • Is this value is actual joint velocity? or it's just desired velocity?

  • I saw SetMaxForce method has been marked deprecated, is this method has no effect? then what is the alternate of this method?

Thank you.

Transient state with SetVelocity.Behavior of Joint::SetVelocity method

Hello. I'm using gazebo-5.0. I'm trying to give velocity command to Simple Arm Robot.

I made ModelPlugin for Simple Arm Robot and inside used Joint::SetVelocity method to give velocity command.

And in world update loop, I did print out the result. result.

  • cnt : world update loop count
  • vel : joint velocity from Joint::GetVelocity method

I think this result is weird.

[Msg]   cnt vel
[Msg]   0   20
[Msg]   1   20
[Msg]   2   20
[Msg]   3   20
[Msg]   4   20
[Msg]   5   20
[Msg]   6   20
[Msg]   7   20
[Msg]   8   20
[Msg]   9   20
[Msg]   10  20
[Msg]   11  20
 ... and so on...

As you can see, the velocity jumped up to desired velocity. What I expected was gradually increasing velocity value from 0 to desired.

And I also tried Joint::SetMaxForce method. According to the documentation, it should limit the force which applied to joint when using Joint::SetVelocity method. But it seems like this method does not have any effect on the robot's behavior.

//Set the max allowed force of an axis(index) when using Joint::SetVelocity.
virtual void SetMaxForce(unsigned int _index, double _force);

What I want to ask is as follows.

  • Anybody can explain why this happens?

    My guess is Joint::SetVelocity does not consider any Dynamics, it's just Kinematics-related method.

  • Is this value is actual joint velocity? or it's just desired velocity?

  • I saw SetMaxForce method has been marked deprecated, is this method has no effect? then what is the alternate of this method?

Thank you.

Behavior of Joint::SetVelocity method

Hello. I'm using gazebo-5.0. I'm trying to give velocity command to Simple Arm Robot.

I made ModelPlugin for Simple Arm Robot and inside used Joint::SetVelocityJoint::SetVelocity(0, 20) method to give velocity command.

And in world update loop, I did print out the result.

  • cnt : world update loop count
  • vel : joint velocity from Joint::GetVelocity method

I think this result is weird.

[Msg]   cnt vel
[Msg]   0   20
[Msg]   1   20
[Msg]   2   20
[Msg]   3   20
[Msg]   4   20
[Msg]   5   20
[Msg]   6   20
[Msg]   7   20
[Msg]   8   20
[Msg]   9   20
[Msg]   10  20
[Msg]   11  20
 ... and so on...

As you can see, the velocity jumped up to desired velocity. What I expected was gradually increasing velocity value from 0 to desired.

And I also tried Joint::SetMaxForce method. According to the documentation, it should limit the force which applied to joint when using Joint::SetVelocity method. But it seems like this method does not have any effect on the robot's behavior.

//Set the max allowed force of an axis(index) when using Joint::SetVelocity.
virtual void SetMaxForce(unsigned int _index, double _force);

What I want to ask is as follows.

  • Anybody can explain why this happens?

    My guess is Joint::SetVelocity does not consider any Dynamics, it's just Kinematics-related method.

  • Is this value is actual joint velocity? or it's just desired velocity?

  • I saw SetMaxForce method has been marked deprecated, is this method has no effect? then what is the alternate of this method?

Thank you.