About the joint and grasping simulation in isaac sim

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.