福感科技有限公司 欢迎您!
联系方式

    地址:北京市平谷区马坊镇金河北街17号院3号楼7层712

    电话:010-89968230

    网站:http://www.fgsense.com

如何在虚拟装配过程中使用数据手套实现拧螺钉的动作

2021-5-19 21:24:48      点击:

遇到有客户在使用Wiseglove数据手套开发机械装配相关应用时,要实现数据手套拧螺丝的动作,客户认为wiseglove7s+手套拧了一个角度,但是螺丝并没有按照预想的方向旋转。我们经过研究后,认为实现该功能需要具备以下条件:

1. 手模型与螺丝有碰撞触发

2. 数据手套有抓取动作

3.数据手套有释放动作

使用了Unity3d的触发器检测手与物体的碰撞状态。

private void OnTriggerEnter(Collider other)
{
  print("Enter trigger");
  Oldpos = Leftobject.transform.position;
}
private void OnTriggerStay(Collider other)
{
//手套抓取
if(wiseglove.grasp)
{
  print("grasp");
  float yAixsval = Vector3.Angle(Vector3.ProjectOnPlane(Leftobject.transform.position, Vector3.up),Vector3.right) - Vector3.Angle(Vector3.ProjectOnPlane(Oldpos,Vector3.up),Vector3.right);
  Vector3 deltaAngles = new Vector3(0,uAxisval,0);
  transform.eulerAngles +=deltaAngle;
  Oldpos = Leftobject.transform.position;
}
else {
  print("open hand");
  Oldpos = Leftobject.transform.position;
}
}
private void OnTriggerExit(Colloder other)
{
  print("Exit");
  Oldpos = Leftobject.transform.position;
}

当然如果需要螺丝沿着平面的法向随着旋转有位移,似乎也不难~~

这里主要的技巧就是: Vector3.ProjectOnPlane( Vector3 vector,Vector3 planeNormal) 得到投影向量 为vector到以planeNormal为法向量的平面上。求的是一向量与一平面的夹角。这也是让物体沿着指定轴旋转的关键所在。

Copyright 2019 www.fgsense.com

福感科技有限公司 版权所有 All Rights Reserved

京ICP备20002031号

010-89968230