I am currently doing a simulation of robotic assembling, but I don’t want to use from omni.isaac.franka.controllers import PickPlaceController to simulate franka’s motions.
while I am currently using following script:
def physics_step(self, step_size):
current_joint_positions = self._franka.get_joint_positions()
actions = self._controller.forward(
picking_position=[0.3, 0.3, 0.0003],
placing_position=[0.3, -0.3, 0.1],
current_joint_positions=current_joint_positions,
)
self._franka.apply_action(actions)
if self._controller.is_done():
self._world.pause()
return
Which
self._controller = PickPlaceController(
name="pick_place_controller",
gripper=self._franka.gripper,
robot_articulation=self._franka,
)
But I wanna write the controller by myself, like for instance, I wanna pick up something and stop without placing.
I also tried
def physics_step(self, step_size):
action = ArticulationAction(joint_positions=np.array([1.79271, -0.422193, 0.407193, -1.87396, 0.169483, 1.41639, 1.1097, 0.04, 0.04]))
self._franka.apply_action(action)
self._world.step(1)
action = ArticulationAction(joint_positions=np.array([1.94128, -0.232569, 0.407291, -2.59608, 0.145974, 2.3107, 1.16115, 0.04, 0.04]))
self._franka.apply_action(action)
self._world.step(1)
action = ArticulationAction(joint_positions=np.array([1.94128, -0.232569, 0.407291, -2.59608, 0.145974, 2.3107, 1.16115, 0.02, 0.02]))
self._franka.apply_action(action)
if self._controller.is_done():
self._world.pause()
return
This showed 3 problems: First, it’s not moving smoothly. And I can not control its speed. Also, I did not find such an API simulating grasping motion.
For example, in physical Franka control:
I can use
gripper.grasp(width, speed, force);
But how can I simulate the grasping in Isaac sim?
And also for motion planning, how can I and lamda function for example like MoveCartesian to optimize my planning. Rather than just giving a goal joint state:
action = ArticulationAction(joint_positions=np.array([1.79271, -0.422193, 0.407193, -1.87396, 0.169483, 1.41639, 1.1097, 0.04, 0.04]))
self._franka.apply_action(action)
And it would be perfect if maybe the source code of PickPlaceController could be given.