在虚拟装配应用中,用数据手套实现拧螺丝动作
2019/6/16 点击:
遇到有客户在使用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为法向量的平面上。求的是一向量与一平面的夹角。这也是让物体沿着指定轴旋转的关键所在。
怎么样,小伙伴们会了吗? 感谢关注Wiseglove, 我们将一如既往地把我们为客户解决的技术问题发布到我们的官网,来分享关于数据手套的技术和心得。
- 上一篇:Intel RealSense D435i深度相机开发基础 2019/7/2
- 下一篇:UNITY3D 相机特写镜头的方位设置 2019/6/13