New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Tuning cartographer with odometry #1122
Comments
Your example is missing your URDF. How are odom and the laser frame connected? |
Okay, so I have included 2 files in the google drive :
Basically those two files allowed to generate a /tf_static from "base_footprint" to "base_laser" (the frame of the laser scan). Concerning the tuning, i have made some progress by lowering the rotation weight in the ceres scan matcher (from 40 to 0.01) :
The drift now occurs only when a new submap is created. but inside a submab the mapping is quite good. |
Hi, @SirVer The main problem was our odometry data, indeed the wheels did not have the same pressure, thus not the same diameters. The result was a drift in odometry twist : The first solution for us was to use calibrated odometry with cartographer. But it's a heavy solution :
The best solution was still to tune cartographer's global SLAM to be robust to that kind of odometry error. We have found a set of parameters in the global SLAM that seem to work
Additionally we saw in some other issues, that enabling the To summarize, our .lua file looks like this now
|
Hi, @DoctorSnake , have you tackled the problem you met? I noticed in your rosbag file, the odom is: pose: What do z and w mean in orientation? And twist? During the process the covariance remains 0, is it the weight of odom that works during local SLAM? I'm really thankful for your rely! |
Closing inactive issues. |
I was still waiting for some support... I have purposely modified the odometry in gazebo simulation to reproduce our real data :
I what i am saying is correct, i hope some people in the team can take a look at that. Because in my opinion only twist values should be used from odometry in the scan matcher. Kind Regards |
Hi,If you check the code about "AddOdometry" you will find that Cartographer use the position of odometry to calculate a relative pose ( P2^T *P1), the twist in the odometry is not used at all. I think this can answer your question.Regards,JiahengSent from my Huawei Mobile-------- Original Message --------Subject: Re: [googlecartographer/cartographer] Tuning cartographer with odometry (#1122)From: DoctorSnake To: googlecartographer/cartographer CC: Jiaheng Zhao ,Comment I was still waiting for some support...
Anyway I have noticed that cartographer uses the position fields in odometry instead of speed for scan matching.
I have purposely modified the odometry in gazebo simulation to reproduce our real data :
first a bias in yaw rate in the twist field. The bias being proportional to linear speed.
There was almost no effect on cartographer.
then i integrated that bias in the position field, so that it was drifting. Then there was a clear effect on cartographer output trajectory.
I what i am saying is correct, i hope some people from the team can take a look at that. Because in my opinion only twist values should be used from odometry in the scan matcher.
Kind Regards
—You are receiving this because you commented.Reply to this email directly, view it on GitHub, or mute the thread.
|
Hi, thank you for your response. Kind Regards |
Okay i found a bunch of files with AddOdometryData methods, including pose_extrapolator.cc. In my opinion odometry should be used the same way IMU is used, meaning only last known position from cartographer + angular velocity * dt = initial guess for scan matching. Using pose in odometry means incredibly relying on it, which can only be done in a perfect world (even ground, not slippery, no bias in the odometry calculation model, etc)... |
@DoctorSnake in fact it does not use the pose but use pose’s difference and can avoid accumulated error |
Hi @SirVer , @wohe
Following our email exchange, I'm opening an issue here to ask for some tuning guidance.
We are running into some problems with integrating our odometry to cartographer.
When we use the laser scan only, by setting the following parameter to "true",
TRAJECTORY_BUILDER_2D.use_online_correlative_scan_matching = true
the mapping works well up until the door is opened at the end. We are hoping the odometry information will improve that part.
When we use laser scan + odometry, the mapping is actually a lot worse. The map drifts a lot, as if the algorithm was not tracking the rotation correctly.
The following google drive link contains all the data :
https://drive.google.com/drive/folders/18yZHLtLivF58gpXP5a_AM5zuDGEjMg2W?usp=sharing
Thanks a lot for your help
The text was updated successfully, but these errors were encountered: