as shown in the question,how can i add a robotiq 2f85 grippter to ur3 arm and use parallelgripper to pick up and place a cube , I’m having some problems,
1.assemble ur3 and robotiq 2f85 with assets in isaac sim ,gripper missing two joints,it can not run properly during simulation
2.I refer to tutorial control gripper,but it looks abnormal, 5.7. Adding a New Manipulator — Omniverse IsaacSim latest documentation (nvidia.com)
any help would be really appreciated. thanks!
How can i add a robotiq 2f85 grippter to ur3 arm and use parallelgripper to pick up and place a cube
Even, I’m facing the same problem
I hope this will be helpful.
Hi @hijimasa
I also did similar thing, I added panda robot (remove last 3 links) and robotiq 140 gripper, I could able to give commands from articulation action, but when i try to use parallel gripper it is not able to detect the prim path of end effector.
Can you help me here, I am trying to do so many ways, but nothing is working.
from isaacsim import SimulationApp
simulation_app = SimulationApp({“headless”: False})import numpy as np
from omni.isaac.core import World
from omni.isaac.core.utils.stage import add_reference_to_stage
from omni.isaac.core.utils.types import ArticulationAction
from omni.isaac.manipulators import SingleManipulator
from omni.isaac.manipulators.grippers import ParallelGripper
from omni.isaac.nucleus import get_assets_root_pathmy_world = World(stage_units_in_meters=1.0)
#TODO: change this to your own path
#asset_path = “/home/pavan/Desktop/USD’s/Robot_final.usd”
asset_path = “/home/pavan/Desktop/USD’s/Robot_final.usd”
add_reference_to_stage(usd_path=asset_path, prim_path=“/World/Robot_final”)
#add_reference_to_stage(usd_path=asset_path, prim_path=“/World/Robot_final”)define the gripper
gripper = ParallelGripper(
#We chose the following values while inspecting the articulation
end_effector_prim_path=“/World/Robot_final/Robotiq_2F_140_physics_edit”,
joint_prim_names=[“finger_joint”, “right_outer_knuckle_joint”],
joint_opened_positions=np.array([0, 0]),
joint_closed_positions=np.array([0.06, -0.06]),
action_deltas=np.array([-0.06, 0.06]),
)
define the manipulator
my_denso = my_world.scene.add(SingleManipulator(prim_path=“/WorldRobot_final”,
name=“rjobot”,
end_effector_prim_path=“/World/Robot_final/Robotiq_2F_140_physics_edit”,
gripper=gripper))
set the default positions of the other gripper joints to be opened so
#that its out of the way of the joints we want to control when gripping an object for instance.
joints_default_positions = np.zeros(14)
joints_default_positions[7] = 0.0628
joints_default_positions[8] = 0.0628
my_denso.set_joints_default_state(positions=joints_default_positions)
my_world.scene.add_default_ground_plane()
my_world.reset()i = 0
eset_needed = False
while simulation_app.is_running():
my_world.step(render=True)
if my_world.is_stopped() and not reset_needed:
reset_needed = True
if my_world.is_playing():
if reset_needed:
my_world.reset()
reset_needed = False
i += 1
gripper_positions = my_denso.gripper.get_joint_positions()
if i < 500:
# close the gripper slowly
my_denso.gripper.apply_action(
ArticulationAction(joint_positions=[gripper_positions[0] + 0.1, gripper_positions[1] - 0.1])
)
if i > 500:
# open the gripper slowly
my_denso.gripper.apply_action(
ArticulationAction(joint_positions=[gripper_positions[0] - 0.1, gripper_positions[1] + 0.1])
)
if i == 1000:
i = 0
if args.test is True:
breaksimulation_app.close()
The articulation is correct, I checked it /World/Robot_final/Robotiq_2F_140_physics_edit
here you can see the articulation,
sometimes, it showing
my_world.reset()
Exception: Not all gripper dof names were resolved to dof handles and dof indices.
when i try to remove that line, it shows
NoneType’ object is not callable
File “/home/pavan/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.manipulators/omni/isaac/manipulators/grippers/parallel_gripper.py”, line 191, in get_joint_positions
return self._get_joint_positions_func(joint_indices=[self._joint_dof_indicies[0], self._joint_dof_indicies[1]])
File “/home/pavan/.local/share/ov/pkg/isaac-sim-4.0.0/Robot_2.py”, line 50, in
s = my_denso.gripper.get_joint_positions()
TypeError: ‘NoneType’ object is not callable