Michigan State University Alumn
Robotics | Sensor Fusion | CNCs | Speakers | Woodworking
This project forked from wh200720041/floam
Fast LOAM: Fast and Optimized Lidar Odometry And Mapping for indoor/outdoor localization (Lidar SLAM)
License: Other
need to use a template typename for the PointT so that we can use this package to output more than just PointXYZL (i.e. XYZI, XYZRGB, XYZRGBI, etc.)
Hey hi!
I see you stopped working on this project a while back, did you end up implementing the support for imaging LiDARs in the end?
right now the classic floam
package cannot work with imaging lidars.....make the base lidar class a template and implement two sub classes: imaging and scanning lidar, with room to add more if needed.
clean it up to make it more legible and easily understood
If you don't mind my asking, do you see any potential for GPU-acceleration floam, especially for sensors with higher point densities as VLP-16? I thought you may have a little more insight as the author of this rewrite.
In my understanding, the bottleneck is the Ceres Solver, not the feature extraction. Feature extraction could easily be parallelized IMO, but replacing Ceres with an GPU acclerated solver seems way more involved.
Cheers
clean it up and make it more ledgible
[ 88%] Building CXX object floam-0.1.0/CMakeFiles/floam_odom_node.dir/src/odom_estimation_node.cpp.o Requirement already satisfied: inject>=4.0 in /home/wangt/.local/lib/python3.6/site-packages (from -r /home/wangt/catkin_ws/src/mqtt_bridge/requirements.txt (line 1)) (4.3.1) Requirement already satisfied: msgpack-python>=0.4.8 in /home/wangt/.local/lib/python3.6/site-packages (from -r /home/wangt/catkin_ws/src/mqtt_bridge/requirements.txt (line 2)) (0.5.6) Requirement already satisfied: paho-mqtt>=1.2 in /home/wangt/.local/lib/python3.6/site-packages (from -r /home/wangt/catkin_ws/src/mqtt_bridge/requirements.txt (line 3)) (1.6.1) Requirement already satisfied: pymongo in /home/wangt/.local/lib/python3.6/site-packages (from -r /home/wangt/catkin_ws/src/mqtt_bridge/requirements.txt (line 4)) (4.1.1) [ 88%] Built target install_depends /home/wangt/catkin_ws/src/floam-0.1.0/src/lidar_scanner_node.cpp: In member function ‘void floam::lidar::ScanningLidarNode::handlePoints(const PointCloud2ConstPtr&)’: /home/wangt/catkin_ws/src/floam-0.1.0/src/lidar_scanner_node.cpp:137:25: error: ‘make_shared’ is not a member of ‘pcl’ auto edge_cond = pcl::make_shared<floam::lidar::GenericCondition<pcl::PointXYZL>>( ^~~~~~~~~~~ /home/wangt/catkin_ws/src/floam-0.1.0/src/lidar_scanner_node.cpp:137:25: note: suggested alternatives: In file included from /usr/include/c++/7/memory:81:0, from /usr/include/c++/7/thread:39, from /home/wangt/catkin_ws/src/floam-0.1.0/src/lidar_scanner_node.cpp:12: /usr/include/c++/7/bits/shared_ptr.h:703:5: note: ‘std::make_shared’ make_shared(_Args&&... __args) ^~~~~~~~~~~ In file included from /usr/include/boost/smart_ptr/make_shared.hpp:17:0, from /usr/include/boost/make_shared.hpp:14, from /opt/ros/melodic/include/ros/forwards.h:38, from /opt/ros/melodic/include/ros/common.h:37, from /opt/ros/melodic/include/ros/ros.h:43, from /home/wangt/catkin_ws/src/floam-0.1.0/src/lidar_scanner_node.cpp:16: /usr/include/boost/smart_ptr/make_shared_array.hpp:41:1: note: ‘boost::make_shared’ make_shared(std::size_t size, ^~~~~~~~~~~ In file included from /usr/include/c++/7/memory:81:0, from /usr/include/c++/7/thread:39, from /home/wangt/catkin_ws/src/floam-0.1.0/src/lidar_scanner_node.cpp:12: /usr/include/c++/7/bits/shared_ptr.h:703:5: note: ‘std::make_shared’ make_shared(_Args&&... __args) ^~~~~~~~~~~ /home/wangt/catkin_ws/src/floam-0.1.0/src/lidar_scanner_node.cpp:137:82: error: expected primary-expression before ‘>’ token auto edge_cond = pcl::make_shared<floam::lidar::GenericCondition<pcl::PointXYZL>>( ^~ /home/wangt/catkin_ws/src/floam-0.1.0/src/lidar_scanner_node.cpp:143:28: error: ‘make_shared’ is not a member of ‘pcl’ auto surface_cond = pcl::make_shared<floam::lidar::GenericCondition<pcl::PointXYZL>>( ^~~~~~~~~~~ /home/wangt/catkin_ws/src/floam-0.1.0/src/lidar_scanner_node.cpp:143:28: note: suggested alternatives: In file included from /usr/include/c++/7/memory:81:0, from /usr/include/c++/7/thread:39, from /home/wangt/catkin_ws/src/floam-0.1.0/src/lidar_scanner_node.cpp:12: /usr/include/c++/7/bits/shared_ptr.h:703:5: note: ‘std::make_shared’ make_shared(_Args&&... __args) ^~~~~~~~~~~ In file included from /usr/include/boost/smart_ptr/make_shared.hpp:17:0, from /usr/include/boost/make_shared.hpp:14, from /opt/ros/melodic/include/ros/forwards.h:38, from /opt/ros/melodic/include/ros/common.h:37, from /opt/ros/melodic/include/ros/ros.h:43, from /home/wangt/catkin_ws/src/floam-0.1.0/src/lidar_scanner_node.cpp:16: /usr/include/boost/smart_ptr/make_shared_array.hpp:41:1: note: ‘boost::make_shared’ make_shared(std::size_t size, ^~~~~~~~~~~ In file included from /usr/include/c++/7/memory:81:0, from /usr/include/c++/7/thread:39, from /home/wangt/catkin_ws/src/floam-0.1.0/src/lidar_scanner_node.cpp:12: /usr/include/c++/7/bits/shared_ptr.h:703:5: note: ‘std::make_shared’ make_shared(_Args&&... __args) ^~~~~~~~~~~ /home/wangt/catkin_ws/src/floam-0.1.0/src/lidar_scanner_node.cpp:143:85: error: expected primary-expression before ‘>’ token auto surface_cond = pcl::make_shared<floam::lidar::GenericCondition<pcl::PointXYZL>>( ^~ /home/wangt/catkin_ws/src/floam-0.1.0/src/odom_estimation_node.cpp: In member function ‘void floam::odom::OdomEstimationNode::handleClouds(const PointCloud2ConstPtr&, const PointCloud2ConstPtr&)’: /home/wangt/catkin_ws/src/floam-0.1.0/src/odom_estimation_node.cpp:102:10: error: ‘std::chrono’ has not been declared std::chrono::time_point<std::chrono::system_clock> start, end; ^~~~~~ /home/wangt/catkin_ws/src/floam-0.1.0/src/odom_estimation_node.cpp:102:34: error: ‘std::chrono’ has not been declared std::chrono::time_point<std::chrono::system_clock> start, end; ^~~~~~ /home/wangt/catkin_ws/src/floam-0.1.0/src/odom_estimation_node.cpp:102:56: error: ‘start’ was not declared in this scope std::chrono::time_point<std::chrono::system_clock> start, end; ^~~~~ /home/wangt/catkin_ws/src/floam-0.1.0/src/odom_estimation_node.cpp:102:56: note: suggested alternative: In file included from /opt/ros/melodic/include/ros/node_handle.h:47:0, from /opt/ros/melodic/include/ros/ros.h:45, from /home/wangt/catkin_ws/src/floam-0.1.0/src/odom_estimation_node.cpp:9: /opt/ros/melodic/include/ros/init.h:184:18: note: ‘ros::start’ ROSCPP_DECL void start(); ^~~~~ /home/wangt/catkin_ws/src/floam-0.1.0/src/odom_estimation_node.cpp:102:63: error: ‘end’ was not declared in this scope std::chrono::time_point<std::chrono::system_clock> start, end; ^~~ /home/wangt/catkin_ws/src/floam-0.1.0/src/odom_estimation_node.cpp:102:63: note: suggested alternatives: In file included from /usr/include/c++/7/string:51:0, from /opt/ros/melodic/include/ros/platform.h:38, from /opt/ros/melodic/include/ros/time.h:53, from /opt/ros/melodic/include/ros/ros.h:38, from /home/wangt/catkin_ws/src/floam-0.1.0/src/odom_estimation_node.cpp:9: /usr/include/c++/7/bits/range_access.h:107:37: note: ‘std::end’ template<typename _Tp> const _Tp* end(const valarray<_Tp>&); ^~~ In file included from /usr/include/boost/range/functions.hpp:19:0, from /usr/include/boost/range/iterator_range_core.hpp:38, from /usr/include/boost/lexical_cast.hpp:30, from /opt/ros/melodic/include/ros/transport_hints.h:34, from /opt/ros/melodic/include/ros/subscribe_options.h:33, from /opt/ros/melodic/include/ros/node_handle.h:42, from /opt/ros/melodic/include/ros/ros.h:45, from /home/wangt/catkin_ws/src/floam-0.1.0/src/odom_estimation_node.cpp:9: /usr/include/boost/range/end.hpp:100:61: note: ‘boost::range_adl_barrier::end’ inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type end( const T& r ) ^~~ In file included from /usr/include/boost/mpl/list/aux_/begin_end.hpp:17:0, from /usr/include/boost/mpl/list/list0.hpp:27, from /usr/include/boost/mpl/list/list10.hpp:18, from /usr/include/boost/mpl/list/list20.hpp:18, from /usr/include/boost/mpl/list.hpp:36, from /usr/include/boost/math/policies/policy.hpp:9, from /usr/include/boost/math/policies/error_handling.hpp:21, from /usr/include/boost/math/special_functions/round.hpp:14, from /opt/ros/melodic/include/ros/time.h:58, from /opt/ros/melodic/include/ros/ros.h:38, from /home/wangt/catkin_ws/src/floam-0.1.0/src/odom_estimation_node.cpp:9: /usr/include/boost/mpl/begin_end_fwd.hpp:23:38: note: ‘boost::mpl::end’ template< typename Sequence > struct end; ^~~ In file included from /usr/include/boost/range/functions.hpp:19:0, from /usr/include/boost/range/iterator_range_core.hpp:38, from /usr/include/boost/lexical_cast.hpp:30, from /opt/ros/melodic/include/ros/transport_hints.h:34, from /opt/ros/melodic/include/ros/subscribe_options.h:33, from /opt/ros/melodic/include/ros/node_handle.h:42, from /opt/ros/melodic/include/ros/ros.h:45, from /home/wangt/catkin_ws/src/floam-0.1.0/src/odom_estimation_node.cpp:9: /usr/include/boost/range/end.hpp:100:61: note: ‘boost::range_adl_barrier::end’ inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type end( const T& r ) ^~~ In file included from /usr/include/pcl-1.8/pcl/conversions.h:56:0, from /opt/ros/melodic/include/pcl_conversions/pcl_conversions.h:44, from /home/wangt/catkin_ws/src/floam-0.1.0/src/odom_estimation_node.cpp:17: /usr/include/boost/foreach.hpp:729:1: note: ‘boost::foreach_detail_::end’ end(auto_any_t, type2type<T *, C> *, boost::mpl::true_ *) // null-terminated C-style strings ^~~ In file included from /usr/include/boost/filesystem.hpp:17:0, from /usr/include/pcl-1.8/pcl/io/boost.h:53, from /usr/include/pcl-1.8/pcl/io/file_io.h:43, from /usr/include/pcl-1.8/pcl/io/pcd_io.h:44, from /opt/ros/melodic/include/pcl_conversions/pcl_conversions.h:70, from /home/wangt/catkin_ws/src/floam-0.1.0/src/odom_estimation_node.cpp:17: /usr/include/boost/filesystem/operations.hpp:1309:32: note: ‘boost::filesystem::end’ recursive_directory_iterator end(const recursive_directory_iterator&) BOOST_NOEXCEPT ^~~ In file included from /usr/include/boost/fusion/container/list/cons.hpp:17:0, from /usr/include/boost/fusion/iterator/segmented_iterator.hpp:14, from /usr/include/boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp:12, from /usr/include/boost/fusion/sequence/intrinsic/begin.hpp:18, from /usr/include/boost/fusion/algorithm/query/detail/find_if.hpp:22, from /usr/include/boost/fusion/algorithm/query/find.hpp:13, from /usr/include/boost/fusion/sequence/intrinsic/has_key.hpp:14, from /usr/include/boost/fusion/sequence/intrinsic/at_key.hpp:14, from /usr/include/pcl-1.8/pcl/filters/boost.h:56, from /usr/include/pcl-1.8/pcl/filters/filter.h:46, from /home/wangt/catkin_ws/src/floam-0.1.0/include/floam/odom_estimation.hpp:19, from /home/wangt/catkin_ws/src/floam-0.1.0/include/floam/odom_estimation_node.hpp:23, from /home/wangt/catkin_ws/src/floam-0.1.0/src/odom_estimation_node.cpp:22: /usr/include/boost/fusion/sequence/intrinsic/end.hpp:92:5: note: ‘boost::fusion::end’ end(Sequence const& seq) ^~~ In file included from /usr/include/boost/fusion/sequence/intrinsic/at_key.hpp:13:0, from /usr/include/pcl-1.8/pcl/filters/boost.h:56, from /usr/include/pcl-1.8/pcl/filters/filter.h:46, from /home/wangt/catkin_ws/src/floam-0.1.0/include/floam/odom_estimation.hpp:19, from /home/wangt/catkin_ws/src/floam-0.1.0/include/floam/odom_estimation_node.hpp:23, from /home/wangt/catkin_ws/src/floam-0.1.0/src/odom_estimation_node.cpp:22: /usr/include/boost/fusion/sequence/intrinsic_fwd.hpp:68:16: note: ‘boost::fusion::result_of::end’ struct end; ^~~ /home/wangt/catkin_ws/src/floam-0.1.0/src/odom_estimation_node.cpp:103:18: error: ‘std::chrono’ has not been declared start = std::chrono::system_clock::now(); ^~~~~~ /home/wangt/catkin_ws/src/floam-0.1.0/src/odom_estimation_node.cpp:105:16: error: ‘std::chrono’ has not been declared end = std::chrono::system_clock::now(); ^~~~~~ /home/wangt/catkin_ws/src/floam-0.1.0/src/odom_estimation_node.cpp:107:10: error: ‘std::chrono’ has not been declared std::chrono::duration<float> elapsed_seconds = end - start; ^~~~~~ /home/wangt/catkin_ws/src/floam-0.1.0/src/odom_estimation_node.cpp:107:27: error: expected primary-expression before ‘float’ std::chrono::duration<float> elapsed_seconds = end - start; ^~~~~ /home/wangt/catkin_ws/src/floam-0.1.0/src/odom_estimation_node.cpp:109:23: error: ‘elapsed_seconds’ was not declared in this scope float time_temp = elapsed_seconds.count() * 1000; ^~~~~~~~~~~~~~~ floam-0.1.0/CMakeFiles/floam_lidar_node.dir/build.make:86: recipe for target 'floam-0.1.0/CMakeFiles/floam_lidar_node.dir/src/lidar_scanner_node.cpp.o' failed make[2]: *** [floam-0.1.0/CMakeFiles/floam_lidar_node.dir/src/lidar_scanner_node.cpp.o] Error 1 CMakeFiles/Makefile2:3172: recipe for target 'floam-0.1.0/CMakeFiles/floam_lidar_node.dir/all' failed make[1]: *** [floam-0.1.0/CMakeFiles/floam_lidar_node.dir/all] Error 2 make[1]: *** 正在等待未完成的任务.... floam-0.1.0/CMakeFiles/floam_odom_node.dir/build.make:62: recipe for target 'floam-0.1.0/CMakeFiles/floam_odom_node.dir/src/odom_estimation_node.cpp.o' failed make[2]: *** [floam-0.1.0/CMakeFiles/floam_odom_node.dir/src/odom_estimation_node.cpp.o] Error 1 CMakeFiles/Makefile2:1845: recipe for target 'floam-0.1.0/CMakeFiles/floam_odom_node.dir/all' failed make[1]: *** [floam-0.1.0/CMakeFiles/floam_odom_node.dir/all] Error 2 Makefile:140: recipe for target 'all' failed make: *** [all] Error 2
migrate this package to ROS2
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.