제어기가 무엇을 출력하는가
‘위치를 제어한다’는 목적과 ‘위치 명령을 입력받는다’는 장치 계약은 구별한다. 위치 목표를 주는 인터페이스는 내부 제어기가 측정과 동역학을 다루어 그 목표를 추종한다는 전제를 갖는다. 사용자는 목표 단위·절대/증분·시간·관절 한계를 확인해야 하며 목표값을 썼다는 사실만으로 축이 즉시 도달했다고 볼 수 없다. 내부 보간·속도 제한·피드백의 세부 동작도 제품마다 다를 수 있다.
그림 M07.05-1. 각 칸은 서로 다른 역할/근거다. 아래 방향은 자료/처리의 연결이며 실제 성공을 자동으로 보장하지 않는다. 직접 제작한 개념도이며 본문의 조건과 함께 읽는다.
속도 입력 모델에서는 내부 루프가 요청 속도를 실현한다고 가정하여 상위 위치 제어를 설계할 수 있다. 이 가정이 맞지 않으면 상위의 이상적인 오차 응답과 실제가 달라진다. 토크 입력 모델에서는 구동 토크가 관성과 마찰·중력에 의해 가속도로 이어지므로 같은 비례 숫자를 속도 인터페이스에서 그대로 복사하지 않는다. 입력의 물리량과 제어 이득의 단위가 다르기 때문이다. 모터 전류를 주는 장치는 토크 상수·축/기어·전류 제어 계약까지 추가 확인한다.
내부 루프가 있는 장치에 또 하나의 루프를 얹을 때에는 어느 측정과 입력을 사용하는지 그림으로 그린다. 내부 응답이 무한히 빠르다고 가정하거나 외부 게인만 높이면 좋아진다고 판단하지 않는다. 저자 속도 입력 설명과 토크 입력 설명은 서로 다른 가정을 연결하는 자료다.
경로에 시간을 붙이면 속도와 가속도가 정해진다
경로는 어디를 지나가는가를, 시간 궤적은 언제 그곳을 지나는가를 정한다. 관절 경로가 같아도 더 짧은 시간에 수행하면 속도와 가속 요구가 커진다. q0에서 qf까지 T초에 움직이는 가상 단일 관절을 생각하자. q는 rad, 시간은 s이며 T>0이다. ρ=t/T는 0~1의 무차원 진행 변수다. 양 끝의 속도를 0으로 만드는 cubic 궤적을 다음처럼 정한다.
시간으로 미분하면 ρ의 변화율 1/T가 들어간다. q_d는 원하는 위치, 점 하나와 둘은 원하는 속도(rad/s)와 가속도(rad/s²)다.
q0=0, qf=1 rad, T=2 s라면 t=0.5 s에서 ρ=0.25다. 위치는 0.15625 rad, 속도는 0.5625 rad/s, 가속도는 0.75 rad/s²다. 중간 t=1 s에서는 위치 0.5, 속도 0.75, 가속도 0이다. 구간 시작과 끝의 속도는 0이지만 가속도는 +1.5와 −1.5 rad/s²다. 앞뒤 정지 구간의 가속도 0과 연결하면 불연속이 생긴다. cubic이라는 이름이 jerk까지 매끈하다는 보장은 아니다. 필요한 종단 조건에 따라 5차 등 다른 시간 스케일링을 선택한다.
T를 두 배 늘리면 같은 ρ의 위치는 같고 속도는 절반, 가속도는 1/4이다. 그러나 경로가 충돌을 지나간다면 느리게 해도 충돌 경로라는 사실은 바뀌지 않는다. 시간 변경으로 해결할 수 있는 속도/가속 문제와 기하 경로 문제를 구분한다. 저자 시간 스케일링 자료에서 종단 조건과 미분 차수를 함께 읽는다.
목표 운동과 피드백을 결합한다
속도 입력의 간단한 추종식은 원하는 속도를 미리 더하고 위치 오차를 보정한다. K_v는 s⁻¹이며 양의 이득이라고 가정한다. feedforward는 목표에서 예측한 기여, feedback은 실제 측정 오차에서 만든 기여다.
위 t=0.5 s에 실제 q=0.1 rad, 속도=0.4 rad/s라면 위치 오차는 0.05625 rad다. K_v=2 s⁻¹일 때 v_cmd=0.5625+0.1125=0.675 rad/s다. 이는 속도 인터페이스에 보낼 요구의 계산이며 실제 축 속도를 측정한 값이 아니다. 위치 인터페이스라면 해당 시각의 q_d=0.15625 rad를 목표로 사용할 수 있지만 내부 루프가 어떻게 따르는지는 별도 계약이다.
토크 예제는 중력 영향이 없는 수평 평면의 이상 단일 축, 관성 I=0.02 kg·m², 마찰 0을 가정한다. 전체 다관절 computed-torque 대신 이 단순 모델의 관성 feedforward와 PD 피드백을 결합한다. Kp는 N·m/rad, Kd는 N·m/(rad/s)다.
같은 측정에서 Kp=2, Kd=0.1이면 관성 기여 0.015, 위치 기여 0.1125, 속도 기여 0.01625 N·m로 총 0.14375 N·m다. 가상 적용 한계가 0.1 N·m라면 요구를 그대로 실현할 수 없다. 잘린 입력을 쓴 뒤에도 원래 궤적을 정확히 추종한다고 가정하지 않는다. 중력과 마찰이 있는 실제 축에서는 보상 모델과 불확실성이 더 필요하다. feedforward만으로 모델 오차나 초기 오차를 자동 복구할 수도 없다.
추종 지표에는 시각과 입력을 함께 남긴다
오차는 같은 시각의 목표와 측정을 비교한다. 지연된 관측을 현재 목표와 그대로 빼면 추종 오차와 시간 불일치를 섞게 된다. 목표와 측정의 stamp·시계·프레임·관절 이름과 단위가 맞는지 먼저 검사한다. 일정한 목표를 붙잡는 setpoint 제어와 시간에 따라 움직이는 궤적 추종의 지표도 구분한다.
가상으로 시간 정합된 오차 세 표본이 0.1,−0.1,0.2 rad라면 평균 오차는 약 0.0667 rad다. 하지만 부호가 상쇄되므로 이 값만으로 작다고 판단하지 않는다. 평균 절댓값은 약 0.1333 rad, 제곱 평균의 제곱근인 RMS는 약 0.1414 rad, 최대 절댓값은 0.2 rad다. 표본 간격이 고르지 않으면 단순 표본 평균과 시간 가중 지표도 다를 수 있다. 이 몇 표본이 전체 시간의 최대 오차나 충돌 부재를 입증하지도 않는다.
입력의 peak/지속 포화·가속 제한·경로/관절 한계·외란을 함께 기록한다. 최종 위치 하나가 맞아도 중간 경로가 위험하거나 입력이 실현 불가능할 수 있다. 기존 3.4의 명령 경계와 연결할 때에도 Leader의 목표·Follower의 명령·실제 관측을 다른 칸에 남긴다.