Hello,
It seems there is a limit of the angular velocity, specifically, 100 rad/s. Using applyExternalTorque(), the angular velocity at first increases correctly but then is capped once 100 is reached. Alternatively, I can set a value directly with resetBaseVelocity - which at first glance works fine (getBaseVelocity returns the same vector), but de facto physics corresponds to 100 rad/s again, as is seen both in the visualization and actual interactions, e.g., of the rotating body with a surface.
I haven't found any mention of this in the docs - nor a way to raise this limit. Any pointers?
Thanks,
Evgeny
Maximum angular velocity
-
- Site Admin
- Posts: 4221
- Joined: Sun Jun 26, 2005 6:43 pm
- Location: California, USA
Re: Maximum angular velocity
You can override the maximum angular velocity using btMultiBody::setMaxCoordinateVelocity
This maximum velocity is a safety mechanism, to avoid energies going to infinity.
What are you trying to achieve with a very high velocity?
This maximum velocity is a safety mechanism, to avoid energies going to infinity.
What are you trying to achieve with a very high velocity?
-
- Posts: 2
- Joined: Thu May 03, 2018 1:56 pm
Re: Maximum angular velocity
Thanks for the quick response!
). 100/(2*pi) ~= 16 RPS is actually rather limiting for modelling of practically any ball-based game. Maybe a warning should be printed when the clamping occurs; I spent some time tinkering with ball spin until realized the unexpected ball dynamics is due to some artificial limit.
It seems there is no equivalent in the Python binding (I've just started playing with pybullet to have a quick idea whether the library would be useful to me; will switch to C soon).Erwin Coumans wrote: ↑Thu May 03, 2018 2:52 pm You can override the maximum angular velocity using btMultiBody::setMaxCoordinateVelocity
To simulate the table tennis ball dynamics (want to understand from the first principles why I play so badlyWhat are you trying to achieve with a very high velocity?

-
- Posts: 2
- Joined: Wed Sep 04, 2019 6:57 pm
Re: Maximum angular velocity
Hi Erwin
Is there a solution in pybullet to set this max coordinate velocity that you indicates ?
I am trying to connect my flight simulation (in python) with pybullet. I use "apply force / torque" functions to let the airplane move.
Airplanes or rockets can go faster than 100 m/s so I experiencing the linear and angular max velocities limitation.
I think to scale down the speed using another unit for instance but I don't know yet how to do that easily.
Bonus question: centre of mass is moving during the simulation as the fuel is consumed. I know how to shift CoM before the simulation starts with createMultibody, but how to do it during the simulation ?
Thanks a lot for your help
Is there a solution in pybullet to set this max coordinate velocity that you indicates ?
I am trying to connect my flight simulation (in python) with pybullet. I use "apply force / torque" functions to let the airplane move.
Airplanes or rockets can go faster than 100 m/s so I experiencing the linear and angular max velocities limitation.
I think to scale down the speed using another unit for instance but I don't know yet how to do that easily.
Bonus question: centre of mass is moving during the simulation as the fuel is consumed. I know how to shift CoM before the simulation starts with createMultibody, but how to do it during the simulation ?
Thanks a lot for your help
-
- Posts: 1
- Joined: Wed Nov 20, 2019 1:33 am
Re: Maximum angular velocity
Hi, by default maximum joint velocity is limited to 100.0 rad/sec for continuous revolute joint, you can cange it with value you need
hope this helps
Code: Select all
p.changeDynamics(your_Body, Joint_ID, maxJointVelocity=10000)
hope this helps
-
- Site Admin
- Posts: 4221
- Joined: Sun Jun 26, 2005 6:43 pm
- Location: California, USA
Re: Maximum angular velocity
>> I know how to shift CoM before the simulation starts with createMultibody, but how to do it during the simulation
I recommend to create an additional link (without visual shape, but with some collision shape) along a slider joint, and move that link. You can change the mass of that link using pybullet.changeDynamics.
I recommend to create an additional link (without visual shape, but with some collision shape) along a slider joint, and move that link. You can change the mass of that link using pybullet.changeDynamics.