scikit-robot
scikit-robot copied to clipboard
Can't solve ik with assoc axis copy_worldcoords()
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)