发帖
 找回密码
 立即注册
搜索
14 0 0

案例五 AGV检测碰撞和避碰方式的选择

案例模型共享 181 14 2018-4-28 09:20:09
[align=left][font="]这个模型可以解决AGV系统中的避碰方式的选择问题,当AGV在路径中检测到碰撞,会采取什么样的逻辑来避开碰撞。[/font][/align][align=left][font="]
[/font][/align][align=left][color=red][font="][size=14.0pt]1[/size][/font][/color][color=red][font="][size=14.0pt]、模型描述[/size][/font][/color][/align][align=left][color=red][font="][size=14.0pt]
[/size][/font][/color][/align][align=left][font="]避碰方式有很多种,这里分享一个解决巷道式车间里AGV碰撞时选择偏移避让的案例:巷道内只有一条AGV路径,当两台AGV在巷道内发生对向碰撞时,其中一台AGV向路径一侧偏移一定距离,待另一台AGV离开之后再回到路径上继续行进。(控制区域可以很好的解决交叉路径的避碰控制,但是一条路径上的对向碰撞使用控制区域将会造成死锁)[/font][/align][align=left][font="]
[/font][/align][align=left][color=red][font="][size=14.0pt]2[/size][/font][/color][color=red][font="][size=14.0pt]、模型布置[/size][/font][/color][/align][align=left][color=red][font="][size=14.0pt]
[/size][/font][/color][/align][align=left][/align][align=left][color=red][font="][size=14.0pt] [/size][/font][/color][/align][align=left][color=red][font="][size=14.0pt]3[/size][/font][/color][color=red][font="][size=14.0pt]、实现过程[/size][/font][/color][/align][align=left][color=red][font="][size=14.0pt]
[/size][/font][/color][/align][align=left][color=blue][font="][size=12.0pt]碰撞下拉列表[/size][/font][/color][/align][align=left][color=blue][font="][size=12.0pt]
[/size][/font][/color][/align][align=left][/align]
[align=left][font="]勾选检测碰撞并且设置碰撞检测时间间隔,在AGV两端绘制半径为0.5m的碰撞球,选择模型中检测避碰的另一台AGV,最后编辑避碰逻辑。[/font][/align][align=left][color=blue][font="][size=12.0pt]
[/size][/font][/color][/align][align=left][color=blue][font="][size=12.0pt]碰撞逻辑[/size][/font][/color][/align][align=left][color=blue][font="][size=12.0pt]
[/size][/font][/color][/align][align=left][font="]这个案例里需要AGV每0.1秒检测一次碰撞,容易出现在一次避碰过程中出现多次检测,从而一次避碰中执行多次避碰逻辑。我们先给AGV添加一个test-times的标签赋初始值为0。[/font][/align][align=left][/align]
[align=left][font="]在碰撞处理触发器写入避碰逻辑[/font][/align][align=left][font="]/**[/font][font="]避碰逻辑*/[/font][/align][align=left][font="]Object thisobject = ownerobject(c);//[/font][color=#70AD47][font="]声明当前实体[/font][/color][/align][align=left][font="]Object otherobject = param(1);//[/font][color=#70AD47][font="]声明检测到碰撞的实体[/font][/color][/align][align=left][font="]treenode thissphere = param(2);//[/font][color=#70AD47][font="]声明当前碰撞球[/font][/color][/align][align=left][font="]treenode othersphere = param(3);[/font][color=#70AD47][font="]声明检测到的碰撞球[/font][/color][/align][align=left][font="] [/font][/align][align=left][font="]int collisionsphere = getrank(thissphere);//[/font][color=#70AD47][font="]判断AGV是前端触碰还是后端触碰[/font][/color][/align][align=left][font="]if(collisionsphere ==1&&getlabel(thisobject,"test times")==0)//[/font][color=#70AD47][font="]满足前端碰撞且碰撞检测次数为0[/font][/color][/align][align=left][font="]{[/font][/align][align=left][font="]       setlabel(thisobject,"testtimes",1);//[/font][color=#70AD47][font="]检测次数设置为1,这里的设置是避免两AGV在一次碰撞中被检测多次,出现多次避碰任务[/font][/color][/align][align=left][font="]       treenodets = createemptytasksequence(thisobject,0,1);//[/font][color=#70AD47][font="]若是前端碰撞,创建避碰任务序列[/font][/color][/align][align=left][font="]       inserttask(ts,TASKTYPE_TRAVELRELATIVE,NULL,NULL,0,2,0,0);//[/font][color=#70AD47][font="]上移2米[/font][/color][/align][align=left][font="]       inserttask(ts,TASKTYPE_DELAY,NULL,NULL,5,STATE_BLOCKED);//[/font][color=#70AD47][font="]等待5秒[/font][/color][/align][align=left][font="]       inserttask(ts,TASKTYPE_TRAVELRELATIVE,NULL,NULL,0,-2,0,0);//[/font][color=#70AD47][font="]下移2米回归路线[/font][/color][/align][align=left][font="]       dispatchtasksequence(ts);[/font][/align][align=left][font="]}[/font][/align][align=left][font="]else if(collisionsphere ==2&&getlabel(thisobject,"test times")==0)//[/font][color=#70AD47][font="]满足后端碰撞且碰撞检测次数为0[/font][/color][/align][align=left][font="]{[/font][/align][align=left][font="]       setlabel(thisobject,"testtimes",1);//[/font][color=#70AD47][font="]检测次数设置为1,这里的设置是避免两AGV在一次碰撞中被检测多次,出现多次避碰任务[/font][/color][/align][align=left][font="]       treenodets = createemptytasksequence(thisobject,0,1);//[/font][color=#70AD47][font="]若是后端碰撞,创建避碰任务序列[/font][/color][/align][align=left][font="]       inserttask(ts,TASKTYPE_DELAY,NULL, NULL, 2, STATE_BLOCKED);//[/font][color=#70AD47][font="]等待2秒[/font][/color][/align][align=left][font="]       dispatchtasksequence(ts);[/font][/align][align=left][font="]}[/font][/align][align=left][font="]senddelayedmessage(thisobject,2,thisobject,1);//[/font][color=#70AD47][font="]避碰结束后的消息触发,检测次数的标签值回归为0[/font][/color][/align][align=left][font="] [/font][/align][align=left][color=#70AD47][font="]避碰结束后在AGV 的消息触发中使test_times的标签值回复为0,等待下一次避碰。[/font][/color][/align][align=left][color=#70AD47][font="]/**[/font][/color][color=#70AD47][font="]避碰结束后检测次数调为0*/[/font][/color][/align][align=left][font="]Object current = ownerobject(c);[/font][/align][align=left][font="] [/font][/align][align=left][font="] [/font][/align][align=left][font="]if(msgparam(1)==1)//[/font][color=#70AD47][font="]避碰结束后检测次数调为0[/font][/color][/align][align=left][font="]{[/font][/align][align=left][font="]       setlabel(current,"testtimes",0);[/font][/align][align=left][font="]}[/font][/align][font="][size=10.5pt]另一台AGV进行相同的编辑。这个模型演示了任务执行器设置避碰的一般逻辑,更多的避碰方式需要在避碰处理中设置相应的逻辑。[/size][/font]
──── 0人觉得很赞 ────

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
2021-7-22 14:42:46
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=30994&ptid=7289][color=#999999]lnspriation 发表于 2019-12-24 15:02[/color][/url][/size]
这段代码复制进去一直报错,未声明[/quote]

这段代码需要覆盖掉所有的声明,不然前四行会报错,部分备注部分缺少了//,还有一段用了回车,记得删除,if和else if中的terrnodets  中间少了空格,应该是 treenode ts,这样就不会报错了
2020-8-11 11:52:55
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=32293&ptid=7289][color=#999999]f824391097y 发表于 2020-8-11 10:39[/color][/url][/size]
咦,代码解决了 没报错了,但是碰撞的时候,还是死锁停止了[/quote]

因为由于软件更新,对于避碰已经不采取这种方式了,有更简便的方式达成目的。您可以在flexsim贴吧,报名参加关于AGV避碰的远程培训,或者近期北京创时能的公众号也会推出关于避碰的模型案例供大家学习分享,敬请关注。
2020-8-11 10:39:53
[i=s] 本帖最后由 f824391097y 于 2020-8-11 10:51 编辑 [/i]

咦,代码解决了 没报错了,但是碰撞的时候,还是死锁停止了
2020-8-11 10:31:48
我也报错呢,这是为啥

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
2020-5-20 20:26:18
很不错,谢谢分享
2020-4-24 11:54:31
刚照着楼主的帖子,做了一遍,当小车跑了2个来回后就乱掉了,是为什么呢?请高人指点

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
2019-12-24 15:02:53
这段代码复制进去一直报错,未声明
2019-4-12 08:58:37
谢谢分享
2019-3-5 14:41:58
厉害了
您需要登录后才可以回帖 立即登录
高级模式
12下一页
案例模型共享
热门问答
查看更多
1
厂区生产线布局优化案例!新做的!
厂区生产线布局优化案例!新做的!
1061
224
2
FlexSim2016 中国象棋
FlexSim2016 中国象棋
671
44
3
Flexsim二次开发之塔吊
Flexsim二次开发之塔吊
607
45
4
关于Processs Flow 使用的两个案例(AGV Elevator案例/子母穿梭
关于Processs Flow 使用的两个案例(AGV Elevator案例/子母穿梭
565
34
5
快递分拨中心案例~新手可参考
快递分拨中心案例~新手可参考
524
62
博主榜
+ 45331
+ 10630
+ 7753
4
+ 6759
5
+ 6323
6
+ 6321
7
+ 5341
8
+ 4710
9
+ 3722
10
+ 3628