Project for the course in Probabilistic Robotics at Sapienza University of Rome
How do we navigate an autonomous robot in an indoor scenario? One of the main techniques is to fill the environment with known landmarks, estimating the robot position by simple heuristics, such as latemax. But this naive approach leads to the common phenomenon of "dead recking", which is the generation of a trajectory which diverges from the actual one. In this work we will show how to handle this scenario using a Least Square Approach to optimize the trajectory, closing the trajectory loop.
- Dataset (in .g2o format) composed of : 2D range measurements, landmarks positions (only ground-truth), edge transitions, Robot Poses
- Wheeled Mobile Robot to provide the data
choose whether to use absolute positions or pose-pose relative displacements
# in main.m
data="poses" # compute initial trajectory using absolute poses
data="edges" # compute initial trajectory using transition measurements
method="poses" # Do Least Squares on range measurements only
method="edges" # Do least Squares using both range and odometry measurements
Launch the main file
octave main.m
Firstly, we generate a map of the real and estimated landmark positions
Then, we plot the initial guess and the optimzed trajectory.
As we see, it's better to apply a lest squares approach to generate a more accurate trajectory. In particular, given the state (x,y,θ) ∈ SE(2), we used a Least Squares approach equipped with a BoxPlus operator to update the optimal solution respecting the manifold gemometry relations. In the next paragraph, we show more clearly the difference between the optimized and naive trajectories.
From the previous graph, it seems that the computed optimized trajectory follows the ground-truth, except for a rototranslation. Given the hypothesis of calibrated odometry, I provide a transformation vector to map the computed trajecories into their original pose.
Here I show the results using odometry measurements too