Attention: Answers.ros.org is deprecated as of August the 11th, 2023. Please visit robotics.stackexchange.com to ask a new question. This site will remain online in read-only mode during the transition and into the foreseeable future. Selected questions and answers have been migrated, and redirects have been put in place to direct users to the corresponding questions on Robotics Stack Exchange. Additional details are available here.
As mentioned in this answer and the links given in it, KDL will work well for DOF more than 5. Since you have a 4 DOF arm, you can try to create an IKFast plugin following this tutorial. It seems that IKFast will suit your application better.