#include #include #include #include #include #include "log.h" #include "oh_my_loam.h" void PointCloudHandler(const sensor_msgs::PointCloud2ConstPtr& msg, oh_my_loam::OhMyLoam* const slam); int main(int argc, char* argv[]) { // configurations YAML::Node config = YAML::LoadFile("./config/config.yaml"); // logging g3::InitG3Logging("oh_my_loam", ".log"); AWARN << config["lidar"].as(); // SLAM system oh_my_loam::OhMyLoam slam; slam.Init(config["feature_points_extractor_config"]); // ros ros::init(argc, argv, "oh_my_loam"); ros::NodeHandle nh; ros::Subscriber sub_point_cloud = nh.subscribe( "/velodyne_points", 100, std::bind(PointCloudHandler, std::placeholders::_1, &slam)); ros::spin(); return 0; } void PointCloudHandler(const sensor_msgs::PointCloud2ConstPtr& msg, oh_my_loam::OhMyLoam* const slam) { oh_my_loam::PointCloud cloud; pcl::fromROSMsg(*msg, cloud); AINFO << "Point num = " << cloud.size() << ", ts = " << msg->header.stamp.toSec(); slam->Run(cloud, 0.0); }