scikit-robot icon indicating copy to clipboard operation
scikit-robot copied to clipboard

Can't solve ik with assoc axis copy_worldcoords()

Open kosuke55 opened this issue 4 years ago • 0 comments

import skrobot
from skrobot.coordinates import CascadedCoords

robot = skrobot.models.PR2()
robot.reset_pose()
viewer = skrobot.viewers.TrimeshSceneViewer()
viewer.add(robot)
viewer.show()

assoc_coords = CascadedCoords(pos=(0.1, 0, 0))
robot.larm.end_coords.parent.assoc(assoc_coords, relative_coords="local")
hoge = skrobot.model.Axis.from_cascoords(assoc_coords)
robot.larm.end_coords.parent.assoc(hoge, relative_coords="world", force=True)
viewer.add(hoge)

robot.larm.inverse_kinematics(assoc_coords, move_target=assoc_coords)



assoc_coords = CascadedCoords()
assoc_coords.newcoords(robot.larm.end_coords.copy_worldcoords())
robot.larm.end_coords.parent.assoc(assoc_coords, 'world')

robot.larm.inverse_kinematics(assoc_coords, move_target=assoc_coords)
robot.larm.inverse_kinematics(assoc_coords.copy_worldcoords(), move_target=assoc_coords)


assoc_coords_ = robot.larm.end_coords.copy_worldcoords().translate([0.1, 0, 0])
assoc_coords_axis = skrobot.model.Axis()
assoc_coords_axis.newcoords(assoc_coords.copy_worldcoords())
robot.larm.end_coords.parent.assoc(assoc_coords_axis, 'world')

robot.larm.inverse_kinematics(assoc_coords_axis, move_target=assoc_coords_axis)
robot.larm.inverse_kinematics(assoc_coords_axis.copy_worldcoords(), move_target=robot.larm.end_coords)


assoc_coords_axis = skrobot.model.Axis(pos=[0.1, 0, 0])
robot.larm.end_coords.parent.assoc(assoc_coords_axis, 'local')

robot.larm.inverse_kinematics(assoc_coords_axis, move_target=assoc_coords_axis)
robot.larm.inverse_kinematics(assoc_coords_axis.copy_worldcoords(), move_target=assoc_coords_axis) # bad case
robot.larm.inverse_kinematics(assoc_coords_axis.copy_worldcoords(), move_target=robot.larm.end_coords)
robot.larm.inverse_kinematics(assoc_coords_axis.copy_worldcoords(), move_target=robot.larm.end_coords.parent)

robot.larm.inverse_kinematics(robot.larm.end_coords.parent, move_target=robot.larm.end_coords.parent)
robot.larm.inverse_kinematics(robot.larm.end_coords.parent.copy_worldcoords(), move_target=robot.larm.end_coords.parent)

kosuke55 avatar Jan 08 '21 23:01 kosuke55