Conditional closing of AGV paths

Conditional closing of AGV paths

SCHamoen
Advisor Advisor
169 Views
5 Replies
Message 1 of 6

Conditional closing of AGV paths

SCHamoen
Advisor
Advisor

[ FlexSim 20.1.3 ]

@anthony.johnson

It is possible to define different path classes and in combination with load types you can specify very detailed how an AGV should drive through your system. But we are currently looking for a way that, depending on load type, some paths can not be taken. In this case there are AGV's with a very small height that can drive underneath loads to pick them up but when they picked up a load, a large amount of paths are not available anymore. Is there a solution to block/close paths based on their loads? For instance defining a speed of zero would feel like a nice solution.

0 Likes
Accepted solutions (1)
170 Views
5 Replies
Replies (5)
Message 2 of 6

anthony_johnsonT83CM
Autodesk
Autodesk
Accepted solution

Yes, you can customize routing based on a specific AGV's state. However, at this point there's not an easy "user-facing" way to do it. It's all done either through creating your own module or by putting a special "customization delegate" into the tree.

Most of the information you need is in the article I posted: Customizing AGV Speed with Jerk. You would essentially create an AGV customization delegate, either through the tree or in your own module. In this case, though, you would implement the "shouldBuildCustomRoute" and "getPathTravelWeight" functions. shouldBuildCustomRoute is called at the beginning of an AGV travel operation, and should return 1 if you want the AGV functionality to recalculate the path based on your own weightings. The getPathTravelWeight function should return a "weight" for a section of path that the AGV could potentially travel on. This is usually a simple distance along the path, but in your case you would return a very high value for paths that you don't want the AGV to travel on.

You can refer to the header files attached in that article to see what parameters are passed into the tree.

I should note there will be a CPU speed cost to implementing such a strategy. In traditional operation, the routing table is built only once, and AGVs route off of that stored routing table. If you implement custom routing, though, this means that it will re-run dijkstra's algorithm on each AGV's travel operation. The effect on speed could be significant.

0 Likes
Message 3 of 6

SCHamoen
Advisor
Advisor

@anthony.johnson Thanks for answering altough this is ofcourse not the answer we hoped for 😉 At the moment the travel network and model are quite large so we are affraid the speed penalty is too high (plus we don't have the time now to dive into it)

I hope a simple solution is on the dev list? Because I think with the current AGV developments (smaller and lower) this will be a highly requested feature in the near future.

Message 4 of 6

lcavallero
Advocate
Advocate

@anthony.johnson, I have, like Steven, some agv paths that be crossed only be some AGV types. I tried to use the "getPathTravelWeight" to exclude some path from the route calculation trying return, naively, -1 when not allowed but with no effect. There is another way to excelude completely a path from the custom route calculation?

0 Likes
Message 5 of 6

anthony_johnsonT83CM
Autodesk
Autodesk

This is the only way to do it. And I think -1 wouldn't work. You would need to return a very high value like 100000000.

0 Likes
Message 6 of 6

lcavallero
Advocate
Advocate

Thanks Anthony.

0 Likes