一開始的時候,我想到的解決辦法是採用肩與手腕來做判斷,
上下高度的方向為y軸,當肩y = 腕y,這樣的情況代表手臂與身體呈垂直90度,如此的情況會產生遮蔽效應,讀到的值非90度,那麼我們就把手肘的y座標加到跟肩膀的y座標一樣的值即可,但是這樣做有個盲點,做復健時手臂不會永遠都是伸直的,而且依這邏輯去寫程式也不太好寫,後來就在邊走路邊找東西吃的時候我想到一個更好的辦法,
我們在做復健時,手肘與手腕的座標會一直改變,但是肩膀的y座標不變,遮蔽效應產生的主因是在一個範圍之內,讀到的y座標是錯誤,於是我們只要將手肘y座標的值加到跟肩膀y座標的值一樣就可以了,如此就可以解決角度判斷錯誤太大的問題。
依照我的想法,佑佶週三晚上就開始撰寫程式,禮拜四(9/13)討論時我們又遇到新的問題,復健動作正常情況是,手自然垂放,接著向上舉起,這樣的動作目前沒有問題,
但是當我們手不是由下往上舉,而是手快速舉起並往前伸直時(上方右圖),又會產生遮蔽現象的問題,當時與佑佶討一起討論後得出較好的方法是,依復健者的能力分區
我們有想過,現實生活中的復健並不會做到非常精確的角度,可能是下往上大概九十度,大概四十五度,它是一個略值,所以我們取大概的範圍即可,依照此想法出來的就是把手揮動的空間分段,如上圖所示
9/17(一)的討論
今天下午開完發明展的行前會後,佑佶跟我說他想到新的判斷方法。我們已經知道,產生遮蔽效應時,Kinect會讀到錯誤的手肘y座標,使得角度判斷錯誤,既然如此,我們可以在手自然垂放時,先記錄下肩膀y與手肘y這段的距離,暫時令之為A,手臂舉起後,如果讀到的長度不等於A,那麼就代表產生了遮蔽效應。
佑佶今天試著依這想法寫判斷式,不過目前還在DEBUG的階段




.png)
.png)

沒有留言:
張貼留言