2016년 8월 25일 목요일

구부림 센서 다루기

구부림 센서(Flex Sensor)는 구부러지는 정도에 따라 저항이 달라지는 특성을 갖고 있는 부품입니다.

이 센서의 아두이노 회로는 다음과 같습니다.

구부림 센서는 2 pin만 가지고 있으므로 변화된 저항 값을 측정하려면 전압 분배 회로를 만들어야 합니다.

이 회로를 유니티에서 다룰려면 아두니티 Wire Editor에 다음과 같이 연결하면 됩니다.

위 정보를 아두이노 스케치로 Export하고 보드에 업로드하면 유니티에서 구부림 센서를 다룰 수 있는 준비가 끝납니다.
실제로 보드와 유니티를 연결하여 실험을 해보면 구부림 정도에 따라 AnalogInput 값이 달라지는 것을 확인할 수 있지만, 그 변화 값이 제멋대로여서 쓰기가 쉽지 않습니다.

InputFilter
측정된 센서 값이 불안정할 때 사용되는 것이 바로 InputFilter입니다.


InputFilter 사용법에 대해서는 빛 센서 다루기에 자세히 나와있으니 참고하시기 바랍니다.
AnalogInput과 InputFilter를 연결하면 다음과 같습니다.


3D 물체 구부리기
구부림 센서는 손가락 구부림을 통해 여러 장치를 제어하는 데이터 글로브(Data Glove)란 장치로 활용될 수 있습니다.
이런 아이디어를 실현하기 위해 3D 모델로 손가락 모양을 만든 후 구부림 정도에 따라 같이 움직이면 재미있는 효과를 만들어 낼 수 있습니다.
먼저 Cube를 3개 만들어서 손가락의 3 마디를 표현합니다.

이 모양을 위한 GameObject 구조는 다음과 같이 표현됩니다.

나중에 한번 깊게 내용을 다루겠지만, 다관절 구조의 3D 모델을 표현할 때는 모양을 나타내는 GameObject와 관절을 나타내는 GameObject를 분리해서 표현하는 것이 좋습니다. 그 이유는 모양을 표현할 때 Transform의 Scale을 조정하게 되는데, Scale이 1이 아닌 경우 Parent가 회전하면 Child가 일그러지는 문제가 발생하기 때문입니다.

입력되는 값을 회전 각도로 변환하기 위해서는 MappingInput을 이용하면 됩니다. 단 MappingInput은 손가락의 관절 별로 따로 만들어야 합니다.
그 이유는 손가락의 움직임을 잘 관찰해보면 구부러짐에 따라 각 관절의 꺾임 정도가 다른 것을 확인할 수 있습니다.
MappingInput을 통해 각도가 추출되면 이것을 RotationAxisReactor로 GameObject를 회전시키면 됩니다.


구부림 센서 활용 영상을 통해 이 결과를 확인하시기 바랍니다.


 

댓글 없음:

댓글 쓰기