Comments (8)
I think I figured out the problem and the solution. In both cases the voxel_size apparently was too big if one was assuming the max_range to be from the sensor spec, let's say 150m or even more, which caused the big voxel size and much worse registration in situation where lot's of feature are nearby. so decreasing the max_range for Case 1 to 50m and for Case 2 to 10m (because it was a room), made things significantly better.
So its probably makes sense to not just use the sensor spec but take into an account the data distribution, which can be done easily outside of kiss odometry by estimating the range distribution on some 10-100 scans to get an idea of what max_range parameter to set.
Again, super happy with the results! Great job!
from kiss-icp.
@bexcite great analysis. Actually for all the test runs we did for indoors we've setup a max range of 10m. We once had 2 config files, one for outdoor and other for indoor. But after removing almost all componentes of the pipeline we realized that the only difference was the max range, and therefore exposed it also through the CLI.
Once we release the full thing I plan to write some documentations on how to use, adapt and tune the system for non out-of-the-bxo working datasets.
I'll review your whole issue once I'm back at the office, I'm now away from my main pc.
Thanks for the patience
from kiss-icp.
Yeah, I've need to add it on some branch and probably open an MR since now the code is public and we can do it. I'll try to make it next week.
from kiss-icp.
Updated initial post with pictures.
from kiss-icp.
@bexcite Should I close this for now, or do you need further assistance? I guess that until the real thing is released there is not much we can do, please let me know if you need additional help.
from kiss-icp.
Yes, we can consider it's done, because selecting a proper min/max range did a trick. Thanks!
from kiss-icp.
I've been playing with
kiss-icp
package and testing it with some real-world data that people may have. And it performed well in most cases which is just amazing to see and kudos to the team to make such a great ICP. Two cases that I observe are not doing well during my tests.NOTE1: I fully understand that paper is done, so if it's smth out of scope and not needed to be adressed it's ok.
NOTE2: I've made a custom data loader to read data from pcap for a specific sensor, and there maybe some errors there. However I see the great performance on majority of other cases, including the correct deskew results of a point clouds, so it gives me the clue that custom Dataloader maybe fine after all.
Case 1: Long pauses before the first non-zero movement.
Consider a vehicle with a sensor mounted on top (360 spinner, 64 beams) , and driver is preparing for a ride without any movement for a first 2 minutes, than a small movement like 10m forward, and then no movement for like another 3 minutes, and when the car finally started the movement it just completely lost for a while, until some time. (I may guess it's smth with an accumulated tau distance distributions, but maybe smth else...) After another 1-3 minutes of movement odometry kicks off more or less and then everything is fine.
Move about 10meters after a long pause:
Movement after the long pause and recovery in 2-3 minutes:
Case 2: Constant velocity rotation (in a room or construction site)
It's not a single case and was also observed on other non-room cases.
Simple room with almost plain walls but multiple corners and indentation in a wall visible (180 degree, spinner, 20hz, 32 beams) and a sensor rotating very smoothly around Z axis (like on a turntable) (with some pauses without rotation for 10-30 seconds, so it's case1 here as well probably). Result is a jerky trajectory that if drawn smeared a lot of that room.
Tried things:
I tried to tune some params, but no luck, seems that
min_motion_th
should have had some impact, but don't see any improvements.Will be happy to test the fully released version and contribute the data loader for running kiss-icp on real world pcap data easily for one of the sensors.
Cheers!
@bexcite In Note 2 you mention a custom data loader. Is this available somewhere? I have a SLAM rig that uses a Ouster or Velodyne puck to capture data and would love to run some of it through Kiss ICP. I don't typically record in Rosbags.
from kiss-icp.
@Rotoslider here is an MR with an Ouster dataloader, if you could give it a try (from the MR, because I don't know how it will fly with the repo maintainers yet) it will help me to test it better. (it's not a big one, very simple actually, but do the job)
from kiss-icp.
Related Issues (20)
- Question: Has anyone tried KISS-ICP on ARM architecture? HOT 3
- Help, where can I find documentation on how to use kiss-icp from a script, not from the command line? HOT 1
- VoxelHashMap ereasing of the voxels
- Best way to use Kiss-ICP with multi lidar HOT 2
- Cannot recreate the KITTI results HOT 3
- Deskew in Config is erased by not passing --deskew in kiss_icp_pipeline HOT 8
- Kiss-icp timestamp management with rosbags HOT 2
- Make C++ library installable
- How to recur the poses of kitti dataset? HOT 1
- Build is broken HOT 20
- problem with biuld for ROS2 HOT 1
- Inconsistent unit (rad vs deg) in c++ and python HOT 1
- About Install Python API (developer mode) HOT 1
- ZeroDivisionError in pipeline.py in OdometryPipeline._get_fps function
- directory file not found HOT 2
- kiss_icp_dump_config executable does not exist HOT 1
- Segmentation fault HOT 3
- Any possibility / benefit to add temporal limits to the local map HOT 1
- Geman-McClure Kernel weight function HOT 1
- Is there any parameter with which i can reduce the output frequency of the odometry ? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kiss-icp.