150 likes | 447 Views
엔코더 로봇 (Encoder Robot)-. - NXT 서보 모터 (Servo Motor) -. NXT 서보 모터는 회전 속도계가 내장되 어 있어 모터의 회전 속도나 회전 각도 를 측정 정 방향 제어 , 역 방향 제어 , 감속 , 가속 등의 미세한 제어가 가능 서보 모터의 출력 범위는 -100 ~ +100 까지 이며 , 0 은 모터의 정지를 의미 엔코더 ( 회전 센서 ) 의 분해능은 1 도. - 서보 모터 셀프 테스트 -. 서보 모터를 포트 A 에 연결
E N D
- NXT 서보 모터(Servo Motor) - • NXT 서보 모터는 회전 속도계가 내장되 • 어 있어 모터의 회전 속도나 회전 각도 • 를 측정 • 정 방향 제어, 역 방향 제어, 감속, 가속 • 등의 미세한 제어가 가능 • 서보 모터의 출력 범위는 -100 ~ +100 • 까지 이며, 0은 모터의 정지를 의미 • 엔코더(회전 센서)의 분해능은 1도
- 서보 모터 셀프 테스트 - • 서보 모터를 포트A에 연결 • NXT를 켜고 View 를 선택 ( )) • 3. Motor rotation/Motor degrees 아이콘을 선택 • - Motor rotation : 서보 모터의 회전 수를 측정 • - Motor degrees : 서보 모터의 회전 각도를 측정 • 포트 A/C를 선택한다. • 서보 모터에 바퀴를 굴려 보면서 회전수/ 각도를 • 측정한다.
- 원하는 각도 만큼 바퀴 회전하기- • nMotorEncoder[모터 이름] : 모터 이름으로 지정된 모터의 엔코더 값을 • 읽어 드리거나 엔코더에 임의 값을 저장할 • 수 있다.
- 원하는 각도 만큼 바퀴 회전하기-2 - • nMotorEncoderTarget[모터이름] • 지정된 값에 엔코더 값이 도달할수록 천천히 모터를 정지시키며, 목표 값을 지나면 모터에 전원이 들어가지 않는 상태(coast)로 바뀐다. • - 모터를 구동시키는 것이 아니라 엔코더 값의 목표치를 설정할 뿐이기 때문에 모터를 구동하기 위해서 motor[모터이름] = 값의 형식을 사용해야 한다.
- PID 속도 제어 - • 서보 모터의 PID(P:비례/I:적분/D:미분)제어 기능을 • 이용하여 오차를 줄여 가장 정확한 속도로 움직이는 • 로봇 • nMotorPIDSpeedCtrl[모터명] = mtrSpeedReg • PID 속도제어를 등록하는 함수로서 모터가 정확한 출 • 력을 할 수 있도록 모터의 출력을 자동으로 조정한다.
- PID 속도 제어 - • PID 제어 • P (proportional : 비례) • 목표 값과의 오차가 발생하는 정도에 따라서 제어하는 것 • On/Off 제어라고도 불리우는 것으로 계속적으로 목표 값을 맞추기 위해서 출력과 정지를 반복 • I(integral : 적분) • 오차 값들을 모아 어느 순간에 일정량의 오차가 누적되면 한 번에 오차를 수정하는 방법 • 기계가 움직이기 시작한 후 어느 정도 시간이 지난 다음 누적된 오차가 일정 수준 이상일 때, 적당한 보정을 가해주는 에러 값 수정 방법 • D(differential :미분) • 일정시간 동안에 발생한 오차의 크기에 따라 그 보정을 다르게 해주는 것 • 같은 시간 동안 오차가 크게 발생하면 보정을 많이 하고 오차가 적으면 적은 만큼 보정 • 각 방법을 모두 혹은 몇 가지를 복합적으로(P, PI, PID 등) 사용
- PID 제어 관찰- • 프로그램을 실행하고 Robot > Debug Windows > NXT Devices 메뉴를 통해 • 로봇의 상태를 관찰 • 원하는 목표 속도가 50일 때 PID 값이 자유자재로 변하는 것으로, 모터 파워 50 • 의 속도를 맞추기 위해 A모터는 46, C 모터는 55의 파워를 주고 있다.
- 두 모터의 동기화- • 두 개의 모터를 동기화 시켜 한쪽 모터의 일정 • 비율만큼의 속도로 움직이는 로봇
- 동기화 함수 설명 - • nSyncedMotors = synchAC • 두 개의 모터를 동기화시키기 위해서 사용한다. • synch[첫 번째모터][두 번째 모터] : 첫번째 모터 출력에 두번째 모터를 동기화 • 시킨다는 것을 의미 • nSyncedTurnRatio = 모터 동기화 비율 • 첫 번째 모터에 따른 두 번째 모터의 동기화 비율을 설정 • 동기화 비율은 -100 ~ +100% 까지입력 가능 • 동기화 비율에 따른 두 번째 모터의 파워 공식 • 동기화 비율이 100인 경우 두 개의 모터가 같은 속도로 회전 • 동기화 비율이 100 보다 작은 경우 로봇은 회전을 한다. 즉 동기화 비율을 조절 • 하여 스윙 턴, 커브 턴등의 다양한 움직임을 표현할 수 있다.
- 도전 과제 V- • 모터에 축을 연결해서 자동차 핸들을 구현해보기
- 도전 과제 V- • 초음파센서를 이용 벽 앞 30cm까지 전진한 후 처음 출발위치까지 돌아오기 • 벽 앞에서 출발한다. 이때 벽과의 거리는 1m 이상 떨어져 있어야 함 • 모터 엔코더값을 이용해서 처음 출발한 위치로 돌아와야 함 • 허용오차는 3cm 이내
- Q & A - ???