Since you're using Hydro, arm_navigation is out of the question (it doesn't exist in Hydro any more). Instead, use MoveIt (it's the successor of arm_navigation). Since MoveIt is the future, I'd have recommended that anyway.
There is a good tutorial on how to generate a IKFast plugin for MoveIt here: http://docs.ros.org/hydro/api/moveit_... . Before you can do that tutorial however, you'll need to create a moveit config package for the nao. Just follow the "Integrating a new robot with MoveIt!" section of the MoveIt tutorials. There already seems to be a nao_moveit_config created by some very competent people, so probably you can also just use that one.
Once you have a working nao_moveit_config package, follow the first tutorial I linked to to see how to integrate the generated IKFast plugin.
Edit in response to TopSecret's comment:
Maybe I simply misunderstood what IKFast does. I tought I could use the plugin/cpp in a ROS node to get super fast inverse kinematic for my robot by calling a function or something like that. Is it possible to use it directly form C++/python code?
You are right, the generated IKFast solver is just that: a class that gives you super fast IK. The IKFast MoveIt plugin wraps that generated code so it can be used from MoveIt. Your moveit_ikfast package compiles that plugin into a shared library and exports it, and you can configure MoveIt to import and use it.
I think there are three ways you can get IK from your node:
- Start MoveIt and call the provided /compute_ik ROS service. (Make sure your move_group.launch includes the move_group/MoveGroupKinematicsService capability.) Advantages: super easy to implement, and you'll also get collision-aware IK (I think). Disadvantage: If you want thousands of IK calls per second, the ROS service call will slow you down a lot (which isn't the point of having IKFast, is it?). For the odd IK call now and then this is okay.
- The hackish version: Simply copy your IKFast solver into your own package and try calling the provided functions from your code there.
- Figure out how MoveIt includes the plugin, and mimic that. Seems the cleanest way to do it.
I don't have any hands-on experience with (2) and (3), so if you want to go down that road, your best bet is to ask your question on the moveit google group, there the real gurus can help you. Perhaps provide a link to this question.
Which ROS distro are you using? Are you (planning on) using arm_navigation, MoveIt or something else?
I am using Hydro. I wasn't planning on using any of these at the time I posted the question, but now I also want to use OMPL. In this case, I'd like to use both with MoveIt and not arm_navigation.