Thread Rating:
  • 1 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5

Collision Avoidance

#1
I'm working with RoboDK's simulator to test a Fanuc M-710iC/45M using the RoboDK Python API and can't seem to generate paths that automatically avoid collisions. The collision map is setup so collisions are checked for the right objects, but the program exits after a joint move causes a collision.

Is that a feature of RoboDK? Pages like https://robodk.com/examples mention avoiding collisions automatically, but it's not clear if the library handles the pathing or the user is expected to check the path and make adjustments manually.

Thanks for any help.
#2
Hi Micronexx, 

RoboDK can avoid singularities automatically. 

On the other hand, RoboDK can detect collision in the simulation. To activate this option, you just need to click on that icon :
   

Once the software has detected a collision, you will know exactly where it happens and you will be able to apply the needed corrections. 

Jeremy
#3
I don't know what your background is, but if you want more of an 'on the fly' motion planner you can use this:

http://ompl.kavrakilab.org/

It's a motion planner that can plan a trajectory through space while avoiding collisions with other objects and the environment. It's a bit of a learning curve but it can do exactly what you need
#4
Thanks for the share mattmctr !
#5
(11-07-2018, 01:56 AM)mattmct Wrote: I don't know what your background is, but if you want more of an 'on the fly' motion planner you can use this:

http://ompl.kavrakilab.org/

It's a motion planner that can plan a trajectory through space while avoiding collisions with other objects and the environment. It's a bit of a learning curve but it can do exactly what you need

Definitely looks like it does what I want, thanks.
#6
RoboDK allows you to automatically avoid collisions for robot manufacturing applications, such as robot machining or robot welding. This is meant to be an easy way to avoid collisions. However, the main degree of freedom that is automatically calculated to avoid collisions is the rotation around the Z axis of the tool. You can activate this option here:
Tools-Options-Allow automatic collision avoidance
Then, in your curve follow project you'll see an "Avoid collisions" checkbox. It is very important to properly define and filter your collision map, otherwise, collision detection can take a long time.
   

Alternatively, if you are looking for a motion planning library to implement yourself I recommend you to take a look at the following project:
https://github.com/hamzamerzic/bubbles-motion-planning
It is a nice algorithm and you have some tools to export your program in RoboDK, as shown in the GIF images.
   
#7
Is the Information still up to date that the only possible solutions to use a library like OMPL is via the ROS environment? Have there been more recent developments in RRT* or PRM* Algorithms which may be used with the Python API? Or in other words, will it be possible to use RoboDK with the Python API to implement such an Algorithm? Furthermore, is it possible to run the Simulation without the graphical output in order to run many tries in a short period of time?  I appreciate any suggestions or help , thanks a lot!
#8
Yes, it is now possible to apply a PRM algorithm to avoid collisions with RoboDK. This option is available since version 3.6.0. To use it you should start RoboDK by double clicking the following file:
C:/RoboDK/RoboDK-Allow-CollisionFreePlanner.bat
We'll make this PRM plugin available by default in the next few weeks.

I attached a PDF document that explains how to use it and an RDK sample project that has a PRM collision map already calculated (100 samples and 25 edges/sample approximately).
   
You'll find an example to connect targets and programs through the API in the RDK file.

Also, to run RoboDK behind the scenes without graphical interface you can start RoboDK with the -NOUI argument.


Attached Files
.rdk   PRM-Automated-Collision-Avoidance.rdk (Size: 1.25 MB / Downloads: 813)
.pdf   Doc-RoboDK-PRM-for-Robots.pdf (Size: 447.12 KB / Downloads: 1,231)
#9
Thank you for the attached files and your detailed response. This looks exactly like the solution to my problem. However, there are still some questions or problems that I have encountered:
 
- When trying to add a Geometry {RDK.AddFile('Kollisionsgeometrie.stl',parent=FrameW0)} in the "Allow-CollisionFreePlanner.bat" it will fail despite it working properly without the CollisionFreePlanner.bat --> is that a known issue?
 
- I managed to execute the calculation of the Algorithm with the sample project command. Is there already an option to refresh the calculations with an Python command? (What I want is to refresh the station after a cutting process because there is less and less collision space in the manufacturing chain as time proceeds)
 
-Is there an overview of the CollisionFreePlanner.dll functions?
 
To me it looks like this feature is a brilliant way to assist someone in creating a collision free path planning. As of now the automated planning of a “lot size 1” Geometry seems not possible yet, is that correct? Hopefully I am wrong because if the above-mentioned points work then it looks like the holy grail to me.
#10
Hi RZingrich,

Thanks for your feedback.
As you may have understood, the PRM algorithm is a brand new feature in RoboDK. In fact, I would mostly say that we are still in the beta testing phase. You are one of the first person to test it outside of RoboDK's staff. The feedback you are giving us right now is highly valuable for us as we don't have that much real life example at hand to test out new features.

That being said, just take note that the main developer on the PRM (Albert) is out of the office for the week with limited access to the forum and to his email. Therefore, the answers to your question may need to wait until early April.
I'm really sorry for that and I hope you understand.

Have a good day.
Jeremy
  




Users browsing this thread:
1 Guest(s)