I suspect that numeric ik solvers like the KDL are not well suited for cartesians.
One thing to take into account is that even though the poses A, B and C are solvable, does not mean that the in between points are.
I'm afraid I can't be of much help there, you could try IK fast:
http://wiki.ros.org/Industrial/Tutorials/Create_a_Fast_IK_Solution
Maybe there is one already made for the popular baxter.
I believe that most people use KDL. It works for a large variety of cases, and is very easy to use with new robots, but it does not have the performance of an analytic solver like FastIK.
Moveit is a framework for solving motion planning problems. It was built to solve difficult planning tasks that are solved with libraries like OMPL.
The computeCartesianPath functions are an ancillary capability that are provided as a convenience, but there is not a high level of sophistication in its operation. You are only required to use moveit to computer Cartesian paths because there is no python interface to the RobotState class that provides that functionality.
the kinematics solver - computes the cartesian path. i.e. - determines if it is actually possible to travel through the points.OMPL library - plans that pathmoveit - just an interface to operate the robot or implement the motion plans on the robot. also, moveit provides some extra benefits of collision avoidance and helping compute the cartesian path using the chosen kinematics solver
import sys
import copy
import rospy
import moveit_commander
import moveit_msgs.msg
import geometry_msgs.msg
import math
moveit_commander.roscpp_initialize(sys.argv)
rospy.init_node('move_group_python_interface_tutorial',
anonymous=True)
robot = moveit_commander.RobotCommander()
scene = moveit_commander.PlanningSceneInterface()
group = moveit_commander.MoveGroupCommander("left_arm")
display_trajectory_publisher = rospy.Publisher(
'/move_group/display_planned_path',
moveit_msgs.msg.DisplayTrajectory)
group.clear_pose_targets()
bx=0.319027463078
by=0.696932535372
bz=0.38963384769
#pose B
pose_target=geometry_msgs.msg.Pose()
pose_target.position.x=bx
pose_target.position.y=by
pose_target.position.z=bz
pose_target.orientation.x=0.89646727127
pose_target.orientation.y= -0.441927661622
pose_target.orientation.z=-0.0323472356087
pose_target.orientation.w=0.000172577279596
#pose_target.position.z=bz+.05
group.set_pose_target(pose_target)
poseB=group.plan()
group.go(wait=True)
ee=.1
theta=0
zz=bz
sign=1
waypoints = []
wpose=geometry_msgs.msg.Pose()
wpose.position.x = 0.319027463078
wpose.position.y = 0.696932535372
wpose.position.z = 0.38963384769
wpose.orientation.x = 0.89646727127
wpose.orientation.y = -0.441927661622
wpose.orientation.z = -0.0323472356087
wpose.orientation.w = 0.000172577279596
waypoints.append(copy.deepcopy(wpose))
while theta<=90:
byee=math.cos(math.radians(theta))
bxee=math.sin(math.radians(theta))
wpose.position.x=bx+ee*bxee
wpose.position.y=by+ee*byee
waypoints.append(copy.deepcopy(wpose))
theta+=5
print theta
(plan_circ,fraction)=group.compute_cartesian_path(waypoints,0.01,0.0)
group.go()