Hello
I combined the UR5e (localhost\NVIDIA\Assets\Isaac\2023.1.0\Isaac\Robots\UniversalRobots\ur5e\ur5e.usd) and Robotiq’s 2F-85 (localhost\NVIDIA\Assets\Isaac\2023.1.0\Isaac\Robots\Robotiq\2F-85\2f85_instanceable.usd) from Isaac Sim’s asset list using the GUI Assembler, and saved the resulting USD file as ur5e_attached.usd.
I would like to control the UR5e with the attached 2F-85 by wrapping this USD file into the Robot class using the following program, but I am encountering an error where the USD file cannot be wrapped into the Robot class.
Could someone kindly share a program that controls a robot arm with an attached end-effector, like in this example?
from omni.isaac.kit import SimulationApp
simulation_app = SimulationApp({"headless": False})
from omni.isaac.core import World
from omni.isaac.core.objects import DynamicCuboid
from omni.isaac.core.utils.types import ArticulationAction
from omni.isaac.franka import Franka
from omni.isaac.core.articulations import ArticulationView
from omni.isaac.sensor import Camera
import omni.isaac.core.utils.numpy.rotations as rot_utils
from omni.importer.urdf import _urdf
from omni.isaac.core.utils.stage import add_reference_to_stage
from omni.isaac.core.utils.nucleus import get_assets_root_path
from omni.isaac.core.robots import Robot
import numpy as np
my_world = World(stage_units_in_meters=1.0)
my_world.reset()
# set up paths and prims(UR5e)
ur5e_name = "UR5e"
ur5e_prim_path = "/UR5e"
ur5e_path = "ur5e_attached.usd"
# set references to staget in isaac
add_reference_to_stage(usd_path=ur5e_path, prim_path=ur5e_prim_path)
ur5e = my_world.scene.add(Robot(prim_path=ur5e_prim_path, name=ur5e_name, position=np.array([-3.1, 3.1, -0.769])))
ur5e = ArticulationView(prim_paths_expr=ur5e_prim_path, name=ur5e_name)
my_world.initialize_physics()
my_ur5e = my_world.scene.get_object(ur5e_name)
ur5e_controller = my_ur5e.get_articulation_controller()
while simulation_app.is_running():
my_world.step(render=True)
if my_world.is_playing():
if my_world.current_time_step_index == 0:
my_world.reset()
observations = my_world.get_observations()
random_numbers = np.random.uniform(-1,1,6)
actions = ArticulationAction(
joint_positions=random_numbers,
)
ur5e_controller.apply_action(actions)
simulation_app.close()
Here is an image of the setup when I combined the assets using the GUI Assembler:
Thank you in advance.
