How can I make thruster?

Isaac Sim Version

4.2.0

Operating System

Ubuntu 22.04

GPU Information

  • Model: GeForce RTX 3090
  • Driver Version: 555.42.06

Topic Description

Detailed Description

I want to implement thrusters on an object using the script node below. However, it can only generate a force in the positive z-axis direction, regardless of the object’s orientation. The documentation says that local coordinates can be applied, but how can I do this?

from omni.isaac.dynamic_control import _dynamic_control

dc = None
art = None

def setup(db: og.Database):
    global dc
    global art
    
    dc = _dynamic_control.acquire_dynamic_control_interface()
    art = dc.get_rigid_body(db.inputs.target_path)
    

def cleanup(db: og.Database):
    pass


def compute(db: og.Database):
    global dc
    global art

    dc.apply_body_force(art, [0.0, 0.0, db.inputs.force], [0.0, 0.0, 0.0], True)
    return True

Did you make it child of a parent prim? I think that it will always do a pos z with your code unless it is mounted to another prim. Because the parent prim will/could be at a different angle. The force will always push from the z direction but if it is not the child of another it will always push world z and not its local z. It will still push on the z relative to itself but not to the parent prim.