Odometry is commonly obtained by integrating wheel encoders information; most commercial robots make such integrated pose estimation available in periodic time intervals (e.g., every tenth of a second).Wheel displacements derived from encoder readings produce noisy pose update:
p(xt∣xt−1,ut)=p(Δrot1)p(Δtrans)p(Δrot2),factorized by initial rotation, translation, final rotation.Compute noisy components:Δrot1=atan2(yt−yt−1,xt−xt−1)−θt−1Δtrans=(xt−xt−1)2+(yt−yt−1)2Δrot2=θt−θt−1−Δrot1Sample corrupted increments:Δrot1=Δrot1−N(0,α1Δrot12+α2Δtrans2)and similarly for Δtrans and Δrot2.Updated pose:xt=xt−1+Δtranscos(θt−1+Δrot1)yt=yt−1+Δtranssin(θt−1+Δrot1)θt=θt−1+Δrot1+Δrot2
Given commanded (v,ω) and noise parameters αi:v^=v+N(0,α1v2+α2ω2)ω^=ω+N(0,α3v2+α4ω2)γ^=N(0,α5v2+α6ω2)then sample the next pose (xt,yt,θt) via standard velocity model equations.xt=xt−1−ω^v^sinθt−1+ω^v^sin(θt−1+ω^Δt)yt=yt−1+ω^v^cosθt−1−ω^v^cos(θt−1+ω^Δt)θt=θt−1+ω^Δt+γ^ΔtIf ∣ω^∣<ϵ treat as straight motion:xt=xt−1+v^Δtcosθt−1,yt=yt−1+v^Δtsinθt−1,θt=θt−1+γ^Δt