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