Comments (10)
from loam_velodyne.
from loam_velodyne.
@jlblancoc Thank you! Hope we can take this initiative forward
@adishavit That's awesome!
Could I ask you some questions about what you did? I have tried to phrase them so that they can be answered in a brief way. Now, I assume you took away all references to ROS message passing present in the registration, odometry, mapping and transform maintenance classes. Then,
- Did you create individual wrappers for each module, or one wrapper for LOAM as a whole?
- Did you replicate in some way the presence of ROS callback queues holding new messages (from the IMU, odometry, transforms, etc) with threading and buffers?
- Did you observe any noticeable impact on the performance/accuracy?
Thank you very much.
from loam_velodyne.
- I separated the ROS "transport" layer from each module from the underlying algorithm.
So forScanRegistration
I now have the algorithm classBasicScanRegistration
which depends only on PCL, and whichScanRegistration
derives from, though you could also use aggregation orBasicScanRegistration
directly (noprotected
members and very fewvirtual
functions).
This is done for each module and each is still built into an independent lib as before.
I kept the original interface as is (even where it is currently somewhat clunky and redundant). - The only ROS facility I needed to replace was using
std::chrono
instead ofros::Time
there rest remains in the ROS-using transport layer. - The code does not have any tests: not unit tests nor performance and qualitative tests - so it is hard to say for sure. Performance should be identical as I did not try to make any functional changes (up-to any bugs I may have introduced (or fixed)).
from loam_velodyne.
Hi @adishavit,
Thank you for your feedback.
This is the fork and branch to which I have been pushing my changes: https://github.com/YoshuaNava/loam/tree/detach_ros
In the last few days, I:
- Was able to detach LOAM from ROS, and build it like a standalone library, with depends on Eigen and PCL.
- Moved parameters that govern LOAM's execution to structs.
- Created some simple ROS nodes that forward new data to the scan registration, laser odometry, laser mapping and transform maintenance modules. The new loam_ros package employs ROS only for transporting the data between the nodes. Also, the LOAM params values can now be set via yaml files, which are given preference over the default params.
- Instead of using
std:chrono
, stored the time in seconds as a double. (this might not be the best solution, though)
Until now everything seems to be working. I have been testing one module at a time. I hope I can finish this and open a pull request soon. A lot of changes might be going in, so I'll divide it into pieces.
Note:
As a future enhancement, I was planning on further taking apart the ROS transport layer, as mvelas. He wrote structs that contain the inputs/outputs of each module, and is able to run it on KITTI without ROS.
However, I wonder if the tests performed by Zhang relied on ROS or not. Something I noticed in one of the Kaarta Contour videos on YouTube is that they do use rviz for real-life operation, which means that ROS is running behind the curtain.
from loam_velodyne.
@YoshuaNava : Would you be interested in seeing my refactoring?
I'll try to upload it by tomorrow.
from loam_velodyne.
Hey @adishavit,
That would be awesome! Please keep me updated
from loam_velodyne.
I just pushed it - you can see it here.
It's far from perfect - my goal was to get it to build on Windows so I could evaluate it in a non-ROS environment - which it does. So this is not the most that can/should be done.
Having another set of eyeballs on it would be a tremendous help.
Especially with documenting the LOAM code.
I'd also like to refactor the math to higher level things - but that's another issue.
Do feel free to add review comments, issues and questions.
I also made it a PR.
from loam_velodyne.
@adishavit
this repo can be tansplanted to windows, I've tested it, but the output trajectory is deformed
from loam_velodyne.
@sume-cn the error in my repo is produced because I didn't add the time stamp to the messages and that's quite important. It would help if someone could do that.
from loam_velodyne.
Related Issues (20)
- 2D lidar(one line) with ALOAM
- thanks @sysuzyc I already solved the problem: I was playing like this (pcap:=~/catkin_ws/data.pcap) and I read pcap files have to be played from the root like this: pcap:=/home/usuario/catkin_ws/data.pcap
- Can someone tell me where I can download the testing bag nsh_indoor_outdoor.bag? HOT 2
- Transformation data for robot_localization
- How can this loam build a completed map? HOT 1
- Some questions about system performance HOT 4
- No Point Cloud Showed in Rviz HOT 5
- Error transforming odometry 'Odometry' from frame '/camera_init' to frame 'camera_init' HOT 14
- Segmentation Fault on "multiScanRegistration" node HOT 5
- Questions about the interpolation of laser point. HOT 3
- VLP16 rosbag not longer avaliable HOT 3
- compute the curvature HOT 4
- Question about relSweepTime and _imuPositionShift HOT 1
- Questions about BasicLaserOdometry HOT 1
- Why only for velodyne? How about point cloud from realsense?
- memory buildup with outdoor lidar scan
- VLP-16 rosbag example link is broken
- VLP-16 rosbag example link is broken
- Build error: flann error? HOT 1
- Compatibility on ROS Noetic (Ubuntu 20.04)
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 loam_velodyne.