at-wat / mcl_3dl

A ROS node to perform a probabilistic 3-D/6-DOF localization system for mobile robots with 3-D LIDAR(s). It implements pointcloud based Monte Carlo localization that uses a reference pointcloud as a map.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Reference for motion prediction model

tuandle opened this issue · comments

Hi @at-wat ,
Thank you for your work. I have a question about the implemented motion model in this package.
The implementation of the diff drive model here seems to be a bit different from what described in Thrun's book and the original ROS navigation pkg.
I wonder if you can provide some references to how you derive formulas in functions setOdoms and predict?
I am also confused about the usage of odom error constants, e.g odom_err_integ_lin_tc_, odom_err_integ_ang_tc_ , noise_ll_, noise_la, etc., can you explain what they are for?
Thanks for your help!

The implementation of the diff drive model here seems to be a bit different from what described in Thrun's book and the original ROS navigation pkg.

I don't have specific reference for it.
Basically, only thing the Bayesian filter requires is that the ground truth state keeps having enough probability, so you don't need to 100% follow the book.
Basic things predict and setOdoms doing are updating the pose of each particle by using difference of the odometry pose with noise specified by the parameters.

I am also confused about the usage of odom error constants, e.g odom_err_integ_lin_tc_, odom_err_integ_ang_tc_ , noise_ll_, noise_la, etc., can you explain what they are for?

odom_err_integ_* means: #99 (comment)

mcl_3dl/src/mcl_3dl.cpp

Lines 1219 to 1222 in 15f4330

pnh_.param("odom_err_lin_lin", params_.odom_err_lin_lin_, 0.10);
pnh_.param("odom_err_lin_ang", params_.odom_err_lin_ang_, 0.05);
pnh_.param("odom_err_ang_lin", params_.odom_err_ang_lin_, 0.05);
pnh_.param("odom_err_ang_ang", params_.odom_err_ang_ang_, 0.05);

These odom_err_*_* have basically same meaning as amcl's odom_alpha3, odom_alpha2, odom_alpha4, and odom_alpha1 respectively. (http://wiki.ros.org/amcl#Parameters#line-395-2)

@at-wat I got it! Thanks for your reply!