본문 바로가기
기계공학부 시절의 기록/ROS일기

캘리브레이션(Calibartion) 기능 추가

by juhyeonglee 2021. 11. 3.
728x90
반응형

지난 글에서 myo를 착용한 팔의 움직임을 추종하는 작업을 완료하였다. 또, 주먹을 쥠에 따라 그리퍼가 닫히고 손가락을 모두 폄에 따라 그리퍼가 열리는 기능도 추가하였다.

Myo로 OpenManipulator 동작시키기 성공!!!

구동영상 최대한 단순하게 코드를 작성하였다. myo_raw/myo_ori 토픽에서 생성되는 데이터를 봤을 때, (https://needs-searcher.tistory.com/196?category=885778참고) 먼저 로봇컨트롤러에서 모든 모터각 = 0으로..

needs-searcher.tistory.com


한 가지 문제점은 센서를 착용할 때마다 센서가 인식하는 roll=pitch=yaw=0의 초기위치가 다르다는 점이다. myo를 다시 착용했을 때 똑같이 정면으로 팔을 뻗어도 이전에 로봇이 가리키는 방향이 달라졌다.
이를 해결하기 위해서 캘리브레이션 기능을 추가하였다. 내가 정면으로 팔을 뻗었을 때, 그 때의 로봇의 roll, pitch, yaw값을 모두 0으로 초기화하도록 하였다. 이는 중지와 약지를 엄지와 두번 맞닿는 동작을 했을 때 작동하도록 하였다.

두 개의 메소드(checkCalibration, getCalibration), 3개의 멤버변수(calibration_roll_, calibration_pitch_, calibration_yaw_)를 만들었으며 모두 헤더파일에서 선언하였다. 그리고 cpp본문의 생성자 구현에서 멤버변수 = 0으로 초기화하였다. 마지막으로 실시간으로 myo_ori값을 모터로 전달하는 realtime()을 수정하였다. 캘리브레이션 작동시의 myo_ori값을 현재의 ori값에서 뺀 값을 모터로 전달하게하여 구현하였다.


[연구노트]



728x90
반응형

댓글