5.4 오도메트리 동작 모델 odometry motion model
앞서 살펴본 속도 동작 모델은 로봇의 속도를 사용하여 자세애 대한 사후확률을 계산하였습니다. 이외에도 로봇의 동작을 계산하는 오도메트리 측정 값을 사용할 수도 있는데, 오도메트리는 휠 인코더 정보를 적분하여 얻으며, 대부분의 상업용 로봇은 그러한 벙법으로 자세 추정이 가능합니다. 현실적으로 오도메트리는 여전히 에러가 크나 속도보다는 정교합니다. 드리프트와 미끄러짐이 발생하기는 하나 속도는 실제 속도기와 수학적 속도 모델 사이의 차이 또한 존재하나, 오도메트리는 로봇이 움직인 후에만 얻을수 있어 필터 알고리즘에 대해 문제가 되지 않습니다. 하지만 정확한 동작 계획과 제어에서는 사용될수가 없습니다.
5.4.1 닫힌 형태의 계산 Closed Form Calculation
이번 장에서는 제어 입력으로 오도메트리 측정 값을 사용하는 동작 모델을 정의하겠습니다. 기술적으로 오도메트리는 제어가 아닌 센서 측정값인데 오도메트리를 측정으로 설계하기 위해서 베이즈 필터는 상태 변수로 실제 속도를 포함시켜야 합니다. 상태 공간을 작게 나둔다면 오도메트리를 제어 신호로 사용하는 방법이 흔하게 사용됩니다. 이번 장에서는 오도메트리 측정치를 제어 입력으로 다루어보고 이를 통해 구한 모델들은 오늘날 최고의 확률적 로봇 시스템의 핵심이 됩니다.
우선 제어 정보의 형태를 정의하면 시간 t에 대해 로봇의 자세는 확률 변수 $x_t$로 하고, 로봇의 오도메트리는 이 자세를 추정하게 됩니다. 하지만 드리프트와 밀림 때문에 실제 물리적 세계와 로봇의 내부 오도메트리 좌표계 사이에는 고정된 좌표계간 변환은 없습니다. 이 변환은 로봇의 위치 추정 문제를 해결합니다.
오도메트리 모델은 로봇의 내부 오도메트리의 상대적인 정보들을 사용하는데, 자세히 보면 구간 (t-1, t]에서 자세 $x_{t-1}$에서 $x_t$로 로봇이 전진하면 오도메트리는 이 전진에 대해 $\bar{x_{t-1}}$ = ($\bar{x}$ $\bar{y}$ $bar{\theta}$)에서 $\bar{x_t}$ = ($\bar{x}'$ $\bar{y}$' $\bar{\theta}$')를 전달합니다. 여기서 바는 이 값들이 오도메트리 측정치로 알수 없는 전역 좌표계 상에 존재하는 로봇 내부 좌표계를 따르게 됩니다. 상태 추정에서 이 정보를 사용하기 위해서 $\bar_{x_{t-1}}$과 $\bar{x_t}$사이의 차이를 사용하며 이 차이는 실제 자세 $x_{t-1}$과 $x_t$의 차이에 대한 좋은 근사치가 됩니다. 동작 정보 $u_t$는 그래서 다음과 같이 주어지며
- 위 오도메트리 모델은 구간 (t-1, t]에서의 로봇 동작으로 회전 $\delta_{rot1}$, 평행이동 $\delta_{trans}$, 두번쨰 회전 $\delta_{rot2}$로 근사화되며, 회전과 평행이동에서 노이즈가 존재합니다.
상대적인 오도메트리를 구하기 위해 $u_t$는 다음의 3가지 단계로 변환됩니다. 회전, 평행 이동 동작, 그리고 다른 회전 등. 그림 5.7은 이 과정을 나놔서 보여주고 있는데 초기 회전량을 $\detal_{rot1}$이라 하고, 이동을 $\delta_{trans}$ 그리고 다음 회전 치를 $\delta_{rot2}$라 합니다. 여기서 자세 ($\bar{s}$ $\bar{s}$')사이에는 파라미터 벡터인 ($\delta_{rot1}$ $\delta_{trans}$ $\delta_{rot2}$$)^T$를 가지며 이 파라미터들은 $\bar{s}$, $\bar{s}$'사이의 상대적인 동작을 나타냅니다. 그래서 $\delta_{rot1}$, $\delta_{trans}$, $\delta_{rot2}$는오도메트리로 엔코드된 상대적인 동작이 됩니다. 우리가 사용할 동작 모델은 이 세 파라미터는 노이즈에 영향을 받으며 이전 장에서 살펴본 속도 벡터보다 더 자주 사용하겠습니다.
표 5.5 오도메트리 정보 기반 p($x_t$ | $u_t$, $x_{t-1}$)을 계산하는 알고리즘
- 시간 t에 대해 자세를 $x_{t-1}$ = (x y $\theta$$)^T$로 구하는데, 제어 입력은 로봇의 오도메트리 정보 $u_t$ = ($\bar{x_{t-1}}$ $\bar{x_t}$$)^T$로 구한 두 자세 사이의 차이가 사용됩니다. 여기서 $\bar{x_{t-1}}$ = ($\bar{x}$ $\bar{y}$ $\bar{theta}$), $\bar{x_t}$ = ($\bar{x}$' $\bar{y}$' $\bar{\theta}$')
수학적으로 자세한 사항들을 살펴보기 전에 이 닫힌 형태의 밀도 함수를 계산하는 기본 알고리즘에 대해 살펴보겠습니다. 표 5.5는 오도메트리로부터 p($x_t$ | $u_t$, $x_{t-1}$)를 계산하는 기본 알고리즘으로 이 알고리즘은 입력으로 초기 위치 $x_{t-1}$, 오도메트리로 구한 자세 쌍 $u_t$ = ($\bar{x_{t-1}}$, $\bar{x_t}$$)^T$, 가정 최종 자세 $x_t$를 사용하며, 확률 p($x_t$ | $u_t$, $x_{t-1}$)가 출력이 됩니다.
이 알고리즘을 자세히 다뤄보면 2~4번째 줄은 상대적인 모션 파라미터인 ($\delta_{rot1}$ $\delta_{trans}$ $\delta_{rot2}$$)^T$를 오도메트리 정보로 부터 복원하는 과정으로, 이를 이용해 역 동작 모델 inverse motion model을 구현합니다. 실제 자세 $x_{t-1}$, $x_t$ 사이의 상대적인 동작인 ($\hat{delta_{rot1}}$ $\hat{delta_{trans}}$ $\hat{delta_{rot2}}$$)^T$는 5~7번째 줄 사이에서 계산됩니다. 8~10번째 줄 사이에는 각 모션 파라미터의 에러 확률을 계산하는데 위에서 보았듯이 함수 prob(a, b)는 평균이 0이고 분산이 b인 분포의 a에 대한 값을 의미하며 여기서 범위는 [-$\pi$, $\pi$]가 됩니다. $delta_2$ - $\bar_{delta_2}$의 결과는 이 모델이 사용된 소프트웨어에 따라 에러에 차이가 존재하게 됩니다. 마지막으로 11번째 줄은 이 에러 확률들을 곱하여 결과를 반환합니다. 이 마지막 단계는 에러들 사이에 독립이라고 가정한 것으로 $\alpha_1$ ~ $\alpha_4$는 로봇의 동작 노이즈를 명시하는 파라미터가 됩니다.
그림 5.8은 에러 파라미터 $\alpha_1$ ~ $\alpha_4$를 설정함에 따라 오도메트리 동작 모델의 예시들을 보여줍니다. 그림 5.8a 분포는 프로토 타입으로 5.8b, 5.8c는 평행이동이나 회전 에러가 더 큰경우를 보여주고 있습니다. 이미 그림 5.3에서 비슷한 그림을 보았지만 측정하는 시간 사이가 짧을수록 이 동작 모델의 차이는 더 비슷해질겁니다. 그래서 신뢰도가 더 자주 갱신된다면 동작 모델사이의 차이는 더 줄어들게 됩니다. 일반적으로 오도메트리 모델이 속도 모델보다 더 주로 선호되는데 오도메터가 속도 제어기보다 더 정확하기 때문입니다.
'번역 > 구)확률적로봇공학' 카테고리의 다른 글
확률적 로봇공학 - 5.5 동작과 지도 (0) | 2020.06.23 |
---|---|
확률적 로봇 공학 - 5.4.2 오도메트리 동작 모델 샘플링 알고리즘 (0) | 2020.06.23 |
확률적 로봇 공학 - 5.3.2 샘플링 알고리즘 (0) | 2020.06.23 |
확률적 로봇 공학 - 5.3 속도 동작 모델 (0) | 2020.06.22 |
확률적 로봇 공학 - 5 로봇 동작 (0) | 2020.06.22 |