Patrick Zweekhorst avatar image
Patrick Zweekhorst asked Phil BoBo answered

Agent module with different shape than circle

Hi @anthony.johnson,

I have tried some different things with the agent module, which work pretty well.
One of our customers (an AGV supplier) is also really interested in this new module. The main thing for them is to use it for their safety field on the AGVs. These sensors on the AGV only look in 1 direction. A person might for example also only be looking ahead and not back. For their AGV the situation is actually as shown in the picture below. The AGV has 3 fields around it with the one looking to the front being the most important one.

When something, like another AGV, is in one of the red boxes the AGV should slow down a bit. I tried to make the sensor that looks ahead in the attached example model. This seems to be working well for the slowing down part. Although I only look at the corner points of the neighbor of the AGV. It is of course possible that the neighbor is in the safety field, but none of the corners are. Those cases still go wrong in my example. This would require a few extra checks.
The problem with starting to drive on normal speed is that this happens when the AGV leaves the proximity, which is still a circle. I would like the AGV to speed up again when there are no objects anymore in the red rectangles, but the neighbor can in this case still be in the proximity circle). Is this possible, or should I use something else in this case?

For the agent module it would be really nice (if possible) if we could change the shape of the proximity field, although this might be quite difficult. If it is possible it would be great if there is an option in the GUI for this.


Proximity detection.fsm

FlexSim 20.1.2
agvflexsim 20.1.2agent moduleproximity
5 |100000

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

1 Answer

Phil BoBo avatar image
1 Like"
Phil BoBo answered Phil BoBo edited

The proximity detection using a simple radius makes the system fast. A dynamic collision system like you are proposing would be much slower and complicated.

If you want to only perform some action when the colliding agents are in particular positions relative to each other, then use the Proximity Radius as the outer most "rough" detection for nearby agents, and then write custom code in the On Enter Proximity and On In Proximity events to determine whether they are in that particular area, as you have done in this sample model.

This is a very specific problem that you can solve via writing specific custom code using the existing triggers on the Proximity System. I think your general approach is good.

Your math may be easier if you tried to detect the position as pie slices instead of rectangles. The AGV broad/narrow phase example model has an example similar to this.

Another alternative may be to use multiple agents to detect collisions for the different sensors instead of using a single agent for each AGV.

pies.png (94.4 KiB)
5 |100000

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

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

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