Hi, I want to change the pose of the Imported URDF, I tried:
from isaacsim.core.api.robots import Robot
class MyManipulator(Robot):
def __init__(
self,
robot_name: str,
urdf_path:str,
app : SimulationApp,
jnt_states_topic: str,
jnt_cmd_topic: str,
*args, **kwargs
) -> None:
self._robot_name = robot_name
self._jnt_cmd_topic = jnt_cmd_topic
self._jnt_states_topic = jnt_states_topic
self.robot_prim_path = self._import_robot(urdf_path)
self._app = app
super().__init__(prim_path=self.robot_prim_path, name=robot_name, *args, **kwargs)
def _import_robot(self, urdf_path: str) -> str:
# Set the settings in the import config
import_config = _urdf.ImportConfig()
import_config.set_merge_fixed_joints(False)
import_config.set_convex_decomp(True) # Collision
import_config.set_fix_base(True)
import_config.set_make_default_prim(False)
import_config.set_self_collision(True) #
import_config.set_create_physics_scene(False)
import_config.set_import_inertia_tensor(False) #
import_config.set_default_drive_strength(1047.19751)
import_config.set_default_position_drive_damping(52.35988)
import_config.set_default_drive_type(_urdf.UrdfJointTargetType.JOINT_DRIVE_POSITION)
import_config.set_distance_scale(1)
import_config.set_density(0.0)
status, self.robot_prim_path = omni.kit.commands.execute(
"URDFParseAndImportFile",
urdf_path=urdf_path,
import_config=import_config,
get_articulation_root=True,
)
if not status:
raise RuntimeError("Failed to import URDF file.")
while is_stage_loading():
self._app.update()
robot_position = [0.0, 0.5, 1000.0]
robot_orientation = [0.0, 1.0, 0.0, 0.0] # [qw, qx, qy ,qz]
#
MyManipulator(
robot_name,
urdf_path=manipulator_urdf_path,
app=simulation_app,
jnt_states_topic=joints_states_ros_topic,
jnt_cmd_topic=joints_command_ros_topic,
position=robot_position,
orientation = robot_orientation
)
However, robot pose is not set to the new pose, but still located at the origin!
P.S: Related issue
Isaac Sim Version
4.5.0
Operating System
Ubuntu 22.04
GPU Information
- Model: GeForce RTX 2070
- Driver Version: 550.127.08