두가지.
매핑을 수행하려면 본격적인 SLAM (Simultaneous Localization and Mapping) 알고리즘이 필요합니다. 참조 : SLAM (Simultaneous Localization and Mapping)을 1 부 근본적인 알고리즘 . SLAM에서 로봇 상태 추정은 문제의 절반에 지나지 않습니다. 그렇게하는 방법은 여기서 대답 할 수있는 것보다 더 큰 질문입니다.
현지화 (로봇 상태 추정)와 관련하여 이것은 Kalman Filter의 작업이 아닙니다. 에서 전환
에 대한 X ( t + 1 )x(t)=[x,y,x˙,y˙,θ,θ˙]x(t+1)각가속도와 속도로 인해 선형 함수가 아닙니다. 따라서이 작업을 위해 비선형 추정기를 고려해야합니다. 예, 표준 방법이 있습니다. 예, 문헌으로 제공됩니다. 예, 일반적으로 모든 입력은 동일한 필터에 배치됩니다. 로봇의 위치, 속도, 방향 및 각속도가 출력으로 사용됩니다. 그리고 네, 여기에 공통 주제에 대한 간단한 소개가 있습니다. 주요 테이크 아웃은
- 귀하의 주에 자이로 및 IMU 편견을 포함 시키십시오.
- 확장 칼만 필터 (EKF)는 일반적으로이 문제에 사용됩니다
- 구현은 처음부터 파생 될 수 있으며 일반적으로 "조회"할 필요가 없습니다.
- 구현은 대부분의 현지화 및 SLAM 문제에 대해 존재하므로 필요한 것보다 많은 작업을 수행하지 마십시오. 로봇 운영 체제 ROS 참조
이제 시스템의 맥락에서 EKF를 설명하겠습니다. 우리는 IMU + Gyro, GPS 및 odometry를 가지고 있습니다. 문제의 로봇은 언급 된대로 차동 드라이브입니다. 필터링 작업이 로봇의 현재 자세 추정을 수행하는
X t , 제어 입력 U을 t를 , 각 센서로부터 측정 Z t , 및 다음 시간
단계에서의x^tutzt. IMU 측정을It라고하고 GPS를Gt로하고 odometry를Ot라고합니다x^t+1ItGtOt .
로봇 자세를 로 추정하는 데 관심이 있다고 가정
합니다. IMU 및 Gyros의 문제점은 드리프트입니다. EKF에서 고려해야하는 가속에는 비정규적인 편향이 있습니다. 이는 일반적으로 바이어스를 추정 상태로 설정하여 수행됩니다. 이를 통해 각 시간 단계에서 바이어스를 직접 추정 할 수 있습니다.
x t = x , y , ˙ x , ˙ y , θ , ˙ θ , bxt=x,y,x˙,y˙,θ,θ˙xt=x,y,x˙,y˙,θ,θ˙,b바이어스 벡터 b .
나는 가정한다 :
- = 트레드가 약간의 시간 단위로 이동 한 거리를 나타내는 두 개의 거리 측정Ot
- = 3 개의 방향 측정 α , β , θ 및 3 개의 가속도 측정 ¨Itα,β,θ .x¨,y¨,z¨
- =에서 로봇의 위치글로벌프레임
G X t , G 용 의 Y t .GtGxt,Gyt
일반적으로, 제어 입력의 결과 (각 트레드마다 원하는 속도)는 출력 (로봇의 자세 변화)에 매핑하기가 어렵습니다. 대신에 , 그것은 일반적이다 (참조 Thrun , 오도 질문u 제어의 "결과"로 오도를 사용). 이 가정은 마찰이 거의없는 표면에 있지 않을 때 효과적입니다. 앞으로 살펴 보 겠지만 IMU와 GPS는 미끄러짐을 바로 잡는 데 도움이 될 수 있습니다.
첫 번째 작업은 현재 상태에서 다음 상태를 예측하므로
. 차동 드라이브 로봇의 경우,이 예측은 문헌에서 직접 얻을 수 있거나 ( 휠식 모바일 로봇의 운동학 또는 현대 로봇 공학 교과서의 더 간결한 처리 참조) 다음과 같이 처음부터 얻을 수 있습니다.x^t+1=f(x^t,ut) .
그래서 우리는 지금 예측할 수 X를. 이것이 전파 또는 예측 단계입니다. 간단히 전파하여 로봇을 조작할수있습니다. 값 경우 O t이 완전히 정확, 당신은 추정하지 않아도됩니다 X 정확하게 실제 상태와 동일하지 않습니다. 이것은 실제로 일어나지 않습니다.x^t+1=f(x^t,Ot)Otx^
이것은 이전 추정치에서 예측 된 값만 제공하며 추정치의 정확도가 시간에 따라 어떻게 저하되는지는 알려주지 않습니다. 따라서 불확실성을 전파하려면 EKF 방정식 (가우시안 잡음 가정 하에서 닫힌 형태로 불확실성을 전파), 입자 필터 (샘플링 기반 접근 방식 사용) *, UKF (점 단위 사용)를 사용해야합니다. 불확실성의 근사) 또는 다른 많은 변형 중 하나.
EKF의 경우 다음과 같이 진행합니다. 로봇 상태의 공분산 행렬 이라고하자 .
Taylor 시스템 확장을 사용하여 함수 f 를 선형화하여 선형 시스템을 얻습니다. 칼만 필터를 사용하면 선형 시스템을 쉽게 해결할 수 있습니다. 시간 t 에서의 추정치의 공분산 이 P t이고 , 측량법에서 잡음의 추정 된 공분산은 행렬 U t
(보통 대각선 2 × 2) 로 주어진다고 가정PtftPtUt2×2 와 같은 행렬 . 함수 f 의 경우 Jacobian 을 얻는다.1×I2×2f
와Fu=∂fFx=∂f∂x 다음과 같은 불확실성을 전파Fu=∂f∂u
Pt+1=Fx∗Pt∗FTx+Fu∗Ut∗FTu
이제 추정치와 불확실성을 전파 할 수 있습니다. 불확실성은 시간이 지남에 따라 단조 증가합니다. 이것은 예상됩니다. 이 문제를 해결하려면 일반적으로 수행되는 작업은 및 G tItGt 를 사용하여 예측 상태를 업데이트해야합니다. 센서가 로봇 상태의 간접 측정을 제공하기 때문에이를 필터링 프로세스의 측정 단계라고합니다.
먼저 각 센서를 사용하여 로봇 상태의 일부 를 GPS, IMU에 대한 일부 함수 및 h i ( ) 로 추정 합니다. 폼 잔존 하거나 혁신 예측 측정 값의 차이이다. 그런 다음 모든 센서에 대해 공분산 행렬 R 의 형태로 각 센서 추정값의 정확도를 추정하십시오 ( 이 경우 R g , R i ). 마지막으로 h 의 Jacobians를 찾아서 다음과 같이 상태 추정값을 업데이트하십시오.hg()hi()RRgRih
각 센서 상태를 추정하여 (Z) 들 ( 이후 위키의 항목 )szs
S S = H S * P의 t + 1 * H T S + R S K = P t + 1 * H T S S - 1 의 X t + 1 = X t + 1 - K * V
vs=zs−hs(x^t+1)
에스에스= H에스※ Pt + 1※ H티에스+ R에스
케이= Pt + 1※ H티에스에스− 1에스
엑스^t + 1= x^t + 1− K※ v
피t + 1= ( 난− K※ H에스) ∗ Pt + 1
지지= h지( )H지아르 자형지
지나는= h나는( )피나는아르 자형나는피나는. 편견에 대한 업데이트를 통합하는 것이 더 어려우며 전문 지식이 부족합니다. 그러나 평면 모션에 관심이 있으므로 문제를 단순화 할 수 있습니다. 이를 위해서는 문헌을 봐야합니다.
내 머리 속의 일부 참고 문헌 :
EKF 기반 Visual-Inertial Odometry의 정확도 향상
멀티 로봇 협동 지역화를위한 관찰 기반의 일관된 EKF 추정기
알 수없는 결함 바이어스를 가진 INS-GPS 느슨하게 결합 된 시스템을위한 적응 형 2 단계 EKF
이 필드는 google (scholar)이 작동중인 구현을 찾을 수있을 정도로 성숙합니다. 이 분야에서 많은 일을하려는 경우, 견고한 교과서를 선택하는 것이 좋습니다. Google Car의 S. Thrun 의 Probablistic Robotics 와 같은 것이있을 것 입니다. (저는 늦은 밤 구현에 유용한 참고 자료를 찾았습니다).
* ROS ( Robot Operating System ) 에는 여러 가지 PF 기반 추정기가 있습니다
. 그러나 이들은 실 내용으로 최적화되었습니다. 입자 필터는지도 기반의 현지화 발생할 수있는 멀티 모달 PDF 파일 처리 (나는 근처에 오전 이 문이나 그 문). 나는 대부분의 실외 구현 (특히 GPS를 적어도 간헐적으로 사용할 수있는 구현)이 확장 칼만 필터 (EKF)를 사용한다고 생각 합니다. 차동 드라이브가있는 실외 그라운드 로버에 확장 칼만 필터를 성공적으로 사용했습니다.