# Why get wrong position and orientation using rmpflow controller?

**URL:** <https://forums.developer.nvidia.com/t/why-get-wrong-position-and-orientation-using-rmpflow-controller/318213>\
**Category:** Isaac Gym\
**Created:** [December 28, 2024, 10:15am UTC](https://forums.developer.nvidia.com/t/why-get-wrong-position-and-orientation-using-rmpflow-controller/318213 "2024-12-28T10:15:06Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![1358467720](https://developer.download.nvidia.com/images/forums/profile-default-devtalk-84.png) [@1358467720](https://forums.developer.nvidia.com/u/1358467720)\
**Post date:** [December 28, 2024, 10:15am UTC](https://forums.developer.nvidia.com/t/why-get-wrong-position-and-orientation-using-rmpflow-controller/318213/1 "2024-12-28T10:15:06Z")

</div>

this is my code:

```auto
from omni.isaac.examples.base_sample import BaseSample
from omni.isaac.franka import Franka
from omni.isaac.core.objects import DynamicCuboid
from omni.isaac.franka.controllers import PickPlaceController,RMPFlowController
import numpy as np
from omni.isaac.core.prims import XFormPrim
from omni.isaac.core.utils.numpy.rotations import euler_angles_to_quats
from omni.isaac.core.utils.stage import add_reference_to_stage

from omni.isaac.core.utils.nucleus import get_assets_root_path

class HelloWorld(BaseSample):
    def __init__ (self) -> None:
        super(). __init__ ()
        return

    def setup_scene(self):
        world = self.get_world()
        world.scene.add_default_ground_plane()
        franka = world.scene.add(Franka(prim_path="/World/Fancy_Franka", name="fancy_franka"))
        # franka.get_joints_state(franka.get_joints_default_state())
        world.scene.add(
            DynamicCuboid(
                prim_path="/World/random_cube",
                name="fancy_cube",
                position=np.array([0.3, 0.3, 0.3]),
                scale=np.array([0.0515, 0.0515, 0.0515]),
                color=np.array([0, 0, 1.0]),
            )
        )
        # add_reference_to_stage(get_assets_root_path() + "/Isaac/Props/UIElements/frame_prim.usd", "/World/target")
        # self._target = XFormPrim("/World/target", scale=[.04,.04,.04])
        # self._target.set_default_state(np.array([.3,0,.5]),euler_angles_to_quats([0,0,0]))
        return

    async def setup_post_load(self):
        self._world = self.get_world()
        self._franka = self._world.scene.get_object("fancy_franka")
        self._fancy_cube = self._world.scene.get_object("fancy_cube")

        self._controller = RMPFlowController(name=f"controller", robot_articulation=self._franka)
        self._world.add_physics_callback("sim_step", callback_fn=self.physics_step)
        # World has pause, stop, play..etc
        # Note: if async version exists, use it in any async function is this workflow
        self._franka.gripper.set_joint_positions(self._franka.gripper.joint_opened_positions)
        await self._world.play_async()
        return

    # This function is called after Reset button is pressed
    # Resetting anything in the world should happen here
    async def setup_post_reset(self):
        self._controller.reset()
        self._franka.gripper.set_joint_positions(self._franka.gripper.joint_opened_positions)
        await self._world.play_async()
        return

    def physics_step(self, step_size):
        target_position, target_orientation = self._fancy_cube.get_world_pose()
        actions = self._controller.forward(
            target_end_effector_position=target_position,
            target_end_effector_orientation=target_orientation,
        )
        self._franka.apply_action(actions)
        return

```

and I get weird pose.

 ![image](https://global.discourse-cdn.com/nvidia/original/4X/2/c/e/2cef890b510f58e89ead320c3523a7e582f6b0cd.jpeg)
