May I know if is it possible to move a block (sny object) directly without choosing a driver?
For example, I don’t care what is going on behind the scene, I just want my block to move with
linear velocity = 3m/s or angular velocity = 3/rad.
Thank you so much for the prompt reply!
Sorry, one more question.
Is it possible to treat a whole robot as one body and move it by the method you described?
Actually, what I want to do is moving a robot rather than a rigid body.
If yes, how do I do it?
And, UsdPhysics seems to be a really powerful tool. May I know if you know where I can find its docs? I could not find it in the Issac Sim docs.
You would have to apply the velocity to the root body, root body is in the center of the bodies graph that is constructed by the rigid bodies and joints that connect them.
If you want to control where the root link should be you can set the articulation root API to the body directly, otherwise a center of the graph is picked.
Hi, I have a question, I tried your method. But the problem is, I cannot find any components that can be articulation root (via GUI, the option just does not appear for all the components, links, joints and etc.). I am using the urdf file and it is automatically converted to USD by Issac sim.
May I know what should I do? Or any other suggested method?
The root found by the inspector isn’t really making sense, is it possible to change the root easily?
The frame of the root isn’t moving along the movement of the robot. For example (see the video), when I rotate the robot. I was hoping the frame could move along, but it did not. So, when I commanded the robot to move forward, it did move but wasn’t “going forward”, but forward to the fixed x-axis direction. Is there anything I can do o fix this?
Yes, if you want to control where the root link is created then remove the articulation root from some of the top xform and move it to the body where you want to have the root link.
This is described here:
So setting the articulation root on the body makes that body the root link.
In the video I see angular velocity added, the velocities should be applied in world space.
However, changing the root link is just a minor problem. The frame problem is the one that makes me really frustrated. I describe my problem more specifically in the figure below.
Hmm ok then I think we need to go back to square one and instead of setting the velocity you should set forces, so that the velocity set does not override the solver values.
What I would suggest then in this case is to select the root link - rigid body, right click Add->Physics->Force, then apply the force/torque that you need from the python script.
You can also apply the forceAPI from a python script doing something like this:
So you can control through the force enabled if the force should be applied and with the force/torque attributes the values that should be applied.
For more details please see: PhysxSchemaPhysxForceAPI Class Reference
Hope this helps to solve the problem.
Regards,
Ales
I summoned a colleague to check on this one too and maybe you actually want the velocity to be applied in a local space? In that case you can check the local space velocities check box maybe and thats what you need?
Ok then thats actually I think a bug in the integration, I will fill a Jira ticket, looking at the code its not doing what it suppose to do.
But in this case you can translate your local velocity by the body vector or not?