Is the pose in 'traj_X/obs/extra/tcp_pose' the same as the action frame? #923
-
|
Howdy! I've trained an Imitation Learning model on the poses in 'traj_X/extra/tcp_pose' for the PickCubeV1 task for the Panda. During inference, i'm calling To be clear, 'these' are Tcp and whatever env.step() expects. Is using the Thanks |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 4 replies
-
|
For anyone reading this, they're definitely not the same! I'm guessing tcp_pose is in robot base frame, whereas action is in world frame or something like this |
Beta Was this translation helpful? Give feedback.
-
|
pd_ee_pose probably refers to an absolute end-effector action space. If you check this it will print The value stored in the tcp_pose is the result of So you are correct, the frames are different (root translation means relative to the root of the robot, also known as the robot base frame where the base link is the 0) Visual example: applying the following action repeatedly (or just once followed by env.step(None) a bunch of times to let the sim converge to what you last set as the target pose) results in: 0.mp4results in 0.mp4(note that the position of the end-effector at the start of the episode is approximately like If your goal is to train an IL policy to predict absolute end-effector space actions, you should use the replay tool to replay actions in the end-effector space as so: (you can copy the standard replay scripts we use for our baselines in https://github.com/haosulab/ManiSkill/blob/main/scripts/data_generation/replay_for_il_baselines.sh and modify the control mode which modifies the actions stored in the dataset, note this only works for the panda robot usually and is not designed to work for any robot) |
Beta Was this translation helpful? Give feedback.
-
|
Hey @StoneT2000 a follow up about this - during training i'm using I can access the Panda actor from
|
Beta Was this translation helpful? Give feedback.

pd_ee_pose probably refers to an absolute end-effector action space.
If you check this
it will print
root_translation:root_aligned_body_rotation(the default) which defines the frames in which translation and rotation (applied separately) work. Recommend reading https://maniskill.readthedocs.io/en/latest/user_guide/concepts/controllers.html#pd-ee-end-effector-pose to see what that means and what it looks likeThe value stored in the tcp_pose is the result of
self.agent.tcp.pose.raw_posein the PickCube-v1 code.agent.tcpis a articulation link and link pose data is always in world frame.So you are correct, the fra…