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). This 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