The force field can't work on robot that have joints

The force field can’t work on robot that have joints, it works when I disable joints.Is force field doesn’t support robots with joint yet?

Hello,

I was able to create two Rigid Body cubes, connect them with a D6 joint and get them to move towards a spherical force field that I added. Here is the USD file for this test:

ForceFieldJoint.zip (4.0 KB)

Could you please upload a USD file that contains an example where the force fields fail so I can debug why it fails?

Thank you,
Rick

I am facing this issue. I want to apply a wind force field as turbulence. When I created the cube, it worked correctly but on my drone its doesn’t move. How can I solve this issue? I’ve already attached USD file below.
iris_test_with_wind-force-field.zip (1.5 MB)

Thank you
Jame

Thank you for your reply! Here is my USD file.

robot-with-joint.zip (77.0 MB)

Thank you
Nick

Hi Nick,

Thank you for the file. I verified the problem on my machine. When I disable the joints, the wheels and the robot are affected by force fields. When the joints are enabled, they are not.

When I re-create your rigging in a new scene, everything works. But when I create the same rigid bodies and joints in your scene, it fails. So I suspect something in the Physics settings, not the rigid bodies or joints themselves.

I tried adding a PhysicsScene and running everything on the CPU, but it was still broken.

I did notice that the joints are connecting to the chassis transform and not the chassis rigid body, but fixing that did not solve the problem.

When I debug the code, the rigid bodies are coming back as invalid objects; they are no longer PhysX actors, so the Force Fields code skips over them. I have to look into what is causing this.

I am out of the office the next couple of days, so I will have a look again early next week.

Best,
Rick

Hi Rick,

Thanks for following up on this issue! Looking forward to the good news!

Thank you
Nick

Some more progress today. The rigid bodies are being converted into articulation links. Right now the force fields only apply forces to rigid bodies. I’m looking into how to disable Articulations, but did not see anything in the documentation, preferences, joint or rigid body properties.

I’ve asked on the internal boards and I’ll let you know when I make any progress. If you can figure out how to disable Articulations, I think it will work.

Rick

I think I know what is causing the problem. After I removed the Articulation Root component under the root node, it worked fine. But then I couldn’t initialize the robot (inherited from WheeledRobot) properly.
The reported error is:
2024-02-19 08:22:49 [11,743ms] [Error] [omni.isaac.dynamic_control.plugin] DcGetArticulationRootBody: Invalid or expired articulation handle
2024-02-19 08:22:49 [11,743ms] [Warning] [omni.physx.tensors.plugin] Failed to find articulation at ‘/robot’
2024-02-19 08:22:49 [11,743ms] [Error] [omni.physx.tensors.plugin] Pattern ‘/robot’ did not match any articulations
2024-02-19 08:22:49 [11,744ms] [Error] [asyncio] Task exception was never retrieved
future: <Task finished name=‘Task-133’ coro=<Simulator._load_world_async() done, defined at /home/cyrus/.local/share/ov/pkg/isaac_sim-2023.1.1/exts/omni.xm.simulator/omni/xm/simulator/src/simulator.py:89> exception=AttributeError(“‘NoneType’ object has no attribute ‘is_homogeneous’”)>
Traceback (most recent call last):
File “/home/cyrus/.local/share/ov/pkg/isaac_sim-2023.1.1/exts/omni.xm.simulator/omni/xm/simulator/src/simulator.py”, line 99, in _load_world_async
await self._world.reset_async()
File “/home/cyrus/.local/share/ov/pkg/isaac_sim-2023.1.1/exts/omni.isaac.core/omni/isaac/core/world/world.py”, line 520, in reset_async
await self.reset_async_no_set_up_scene(soft=soft)
File “/home/cyrus/.local/share/ov/pkg/isaac_sim-2023.1.1/exts/omni.isaac.core/omni/isaac/core/world/world.py”, line 481, in reset_async_no_set_up_scene
self._scene._finalize(self.physics_sim_view)
File “/home/cyrus/.local/share/ov/pkg/isaac_sim-2023.1.1/exts/omni.isaac.core/omni/isaac/core/scenes/scene.py”, line 322, in _finalize
robot.initialize(physics_sim_view)
File “/home/cyrus/.local/share/ov/pkg/isaac_sim-2023.1.1/exts/omni.isaac.wheeled_robots/omni/isaac/wheeled_robots/robots/wheeled_robot.py”, line 152, in initialize
super().initialize(physics_sim_view=physics_sim_view)
File “/home/cyrus/.local/share/ov/pkg/isaac_sim-2023.1.1/exts/omni.isaac.core/omni/isaac/core/articulations/articulation.py”, line 294, in initialize
self._articulation_view.initialize(physics_sim_view=physics_sim_view)
File “/home/cyrus/.local/share/ov/pkg/isaac_sim-2023.1.1/exts/omni.isaac.core/omni/isaac/core/articulations/articulation_view.py”, line 349, in initialize
assert self._physics_view.is_homogeneous
File “/home/cyrus/.local/share/ov/pkg/isaac_sim-2023.1.1/extsPhysics/omni.physics.tensors-105.1.12-5.1/omni/physics/tensors/impl/api.py”, line 170, in is_homogeneous
return self._backend.is_homogeneous
AttributeError: ‘NoneType’ object has no attribute ‘is_homogeneous’

Yes, the force fields are not being applied to articulated joints in the current version. I will fix this for the next update, but in the meantime, the only work around is to remove any articulation roots.

Rick

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.