* 이 글은 Sebastian Thrun의 책 <Probabilistic Robotics>의 번역본 <확률론적 로보틱스>를 기반으로 작성했습니다.
* 아직 공부를 하고 있는 비전문가이기 때문에 잘못 이해하였거나 잘못 번역한 부분이 있을 수 있습니다. 해당 부분이 있다면 댓글 부탁드립니다.
rigid robot은 일반적으로 3차원 직교 좌표, 3개의 오일러각(Euler’s angle)의 6가지 변수를 갖는다. 이 책에서는 2차원 평면 좌표로 한정하기 때문에 3개의 변수(x,y,θ)로 요약할 수 있다.
motion model은 다음과 같은 조건부 확률 밀도로 나타낼 수 있다.
Velocity Motion Model(속도 모션 모델)
velocity motion model에서 u_t는 translation velocity(v_t)와 rotation velocity(w_t)로 이루어져 있다. (w_t > 0 이면 반시계 방향, v_t > 0 이면 전진을 의미한다)
- closed form calculation
이 알고리즘은 initial pose x_{t-1}과 control u_t를 입력으로 받고, estimation pose를 x_t로 나타낸다. 출력 값은 x_{t-1} 에서 u_t를 실행한 x_t에서의 사후 확률 p(x_t | u_t, x_{t-1})이며, control은 고정된 duration Δt 동안 수행했다고 가정한다. parameter α1~α6는 robot motion error parameter이다. 이 알고리즘은 먼저 오차가 없는 로봇의 control을 계산하고, 이는 v_hat, w_hat으로 주어진다. 여기서 γ는 로봇이 목표 지점에 도착한 후의 회전을 나타내는데, 이는 실제 로봇이 주행 시 목표 지점에 도착하는 방향까지 정확하게 맞춰서 도착하지 않고, 일단 해당 위치로 도착 후 제자리에서 회전하는데 이 회전을 의미한다.
- sampling algorithm
particle filter는 u_t, x_{t-1}이 주어지고, motion model p(x_t | u_t, x_{t-1})을 따라 그려진 랜덤한 x_t를 생성한다. line 2~4는 motion model의 error parameter로부터 유도된 noise를 이용해 control parameter를 생성한다. 그리고 이 noise는 line 5~7에서 새로운 pose를 생성하기 위해 사용된다.
Odometry Motion Model
시간의 경과에 따른 robot motion을 계산하기 위한 기준으로 odometry measurement를 사용할 수도 있다(기술 관점에서 odometry는 sensor measurement이다).
odometry model은 상대적 운동 정보(relative motion information)을 사용한다(시간 [t-1, t]에서 pose는 x_{t-1}에서 x_t로 이동함). 이때 {bar}x_{t-1}과 {bar}x_t의 상대적인 차이(추정치)는 아래와 같이 주어진다.
relative odometry를 추출하기 위해 u_t는 아래의 그림처럼 회전, 직선, 회전의 3단계로 변환된다.
probabilistic motion model은 이 3개의 parameter가 독립적인 noise에 영향을 받는다고 가정한다.
odometry로부터 p(x_t | u_t, x_{t-1})을 계산하기 위한 알고리즘은 아래와 같다.
2~4행에서는 odometry로 얻은 값으로 relative motion parameter (δ_rot1, δ_trans, δ_rot2)^T를 복원한다. pose x_{t-1}과 x_t가 주어졌을 때 이에 대응하는 relative motion parameter (δ^hat들)은 5~7행에서 계산된다. 이후 8~10행은 각각에 대한 오차 확률을 계산한다(여기에서 함수 prob(a, b^2)은 평균이 0이고 분산이 b^2인 분포를 구현한다). 마지막으로 11행은 각 에러 확률 p1, p2, p3를 곱하여 얻은 에러 확률은 반환하는데, 이것은 각 다른 에러들이 독립이라고 가정한 것이다.
위 그림은 α1~α4를 다르게 설정했을 때의 예시이다. (a)는 일반적인 상황이고, (b)는 직선 오차를 크게 한 경우, (c)는 회전 오차를 크게 한 경우이다.
Motion and Map
어떤 경우에는 지도(m)이 함께 주어진다. 여기에는 로봇이 갈 수 있는 장소와 갈 수 없는 장소에 대한 정보가 포함되어 있다. 지도 m을 알면 control u_t를 실행하기 전, 실행하는 동안, 실행한 후 각각에 대한 pose x_t의 추가 정보를 얻을 수 있다.
지도를 반영한 motion model은 p(x_t | u_t, x_{t-1}, m)으로 표현되며, 이는 지도가 없는 model보다 더 나은 결과를 제공한다.
map based motion model에 대해 효과적으로 근사화하는 기법이 있다. 이 기법은 x_{t-1}과 x_t 간의 거리가 작을 때(로봇 직경의 절반 이하 정도) 잘 동작한다.
이때 p(x_t)는 보통 균일하기 때문에 상수항으로 대체할 수 있다. 그러면 위 식은 지도가 없을 때의 추정값 p(x_t | u_t, x_{t-1})과 p(x_t | m)의 곱으로 변환할 수 있다. 이때 p(x_t | m)은 지도가 주어졌을 때 pose x_t의 일관성(consistency)를 의미한다. p(x_t | m)는 로봇이 occupied grid cell에 위치해 있을 때만 0이고, 나머지의 경우에는 상수값을 갖는다. 이것의 결과는 아래 그림과 같이 나타난다.
'Probabilistic Robotics' 카테고리의 다른 글
Chapter 3. Gaussian Filter (0) | 2022.07.30 |
---|---|
Chapter 2. State Estimation (0) | 2022.07.23 |