Comments (11)
tl;dr: The different results for multiple runs tell me that your machine is not fast enough to keep up with the replay.
The example you run works this way: It brings up a ROS system in which rosbag replays data in real-time. Cartographer processes this data in real-time as well - and if it is too slow, data gets dropped by ROS (buffers run full). Cartographer is 5.3x real-time on my Intel Xeon E5-1650 3.2 GHz, so it should be real-time on a less powerful machine as well if you keep enough CPU headroom by not running other heavy processes.
One solution that we consider implementing is a "offline" version of Cartographer that directly consumes a rosbag and just runs through it as fast as possible without giving ROS a chance to drop any data. We have something like that for our internal version.
@kintzhao What machine do you have? Are you doing something else CPU intensive while running the examples? look at top's output to know for sure.
from cartographer_ros.
asus K550J, intel i7-4710HQ , 8G memory. I don't think it is caused by machine. and i just run this , rosbag record -a , and video record.
from cartographer_ros.
@SirVer , I stop rosbag record and try again. The end of processor is not fine, can not correct it.
the later part of terminator print :
cartograph_log.txt
from cartographer_ros.
@kintzhao Your system is pretty loaded as top shows and the log output shows that the background processing falls behind (there is no "We caught up message"). The good news is that the local slam is processing all data in timely fashion (that is the "processing at 100% real time"), so no data is dropped. Did you change any settings? Are you compiling in release mode?
Also, did you pull after #44 was merged? If you do, just leave rviz and the process running and the background processing will eventually catch up and you should end up with a nice map - you will see the map still changing after the ROS bag has finished playing back as the background processing catches up. #45 is tracking the retuning to make background processing fast enough for real time.
from cartographer_ros.
I do not change it, and compile it using ctkin_make_isolate.
I update the repo to commit id (a2567ab), try it and get the result as this. the background processing need too much time to corretct it (may be 10+ minutes). The last pic is wait for finish optimizer(watching the output top to guess it)
could you tell me the type of your actual device of laser and imu ? and your laser message is not standard ros laser message in your rosbag?
from cartographer_ros.
As sensors we use two Hokuyo UTM-30LX-EW. This is a multi-echo laser scanner, so we use sensor_msgs/MultiEchoLaserScan messages instead of sensor_msgs/LaserScan.
from cartographer_ros.
@wohe Thanks for your answer. How about the accuracy of IMU ? Does it a general MEMS(Micro-electromechanical Systems) IMU, such as mpu6050? Is it necessary to specify particular IMU, if I want to test it on my actual platform?
from cartographer_ros.
@kintzhao We use the 3DM GX4 25 for 3D - but other teams use less powerful IMUs, so that is not a requirement.
For 2D, you can completely turn of the usage of the IMU. The system then assumes that the laser is parallel to the floor at all times. This is what we used for the Neato laser map in the paper.
from cartographer_ros.
@kintzhao I could reproduce the bad loop closure performance: The issue is that function calls in ProbabilityGrid::GetProbability() are not properly inlined which severely harms performance by orders of magnitude. Interestingly, the unit test is compiled properly and fast. Likely an issue with how the build is set up. @SirVer is working on a fix.
from cartographer_ros.
Explanation of what happened: cartographer_node was built unoptimized and the linker had two versions of ProbabilityGrid::GetProbability(). It decided to use the unoptimized one from cartographer_node instead of the optimized one in the cartographer library.
@kintzhao On my system it seems fine now. Could you verify that this fixes the issue for you and reopen otherwise? Thanks.
from cartographer_ros.
@kintzhao Also thanks for bringing this to our attention!
from cartographer_ros.
Related Issues (20)
- 2.5D options and capabilities
- roslaunch Cartographer, RViz map cannot be displayed HOT 1
- Manually Set Pose in Reset
- Is the compression/expansion of a line scan when rotating taken into account? HOT 2
- How to extract ONLY odometry from cartographer?
- Dropped empty horizontal range data Warning and map not received HOT 7
- Could someone help me with this issue? This at times builds map sometimes doesn't, robot is unable to localize itself if there is map. How can I resolve this? Any help would be much appreciated.
- unlimited submaps are created even in pure localization mode (with submaps<3)
- relocation R_X86_64_TPOFF32 against symbol
- Using TF odometry instead of `/odom`
- Cartographer Map obstacles keep disappearing
- ros melodic Compilation failure HOT 4
- Need to change map to base_link transform values
- Is there a way to select z_min and z_max height of pointcloud in 3d slam? HOT 1
- What should I do if the constructed map has ghosting ?
- How to get Ground truth and use it for comparison ??
- can
- Access Issue with Backpack_2D Bag File on Google Cloud Storage HOT 1
- Demo bag files are not available to download HOT 3
- Implementation without ROS
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 cartographer_ros.