在虛擬裝配應(yīng)用(yòng)中,用(yòng)數據手套實現擰螺絲動作(zuò)
2019/6/16 點擊:
遇到有客戶在使用Wiseglove數據手套開發機械裝配相關應用時,要實現數據手套擰螺絲的動作,客戶認為wiseglove7s+手套擰了一個(gè)角度,但是螺絲並沒有按照預想的方向旋轉。我們經過研(yán)究後,認為實現該(gāi)功能需要(yào)具備以下條件:
1. 手模型與螺絲有(yǒu)碰撞觸發
2. 數據手套有抓取動作
3.數據手套有釋放動作
使用(yòng)了Unity3d的觸發器檢測手與物體的碰(pèng)撞狀態。
private void OnTriggerEnter(Collider other) { print("Enter trigger"); Oldpos = Leftobject.transform.position; } private void OnTriggerStay(Collider other) { //手(shǒu)套抓取 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; }
當然如果需要螺絲沿著平麵的法向隨著(zhe)旋轉有位移,似乎也不難~~
這裏主要(yào)的技巧就是: Vector3.ProjectOnPlane( Vector3 vector,Vector3 planeNormal) 得到投影向量 為vector到以planeNormal為法向量的平麵上。求的是一向量與一平麵的夾角。這也是讓物體沿著(zhe)指定軸旋轉的關鍵所在。
怎麽(me)樣,小夥伴們會了嗎? 感謝關注Wiseglove, 我們將一如既往地把我(wǒ)們為客戶解決的技術問題發布到我們的官網,來分享關於數據手套的技術和心得。
- 上一篇(piān):Intel RealSense D435i深度相機開(kāi)發基礎 2019/7/2
- 下一篇:UNITY3D 相機特寫鏡頭的(de)方位設置 2019/6/13