Skip to content
Ricardo B. Sousa edited this page Jan 25, 2021 · 8 revisions

OptiOdom: Theory Formulation

(back)

The odometry equations can be defined to a time instant in which it is possible to obtain a known pose from a tracking system:

(Differencial drive and Ackerman/tricycle)

method-odomv2-diffackertricyc

(Omnidirectional)

method-odomv2-omni

Note: the time instants i and k are time instants where we have available ground-truth data for the robot's pose (x, y, θ).

Therefore, we propose that we estimate the kinematic parameters by minimising a cost function that represents the sum of squares of the position errors. Any iterative optimisation algorithm could be used. The one implemented for our method was the improved Resilient Propagation without weight-backtracking (iRprop-) formulated by Igel and Husken.The advantages of using a Rprop algorithm is that it is only a first-order optimisation algorithm, highly accurate and robust, simple to implement, and provides good results in terms of convergence speed.

method-opti1

method-opti2

Test Path (up)

method_test-path(compressed)

  • N: total of runs
  • R0: initial radius
  • r%: radius decrease ratio (after 180º angular displacements over the path)
  • #180º: number of 180º angular displacements that compose the path (the figure illustrates an example with #180º = 0)

As for the processing the ground-truth data, the following two examples illustrate 2 possible approaches. The first approach defines a path segment as the sub-path between the initial position and the data acquisition points along the path, while the second approach defines a sub-path between the data acquisition points and the final pose. However, segments of these two approaches can be correlated with each other if the robot performs the same motion over a segment. In other to have only uncorrelated data for the optimization procedure, we implemented the first approach. However, the other one could also be used.

method_path-segments_1(compressed) method_path-segments_2(compressed)

Calibration Procedure (up)

  1. Measure the absolute position of the robot and initialize the odometry system with that position (the orientation can be initialized with 0º)
  2. Run the robot through a curvilinear motion in CW direction (ω < 0):
    • Set the initial radius (R0) taking into consideration the available space (ω0 = v / R0 or ω0 = vn / R0)
    • Set a radius decreasing ration (r%)
    • Update the linear velocities of the robot after each l 180º curve (v{l+1} = r% * v{l} or vn{l+1} = r% * vn{l})
    • Measure the absolute position after the robot has gone through 0.5m linear displacement (based on odometry)
  3. Repeat steps 1-2 if needed (for noise robustness)
  4. Repeat steps 1-3 in CCW direction
  5. Omnidirectional robot: repeat steps 1-4 with linear velocity in direction of vn
  6. Perform the optimization procedure
  7. Adjust the robot parameters given the result from the previous step

(back)

Clone this wiki locally