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