@toni.sm @Ossama_Ahmed I’m applying custom torque controller in IsaacSim. The controller works well in Bullet but not good in IsaacSim. The “damping” and “stiffness” parameters are set 0.1 and 1e4 as Bullet, the robot joints fluctuate as the following video when the controller starts. In bullet, the robot will hold still with the same parameter.
When he “damping” and “stiffness” parameters are set 100 and 0 , the robot can hold without fluctuation. But more than 1k Nm torque are needed to command joints to move. What’s the control mechanism under Physx used by IsaacSim? What’s the difference between torque control mechanism under IsaacSim and Bullet?
Hello! would you be able to share the USD file(s) for me to check? If the robot was imported using a URDF, the urdf source should suffice.
in either case, here’s some things you can do to check the scene integrity:
- Check that the robot is set as articulation (the main robot prim, or the robot base prim should have Articulation Root API)
1.1) Check that
Enable Self-collisions is disabled, to be sure that it’s not a inter-collision problem causing the instability
1.2) Update the solver Position/Velocity Iteration count in the Articulation Root Properties
- Check the stage unit and robot dimensions to make sure the asset is in the correct scale.
- Check the robot individual rigid bodies mass properties to ensure they are correct, sometimes they may be default to a high density material, causing the drives to not be able to maintain balance
The robot drive Stiffness and Damping are PD parameters for the joint pose, respectively. so making a stiffness equal zero means your robot will only try to compensate for deviations on the joint velocity, which may lead to fluctuation. if your robot has a position drive, you need to set a Stiffness parameter for it to follow the position target.
Thanks for replying. I want to clarify that If I’m aimed to applying pure torque control, the damping and stiffness have to be set 0?
yes - that should work. you can have a small damping component to represent the internal energy loss of the system. This would help the physics to maintain simulation stability.
Hi @rgasoto I’ve tried all solutions above but didn’t work. The robot still fluctuates. Here is my urdf and generated usd file.
flexiv_rizon4.urdf (7.2 KB)
Hello, I was unable to download the USD file. it seems it didn’t come through.
for the URDF, are you able to package it on a zip folder containing the robot meshes as well?
@rgasoto I’ve reuploaded them, the usd file is imported using urdf importer.
robot.zip (1.3 MB)
flexiv_rizon4_kinematics.usd (4.4 MB)
The joint drive is a PD controller on the joint position and velocity target. The stiffness is the proportional gain to the position, and the damping is the Derivative gain on the position, and the proportional gain on the velocity target.
For position target control set parameters for both Stiffness and Damping above zero.
For a velocity control, set the stiffness to zero and damping to something above zero.
For direct joint effort control, set both drive parameters to zero, and use the Advanced properties of the revolute joint tab to define a stiffness / damping (both values need to be above zero).
For absolute precision, set the stiffness to float_max (1e40), and add some damping for internal energy loss.
Hello, @rgasoto . I am simulating force control to control the wheels of the car. I have set the stiffness and damping to zero，and the damping and stiffness in the advanced properties of the revolving joint tab are also zero.However,the damping and stiffness adjustments in the advanced properties of the revolving joint tab have no effect on the simulation.The car will first move along a straight line and then start to rotate.So I want to know what effect the stiffness and damping have on the direct force control in the advanced properties of the revolving joint tab.And how to control the wheels through direct force control to realize the straight driving of the car.
Thank you so much.
Hi @1365351984 - Stiffness and damping are properties of a joint that control its behavior in response to forces and movements. Stiffness determines how much the joint resists deformation or displacement, while damping determines how much the joint resists changes in velocity.
In the context of a revolving joint in a physics simulation, stiffness and damping can affect how the joint responds to forces applied to it. If the stiffness is high, the joint will resist being rotated by the applied force. If the damping is high, the joint will resist changes in its rotational speed.
When you set the stiffness and damping to zero, you’re essentially making the joint freely movable, with no resistance to rotation or changes in rotational speed. This could explain why the car first moves along a straight line (since there’s no resistance to the wheels rolling) and then starts to rotate (since there’s no resistance to changes in rotational speed).
To control the wheels through direct force control and realize the straight driving of the car, you would need to apply forces to the wheels in such a way that they cause the car to move in a straight line. This could involve applying equal forces to both wheels, or applying different forces to each wheel depending on the car’s current direction of movement.
Thank you for your reply. But when I set the damping and stiffness to 10 in the advanced properties of the revolving joint tab. The car still will first move along a straight line and then start to rotate.how do i set it up？@rthaker