控制Delta机器人
1、获取对象:[文]robot,c[章]onveyor[来]
2、等待物料到[自]达传感器位置
3、获取物料列[网],过滤filt[淘]er已抓取的p[巴]art
4、pop 一个物料
5、抓取物料,[文]并将该物料放入[章]已抓队列
6、将抓取的物[来]料放置到传输带[自]
7、清除不在已[网]抓取队列中的p[淘]art
robot.G[巴]raspCon[文]tainer:[章]机器人夹具容器[来]
Defines[自] the Compone[网]nt Contain[淘]er behavio[巴]r in the robot's flange node used to contain[文] compone[章]nts grabbed[来] by the robot.
在机器人用于连[自]接机械爪容器的[网]法兰连接件节点[淘]中定义组件容器[巴]行为
WorldPo[文]sitionM[章]atrix:得[来]到节点在世界坐[自]标系中的位置矩[网]阵。
BoundDi[淘]agonal:[巴]Diagona[文]l,对角Get[章]s a half diagona[来]l vector from the center to an upper corner of the contain[自]er's bound box using positiv[网]e axis directi[淘]ons.从绑定[巴]容器盒子的中心[文]到右上角取得半[章]对角线向量。
from vcScrip[来]t import *
from vcHelpe[自]rs.Robo[网]t2 import *
def OnRun()[淘]:
app=get[巴]Applica[文]tion()
robot=g[章]etRobot[来]()
conveyo[自]r=app.f[网]indComp[淘]onent("Sensor Conveyo[巴]r")
picked=[文][]
#只要仿真器开[章]着就一直运行
while app.Sim[来]ulation[自].IsRunn[网]ing==Tr[淘]ue:
#part 达到传感器
while robot.S[巴]ignalMa[文]pIn.inp[章]ut(100)[来]!=True:[自]
delay(0[网].1)
#获得不是被抓[淘]的part
parts=c[巴]onveyor[文].ChildC[章]omponen[来]ts
for part in parts:
if part in picked:[自]
parts.r[网]emove(p[淘]art)
part=pa[巴]rts.pop[文]()
#抓取part[章],将已抓取的p[来]art放置到p[自]icked列中[网]
robot.p[淘]ickMovi[巴]ngPart([文]part)
&[章]nbsp;
picked.[来]append([自]part)
#计算相对传送[网]带偏移的位置
part=ro[淘]bot.Gra[巴]spConta[文]iner.Co[章]mponent[来]s[0]#ro[自]bot 机械爪中的物件[网]
pos=par[淘]t.World[巴]Positio[文]nMatrix[章].P
a=conve[来]yor.Bou[自]ndDiago[网]nal
offsetX[淘]=pos.X-[巴]a.X
&[文]nbsp;
#print([章]'pos.X='+str(po[来]s.X)+'pos.Y='+str(po[自]s.Y)+'pos.z='+str(po[网]s.Z))
#print([淘]'a.X='+str(a.[巴]X)+'a.Y='+str(a.[文]Y)+'a.z='+str(a.[章]Z))
#放置part[来]
robot.p[自]lace(co[网]nveyor,[淘]Tx=offs[巴]etX)
from vcScrip[文]t import *
from vcHelpe[章]rs.Robo[来]t2 import *
def OnRun()[自]:
app=get[网]Applica[淘]tion()
robot=g[巴]etRobot[文]()
conveyo[章]r=app.f[来]indComp[自]onent("Sensor Conveyo[网]r")
picked=[淘][]
#只要仿真器开[巴]着就一直运行
while app.Sim[文]ulation[章].IsRunn[来]ing==Tr[自]ue:
#part 达到传感器
while robot.S[网]ignalMa[淘]pIn.inp[巴]ut(100)[文]!=True:[章]
delay(0[来].1)
#获得不是被抓[自]的part
parts=f[网]ilter(l[淘]ambda x:x not in picked,[巴]conveyo[文]r.Child[章]Compone[来]nts)
&[自]nbsp;
#parts=[网]conveyo[淘]r.Child[巴]Compone[文]nts
'''
for part in parts:
if part in picked:[章]
parts.r[来]emove(p[自]art)
'''
part=pa[网]rts.pop[淘]()
&[巴]nbsp;
#抓取part[文],将已抓取的p[章]art放置到p[来]icked列中[自]
robot.p[网]ickMovi[淘]ngPart([巴]part)
&[文]nbsp;
picked.[章]append([来]part)
#计算相对传送[自]带偏移的位置
part=ro[网]bot.Gra[淘]spConta[巴]iner.Co[文]mponent[章]s[0]#ro[来]bot 机械爪中的物件[自]
pos=par[网]t.World[淘]Positio[巴]nMatrix[文].P
a=conve[章]yor.Bou[来]ndDiago[自]nal
offsetX[网]=pos.X-[淘]a.X
&[巴]nbsp;
#print([文]'pos.X='+str(po[章]s.X)+'pos.Y='+str(po[来]s.Y)+'pos.z='+str(po[自]s.Z))
#print([网]'a.X='+str(a.[淘]X)+'a.Y='+str(a.[巴]Y)+'a.z='+str(a.[文]Z))
#放置part[章]
robot.p[来]lace(co[自]nveyor,[网]Tx=offs[淘]etX)
picked=[巴]filter([文]lambda x:x in conveyo[章]r.Child[来]Compone[自]nts,pic[网]ked)#不知[淘]道这一句到底有[巴]没有用,删除掉[文]好像也行,主要[章]意思好像就是把[来]picked不[自]在 [网] conveyo[淘]r.Child[巴]Compone[文]nts排除掉
翻译由网淘巴完成,转载必须标明出处:https://www.wtao8.com/post/9.html
本文链接:https://www.wtao8.com/post/9.html 转载需授权!