moveit icon indicating copy to clipboard operation
moveit copied to clipboard

[moveit_servo] Singularity Avoidance for MoveIt Servo

Open playertr opened this issue 3 years ago • 4 comments

Is your feature request related to a problem? Please describe. When performing autonomous visual servoing with moveit_servo, I find that my robot arm often gets stuck in joint singularities. This is similar to a discussion on Damped Least Squares on https://github.com/ros-planning/moveit/issues/2617 .

Describe the solution you'd like Implementing Damped Least Squares [1, eq. 10.18] could be a good way to avoid joint singularities. DLS adds a regularizing term to the Jacobian to avoid high joint velocities, which ends up avoiding singularities. However, DLS has several parameters and can result in unexpected arm motions, so incorporating DLS should be done carefully if at all.

I think that a plugin-based system of servoing backends could be an elegant solution, to allow people to pick the servoing backend they desire. This would also allow servo backends with other nifty behavior, like avoiding joint limits or scene collisions or minimizing energy. However, I'm not certain that enough people would use this feature that a plugin-based system is better than having people fork MoveIt themselves to implement different servoing logic.

Additional context I'm in a graduate course on robot motion with @kavinda14 and we looked at DLS in moveit_servo for a project.

[1] B. Siciliano and O. Khatib. Springer Handbook of Robotics. Berlin: Springer, 2016, pp. 227–230.

Call to action What do you think? Is singularity avoidance an issue, and would DLS or similar methods be a viable solution?

playertr avatar Jun 04 '22 03:06 playertr

Yep! That's a Blueprint Bravo Reach 7 with force/torque sensor installed. If you're interested in simulating one yourself, you can follow the directions in https://gitlab.com/rsa-manipulation-testbed/bravo_arm_sw and poke around the parent project for its description and planning repositories.

On Mon, Jul 25, 2022 at 3:33 PM Dan Zimmerman @.***> wrote:

Cool, is that a Reach underwater arm?

— Reply to this email directly, view it on GitHub https://github.com/ros-planning/moveit/issues/3155#issuecomment-1194720463, or unsubscribe https://github.com/notifications/unsubscribe-auth/AFUYMCTEFDMUEG335QFD4Y3VV4I3DANCNFSM5X2Y4OPA . You are receiving this because you authored the thread.Message ID: @.***>

playertr avatar Jul 25 '22 22:07 playertr

Sorry, I clicked on the paper and saw that it was a Blueprint arm and deleted my comment. Really interesting, thanks!

danzimmerman avatar Jul 25 '22 22:07 danzimmerman

I've been interested in the discussion on DLS too. Looks like moveit2/#1434 is bringing kinematics plugins to moveit_servo for ROS2 at least.

danzimmerman avatar Jul 25 '22 23:07 danzimmerman

Oh awesome! I wasn't aware of that PR, looks great!

If you happen to have a BPL Bravo that you want to use, feel free to use our ROSControl implementation from the prior link, as that sucked up a fair bit of dev time. Adding an open source license is one of our TODOs right now, but we can fast-track that if you're interested.

Video demo of Bravo ROSControl Driver

playertr avatar Jul 26 '22 00:07 playertr