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