抓取化合物问题

fzy 2022-10-19 16:11:24 显示全部楼层 阅读模式
机器人爪子碰到瓶子后就像黏住了一样,即使在安全桶上悬停张开爪子瓶子也不会掉下去,而是会跟着机器人手部位置回到机器人大腿的地方,完成任务的
回复

使用道具 评分 举报

大神点评4

carlos 2022-10-19 18:00:56 显示全部楼层
你好,请帮忙录个屏,我们这边看能不能复现
回复

使用道具 评分 举报

lss 2022-10-21 22:57:19 显示全部楼层
虽然5/6关的场景代码确实有很多可以改进的地方,但这里还真没问题。结论是你应该抓的不够紧,导致松不开。下面我将具体解释原因
首先观察相关代码,位于task05场景的talos脚本代码,299行左右:
  1. --read cup position
  2.     Cy_RH = sim.getObjectPosition(HighPillar,RH)
  3.     --print(Cy_RH[1], battle_flag)
  4.     --print(sim.getObjectPosition(HighPillar,-1)[1]-sim.getObjectPosition(RH,-1)[1])
  5.     if ((Cy_RH[1] < -0.007) and (battle_flag == 0))
  6.     then
  7.         battle_flag = 1
  8.     end

  9.     if ((Cy_RH[1] > -0.007) and (battle_flag == 1) ) -- x
  10.     then
  11.    
  12.         battle_flag = 2
  13.         sim.setObjectParent(Join_P,RAD4,true)
  14.     end
  15.     print(position_34[1], sim.getJointPosition(rightArmJoint[4])*180/math.pi ) --输出语句是我加的
  16.     if ((position_34[1]>0.008) and(battle_flag == 2))
  17.     then
  18.         battle_flag = 3
  19.     end
  20.     if((position_34[1]<0.008) and(battle_flag == 3))
  21.     then
  22.         battle_flag = 4
  23.         sim.setObjectParent(Join_P,-1,true)
  24.     end
复制代码
当杯子被“抓”住时,有battle_flag=2. 一系列操作后可达battle_flag=4,此时杯子脱落。
观察相关条件,发现battle_flag的变化取决于position_34[1]. position_34源于前文约279行处:
  1.     position_34 = sim.getObjectPosition(RAB3,RAD4)--pan duan shouzhua zhanghe
复制代码
也就是“大拇指”和手爪另一部分的相对位置。根据几何关系观察,猜测position[1]相对手爪张角递减。
经过测试,发现在position_34[1]=0.008附近确实如此,其对应关系为position_34[1]=0.008大约对应手爪张角29°.

那么结合前面代码可知控制杯子脱落的方法是先保证手爪角度<29°,在张开至>29°. 由于测的不是很准,你应当动作大些,留有余裕。你做到这一点了吗?

如果确实是这个原因,你可能会想:这设置有些不合理。我怎么知道需要“穿过两次”(即先小于再大于)的角度是29°呢?
这确实有些不合理,但仔细想想不合理的点可能和你想的有些不同。
朴素地想,控制脱落只要判断张角是否够大就行,为什么要先小再大呢?
确实是这样,但判断先小再大其实是有合理性的。在于如果你考虑抓取再脱落的整个过程,就会意识到判断是否抓住的条件应当包含抓角够小,这样才抓紧了。(虽然最好用摩擦仿真,但判断抓角够小作为一种魔法是比较合理的)
所以问题大概在于判断抓取的张角条件和判断脱落的条件数值不一致。也就是说,你本该看见你没抓住,这样你会意识到爪子张角不够小。
那么前面判断抓取的条件是什么角度呢?答案是根本没判断。那个条件还有些更抽象的问题,这里不谈。

那么如何改进,使场景设置更合理?可以把判小的那句删掉,但更合理的方法是将其移动到判断抓取的条件中。
当然,我强烈建议直接去掉这里使用的魔法,直接靠摩擦力就能把瓶子抓起来,我实验过是可以的,这样最合理。

注:我的行数标记可能和你的略有区别,因为我的场景代码有些修改,所以行号不一致。
回复

使用道具 评分 举报

lff 2022-10-22 17:21:10 显示全部楼层
看到在你的代码中没有手爪抓取的动作(减小手爪张开的角度),但瓶子会跟随手爪移动。

这一部分应该是场景的代码在判断抓取上存在的 bug ,导致没有抓取但瓶子与手爪产生粘连。

可以增加手爪抓取的操作暂时解决这个问题,我们后续会对这部分进行检查修复。
回复

使用道具 评分 举报

 楼主| fzy 2022-10-22 17:23:15 显示全部楼层
lff 发表于 2022-10-22 17:21
看到在你的代码中没有手爪抓取的动作(减小手爪张开的角度),但瓶子会跟随手爪移动。

这一部分应该是场景 ...

好的谢谢已解决
回复

使用道具 评分 举报

您需要登录后才可以回帖 登录 | 立即注册

  • 0 关注
  • 11 粉丝
  • 1 帖子