Redundant Manipulator Collision Avoidance?

Typically: "How do I... ", "How can I... " questions
dschreib
Posts: 7
Joined: 10 Apr 2019, 22:39

Redundant Manipulator Collision Avoidance?

Post by dschreib »

I am having trouble finding the redundant manipulator and collision avoidance settings I am familiar with. Do they still exist?

coppelia
Site Admin
Posts: 8583
Joined: 14 Dec 2012, 00:25

Re: Redundant Manipulator Collision Avoidance?

Post by coppelia »

Hello,

IK in CoppeliaSim is slowly moving away from GUI set-up, to programmatic set-up, i.e. instead of having to manually create IK tasks, adjust their parameters and properties, you can do this via the new IK API. CoppeliaSim V4.2.0 goes one step further and allows to create and handle IK tasks just with a few lines of code. There are several example scenes to illustrate this. CoppeliaSim V4.2.0 Beta will be available here within 1-2 days.

IK and collision avoidance is quite tricky and can be implemented in various ways, programmatically, by identifying closest points and creating additional IK elements on-the-fly where needed, to drive that point away from a possible collision.

Cheers

dschreib
Posts: 7
Joined: 10 Apr 2019, 22:39

Re: Redundant Manipulator Collision Avoidance?

Post by dschreib »

Are there bindings or examples for using this new functionality with PyRep? Would it be possible to point me to an example offering collision avoidance (nullspace controller)?

coppelia
Site Admin
Posts: 8583
Joined: 14 Dec 2012, 00:25

Re: Redundant Manipulator Collision Avoidance?

Post by coppelia »

We'll try to prepare a demo scene related to that, hopefully next week.

Cheers

dschreib
Posts: 7
Joined: 10 Apr 2019, 22:39

Re: Redundant Manipulator Collision Avoidance?

Post by dschreib »

Thank you! I'm looking forward to it. I have a couple more questions, if you could answer them it would help me a lot in the meantime.


1.) Will this be available internal to Coppellia Sim (Lua Scripting or Remote API (sim.sim* in Python through PyRep) or solely through the C++ API?

2.) Is there existing documentation or publications I could take a look at to understand your approach (based on Oussama Khatib's work in the 80s?) to collision avoidance and inverse kinematics?

coppelia
Site Admin
Posts: 8583
Joined: 14 Dec 2012, 00:25

Re: Redundant Manipulator Collision Avoidance?

Post by coppelia »

The functionality is available via scripting, but since you can call script functions from the C/C++ API, it is also indirectly available from there. E.g. simply create an add-on that offers that script function, then call from C/C++ that add-on function via simCallScriptFunctionEx. Of course you can use the same approach by using a customization script or a child script.

As to how this can exactly be implemented, you will have to look at the available literature. But a basic approach would be to add additional damped constraints for objects with too little clearance and repelling them from the obstacles.

Cheers

coppelia
Site Admin
Posts: 8583
Joined: 14 Dec 2012, 00:25

Re: Redundant Manipulator Collision Avoidance?

Post by coppelia »

We have prepared a very simple example scene available here: run the simulation and try to move the blue cylinder close to the kinematic chain.

We might add an improved version of this scene to the default demo scenes. Make sure you run with CoppeliaSim V4.2.0 or above.

Cheers

dschreib
Posts: 7
Joined: 10 Apr 2019, 22:39

Re: Redundant Manipulator Collision Avoidance?

Post by dschreib »

Hi! I saw that you updated the documents to reference the new API. Is this approach compatible with using a PyRep interface?

coppelia
Site Admin
Posts: 8583
Joined: 14 Dec 2012, 00:25

Re: Redundant Manipulator Collision Avoidance?

Post by coppelia »

Yes, I don't think that there is an incompatibility. Did you notice anything?

dschreib
Posts: 7
Joined: 10 Apr 2019, 22:39

Re: Redundant Manipulator Collision Avoidance?

Post by dschreib »

Great! I'll dive into it more. Do you have any documentation (or a different example scene, more comments?) to point me towards for the collision avoidance. I am a bit lost looking through the provided example.

Post Reply