question

Ryosuke S avatar image
0 Likes"
Ryosuke S asked Jason Lightfoot commented

Keeping the Forks in specified distance

I have two forks controlled with A* and I want to keep the distance of the forks in 3 meters if it gets close. I plan to use the Agent, however when I do that, the fork keeps going around the target slot and never arrives at target position. How do I set in this case? Do I use proximity?

FloorStorage_Oneway_Agent.fsm

FlexSim 20.1.3
flexsim 20.1.3agent moduleforklift movement
· 1
5 |100000

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

Jason Lightfoot avatar image Jason Lightfoot ♦♦ commented ·

Hi @Ryosuke S, was Jeanette F's answer helpful? If so, please click the red "Accept" button at the bottom of their answer. Or if you still have questions, add a comment and we'll continue the conversation.

If we haven't heard back from you within 3 business days we'll auto-accept an answer, but you can always unaccept and comment back to reopen your question.

0 Likes 0 ·

1 Answer

Jeanette F avatar image
0 Likes"
Jeanette F answered Jeanette F commented

Yes, I would use proximity.

Here is a video that goes over Agent systems well. Minute 12:02 goes over what you might be specifically looking for with the Agent Proximity Behavior, but that example model starts on minute 7:49.

Here is the post with the example models shown in the video for you to reference if needed.

· 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.

Ryosuke S avatar image Ryosuke S commented ·

@Jeanette F I did go though the video and the samples you raised for me, but I don't know which should I use to get to the goal. Why would you say you would use proximity? I set proximity, but forks gets closer than 3m which I set to avoid.

FloorStorage_Oneway_Agent2.fsm

0 Likes 0 ·
Jeanette F avatar image Jeanette F ♦♦ Ryosuke S commented ·

You used the code from the broad phase of the example model. The broad phase only was meant to slow the AGV's. The narrow phase will stop the AGV's.

Here is your model with the narrow phase code modified so the transporter furthest from the queue is the one that stops.

I notice that when a transporter is stopped it does not have an allocated node on the A* grid until it resumes its previous task. This makes it possible for the moving transporter to drive over the other. I am still looking for solutions but decided to go ahead and share what I had intended you to use from the example model.

floorstorage-oneway-agent2_1.fsm


0 Likes 0 ·
Ryosuke S avatar image Ryosuke S Jeanette F ♦♦ commented ·

@Jeanette F Thank you for your support. Yes, I have noticed that transporter drive over the other. I hope there is a solution to prevent this. Also, I noticed that the divider is being ignored in certain situation. I'm a little puzzled with this behavior.

0 Likes 0 ·
capture095.jpg (104.7 KiB)
Jason Lightfoot avatar image Jason Lightfoot ♦♦ Ryosuke S commented ·

I think this would be better done by listing the bays as a shared resource to limit access and using kinematics / custom offset travel.

1 Like 1 ·
Show more comments
Jeanette F avatar image Jeanette F ♦♦ Ryosuke S commented ·

Hello @Ryosuke S,

There was a simple solution to the stopped traveler becoming inactive on the AStar grid. If you open the AStar Navigator Properties, go to the Behavior tab and deselect "Ignore Inactive Members". I also changed the code so that the transporter closest to the queue was the one that stopped. This prevented most blocks.

As for the Transporters ignoring the barriers, I think this was being caused by the preferred paths. Once I got rid of the preferred paths, the nodes in the model showed that they would not allow travel through the barriers.

The model is still not perfect. A rerouting code needs to be written for the cases when a transporter is blocked. Here is a post that might be helpful with that.

floorstorage-oneway-agent2-2.fsm

0 Likes 0 ·