question

Craig DIckson avatar image
4 Likes"
Craig DIckson asked David Seo edited

Modeling AMRs using AGV paths or using A* - can you find me a better way?

Starting with Kiva Systems (now Amazon Robotics) several years ago, and increasing rapidly in the last 2-3 years, AMRs ("autonomous mobile robots") have become very common in the materials handling industry. That trend will continue: AMRs are now replacing conveyors in even large distribution systems. (My employer, a well known distribution system integrator, has not sold a primarily conveyor-based system in 3 years, and I know we are not alone in that.) I am hoping that FlexSim can keep up with this trend so that modeling AMRs becomes as straightforward as modeling conveyors is.

A defining characteristic of AMRs is that they turn by rotating, at 90 degree intersections. It would be hugely helpful to many customers - not just me - if you could add this functionality to the AGV construct in FlexSim. (If I recall correctly, AGVs can actually make right angle turns already, except that they snap to the new direction in zero time. This suggests to me that this may not be that difficult of an addition.)

I know of two ways to model AMR travel in FlexSim now, and have used them both successfully. But neither is really satisfactory:

1: On one large model, I used A*, since it does allow for this type of turn. I found several limitations to using A* for AMRs. First off, all stop/queue/pickup/dropoff locations must be on the grid, with nice even spacing. This is often not the case in real life, particularly on large full-warehouse systems which are increasingly common in the distribution industry. (Think of a set of workstations that are spaced on 1 meter increments ... except the one that is 1.35 meters apart because of a building column.) If you make the grid smaller to accommodate this (i.e., grid spacing = least common denominator), then AMR accumulation usually does not work correctly. Stopped vehicles occupy only one grid location at a time, so if the grid is smaller than the vehicle they run in to each other when queueing. Moreover, you cannot force a vehicle to an exact location in A* -- it will stop at a nearby grid position if A* thinks it is "close enough". You can configure it, but only down to a distance of +/- one grid space, which still may leave the vehicle in a travel path when you sent it to a spur. Once again a smaller grid can help some, but it's never perfect and as noted above makes accumulation wrong. A smaller grid also makes defining paths far more tedious (you have to block out entire rows of grid positions so the AGVs don't go around each other when they shouldn't). (I do understand why A* works this way (it was designed initially to model people, and "close enough" reduces the complexity of the calculations), but that makes it a poor fit for modeling AMRs.)

2. In some other models, I used AGV paths, control points, zones etc., and then modeled the spin-in-place turning behavior using very small radius turns (typically <= 12"), with the speed on those turns set appropriately low (~4 ips, when the straight speed is 48 ips). 1646955281664.pngThis looks ok (though not perfect) but it is tedious to get all of the little curves actually attached correctly. Worse, if you change e.g., the length of one of the straight paths, you have to re-attach virtually every one of the small paths at every intersection. Also, for some reason control points really really want to snap to the little curves not the straights, so it is all but impossible to put a control point near the intersection. It is pretty obvious that the developers did not anticipate users drawing small curves like this.

I will also point out that these models do not use the AGV process flow, since AMRs, unlike AGVs, typically do not travel looking for work -- the central WES (warehouse execution system) just tells them where to go. Thus no changes to the AGV process flow would be needed. In fact my custom process flow of this approach is very simple, so if I did not have to jump through the hoops of all those little curves, I could model an AMR-based system as rapidly as a conveyor based system.

But as it stands now, the FlexSim modeling process of AMRs is taking just as long as building something custom in Python (which my manager is having other analysts do as we speak). For obvious reasons that is not in your or my best interests!

Thanks for reading my whole screed ...

Craig


FlexSim 22.0.1
agva starspin in place
1646955281664.png (111.8 KiB)
· 2
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

anthony.johnson avatar image
1 Like"
anthony.johnson answered Steven Hamoen edited

Hey Craig,

I definitely want to improve FlexSim's features for these types of situations. Right now I think the best way forward would be improvements to A*:

1. Solve/improve the grid spacing problem by increasing the flexibility of combining different grids, with different node sizes, together. If you could snap the edge of one grid to the edge of another grid, for grids with different node sizes, and have FlexSim automatically calculate the 'bridges' between the nodes on those two grids, then I think that would get you 90-100% of the way toward what you need. You can essentially 'tile' different grids of different sizes together to get the layout you need.

2. Implement better traffic control mechanisms in A*. Having an 'A* control area' would go a long way. Also, refactoring the A* algorithms to be more open and programmable, so that the user, if they need, could design their own traffic avoidance, path planning, etc. algorithms.

At this point my opinion is that A* is the best way forward for this. While I still want to make improvements to AGV, I don't think those improvements would necessarily be directed to these types of scenarios, as I think A* is closer to that end goal. And obviously feedback is appreciated.

· 6
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

David Seo avatar image
1 Like"
David Seo answered David Seo edited

Hi. @anthony.johnson.

This topic has been a important issue to my customers over the past to three years and the importance is recently increased more and more in manufacturing plant of my country. I agree absolutely all @Patrick Zweekhorst opinions and ideas.

Needs;

AGV networks to be added;

1) Spin turn 90 degree at a cross point (at one point) not using small curved path line.

2) connecting point should be sticky not disconnecting like network node while copying and paste.

3) one control point at a cross point can be applicable to all four paths.

4) drawing logic line in addition on the routing path line for 'look for work' like is very inefficient working for customers. And look for work logic using PF is a very rare method in AGV/AMR. It's a way for Over Head Transfer like mono rail case.

In the manufacturing plant, AGV network is more useful than A* though it will be upgraded. The reasons are explained by Patrick.

A* is usable to peoples moving like health care.
Recently I am making a AGV project model using A*, but the working is not easy and the transportation moving and control is not easy also. The model was uploaded in private to this forum a few days ago to @Jordan Johnson. The logic of A* is far from the real AGV Control System (called ACS). It's a very important in Digital Twin. Many customers have been asking if FlexSim's AGV control logic is similiar with the real industry control. They want to purchase FlexSim and study it's AGV network control logic. The logic is dispathing and control point logic not 'look for work' logic.

My expression in English looks like not sufficient for your understanding but it will be helpful for your developing for FlexSim.

· 5
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.