SetVelocity() does not set Velocity instantaniously
Hello,
i want to set an initial position and velocity on the revolute joint of my robot model. I read this Gazebo tutorial. I implemented a Plugin which listens to Ros topic "/set_vel" and calls the Gazebo fuction SetVelocity().
In my Robot model I set friction to 0. There is no controller "behind" my joint. I also disabled gravity.
When I record joint velocity in rqt_plot i expect the velocity to jump from 0 to the desired velocity and stay there since no other forces are applied.
I publish to the /set_vel topic at 10 Hz. Even though it should be enough to publish the desired velocity once (in my case 0.5 rad/s). Following plot shows the joint velocity
I know that the velocity is only set at one timestep of Gazebo. That would explain the peak values. But why doesn't the velocity stay at that peak? It seems as some force acts against the velocity.
I already checked if something changes when I set maxForce of the joint to a higher level. Also Max effort. It doesn't change anything. I didn't expect it to since I thought SetVelocity() doesn't set Force on the joint.
I know that SetVelocity() uses SetVelMax() which uses SetAngularVelocity() only on the child link of my joint and not all the links that come after that. But since the child link is the "last" one and the parent link is my fixed base_link that shouldn't be the problem.
I am using Gazebo 9 and ROS Melodic
Can someone help? Thanks
Asked by val on 2020-08-06 03:37:30 UTC
Comments