Best way to use Moveit for teleoperation?
I've seen this topic discussed a bit here, and on the MoveIt! mailing list here and here, but those conversations are pretty old now and I'm wondering if there is a clearer answer now.
I have a 7 DOF arm I would like to teleoperate. I plan on using a 3D mouse to command the Cartesian motion of the end effector and utilize the redundancy of the arm so the whole arm avoids collisions with itself and the environment. By teleoperation I mean that as I push the 3D mouse forward for example, the end effector moves forward seemly in real-time, then when I release the mouse the motion stops. I think guarded fly-the-gripper is a term that best describes it. If I had to guess I would say an update rate of 30Hz would be plenty fast. Right now I'm simplifying things by not using any hardware - only simulating in MoveIt using a simple environment (e.g. a single block to reach around).
I assumed that MoveIt's most popular use case of plan-then-execute position control wouldn't suffice, I'm guessing that giving discrete positions as input would not provide the streaming/constant motion I desire. I jumped in trying to implement something from scratch using KDL's velocity inverse kinematics solvers but quickly realized that MoveIt does a lot of really useful stuff under the hood that I wasn't utilizing that I'm not sure how to implement for velocity control. I decided I better take a step back and ask for help before getting to deep.
Does anyone have any advise on doing something like this? Do those above posts still hold true or is there new capabilities I should be aware of? Maybe you know of an open project that has done something similar? Let me know if I should provide more information about what I've tried so far.