GithubHelp home page GithubHelp logo

pjlab-adg / livox-mapping Goto Github PK

View Code? Open in Web Editor NEW
442.0 12.0 103.0 97.04 MB

An all-in-one and ready-to-use LiDAR-inertial odometry system for Livox LiDAR

License: BSD 3-Clause "New" or "Revised" License

CMake 3.86% C++ 93.04% C 0.32% Python 2.78%
lidar mapping slam

livox-mapping's Introduction

Livox-Mapping

This repository implements an all-in-one and ready-to-use LiDAR-inertial odometry system for Livox LiDAR. The system is developed based on the open-source odometry framework LIO-Livox to get the odometry information in our front-end part. Besides, we have added more constraints and features to enhance the mapping performance.

At the same time, we provide you one simple lidar-map based localization module in Livox-Localization.

Livox_Mapping

1. Features

We only describe the new features added to our baseline framework LIO-Livox. For the amazing features developed by LIO-Livox, please check their own repository.

1.1 Loop Closure Detection

In the LCD part, we use the ScanContext to perform the loop closure detection and then add the loop closure constrains to the optimization solver. With the LCD module, we are able to close the gap and compensate the accumulated translation error of the scan matching in large environments.

with Loop Closure without Loop Closure
with_sc without_sc

1.2 Ground Constrain

To avoid the drifting alongside the Z-axis, the general problem occurred in LOAM (LiDAR Odometry and Mapping) algorithms, we add the the ground constraints ( the plane detection is done by LIO-Livox) to the optimization solver as hdl_graph_slam.

with Ground Constrain without Ground Constrain
with_ground wo_ground

1.3 Map Merging from Multiple Rosbags

In practice, we usually collect environment data in multiple times, thus we need one functionality to fuse the map information from multiple rosbags. In this implementation, we use GPS information (optionally) to convert LiDAR scans collected in different time into one coordinate system and then use ScanContext and ICP to find fine matching result. At the same time, we maintain one lifelong optimization vector in our backend to store the previous key-frames. Through this approach, we are able to connect scans in different collections.

bags

1.4 GPS Factor

We also offer the GPS factor to aid the mapping process. This is only one optional choice. Without the GPS information, the whole system could also work.

1.5 Compatible with Mapping Editor interactive_slam

interactive_slam is an open-source 3D LiDAR-based mapping framework. We add one functionality to output the mapping result in the format compatible with interactive_slam, by this, you can easily edit your mapping result and get one more accurate LiDAR map. At the same time, if you have one camera alongside the Livox, we also offer one dummy moving objects removal function with aid of mmdection and easy LiDAR points projection.

Represented in interactive_slam Moving Object Removal
interact_slam image-20211223215338497

2. Prerequisites

2.1 Dependencies for baseline

Our framework is developed based on the open-source framework LIO-Livox for odometry part, ScanContext for loop closure part and interactive_slam for map-editing part (if you need), so technically, please refer to these repos for detailed information.

2.2 General Dependencies

2.3 Docker

For one quick and convenient test, we are offering you a Docker Image with DockerHub.

Please check the DockerHub Link for more information.

  • Pull the docker image.
docker pull siyuanhuang95/livox_slam:release
  • Execute the docker run command. You can use -v to bind the docker to your local machine as you wish.
docker run --gpus all -it -p 3316:22 --device=/dev/dri --group-add video --volume=/tmp/.X11-unix:/tmp/.X11-unix  --env="DISPLAY=$DISPLAY" siyuanhuang95/livox_slam:release /bin/bash
  • To allow the RVIZ in Docker to run in the host PC. In the local mashine:
xhost +

3. Build

  • Clone the repository and catkin_make
cd ~/catkin_ws/src
git clone https://github.com/PJLab-ADG/Livox-Mapping.git
cd ..
catkin_make
  • Remember to source the livox_ros_driver before build (follow livox_ros_driver)

4. Run

4.1 Dataset Requirements

Before running the mapping functionality, please make sure the sensor data are published to the correct rostopic.

  • Livox LiDAR: /livox/lidar
  • IMU: /livox/imu
  • GPS: /localization/navstate_info

4.2 Run Mapping Function

  • In one terminal, launch the mapping thread
# If you don't have the GPS data
cd ~/catkin_ws
source devel/setup.bash
roslaunch livox_mapping livox_mapping.launch save_path:="PATH_TO_SAVE_SLAM_POSE_RESULT"
# If you have the GPS data
cd ~/catkin_ws
source devel/setup.bash
roslaunch livox_mapping livox_mapping.launch useRTK:="true" save_path:="PATH_TO_SAVE_SLAM_POSE_RESULT"
  • In another terminal, launch the odometry thread
cd ~/catkin_ws
source devel/setup.bash
roslaunch livox_odometry livox_odometry.launch save_path:="PATH_TO_SAVE_ODOM_RESULT_in_txt"
  • In another terminal, play the rosbag
rosbag play YOUR_ROSBAG.bag

4.3 Multiple Bags Merge

If you have more rosbags collected in one same area, you can restart odometry thread at the end of the first odometry thread run and play the next package.

  • In the terminal for odometry thread, use Ctrl+C to shut down the old odometry thread.
  • In the terminal for odometry thread, use the command below to start one new odometry thread
roslaunch livox_odometry livox_odometry.launch save_path:="PATH_TO_SAVE_ODOM_RESULT_in_txt"
  • Play one new rosbag.

5. Datasets

For the ease of usage, we are providing several test rosbags collected in one industrial park located in Shanghai. Please be aware that all codes and datasets included in this repository are for academic research purposes only. Other usages are NOT encouraged, and it is at your own risk. If You have any concerns including privacy, please contact us by sending an e-mail to [email protected]

The dataset can be downloaded through the Baidu Netdisk with:

Link:https://pan.baidu.com/s/17ElBOWiFVr68975FtXY8ZA 
Password:pjop

6. Acknowledgments

Thanks for the authors of LIO-Livox, ScanContextFast-LIO-SLAM and interactive_slam.

Contact

livox-mapping's People

Contributors

kazuki0824 avatar siyuanhuang95 avatar zxd123 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

livox-mapping's Issues

ubuntu 20.04 bug fixed

Thanks for your work.

I used the code under ubuntu 20.04, which meets two bugs,

  1. scans crash
    int FreeSeg(float *fPoints,int *pLabel,int pointNum)
    adds return value;
    int PCSeg::DoSeg(int *pLabel1, float* fPoints1, int pointNum)
    adds return value;
  2. pose estimation crash
    double ComputeError(const Eigen::Matrix4d& pose)
    adds return error;

Timestamp problem

laserCloudMsg.header.stamp.fromNSec(msg->timebase+msg->points.back().offset_time);

It seems that this line will introduce problem if the lidar is time synced with computer with ptp.

when pose estimation try to fetch imu message from queue the time stamp will be not matched.

[ INFO] [1695366188.427859228]: imu back time: 1678001245.552871, imu front time: 1678001244.927890, request start time: 136.299666, request end time: 136.399515

lidar is synced with computer follow the below link

https://github.com/Livox-SDK/Livox-SDK/wiki/livox-device-time-synchronization-manual

doesn't need to set the parameters of imu?

Usually for LIO or tightly-coupled inertial slam system, IMU parameters like acc covariance and bias should be set. But I didn't see those in config file. I'm wondering why?

But still, thanks for great work.

PoseEstimation node crash

Thanks for your great work. When I try your code with the bag file from my Lidar (Mid 40). I met this problem:
ground_cloud size: 6992 [get_plane_coeffs]: 1 [get_plane_coeffs]: 2 pointNum = 10000 gcnt = 456 gnum = 456 pointNum = 10000 gcnt = 461 gnum = 461 [PoseEstimation-3] process has died [pid 15982, exit code -11, cmd /home/lacie/workspace/fusion_ws/devel/lib/livox_odometry/PoseEstimation __name:=PoseEstimation __log:=/home/lacie/.ros/log/38ce41e8-0ebc-11ee-914f-b79cd7953d6e/PoseEstimation-3.log]. log file: /home/lacie/.ros/log/38ce41e8-0ebc-11ee-914f-b79cd7953d6e/PoseEstimation-3*.log pointNum = 10000 gcnt = 414 gnum = 414 pointNum = 10000 gcnt = 451 gnum = 451 pointNum = 10000 gcnt = 437 gnum = 437 pointNum = 10000 gcnt = 426 gnum = 426 pointNum = 10000 gcnt = 467 gnum = 467 pointNum = 10000 gcnt = 412 gnum = 412 pointNum = 10000 gcnt = 457 gnum = 457 pointNum = 10000 gcnt = 426 gnum = 426 pointNum = 10000 gcnt = 413 gnum = 413

The terminal of livox_mapping is fine but nothing in rviz.

Are you have any suggestions for me?

Moreover, I have confused about which version of ceres, because I built successful your source code with ceres 1.14 but cannot build with ceres 2.0.0 like this

Thanks!

GPS topic

Hello,

Livox_Mapping topics are

Livox LiDAR: /livox/lidar
IMU: /livox/imu
GPS: /localization/navstate_info

my topics are

Livox LiDAR: /livox/lidar
IMU: /imu/data (Type: sensor_msgs/Imu)
GPS: /gnss (Type: sensor_msg/NavSatFix)

i rename imu topic from /imu/data to /livox/imu using rosrun rosbag topic_renamer.py

but i cant do the same for GPS cause it has different msg type. Is there any way to run the package with my topics ? Thank you.

RTK factor

``

            mtxPosegraph.lock();
            {
                // odom factor
                gtSAMgraph.add(gtsam::BetweenFactor<gtsam::Pose3>(prev_node_idx, curr_node_idx, poseFrom.between(poseTo), odomNoise));

                // // rtk factor 
                // if(hasRTKforThisKF) {
                //     gtsam::Pose3 poseRTK = Pose6DtoGTSAMPose3(currRTK);
                //     gtSAMgraph.add(gtsam::PriorFactor<gtsam::Pose3>(curr_node_idx, poseRTK, RTKNoise));
                //     cout << "RTK factor added at node " << curr_node_idx << endl;
                // }
                initialEstimate.insert(curr_node_idx, poseTo);                
                // runISAM2opt();
            }
            mtxPosegraph.unlock();

``

我看到你在上面代码中将因子图优化的rtk部分给注释掉了,请问是什么原因呢?
如果我想直接用使用GNSS数据进行因子图优化,可以直接把这些注释给去掉吗?还是需要修改其他的代码?

replacing Livox_lio with FAST_LIO_2

Hi
Thank you for putting this together.

We are using Mid-70 which we find working best with FAST_LIO_2. I was thinking of replacing LIO_LIVOX with FAST_LIO_2 for LIO and use a separate node to estimate ground plane (perhaps the one from hdl_graph_slam). However, I couldn't find where the ground constraint is added and how does SC_PGO receives the ground plane information (via topic?) Any pointers/hints would be much appreciated.

Regards,
Sukhraj Klair

use for livox mid70

Hi I am using livox mid70 and a extern IMU. the problem is that lidarFeatureExtractor node always output logs: too few ground points. and the other nodes seem run nothing. I have change the horizon_config.yaml to mid70.yaml like this:

`%YAML:1.0

switches

Lidar_Type: 0 # 0-horizon
Used_Line: 1 # lines used for lio, set to 1~6
Feature_Mode: 0 # 0(false) or 1(true)
NumCurvSize: 2
DistanceFaraway: 100 # [m] <DistanceFaraway near / >DistanceFaraway far
NumFlat: 3 # nums of one part's flat feature
PartNum: 150 # nums of one scan's parts
FlatThreshold: 0.02 # cloud curvature threshold of flat feature
BreakCornerDis: 1 # break distance of break points
LidarNearestDis: 0.50 # if(depth < LidarNearestDis) do not use this point
KdTreeCornerOutlierDis: 0.2 # corner filter threshold
Use_seg: 1 # use segment algorithm
map_skip_frame: 2`

how can I modify the params to make the project can work with mid 70?

Catkin_make error - Ubuntu 20.04 or 22.04 support

Hi know Ubuntu 20.04 isn't officially tested / supported, but given that we are now on 22.04 is there any update for support of current OS?

Below is my problem I've encountered, is this simply linked to Ubuntu 20.04 or actually other reason ? - Thanks

/usr/local/include/ceres/internal/variadic_evaluate.h:107:45: required from ‘bool ceres::internal::VariadicEvaluate(const Functor&, const T* const*, T*) [with ParameterDims = ceres::internal::ParameterDims<false, 6>; Functor = Cost_NonFeature_ICP; T = double]’
/usr/local/include/ceres/autodiff_cost_function.h:208:55: required from ‘bool ceres::AutoDiffCostFunction<CostFunctor, kNumResiduals, Ns>::Evaluate(const double* const*, double*, double**) const [with CostFunctor = Cost_NonFeature_ICP; int kNumResiduals = 1; int ...Ns = {6}]’
/usr/local/include/ceres/autodiff_cost_function.h:201:8: required from here
/usr/local/include/ceres/internal/variadic_evaluate.h:79:65: error: ‘ParameterBlockIndices’ was not declared in this scope
/usr/local/include/ceres/internal/variadic_evaluate.h: In instantiation of ‘bool ceres::internal::VariadicEvaluateImpl(const Functor&, const T* const*, T*, const void*) [with ParameterDims = ceres::internal::ParameterDims<false, 6>; Functor = Cost_NavState_IMU_Plan_Vec; T = double]’:
/usr/local/include/ceres/internal/variadic_evaluate.h:107:45: required from ‘bool ceres::internal::VariadicEvaluate(const Functor&, const T* const*, T*) [with ParameterDims = ceres::internal::ParameterDims<false, 6>; Functor = Cost_NavState_IMU_Plan_Vec; T = double]’
/usr/local/include/ceres/autodiff_cost_function.h:208:55: required from ‘bool ceres::AutoDiffCostFunction<CostFunctor, kNumResiduals, Ns>::Evaluate(const double* const*, double*, double**) const [with CostFunctor = Cost_NavState_IMU_Plan_Vec; int kNumResiduals = 3; int ...Ns = {6}]’
/usr/local/include/ceres/autodiff_cost_function.h:201:8: required from here
/usr/local/include/ceres/internal/variadic_evaluate.h:79:65: error: ‘ParameterBlockIndices’ was not declared in this scope
/usr/local/include/ceres/internal/variadic_evaluate.h: In instantiation of ‘bool ceres::internal::VariadicEvaluateImpl(const Functor&, const T* const*, T*, const void*) [with ParameterDims = ceres::internal::ParameterDims<false, 6>; Functor = Cost_NavState_IMU_Plan; T = double]’:
/usr/local/include/ceres/internal/variadic_evaluate.h:107:45: required from ‘bool ceres::internal::VariadicEvaluate(const Functor&, const T* const*, T*) [with ParameterDims = ceres::internal::ParameterDims<false, 6>; Functor = Cost_NavState_IMU_Plan; T = double]’
/usr/local/include/ceres/autodiff_cost_function.h:208:55: required from ‘bool ceres::AutoDiffCostFunction<CostFunctor, kNumResiduals, Ns>::Evaluate(const double* const*, double*, double**) const [with CostFunctor = Cost_NavState_IMU_Plan; int kNumResiduals = 1; int ...Ns = {6}]’
/usr/local/include/ceres/autodiff_cost_function.h:201:8: required from here
/usr/local/include/ceres/internal/variadic_evaluate.h:79:65: error: ‘ParameterBlockIndices’ was not declared in this scope
/usr/local/include/ceres/internal/variadic_evaluate.h: In instantiation of ‘bool ceres::internal::VariadicEvaluateImpl(const Functor&, const T* const*, T*, const void*) [with ParameterDims = ceres::internal::ParameterDims<false, 6>; Functor = Cost_NavState_IMU_Line; T = double]’:
/usr/local/include/ceres/internal/variadic_evaluate.h:107:45: required from ‘bool ceres::internal::VariadicEvaluate(const Functor&, const T* const*, T*) [with ParameterDims = ceres::internal::ParameterDims<false, 6>; Functor = Cost_NavState_IMU_Line; T = double]’
/usr/local/include/ceres/autodiff_cost_function.h:208:55: required from ‘bool ceres::AutoDiffCostFunction<CostFunctor, kNumResiduals, Ns>::Evaluate(const double* const*, double*, double**) const [with CostFunctor = Cost_NavState_IMU_Line; int kNumResiduals = 1; int ...Ns = {6}]’
/usr/local/include/ceres/autodiff_cost_function.h:201:8: required from here
/usr/local/include/ceres/internal/variadic_evaluate.h:79:65: error: ‘ParameterBlockIndices’ was not declared in this scope
/usr/local/include/ceres/internal/variadic_evaluate.h: In instantiation of ‘bool ceres::internal::VariadicEvaluateImpl(const Functor&, const T* const*, T*, const void*) [with ParameterDims = ceres::internal::ParameterDims<false, 6, 9, 6, 9>; Functor = Cost_NavState_PRV_Bias; T = double]’:
/usr/local/include/ceres/internal/variadic_evaluate.h:107:45: required from ‘bool ceres::internal::VariadicEvaluate(const Functor&, const T* const*, T*) [with ParameterDims = ceres::internal::ParameterDims<false, 6, 9, 6, 9>; Functor = Cost_NavState_PRV_Bias; T = double]’
/usr/local/include/ceres/autodiff_cost_function.h:208:55: required from ‘bool ceres::AutoDiffCostFunction<CostFunctor, kNumResiduals, Ns>::Evaluate(const double* const*, double*, double**) const [with CostFunctor = Cost_NavState_PRV_Bias; int kNumResiduals = 15; int ...Ns = {6, 9, 6, 9}]’
/usr/local/include/ceres/autodiff_cost_function.h:201:8: required from here
/usr/local/include/ceres/internal/variadic_evaluate.h:79:65: error: ‘ParameterBlockIndices’ was not declared in this scope
/usr/local/include/ceres/internal/variadic_evaluate.h: In instantiation of ‘bool ceres::internal::VariadicEvaluateImpl(const Functor&, const T* const*, T*, const void*) [with ParameterDims = ceres::internal::ParameterDims<false, 6>; Functor = Cost_NavState_PR_Ground; T = double]’:
/usr/local/include/ceres/internal/variadic_evaluate.h:107:45: required from ‘bool ceres::internal::VariadicEvaluate(const Functor&, const T* const*, T*) [with ParameterDims = ceres::internal::ParameterDims<false, 6>; Functor = Cost_NavState_PR_Ground; T = double]’
/usr/local/include/ceres/autodiff_cost_function.h:208:55: required from ‘bool ceres::AutoDiffCostFunction<CostFunctor, kNumResiduals, Ns>::Evaluate(const double* const*, double*, double**) const [with CostFunctor = Cost_NavState_PR_Ground; int kNumResiduals = 3; int ...Ns = {6}]’
/usr/local/include/ceres/autodiff_cost_function.h:201:8: required from here
/usr/local/include/ceres/internal/variadic_evaluate.h:79:65: error: ‘ParameterBlockIndices’ was not declared in this scope
In file included from /usr/include/pcl-1.10/pcl/kdtree/kdtree.h:44,
from /usr/include/pcl-1.10/pcl/kdtree/kdtree_flann.h:43,
from /home/karl/catkin_ws/src/Livox-Mapping/LIO-Livox/include/MapManager/Map_Manager.h:3,
from /home/karl/catkin_ws/src/Livox-Mapping/LIO-Livox/include/Estimator/Estimator.h:19,
from /home/karl/catkin_ws/src/Livox-Mapping/LIO-Livox/src/lio/Estimator.cpp:1:
/usr/include/pcl-1.10/pcl/point_representation.h: In instantiation of ‘void pcl::DefaultFeatureRepresentation::NdCopyPointFunctor::operator()() [with Key = pcl::fields::f1; PointDefault = pcl::PPFSignature]’:
/usr/include/pcl-1.10/pcl/for_each_type.h:82:7: required from ‘static void pcl::for_each_type_impl::execute(F) [with Iterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 0>; LastIterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 5>; F = pcl::DefaultFeatureRepresentationpcl::PPFSignature::NdCopyPointFunctor]’
/usr/include/pcl-1.10/pcl/for_each_type.h:98:92: required from ‘void pcl::for_each_type(F) [with Sequence = boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>; F = pcl::DefaultFeatureRepresentationpcl::PPFSignature::NdCopyPointFunctor]’
/usr/include/pcl-1.10/pcl/point_representation.h:310:40: required from ‘void pcl::DefaultFeatureRepresentation::copyToFloatArray(const PointDefault&, float*) const [with PointDefault = pcl::PPFSignature]’
/usr/include/pcl-1.10/pcl/point_representation.h:308:7: required from here
/usr/include/pcl-1.10/pcl/point_representation.h:252:48: error: the value of ‘NrDims’ is not usable in a constant expression
252 | Helper<Key, FieldT, NrDims>::copyPoint (p1_, p2_, f_idx_);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
/usr/include/pcl-1.10/pcl/point_representation.h:251:19: note: ‘NrDims’ was not initialized with a constant expression
251 | const int NrDims = pcl::traits::datatype<PointDefault, Key>::size;
| ^~~~~~
/usr/include/pcl-1.10/pcl/point_representation.h:252:48: note: in template argument for type ‘int’
252 | Helper<Key, FieldT, NrDims>::copyPoint (p1_, p2_, f_idx_);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
/usr/include/pcl-1.10/pcl/point_representation.h: In instantiation of ‘void pcl::DefaultFeatureRepresentation::NdCopyPointFunctor::operator()() [with Key = pcl::fields::f2; PointDefault = pcl::PPFSignature]’:
/usr/include/pcl-1.10/pcl/for_each_type.h:82:7: required from ‘static void pcl::for_each_type_impl::execute(F) [with Iterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 1>; LastIterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 5>; F = pcl::DefaultFeatureRepresentationpcl::PPFSignature::NdCopyPointFunctor]’
/usr/include/pcl-1.10/pcl/for_each_type.h:87:51: required from ‘static void pcl::for_each_type_impl::execute(F) [with Iterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 0>; LastIterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 5>; F = pcl::DefaultFeatureRepresentationpcl::PPFSignature::NdCopyPointFunctor]’
/usr/include/pcl-1.10/pcl/for_each_type.h:98:92: required from ‘void pcl::for_each_type(F) [with Sequence = boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>; F = pcl::DefaultFeatureRepresentationpcl::PPFSignature::NdCopyPointFunctor]’
/usr/include/pcl-1.10/pcl/point_representation.h:310:40: required from ‘void pcl::DefaultFeatureRepresentation::copyToFloatArray(const PointDefault&, float*) const [with PointDefault = pcl::PPFSignature]’
/usr/include/pcl-1.10/pcl/point_representation.h:308:7: required from here
/usr/include/pcl-1.10/pcl/point_representation.h:252:48: error: the value of ‘NrDims’ is not usable in a constant expression
/usr/include/pcl-1.10/pcl/point_representation.h:251:19: note: ‘NrDims’ was not initialized with a constant expression
251 | const int NrDims = pcl::traits::datatype<PointDefault, Key>::size;
| ^~~~~~
/usr/include/pcl-1.10/pcl/point_representation.h:252:48: note: in template argument for type ‘int’
252 | Helper<Key, FieldT, NrDims>::copyPoint (p1_, p2_, f_idx_);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
/usr/include/pcl-1.10/pcl/point_representation.h: In instantiation of ‘void pcl::DefaultFeatureRepresentation::NdCopyPointFunctor::operator()() [with Key = pcl::fields::f3; PointDefault = pcl::PPFSignature]’:
/usr/include/pcl-1.10/pcl/for_each_type.h:87:51: recursively required from ‘static void pcl::for_each_type_impl::execute(F) [with Iterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 1>; LastIterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 5>; F = pcl::DefaultFeatureRepresentationpcl::PPFSignature::NdCopyPointFunctor]’
/usr/include/pcl-1.10/pcl/for_each_type.h:87:51: required from ‘static void pcl::for_each_type_impl::execute(F) [with Iterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 0>; LastIterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 5>; F = pcl::DefaultFeatureRepresentationpcl::PPFSignature::NdCopyPointFunctor]’
/usr/include/pcl-1.10/pcl/for_each_type.h:98:92: required from ‘void pcl::for_each_type(F) [with Sequence = boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>; F = pcl::DefaultFeatureRepresentationpcl::PPFSignature::NdCopyPointFunctor]’
/usr/include/pcl-1.10/pcl/point_representation.h:310:40: required from ‘void pcl::DefaultFeatureRepresentation::copyToFloatArray(const PointDefault&, float*) const [with PointDefault = pcl::PPFSignature]’
/usr/include/pcl-1.10/pcl/point_representation.h:308:7: required from here
/usr/include/pcl-1.10/pcl/point_representation.h:252:48: error: the value of ‘NrDims’ is not usable in a constant expression
/usr/include/pcl-1.10/pcl/point_representation.h:251:19: note: ‘NrDims’ was not initialized with a constant expression
251 | const int NrDims = pcl::traits::datatype<PointDefault, Key>::size;
| ^~~~~~
/usr/include/pcl-1.10/pcl/point_representation.h:252:48: note: in template argument for type ‘int’
252 | Helper<Key, FieldT, NrDims>::copyPoint (p1_, p2_, f_idx_);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
/usr/include/pcl-1.10/pcl/point_representation.h: In instantiation of ‘void pcl::DefaultFeatureRepresentation::NdCopyPointFunctor::operator()() [with Key = pcl::fields::f4; PointDefault = pcl::PPFSignature]’:
/usr/include/pcl-1.10/pcl/for_each_type.h:87:51: recursively required from ‘static void pcl::for_each_type_impl::execute(F) [with Iterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 1>; LastIterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 5>; F = pcl::DefaultFeatureRepresentationpcl::PPFSignature::NdCopyPointFunctor]’
/usr/include/pcl-1.10/pcl/for_each_type.h:87:51: required from ‘static void pcl::for_each_type_impl::execute(F) [with Iterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 0>; LastIterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 5>; F = pcl::DefaultFeatureRepresentationpcl::PPFSignature::NdCopyPointFunctor]’
/usr/include/pcl-1.10/pcl/for_each_type.h:98:92: required from ‘void pcl::for_each_type(F) [with Sequence = boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>; F = pcl::DefaultFeatureRepresentationpcl::PPFSignature::NdCopyPointFunctor]’
/usr/include/pcl-1.10/pcl/point_representation.h:310:40: required from ‘void pcl::DefaultFeatureRepresentation::copyToFloatArray(const PointDefault&, float*) const [with PointDefault = pcl::PPFSignature]’
/usr/include/pcl-1.10/pcl/point_representation.h:308:7: required from here
/usr/include/pcl-1.10/pcl/point_representation.h:252:48: error: the value of ‘NrDims’ is not usable in a constant expression
/usr/include/pcl-1.10/pcl/point_representation.h:251:19: note: ‘NrDims’ was not initialized with a constant expression
251 | const int NrDims = pcl::traits::datatype<PointDefault, Key>::size;
| ^~~~~~
/usr/include/pcl-1.10/pcl/point_representation.h:252:48: note: in template argument for type ‘int’
252 | Helper<Key, FieldT, NrDims>::copyPoint (p1_, p2_, f_idx_);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
/usr/include/pcl-1.10/pcl/point_representation.h: In instantiation of ‘void pcl::DefaultFeatureRepresentation::NdCopyPointFunctor::operator()() [with Key = pcl::fields::alpha_m; PointDefault = pcl::PPFSignature]’:
/usr/include/pcl-1.10/pcl/for_each_type.h:87:51: recursively required from ‘static void pcl::for_each_type_impl::execute(F) [with Iterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 1>; LastIterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 5>; F = pcl::DefaultFeatureRepresentationpcl::PPFSignature::NdCopyPointFunctor]’
/usr/include/pcl-1.10/pcl/for_each_type.h:87:51: required from ‘static void pcl::for_each_type_impl::execute(F) [with Iterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 0>; LastIterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 5>; F = pcl::DefaultFeatureRepresentationpcl::PPFSignature::NdCopyPointFunctor]’
/usr/include/pcl-1.10/pcl/for_each_type.h:98:92: required from ‘void pcl::for_each_type(F) [with Sequence = boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>; F = pcl::DefaultFeatureRepresentationpcl::PPFSignature::NdCopyPointFunctor]’
/usr/include/pcl-1.10/pcl/point_representation.h:310:40: required from ‘void pcl::DefaultFeatureRepresentation::copyToFloatArray(const PointDefault&, float*) const [with PointDefault = pcl::PPFSignature]’
/usr/include/pcl-1.10/pcl/point_representation.h:308:7: required from here
/usr/include/pcl-1.10/pcl/point_representation.h:252:48: error: the value of ‘NrDims’ is not usable in a constant expression
/usr/include/pcl-1.10/pcl/point_representation.h:251:19: note: ‘NrDims’ was not initialized with a constant expression
251 | const int NrDims = pcl::traits::datatype<PointDefault, Key>::size;
| ^~~~~~
/usr/include/pcl-1.10/pcl/point_representation.h:252:48: note: in template argument for type ‘int’
252 | Helper<Key, FieldT, NrDims>::copyPoint (p1_, p2_, f_idx_);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
make[2]: *** [Livox-Mapping/LIO-Livox/CMakeFiles/PoseEstimation.dir/build.make:90: Livox-Mapping/LIO-Livox/CMakeFiles/PoseEstimation.dir/src/lio/Estimator.cpp.o] Error 1
In file included from /usr/local/include/ceres/autodiff_cost_function.h:130,
from /usr/local/include/ceres/ceres.h:37,
from /home/karl/catkin_ws/src/Livox-Mapping/LIO-Livox/include/utils/ceresfunc.h:3,
from /home/karl/catkin_ws/src/Livox-Mapping/LIO-Livox/include/Estimator/Estimator.h:20,
from /home/karl/catkin_ws/src/Livox-Mapping/LIO-Livox/src/lio/PoseEstimation.cpp:1:
/usr/local/include/ceres/internal/autodiff.h: In instantiation of ‘bool ceres::internal::AutoDifferentiate(const Functor&, const T* const*, int, T*, T**) [with int kNumResiduals = 3; ParameterDims = ceres::internal::ParameterDims<false, 3>; Functor = Cost_Initialization_Prior_R; T = double]’:
/usr/local/include/ceres/autodiff_cost_function.h:211:69: required from ‘bool ceres::AutoDiffCostFunction<CostFunctor, kNumResiduals, Ns>::Evaluate(const double* const*, double*, double**) const [with CostFunctor = Cost_Initialization_Prior_R; int kNumResiduals = 3; int ...Ns = {3}]’
/usr/local/include/ceres/autodiff_cost_function.h:201:8: required from here
/usr/local/include/ceres/internal/autodiff.h:314:9: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 3>’
314 | using Parameters = typename ParameterDims::Parameters;
| ^~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h:347:47: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 3>’
347 | Make1stOrderPerturbations::Apply(parameters,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
348 | parameters_as_jets.data());
| ~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h:356:39: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 3>’
356 | Take1stOrderParts::Apply(
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
357 | num_outputs, residuals_as_jets.data(), jacobians);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h: In instantiation of ‘bool ceres::internal::AutoDifferentiate(const Functor&, const T* const*, int, T*, T**) [with int kNumResiduals = 3; ParameterDims = ceres::internal::ParameterDims<false, 3>; Functor = Cost_Initialization_Prior_bv; T = double]’:
/usr/local/include/ceres/autodiff_cost_function.h:211:69: required from ‘bool ceres::AutoDiffCostFunction<CostFunctor, kNumResiduals, Ns>::Evaluate(const double* const*, double*, double**) const [with CostFunctor = Cost_Initialization_Prior_bv; int kNumResiduals = 3; int ...Ns = {3}]’
/usr/local/include/ceres/autodiff_cost_function.h:201:8: required from here
/usr/local/include/ceres/internal/autodiff.h:314:9: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 3>’
314 | using Parameters = typename ParameterDims::Parameters;
| ^~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h:347:47: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 3>’
347 | Make1stOrderPerturbations::Apply(parameters,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
348 | parameters_as_jets.data());
| ~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h:356:39: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 3>’
356 | Take1stOrderParts::Apply(
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
357 | num_outputs, residuals_as_jets.data(), jacobians);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h: In instantiation of ‘bool ceres::internal::AutoDifferentiate(const Functor&, const T* const*, int, T*, T**) [with int kNumResiduals = 9; ParameterDims = ceres::internal::ParameterDims<false, 3, 3, 3, 3, 3>; Functor = Cost_Initialization_IMU; T = double]’:
/usr/local/include/ceres/autodiff_cost_function.h:211:69: required from ‘bool ceres::AutoDiffCostFunction<CostFunctor, kNumResiduals, Ns>::Evaluate(const double* const*, double*, double**) const [with CostFunctor = Cost_Initialization_IMU; int kNumResiduals = 9; int ...Ns = {3, 3, 3, 3, 3}]’
/usr/local/include/ceres/autodiff_cost_function.h:201:8: required from here
/usr/local/include/ceres/internal/autodiff.h:314:9: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 3, 3, 3, 3, 3>’
314 | using Parameters = typename ParameterDims::Parameters;
| ^~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h:347:47: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 3, 3, 3, 3, 3>’
347 | Make1stOrderPerturbations::Apply(parameters,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
348 | parameters_as_jets.data());
| ~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h:356:39: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 3, 3, 3, 3, 3>’
356 | Take1stOrderParts::Apply(
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
357 | num_outputs, residuals_as_jets.data(), jacobians);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h: In instantiation of ‘bool ceres::internal::AutoDifferentiate(const Functor&, const T* const*, int, T*, T**) [with int kNumResiduals = 3; ParameterDims = ceres::internal::ParameterDims<false, 4>; Functor = Cost_Initial_G; T = double]’:
/usr/local/include/ceres/autodiff_cost_function.h:211:69: required from ‘bool ceres::AutoDiffCostFunction<CostFunctor, kNumResiduals, Ns>::Evaluate(const double* const*, double*, double**) const [with CostFunctor = Cost_Initial_G; int kNumResiduals = 3; int ...Ns = {4}]’
/usr/local/include/ceres/autodiff_cost_function.h:201:8: required from here
/usr/local/include/ceres/internal/autodiff.h:314:9: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 4>’
314 | using Parameters = typename ParameterDims::Parameters;
| ^~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h:347:47: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 4>’
347 | Make1stOrderPerturbations::Apply(parameters,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
348 | parameters_as_jets.data());
| ~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h:356:39: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 4>’
356 | Take1stOrderParts::Apply(
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
357 | num_outputs, residuals_as_jets.data(), jacobians);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h: In instantiation of ‘bool ceres::internal::AutoDifferentiate(const Functor&, const T* const*, int, T*, T**) [with int kNumResiduals = 1; ParameterDims = ceres::internal::ParameterDims<false, 6>; Functor = Cost_NonFeature_ICP; T = double]’:
/usr/local/include/ceres/autodiff_cost_function.h:211:69: required from ‘bool ceres::AutoDiffCostFunction<CostFunctor, kNumResiduals, Ns>::Evaluate(const double* const*, double*, double**) const [with CostFunctor = Cost_NonFeature_ICP; int kNumResiduals = 1; int ...Ns = {6}]’
/usr/local/include/ceres/autodiff_cost_function.h:201:8: required from here
/usr/local/include/ceres/internal/autodiff.h:314:9: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 6>’
314 | using Parameters = typename ParameterDims::Parameters;
| ^~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h:347:47: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 6>’
347 | Make1stOrderPerturbations::Apply(parameters,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
348 | parameters_as_jets.data());
| ~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h:356:39: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 6>’
356 | Take1stOrderParts::Apply(
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
357 | num_outputs, residuals_as_jets.data(), jacobians);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h: In instantiation of ‘bool ceres::internal::AutoDifferentiate(const Functor&, const T* const*, int, T*, T**) [with int kNumResiduals = 3; ParameterDims = ceres::internal::ParameterDims<false, 6>; Functor = Cost_NavState_IMU_Plan_Vec; T = double]’:
/usr/local/include/ceres/autodiff_cost_function.h:211:69: required from ‘bool ceres::AutoDiffCostFunction<CostFunctor, kNumResiduals, Ns>::Evaluate(const double* const*, double*, double**) const [with CostFunctor = Cost_NavState_IMU_Plan_Vec; int kNumResiduals = 3; int ...Ns = {6}]’
/usr/local/include/ceres/autodiff_cost_function.h:201:8: required from here
/usr/local/include/ceres/internal/autodiff.h:314:9: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 6>’
314 | using Parameters = typename ParameterDims::Parameters;
| ^~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h:347:47: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 6>’
347 | Make1stOrderPerturbations::Apply(parameters,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
348 | parameters_as_jets.data());
| ~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h:356:39: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 6>’
356 | Take1stOrderParts::Apply(
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
357 | num_outputs, residuals_as_jets.data(), jacobians);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h: In instantiation of ‘bool ceres::internal::AutoDifferentiate(const Functor&, const T* const*, int, T*, T**) [with int kNumResiduals = 1; ParameterDims = ceres::internal::ParameterDims<false, 6>; Functor = Cost_NavState_IMU_Plan; T = double]’:
/usr/local/include/ceres/autodiff_cost_function.h:211:69: required from ‘bool ceres::AutoDiffCostFunction<CostFunctor, kNumResiduals, Ns>::Evaluate(const double* const*, double*, double**) const [with CostFunctor = Cost_NavState_IMU_Plan; int kNumResiduals = 1; int ...Ns = {6}]’
/usr/local/include/ceres/autodiff_cost_function.h:201:8: required from here
/usr/local/include/ceres/internal/autodiff.h:314:9: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 6>’
314 | using Parameters = typename ParameterDims::Parameters;
| ^~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h:347:47: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 6>’
347 | Make1stOrderPerturbations::Apply(parameters,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
348 | parameters_as_jets.data());
| ~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h:356:39: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 6>’
356 | Take1stOrderParts::Apply(
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
357 | num_outputs, residuals_as_jets.data(), jacobians);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h: In instantiation of ‘bool ceres::internal::AutoDifferentiate(const Functor&, const T* const*, int, T*, T**) [with int kNumResiduals = 1; ParameterDims = ceres::internal::ParameterDims<false, 6>; Functor = Cost_NavState_IMU_Line; T = double]’:
/usr/local/include/ceres/autodiff_cost_function.h:211:69: required from ‘bool ceres::AutoDiffCostFunction<CostFunctor, kNumResiduals, Ns>::Evaluate(const double* const*, double*, double**) const [with CostFunctor = Cost_NavState_IMU_Line; int kNumResiduals = 1; int ...Ns = {6}]’
/usr/local/include/ceres/autodiff_cost_function.h:201:8: required from here
/usr/local/include/ceres/internal/autodiff.h:314:9: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 6>’
314 | using Parameters = typename ParameterDims::Parameters;
| ^~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h:347:47: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 6>’
347 | Make1stOrderPerturbations::Apply(parameters,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
348 | parameters_as_jets.data());
| ~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h:356:39: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 6>’
356 | Take1stOrderParts::Apply(
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
357 | num_outputs, residuals_as_jets.data(), jacobians);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h: In instantiation of ‘bool ceres::internal::AutoDifferentiate(const Functor&, const T* const*, int, T*, T**) [with int kNumResiduals = 15; ParameterDims = ceres::internal::ParameterDims<false, 6, 9, 6, 9>; Functor = Cost_NavState_PRV_Bias; T = double]’:
/usr/local/include/ceres/autodiff_cost_function.h:211:69: required from ‘bool ceres::AutoDiffCostFunction<CostFunctor, kNumResiduals, Ns>::Evaluate(const double* const*, double*, double**) const [with CostFunctor = Cost_NavState_PRV_Bias; int kNumResiduals = 15; int ...Ns = {6, 9, 6, 9}]’
/usr/local/include/ceres/autodiff_cost_function.h:201:8: required from here
/usr/local/include/ceres/internal/autodiff.h:314:9: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 6, 9, 6, 9>’
314 | using Parameters = typename ParameterDims::Parameters;
| ^~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h:347:47: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 6, 9, 6, 9>’
347 | Make1stOrderPerturbations::Apply(parameters,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
348 | parameters_as_jets.data());
| ~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h:356:39: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 6, 9, 6, 9>’
356 | Take1stOrderParts::Apply(
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
357 | num_outputs, residuals_as_jets.data(), jacobians);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h: In instantiation of ‘bool ceres::internal::AutoDifferentiate(const Functor&, const T* const*, int, T*, T**) [with int kNumResiduals = 3; ParameterDims = ceres::internal::ParameterDims<false, 6>; Functor = Cost_NavState_PR_Ground; T = double]’:
/usr/local/include/ceres/autodiff_cost_function.h:211:69: required from ‘bool ceres::AutoDiffCostFunction<CostFunctor, kNumResiduals, Ns>::Evaluate(const double* const*, double*, double**) const [with CostFunctor = Cost_NavState_PR_Ground; int kNumResiduals = 3; int ...Ns = {6}]’
/usr/local/include/ceres/autodiff_cost_function.h:201:8: required from here
/usr/local/include/ceres/internal/autodiff.h:314:9: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 6>’
314 | using Parameters = typename ParameterDims::Parameters;
| ^~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h:347:47: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 6>’
347 | Make1stOrderPerturbations::Apply(parameters,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
348 | parameters_as_jets.data());
| ~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/ceres/internal/autodiff.h:356:39: error: no type named ‘Parameters’ in ‘class ceres::internal::ParameterDims<false, 6>’
356 | Take1stOrderParts::Apply(
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
357 | num_outputs, residuals_as_jets.data(), jacobians);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/local/include/ceres/internal/autodiff.h:151,
from /usr/local/include/ceres/autodiff_cost_function.h:130,
from /usr/local/include/ceres/ceres.h:37,
from /home/karl/catkin_ws/src/Livox-Mapping/LIO-Livox/include/utils/ceresfunc.h:3,
from /home/karl/catkin_ws/src/Livox-Mapping/LIO-Livox/include/Estimator/Estimator.h:20,
from /home/karl/catkin_ws/src/Livox-Mapping/LIO-Livox/src/lio/PoseEstimation.cpp:1:
/usr/local/include/ceres/internal/variadic_evaluate.h: In instantiation of ‘bool ceres::internal::VariadicEvaluateImpl(const Functor&, const T* const*, T*, const void*) [with ParameterDims = ceres::internal::ParameterDims<false, 3>; Functor = Cost_Initialization_Prior_R; T = double]’:
/usr/local/include/ceres/internal/variadic_evaluate.h:107:45: required from ‘bool ceres::internal::VariadicEvaluate(const Functor&, const T* const*, T*) [with ParameterDims = ceres::internal::ParameterDims<false, 3>; Functor = Cost_Initialization_Prior_R; T = double]’
/usr/local/include/ceres/autodiff_cost_function.h:208:55: required from ‘bool ceres::AutoDiffCostFunction<CostFunctor, kNumResiduals, Ns>::Evaluate(const double* const*, double*, double**) const [with CostFunctor = Cost_Initialization_Prior_R; int kNumResiduals = 3; int ...Ns = {3}]’
/usr/local/include/ceres/autodiff_cost_function.h:201:8: required from here
/usr/local/include/ceres/internal/variadic_evaluate.h:79:65: error: ‘ParameterBlockIndices’ was not declared in this scope
79 | functor, input, output, IsDynamic(), ParameterBlockIndices());
| ~~~~~~~~~~~~~~~~~~~~~^~
/usr/local/include/ceres/internal/variadic_evaluate.h: In instantiation of ‘bool ceres::internal::VariadicEvaluateImpl(const Functor&, const T* const*, T*, const void*) [with ParameterDims = ceres::internal::ParameterDims<false, 3>; Functor = Cost_Initialization_Prior_bv; T = double]’:
/usr/local/include/ceres/internal/variadic_evaluate.h:107:45: required from ‘bool ceres::internal::VariadicEvaluate(const Functor&, const T* const*, T*) [with ParameterDims = ceres::internal::ParameterDims<false, 3>; Functor = Cost_Initialization_Prior_bv; T = double]’
/usr/local/include/ceres/autodiff_cost_function.h:208:55: required from ‘bool ceres::AutoDiffCostFunction<CostFunctor, kNumResiduals, Ns>::Evaluate(const double* const*, double*, double**) const [with CostFunctor = Cost_Initialization_Prior_bv; int kNumResiduals = 3; int ...Ns = {3}]’
/usr/local/include/ceres/autodiff_cost_function.h:201:8: required from here
/usr/local/include/ceres/internal/variadic_evaluate.h:79:65: error: ‘ParameterBlockIndices’ was not declared in this scope
/usr/local/include/ceres/internal/variadic_evaluate.h: In instantiation of ‘bool ceres::internal::VariadicEvaluateImpl(const Functor&, const T* const*, T*, const void*) [with ParameterDims = ceres::internal::ParameterDims<false, 3, 3, 3, 3, 3>; Functor = Cost_Initialization_IMU; T = double]’:
/usr/local/include/ceres/internal/variadic_evaluate.h:107:45: required from ‘bool ceres::internal::VariadicEvaluate(const Functor&, const T* const*, T*) [with ParameterDims = ceres::internal::ParameterDims<false, 3, 3, 3, 3, 3>; Functor = Cost_Initialization_IMU; T = double]’
/usr/local/include/ceres/autodiff_cost_function.h:208:55: required from ‘bool ceres::AutoDiffCostFunction<CostFunctor, kNumResiduals, Ns>::Evaluate(const double* const*, double*, double**) const [with CostFunctor = Cost_Initialization_IMU; int kNumResiduals = 9; int ...Ns = {3, 3, 3, 3, 3}]’
/usr/local/include/ceres/autodiff_cost_function.h:201:8: required from here
/usr/local/include/ceres/internal/variadic_evaluate.h:79:65: error: ‘ParameterBlockIndices’ was not declared in this scope
/usr/local/include/ceres/internal/variadic_evaluate.h: In instantiation of ‘bool ceres::internal::VariadicEvaluateImpl(const Functor&, const T* const*, T*, const void*) [with ParameterDims = ceres::internal::ParameterDims<false, 4>; Functor = Cost_Initial_G; T = double]’:
/usr/local/include/ceres/internal/variadic_evaluate.h:107:45: required from ‘bool ceres::internal::VariadicEvaluate(const Functor&, const T* const*, T*) [with ParameterDims = ceres::internal::ParameterDims<false, 4>; Functor = Cost_Initial_G; T = double]’
/usr/local/include/ceres/autodiff_cost_function.h:208:55: required from ‘bool ceres::AutoDiffCostFunction<CostFunctor, kNumResiduals, Ns>::Evaluate(const double* const*, double*, double**) const [with CostFunctor = Cost_Initial_G; int kNumResiduals = 3; int ...Ns = {4}]’
/usr/local/include/ceres/autodiff_cost_function.h:201:8: required from here
/usr/local/include/ceres/internal/variadic_evaluate.h:79:65: error: ‘ParameterBlockIndices’ was not declared in this scope
/usr/local/include/ceres/internal/variadic_evaluate.h: In instantiation of ‘bool ceres::internal::VariadicEvaluateImpl(const Functor&, const T* const*, T*, const void*) [with ParameterDims = ceres::internal::ParameterDims<false, 6>; Functor = Cost_NonFeature_ICP; T = double]’:
/usr/local/include/ceres/internal/variadic_evaluate.h:107:45: required from ‘bool ceres::internal::VariadicEvaluate(const Functor&, const T* const*, T*) [with ParameterDims = ceres::internal::ParameterDims<false, 6>; Functor = Cost_NonFeature_ICP; T = double]’
/usr/local/include/ceres/autodiff_cost_function.h:208:55: required from ‘bool ceres::AutoDiffCostFunction<CostFunctor, kNumResiduals, Ns>::Evaluate(const double* const*, double*, double**) const [with CostFunctor = Cost_NonFeature_ICP; int kNumResiduals = 1; int ...Ns = {6}]’
/usr/local/include/ceres/autodiff_cost_function.h:201:8: required from here
/usr/local/include/ceres/internal/variadic_evaluate.h:79:65: error: ‘ParameterBlockIndices’ was not declared in this scope
/usr/local/include/ceres/internal/variadic_evaluate.h: In instantiation of ‘bool ceres::internal::VariadicEvaluateImpl(const Functor&, const T* const*, T*, const void*) [with ParameterDims = ceres::internal::ParameterDims<false, 6>; Functor = Cost_NavState_IMU_Plan_Vec; T = double]’:
/usr/local/include/ceres/internal/variadic_evaluate.h:107:45: required from ‘bool ceres::internal::VariadicEvaluate(const Functor&, const T* const*, T*) [with ParameterDims = ceres::internal::ParameterDims<false, 6>; Functor = Cost_NavState_IMU_Plan_Vec; T = double]’
/usr/local/include/ceres/autodiff_cost_function.h:208:55: required from ‘bool ceres::AutoDiffCostFunction<CostFunctor, kNumResiduals, Ns>::Evaluate(const double* const*, double*, double**) const [with CostFunctor = Cost_NavState_IMU_Plan_Vec; int kNumResiduals = 3; int ...Ns = {6}]’
/usr/local/include/ceres/autodiff_cost_function.h:201:8: required from here
/usr/local/include/ceres/internal/variadic_evaluate.h:79:65: error: ‘ParameterBlockIndices’ was not declared in this scope
/usr/local/include/ceres/internal/variadic_evaluate.h: In instantiation of ‘bool ceres::internal::VariadicEvaluateImpl(const Functor&, const T* const*, T*, const void*) [with ParameterDims = ceres::internal::ParameterDims<false, 6>; Functor = Cost_NavState_IMU_Plan; T = double]’:
/usr/local/include/ceres/internal/variadic_evaluate.h:107:45: required from ‘bool ceres::internal::VariadicEvaluate(const Functor&, const T* const*, T*) [with ParameterDims = ceres::internal::ParameterDims<false, 6>; Functor = Cost_NavState_IMU_Plan; T = double]’
/usr/local/include/ceres/autodiff_cost_function.h:208:55: required from ‘bool ceres::AutoDiffCostFunction<CostFunctor, kNumResiduals, Ns>::Evaluate(const double* const*, double*, double**) const [with CostFunctor = Cost_NavState_IMU_Plan; int kNumResiduals = 1; int ...Ns = {6}]’
/usr/local/include/ceres/autodiff_cost_function.h:201:8: required from here
/usr/local/include/ceres/internal/variadic_evaluate.h:79:65: error: ‘ParameterBlockIndices’ was not declared in this scope
/usr/local/include/ceres/internal/variadic_evaluate.h: In instantiation of ‘bool ceres::internal::VariadicEvaluateImpl(const Functor&, const T* const*, T*, const void*) [with ParameterDims = ceres::internal::ParameterDims<false, 6>; Functor = Cost_NavState_IMU_Line; T = double]’:
/usr/local/include/ceres/internal/variadic_evaluate.h:107:45: required from ‘bool ceres::internal::VariadicEvaluate(const Functor&, const T* const*, T*) [with ParameterDims = ceres::internal::ParameterDims<false, 6>; Functor = Cost_NavState_IMU_Line; T = double]’
/usr/local/include/ceres/autodiff_cost_function.h:208:55: required from ‘bool ceres::AutoDiffCostFunction<CostFunctor, kNumResiduals, Ns>::Evaluate(const double* const*, double*, double**) const [with CostFunctor = Cost_NavState_IMU_Line; int kNumResiduals = 1; int ...Ns = {6}]’
/usr/local/include/ceres/autodiff_cost_function.h:201:8: required from here
/usr/local/include/ceres/internal/variadic_evaluate.h:79:65: error: ‘ParameterBlockIndices’ was not declared in this scope
/usr/local/include/ceres/internal/variadic_evaluate.h: In instantiation of ‘bool ceres::internal::VariadicEvaluateImpl(const Functor&, const T* const*, T*, const void*) [with ParameterDims = ceres::internal::ParameterDims<false, 6, 9, 6, 9>; Functor = Cost_NavState_PRV_Bias; T = double]’:
/usr/local/include/ceres/internal/variadic_evaluate.h:107:45: required from ‘bool ceres::internal::VariadicEvaluate(const Functor&, const T* const*, T*) [with ParameterDims = ceres::internal::ParameterDims<false, 6, 9, 6, 9>; Functor = Cost_NavState_PRV_Bias; T = double]’
/usr/local/include/ceres/autodiff_cost_function.h:208:55: required from ‘bool ceres::AutoDiffCostFunction<CostFunctor, kNumResiduals, Ns>::Evaluate(const double* const*, double*, double**) const [with CostFunctor = Cost_NavState_PRV_Bias; int kNumResiduals = 15; int ...Ns = {6, 9, 6, 9}]’
/usr/local/include/ceres/autodiff_cost_function.h:201:8: required from here
/usr/local/include/ceres/internal/variadic_evaluate.h:79:65: error: ‘ParameterBlockIndices’ was not declared in this scope
/usr/local/include/ceres/internal/variadic_evaluate.h: In instantiation of ‘bool ceres::internal::VariadicEvaluateImpl(const Functor&, const T* const*, T*, const void*) [with ParameterDims = ceres::internal::ParameterDims<false, 6>; Functor = Cost_NavState_PR_Ground; T = double]’:
/usr/local/include/ceres/internal/variadic_evaluate.h:107:45: required from ‘bool ceres::internal::VariadicEvaluate(const Functor&, const T* const*, T*) [with ParameterDims = ceres::internal::ParameterDims<false, 6>; Functor = Cost_NavState_PR_Ground; T = double]’
/usr/local/include/ceres/autodiff_cost_function.h:208:55: required from ‘bool ceres::AutoDiffCostFunction<CostFunctor, kNumResiduals, Ns>::Evaluate(const double* const*, double*, double**) const [with CostFunctor = Cost_NavState_PR_Ground; int kNumResiduals = 3; int ...Ns = {6}]’
/usr/local/include/ceres/autodiff_cost_function.h:201:8: required from here
/usr/local/include/ceres/internal/variadic_evaluate.h:79:65: error: ‘ParameterBlockIndices’ was not declared in this scope
In file included from /usr/include/pcl-1.10/pcl/kdtree/kdtree.h:44,
from /usr/include/pcl-1.10/pcl/kdtree/kdtree_flann.h:43,
from /home/karl/catkin_ws/src/Livox-Mapping/LIO-Livox/include/MapManager/Map_Manager.h:3,
from /home/karl/catkin_ws/src/Livox-Mapping/LIO-Livox/include/Estimator/Estimator.h:19,
from /home/karl/catkin_ws/src/Livox-Mapping/LIO-Livox/src/lio/PoseEstimation.cpp:1:
/usr/include/pcl-1.10/pcl/point_representation.h: In instantiation of ‘void pcl::DefaultFeatureRepresentation::NdCopyPointFunctor::operator()() [with Key = pcl::fields::f1; PointDefault = pcl::PPFSignature]’:
/usr/include/pcl-1.10/pcl/for_each_type.h:82:7: required from ‘static void pcl::for_each_type_impl::execute(F) [with Iterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 0>; LastIterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 5>; F = pcl::DefaultFeatureRepresentationpcl::PPFSignature::NdCopyPointFunctor]’
/usr/include/pcl-1.10/pcl/for_each_type.h:98:92: required from ‘void pcl::for_each_type(F) [with Sequence = boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>; F = pcl::DefaultFeatureRepresentationpcl::PPFSignature::NdCopyPointFunctor]’
/usr/include/pcl-1.10/pcl/point_representation.h:310:40: required from ‘void pcl::DefaultFeatureRepresentation::copyToFloatArray(const PointDefault&, float*) const [with PointDefault = pcl::PPFSignature]’
/usr/include/pcl-1.10/pcl/point_representation.h:308:7: required from here
/usr/include/pcl-1.10/pcl/point_representation.h:252:48: error: the value of ‘NrDims’ is not usable in a constant expression
252 | Helper<Key, FieldT, NrDims>::copyPoint (p1_, p2_, f_idx_);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
/usr/include/pcl-1.10/pcl/point_representation.h:251:19: note: ‘NrDims’ was not initialized with a constant expression
251 | const int NrDims = pcl::traits::datatype<PointDefault, Key>::size;
| ^~~~~~
/usr/include/pcl-1.10/pcl/point_representation.h:252:48: note: in template argument for type ‘int’
252 | Helper<Key, FieldT, NrDims>::copyPoint (p1_, p2_, f_idx_);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
/usr/include/pcl-1.10/pcl/point_representation.h: In instantiation of ‘void pcl::DefaultFeatureRepresentation::NdCopyPointFunctor::operator()() [with Key = pcl::fields::f2; PointDefault = pcl::PPFSignature]’:
/usr/include/pcl-1.10/pcl/for_each_type.h:82:7: required from ‘static void pcl::for_each_type_impl::execute(F) [with Iterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 1>; LastIterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 5>; F = pcl::DefaultFeatureRepresentationpcl::PPFSignature::NdCopyPointFunctor]’
/usr/include/pcl-1.10/pcl/for_each_type.h:87:51: required from ‘static void pcl::for_each_type_impl::execute(F) [with Iterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 0>; LastIterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 5>; F = pcl::DefaultFeatureRepresentationpcl::PPFSignature::NdCopyPointFunctor]’
/usr/include/pcl-1.10/pcl/for_each_type.h:98:92: required from ‘void pcl::for_each_type(F) [with Sequence = boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>; F = pcl::DefaultFeatureRepresentationpcl::PPFSignature::NdCopyPointFunctor]’
/usr/include/pcl-1.10/pcl/point_representation.h:310:40: required from ‘void pcl::DefaultFeatureRepresentation::copyToFloatArray(const PointDefault&, float*) const [with PointDefault = pcl::PPFSignature]’
/usr/include/pcl-1.10/pcl/point_representation.h:308:7: required from here
/usr/include/pcl-1.10/pcl/point_representation.h:252:48: error: the value of ‘NrDims’ is not usable in a constant expression
/usr/include/pcl-1.10/pcl/point_representation.h:251:19: note: ‘NrDims’ was not initialized with a constant expression
251 | const int NrDims = pcl::traits::datatype<PointDefault, Key>::size;
| ^~~~~~
/usr/include/pcl-1.10/pcl/point_representation.h:252:48: note: in template argument for type ‘int’
252 | Helper<Key, FieldT, NrDims>::copyPoint (p1_, p2_, f_idx_);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
/usr/include/pcl-1.10/pcl/point_representation.h: In instantiation of ‘void pcl::DefaultFeatureRepresentation::NdCopyPointFunctor::operator()() [with Key = pcl::fields::f3; PointDefault = pcl::PPFSignature]’:
/usr/include/pcl-1.10/pcl/for_each_type.h:87:51: recursively required from ‘static void pcl::for_each_type_impl::execute(F) [with Iterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 1>; LastIterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 5>; F = pcl::DefaultFeatureRepresentationpcl::PPFSignature::NdCopyPointFunctor]’
/usr/include/pcl-1.10/pcl/for_each_type.h:87:51: required from ‘static void pcl::for_each_type_impl::execute(F) [with Iterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 0>; LastIterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 5>; F = pcl::DefaultFeatureRepresentationpcl::PPFSignature::NdCopyPointFunctor]’
/usr/include/pcl-1.10/pcl/for_each_type.h:98:92: required from ‘void pcl::for_each_type(F) [with Sequence = boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>; F = pcl::DefaultFeatureRepresentationpcl::PPFSignature::NdCopyPointFunctor]’
/usr/include/pcl-1.10/pcl/point_representation.h:310:40: required from ‘void pcl::DefaultFeatureRepresentation::copyToFloatArray(const PointDefault&, float*) const [with PointDefault = pcl::PPFSignature]’
/usr/include/pcl-1.10/pcl/point_representation.h:308:7: required from here
/usr/include/pcl-1.10/pcl/point_representation.h:252:48: error: the value of ‘NrDims’ is not usable in a constant expression
/usr/include/pcl-1.10/pcl/point_representation.h:251:19: note: ‘NrDims’ was not initialized with a constant expression
251 | const int NrDims = pcl::traits::datatype<PointDefault, Key>::size;
| ^~~~~~
/usr/include/pcl-1.10/pcl/point_representation.h:252:48: note: in template argument for type ‘int’
252 | Helper<Key, FieldT, NrDims>::copyPoint (p1_, p2_, f_idx_);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
/usr/include/pcl-1.10/pcl/point_representation.h: In instantiation of ‘void pcl::DefaultFeatureRepresentation::NdCopyPointFunctor::operator()() [with Key = pcl::fields::f4; PointDefault = pcl::PPFSignature]’:
/usr/include/pcl-1.10/pcl/for_each_type.h:87:51: recursively required from ‘static void pcl::for_each_type_impl::execute(F) [with Iterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 1>; LastIterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 5>; F = pcl::DefaultFeatureRepresentationpcl::PPFSignature::NdCopyPointFunctor]’
/usr/include/pcl-1.10/pcl/for_each_type.h:87:51: required from ‘static void pcl::for_each_type_impl::execute(F) [with Iterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 0>; LastIterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 5>; F = pcl::DefaultFeatureRepresentationpcl::PPFSignature::NdCopyPointFunctor]’
/usr/include/pcl-1.10/pcl/for_each_type.h:98:92: required from ‘void pcl::for_each_type(F) [with Sequence = boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>; F = pcl::DefaultFeatureRepresentationpcl::PPFSignature::NdCopyPointFunctor]’
/usr/include/pcl-1.10/pcl/point_representation.h:310:40: required from ‘void pcl::DefaultFeatureRepresentation::copyToFloatArray(const PointDefault&, float*) const [with PointDefault = pcl::PPFSignature]’
/usr/include/pcl-1.10/pcl/point_representation.h:308:7: required from here
/usr/include/pcl-1.10/pcl/point_representation.h:252:48: error: the value of ‘NrDims’ is not usable in a constant expression
/usr/include/pcl-1.10/pcl/point_representation.h:251:19: note: ‘NrDims’ was not initialized with a constant expression
251 | const int NrDims = pcl::traits::datatype<PointDefault, Key>::size;
| ^~~~~~
/usr/include/pcl-1.10/pcl/point_representation.h:252:48: note: in template argument for type ‘int’
252 | Helper<Key, FieldT, NrDims>::copyPoint (p1_, p2_, f_idx_);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
/usr/include/pcl-1.10/pcl/point_representation.h: In instantiation of ‘void pcl::DefaultFeatureRepresentation::NdCopyPointFunctor::operator()() [with Key = pcl::fields::alpha_m; PointDefault = pcl::PPFSignature]’:
/usr/include/pcl-1.10/pcl/for_each_type.h:87:51: recursively required from ‘static void pcl::for_each_type_impl::execute(F) [with Iterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 1>; LastIterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 5>; F = pcl::DefaultFeatureRepresentationpcl::PPFSignature::NdCopyPointFunctor]’
/usr/include/pcl-1.10/pcl/for_each_type.h:87:51: required from ‘static void pcl::for_each_type_impl::execute(F) [with Iterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 0>; LastIterator = boost::mpl::v_iter<boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>, 5>; F = pcl::DefaultFeatureRepresentationpcl::PPFSignature::NdCopyPointFunctor]’
/usr/include/pcl-1.10/pcl/for_each_type.h:98:92: required from ‘void pcl::for_each_type(F) [with Sequence = boost::mpl::vector<pcl::fields::f1, pcl::fields::f2, pcl::fields::f3, pcl::fields::f4, pcl::fields::alpha_m>; F = pcl::DefaultFeatureRepresentationpcl::PPFSignature::NdCopyPointFunctor]’
/usr/include/pcl-1.10/pcl/point_representation.h:310:40: required from ‘void pcl::DefaultFeatureRepresentation::copyToFloatArray(const PointDefault&, float*) const [with PointDefault = pcl::PPFSignature]’
/usr/include/pcl-1.10/pcl/point_representation.h:308:7: required from here
/usr/include/pcl-1.10/pcl/point_representation.h:252:48: error: the value of ‘NrDims’ is not usable in a constant expression
/usr/include/pcl-1.10/pcl/point_representation.h:251:19: note: ‘NrDims’ was not initialized with a constant expression
251 | const int NrDims = pcl::traits::datatype<PointDefault, Key>::size;
| ^~~~~~
/usr/include/pcl-1.10/pcl/point_representation.h:252:48: note: in template argument for type ‘int’
252 | Helper<Key, FieldT, NrDims>::copyPoint (p1_, p2_, f_idx_);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
make[2]: *** [Livox-Mapping/LIO-Livox/CMakeFiles/PoseEstimation.dir/build.make:76: Livox-Mapping/LIO-Livox/CMakeFiles/PoseEstimation.dir/src/lio/PoseEstimation.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:3521: Livox-Mapping/LIO-Livox/CMakeFiles/PoseEstimation.dir/all] Error 2
[ 86%] Linking CXX executable /home/karl/catkin_ws/devel/lib/livox_mapping/livox_mapping
[ 86%] Built target livox_mapping
make: *** [Makefile:146: all] Error 2
Invoking "make -j8 -l8" failed
karl@karl-GL552VW:~/catkin_ws$

Please see my coments at beginning of page. - Thanks

MID40

HELLO FRIEND, ONE QUESTION CAN IT WORK WITH LIVOX MID 40?

catkin_make error

First of all, thanks for your works and share it with all of us 🙂
i'm actually trying to catkin_make the Livox mapping but i have 2 make errors as shown in the pictures. can you help me to identify the problem and solve it?

glic@GLIC:~/catkin_ws$ catkin_make
Base path: /home/glic/catkin_ws
Source space: /home/glic/catkin_ws/src
Build space: /home/glic/catkin_ws/build
Devel space: /home/glic/catkin_ws/devel
Install space: /home/glic/catkin_ws/install

Running command: "cmake /home/glic/catkin_ws/src -DCATKIN_DEVEL_PREFIX=/home/glic/catkin_ws/devel -DCMAKE_INSTALL_PREFIX=/home/glic/catkin_ws/install -G Unix Makefiles" in "/home/glic/catkin_ws/build"

-- Using CATKIN_DEVEL_PREFIX: /home/glic/catkin_ws/devel
-- Using CMAKE_PREFIX_PATH: /opt/ros/melodic
-- This workspace overlays: /opt/ros/melodic
-- Found PythonInterp: /usr/bin/python2 (found suitable version "2.7.17", minimum required is "2")
-- Using PYTHON_EXECUTABLE: /usr/bin/python2
-- Using Debian Python package layout
-- Using empy: /usr/bin/empy
-- Using CATKIN_ENABLE_TESTING: ON
-- Call enable_testing()
-- Using CATKIN_TEST_RESULTS_DIR: /home/glic/catkin_ws/build/test_results
-- Found gtest sources under '/usr/src/googletest': gtests will be built
-- Found gmock sources under '/usr/src/googletest': gmock will be built
-- Found PythonInterp: /usr/bin/python2 (found version "2.7.17")
-- Using Python nosetests: /usr/bin/nosetests-2.7
-- catkin 0.7.29
-- BUILD_SHARED_LIBS is on
-- BUILD_SHARED_LIBS is on
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ~~ traversing 8 packages in topological order:
-- ~~ - ad_localization_msgs
-- ~~ - dnb_msgs
-- ~~ - camera_control_msgs
-- ~~ - pylon_camera
-- ~~ - livox_ros_driver
-- ~~ - livox_mapping
-- ~~ - livox_odometry
-- ~~ - xsens_mti_driver
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- +++ processing catkin package: 'ad_localization_msgs'
-- ==> add_subdirectory(Livox-Mapping/ad_localization_msgs)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- ad_localization_msgs: 1 messages, 0 services
-- +++ processing catkin package: 'dnb_msgs'
-- ==> add_subdirectory(dragandbot_common/dnb_msgs)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- dnb_msgs: 4 messages, 4 services
-- +++ processing catkin package: 'camera_control_msgs'
-- ==> add_subdirectory(pylon-ros-camera/camera_control_msgs)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- Generating .msg files for action camera_control_msgs/GrabAndSaveImage /home/glic/catkin_ws/src/pylon-ros-camera/camera_control_msgs/action/GrabAndSaveImage.action
-- Generating .msg files for action camera_control_msgs/GrabHDRImage /home/glic/catkin_ws/src/pylon-ros-camera/camera_control_msgs/action/GrabHDRImage.action
-- Generating .msg files for action camera_control_msgs/GrabImages /home/glic/catkin_ws/src/pylon-ros-camera/camera_control_msgs/action/GrabImages.action
-- camera_control_msgs: 22 messages, 14 services
-- +++ processing catkin package: 'pylon_camera'
-- ==> add_subdirectory(pylon-ros-camera/pylon_camera)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- +++ processing catkin package: 'livox_ros_driver'
-- ==> add_subdirectory(livox_ros_driver)
-- livox_ros_driver version: 2.6.0
-- Boost version: 1.65.1
-- Found the following Boost libraries:
-- system
-- thread
-- chrono
-- date_time
-- atomic
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- Boost version: 1.65.1
-- Found the following Boost libraries:
-- system
-- filesystem
-- thread
-- date_time
-- iostreams
-- serialization
-- chrono
-- atomic
-- regex
-- Could NOT find ensenso (missing: ENSENSO_LIBRARY ENSENSO_INCLUDE_DIR)
** WARNING ** io features related to ensenso will be disabled
-- Could NOT find DAVIDSDK (missing: DAVIDSDK_LIBRARY DAVIDSDK_INCLUDE_DIR)
** WARNING ** io features related to davidSDK will be disabled
-- Could NOT find DSSDK (missing: _DSSDK_LIBRARIES)
** WARNING ** io features related to dssdk will be disabled
** WARNING ** io features related to pcap will be disabled
** WARNING ** io features related to png will be disabled
-- The imported target "vtkRenderingPythonTkWidgets" references the file
"/usr/lib/x86_64-linux-gnu/libvtkRenderingPythonTkWidgets.so"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/cmake/vtk-6.3/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtk" references the file
"/usr/bin/vtk"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/cmake/vtk-6.3/VTKTargets.cmake"
    but not all the files it references.

** WARNING ** io features related to libusb-1.0 will be disabled
-- Could NOT find ensenso (missing: ENSENSO_LIBRARY ENSENSO_INCLUDE_DIR)
** WARNING ** visualization features related to ensenso will be disabled
-- Could NOT find DAVIDSDK (missing: DAVIDSDK_LIBRARY DAVIDSDK_INCLUDE_DIR)
** WARNING ** visualization features related to davidSDK will be disabled
-- Could NOT find DSSDK (missing: _DSSDK_LIBRARIES)
** WARNING ** visualization features related to dssdk will be disabled
-- Could NOT find RSSDK (missing: _RSSDK_LIBRARIES)
** WARNING ** visualization features related to rssdk will be disabled
-- looking for PCL_COMMON
-- looking for PCL_OCTREE
-- looking for PCL_IO
-- looking for PCL_KDTREE
-- looking for PCL_SEARCH
-- looking for PCL_SAMPLE_CONSENSUS
-- looking for PCL_FILTERS
-- looking for PCL_2D
-- looking for PCL_GEOMETRY
-- looking for PCL_FEATURES
-- looking for PCL_ML
-- looking for PCL_SEGMENTATION
-- looking for PCL_VISUALIZATION
-- looking for PCL_SURFACE
-- looking for PCL_REGISTRATION
-- looking for PCL_KEYPOINTS
-- looking for PCL_TRACKING
-- looking for PCL_RECOGNITION
-- looking for PCL_STEREO
-- looking for PCL_APPS
-- looking for PCL_IN_HAND_SCANNER
-- looking for PCL_MODELER
-- looking for PCL_POINT_CLOUD_EDITOR
-- looking for PCL_OUTOFCORE
-- looking for PCL_PEOPLE
-- livox_ros_driver: 2 messages, 0 services
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1")
-- Checking for module 'apr-1'
-- Found apr-1, version 1.6.3
/usr/include/apr-1.0
apr-1
find livox sdk library success
-- +++ processing catkin package: 'livox_mapping'
-- ==> add_subdirectory(Livox-Mapping/SC-PGO)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- Boost version: 1.65.1
-- Found the following Boost libraries:
-- system
-- filesystem
-- thread
-- date_time
-- iostreams
-- serialization
-- chrono
-- atomic
-- regex
-- Could NOT find ensenso (missing: ENSENSO_LIBRARY ENSENSO_INCLUDE_DIR)
** WARNING ** io features related to ensenso will be disabled
-- Could NOT find DAVIDSDK (missing: DAVIDSDK_LIBRARY DAVIDSDK_INCLUDE_DIR)
** WARNING ** io features related to davidSDK will be disabled
-- Could NOT find DSSDK (missing: _DSSDK_LIBRARIES)
** WARNING ** io features related to dssdk will be disabled
** WARNING ** io features related to pcap will be disabled
** WARNING ** io features related to png will be disabled
-- The imported target "vtkRenderingPythonTkWidgets" references the file
"/usr/lib/x86_64-linux-gnu/libvtkRenderingPythonTkWidgets.so"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/cmake/vtk-6.3/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtk" references the file
"/usr/bin/vtk"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/cmake/vtk-6.3/VTKTargets.cmake"
    but not all the files it references.

** WARNING ** io features related to libusb-1.0 will be disabled
-- Could NOT find ensenso (missing: ENSENSO_LIBRARY ENSENSO_INCLUDE_DIR)
** WARNING ** visualization features related to ensenso will be disabled
-- Could NOT find DAVIDSDK (missing: DAVIDSDK_LIBRARY DAVIDSDK_INCLUDE_DIR)
** WARNING ** visualization features related to davidSDK will be disabled
-- Could NOT find DSSDK (missing: _DSSDK_LIBRARIES)
** WARNING ** visualization features related to dssdk will be disabled
-- Could NOT find RSSDK (missing: _RSSDK_LIBRARIES)
** WARNING ** visualization features related to rssdk will be disabled
-- looking for PCL_COMMON
-- looking for PCL_OCTREE
-- looking for PCL_IO
-- looking for PCL_KDTREE
-- looking for PCL_SEARCH
-- looking for PCL_SAMPLE_CONSENSUS
-- looking for PCL_FILTERS
-- looking for PCL_2D
-- looking for PCL_GEOMETRY
-- looking for PCL_FEATURES
-- looking for PCL_ML
-- looking for PCL_SEGMENTATION
-- looking for PCL_VISUALIZATION
-- looking for PCL_SURFACE
-- looking for PCL_REGISTRATION
-- looking for PCL_KEYPOINTS
-- looking for PCL_TRACKING
-- looking for PCL_RECOGNITION
-- looking for PCL_STEREO
-- looking for PCL_APPS
-- looking for PCL_IN_HAND_SCANNER
-- looking for PCL_MODELER
-- looking for PCL_POINT_CLOUD_EDITOR
-- looking for PCL_OUTOFCORE
-- looking for PCL_PEOPLE
-- Found required Ceres dependency: Eigen version 3.3.4 in /usr/lib/cmake/eigen3
-- Found required Ceres dependency: glog
-- Found required Ceres dependency: gflags
-- Found Ceres version: 2.1.0 installed in: /usr/local with components: [EigenSparse, SparseLinearAlgebraLibrary, LAPACK, SuiteSparse, CXSparse, SchurSpecializations, Multithreading]
-- Found OpenMP_C: -fopenmp
-- Found OpenMP_CXX: -fopenmp
-- Found OpenMP: TRUE
-- GTSAM include directory: /usr/local/lib/cmake/GTSAM/../../../include
-- +++ processing catkin package: 'livox_odometry'
-- ==> add_subdirectory(Livox-Mapping/LIO-Livox)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- Found Eigen3: /usr/include/eigen3 (Required is at least version "2.91.0")
-- Boost version: 1.65.1
-- Found the following Boost libraries:
-- system
-- filesystem
-- thread
-- date_time
-- iostreams
-- serialization
-- chrono
-- atomic
-- regex
-- Could NOT find ensenso (missing: ENSENSO_LIBRARY ENSENSO_INCLUDE_DIR)
** WARNING ** io features related to ensenso will be disabled
-- Could NOT find DAVIDSDK (missing: DAVIDSDK_LIBRARY DAVIDSDK_INCLUDE_DIR)
** WARNING ** io features related to davidSDK will be disabled
-- Could NOT find DSSDK (missing: _DSSDK_LIBRARIES)
** WARNING ** io features related to dssdk will be disabled
** WARNING ** io features related to pcap will be disabled
** WARNING ** io features related to png will be disabled
-- The imported target "vtkRenderingPythonTkWidgets" references the file
"/usr/lib/x86_64-linux-gnu/libvtkRenderingPythonTkWidgets.so"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/cmake/vtk-6.3/VTKTargets.cmake"
    but not all the files it references.

-- The imported target "vtk" references the file
"/usr/bin/vtk"
but this file does not exist. Possible reasons include:

  • The file was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and contained
    "/usr/lib/cmake/vtk-6.3/VTKTargets.cmake"
    but not all the files it references.

** WARNING ** io features related to libusb-1.0 will be disabled
-- Could NOT find ensenso (missing: ENSENSO_LIBRARY ENSENSO_INCLUDE_DIR)
** WARNING ** visualization features related to ensenso will be disabled
-- Could NOT find DAVIDSDK (missing: DAVIDSDK_LIBRARY DAVIDSDK_INCLUDE_DIR)
** WARNING ** visualization features related to davidSDK will be disabled
-- Could NOT find DSSDK (missing: _DSSDK_LIBRARIES)
** WARNING ** visualization features related to dssdk will be disabled
-- Could NOT find RSSDK (missing: _RSSDK_LIBRARIES)
** WARNING ** visualization features related to rssdk will be disabled
-- looking for PCL_COMMON
-- looking for PCL_OCTREE
-- looking for PCL_IO
-- looking for PCL_KDTREE
-- looking for PCL_SEARCH
-- looking for PCL_SAMPLE_CONSENSUS
-- looking for PCL_FILTERS
-- looking for PCL_2D
-- looking for PCL_GEOMETRY
-- looking for PCL_FEATURES
-- looking for PCL_ML
-- looking for PCL_SEGMENTATION
-- looking for PCL_VISUALIZATION
-- looking for PCL_SURFACE
-- looking for PCL_REGISTRATION
-- looking for PCL_KEYPOINTS
-- looking for PCL_TRACKING
-- looking for PCL_RECOGNITION
-- looking for PCL_STEREO
-- looking for PCL_APPS
-- looking for PCL_IN_HAND_SCANNER
-- looking for PCL_MODELER
-- looking for PCL_POINT_CLOUD_EDITOR
-- looking for PCL_OUTOFCORE
-- looking for PCL_PEOPLE
-- Found required Ceres dependency: Eigen version 3.3.4 in /usr/lib/cmake/eigen3
-- Found required Ceres dependency: glog
-- Found required Ceres dependency: gflags
-- Found Ceres version: 2.1.0 installed in: /usr/local with components: [EigenSparse, SparseLinearAlgebraLibrary, LAPACK, SuiteSparse, CXSparse, SchurSpecializations, Multithreading]
-- A library with BLAS API found.
-- Found AMD headers in: /usr/include/suitesparse
-- Found AMD library: /usr/lib/x86_64-linux-gnu/libamd.so
-- Found CAMD headers in: /usr/include/suitesparse
-- Found CAMD library: /usr/lib/x86_64-linux-gnu/libcamd.so
-- Found COLAMD headers in: /usr/include/suitesparse
-- Found COLAMD library: /usr/lib/x86_64-linux-gnu/libcolamd.so
-- Found CCOLAMD headers in: /usr/include/suitesparse
-- Found CCOLAMD library: /usr/lib/x86_64-linux-gnu/libccolamd.so
-- Found CHOLMOD headers in: /usr/include/suitesparse
-- Found CHOLMOD library: /usr/lib/x86_64-linux-gnu/libcholmod.so
-- Found SUITESPARSEQR headers in: /usr/include/suitesparse
-- Found SUITESPARSEQR library: /usr/lib/x86_64-linux-gnu/libspqr.so
-- Did not find Intel TBB library, assuming SuiteSparseQR was not compiled with TBB.
-- Found SUITESPARSE_CONFIG headers in: /usr/include/suitesparse
-- Found SUITESPARSE_CONFIG library: /usr/lib/x86_64-linux-gnu/libsuitesparseconfig.so
-- Found LIBRT library: /usr/lib/x86_64-linux-gnu/librt.so
-- Adding librt: /usr/lib/x86_64-linux-gnu/librt.so to SuiteSparse_config libraries (required on Linux & Unix [not OSX] if SuiteSparse is compiled with timing).
-- Did not find METIS library (optional SuiteSparse dependency)
-- Found SuiteSparse: TRUE (found version "5.1.2")
CMake Warning at /home/glic/catkin_ws/build/Livox-Mapping/LIO-Livox/cmake/livox_odometry-genmsg.cmake:3 (message):
Invoking generate_messages() without having added any message or service
file before.

You should either add add_message_files() and/or add_service_files() calls
or remove the invocation of generate_messages().
Call Stack (most recent call first):
/opt/ros/melodic/share/genmsg/cmake/genmsg-extras.cmake:307 (include)
Livox-Mapping/LIO-Livox/CMakeLists.txt:46 (generate_messages)

-- livox_odometry: 0 messages, 0 services
-- +++ processing catkin package: 'xsens_mti_driver'
-- ==> add_subdirectory(xsens_ros_mti_driver)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- Configuring done
CMake Warning (dev) at Livox-Mapping/SC-PGO/CMakeLists.txt:46 (add_executable):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.

Target "livox_mapping" links to target "Boost::timer" but the target was
not found. Perhaps a find_package() call is missing for an IMPORTED
target, or an ALIAS target is missing?
This warning is for project developers. Use -Wno-dev to suppress it.

-- Generating done
-- Build files have been written to: /home/glic/catkin_ws/build

Running command: "make -j12 -l12" in "/home/glic/catkin_ws/build"

Scanning dependencies of target std_msgs_generate_messages_nodejs
Scanning dependencies of target _ad_localization_msgs_generate_messages_check_deps_NavStateInfo
Scanning dependencies of target std_msgs_generate_messages_cpp
Scanning dependencies of target geometry_msgs_generate_messages_cpp
Scanning dependencies of target geometry_msgs_generate_messages_py
Scanning dependencies of target std_msgs_generate_messages_py
Scanning dependencies of target geometry_msgs_generate_messages_nodejs
Scanning dependencies of target std_msgs_generate_messages_lisp
Scanning dependencies of target geometry_msgs_generate_messages_lisp
Scanning dependencies of target std_msgs_generate_messages_eus
Scanning dependencies of target geometry_msgs_generate_messages_eus
[ 0%] Built target geometry_msgs_generate_messages_cpp
[ 0%] Built target std_msgs_generate_messages_cpp
[ 0%] Built target geometry_msgs_generate_messages_py
[ 0%] Built target std_msgs_generate_messages_lisp
[ 0%] Built target std_msgs_generate_messages_py
[ 0%] Built target geometry_msgs_generate_messages_eus
[ 0%] Built target geometry_msgs_generate_messages_lisp
[ 0%] Built target geometry_msgs_generate_messages_nodejs
[ 0%] Built target std_msgs_generate_messages_eus
[ 0%] Built target std_msgs_generate_messages_nodejs
[ 0%] Built target _dnb_msgs_generate_messages_check_deps_RunProgramWithArguments
[ 0%] Built target _ad_localization_msgs_generate_messages_check_deps_NavStateInfo
[ 0%] Built target _dnb_msgs_generate_messages_check_deps_SetInt32
[ 0%] Built target _dnb_msgs_generate_messages_check_deps_ComponentStatus
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_SetGamma
[ 0%] Built target _dnb_msgs_generate_messages_check_deps_Program
[ 0%] Built target _dnb_msgs_generate_messages_check_deps_Argument
[ 0%] Built target _dnb_msgs_generate_messages_check_deps_SetString
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_GrabAndSaveImageActionResult
[ 0%] Built target _dnb_msgs_generate_messages_check_deps_StringMultiArray
[ 0%] Built target _dnb_msgs_generate_messages_check_deps_GetProgramsList
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_GrabHDRImageActionGoal
[ 0%] Built target sensor_msgs_generate_messages_cpp
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_GrabImagesActionResult
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_GrabAndSaveImageResult
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_SetFloatValue
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_GrabAndSaveImageActionGoal
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_SetIntegerValue
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_SetGain
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_GetIntegerValue
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_currentParams
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_GrabHDRImageActionFeedback
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_GrabImagesGoal
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_SetBinning
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_GrabImagesActionGoal
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_GetCamProperties
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_GrabHDRImageActionResult
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_SetExposure
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_GetFloatValue
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_GrabAndSaveImageActionFeedback
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_SetSleeping
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_GrabImagesActionFeedback
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_SetROI
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_SetStringValue
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_GrabHDRImageResult
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_GrabAndSaveImageFeedback
[ 0%] Built target actionlib_msgs_generate_messages_cpp
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_SetWhiteBalance
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_GrabAndSaveImageGoal
[ 0%] Built target actionlib_msgs_generate_messages_nodejs
[ 0%] Built target sensor_msgs_generate_messages_nodejs
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_GrabHDRImageGoal
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_GrabImagesFeedback
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_GrabHDRImageAction
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_GrabImagesResult
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_GrabHDRImageFeedback
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_SetBrightness
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_GrabAndSaveImageAction
[ 0%] Built target actionlib_msgs_generate_messages_lisp
[ 0%] Built target _camera_control_msgs_generate_messages_check_deps_GrabImagesAction
[ 0%] Built target sensor_msgs_generate_messages_lisp
[ 0%] Built target actionlib_msgs_generate_messages_eus
Scanning dependencies of target rosgraph_msgs_generate_messages_py
Scanning dependencies of target rosgraph_msgs_generate_messages_nodejs
[ 0%] Built target actionlib_msgs_generate_messages_py
[ 0%] Built target sensor_msgs_generate_messages_eus
Scanning dependencies of target rosgraph_msgs_generate_messages_lisp
Scanning dependencies of target rosgraph_msgs_generate_messages_eus
[ 0%] Built target diagnostic_msgs_generate_messages_py
[ 0%] Built target sensor_msgs_generate_messages_py
[ 0%] Building CXX object pylon-ros-camera/pylon_camera/CMakeFiles/write_device_user_id_to_camera.dir/src/pylon_camera/write_device_user_id_to_camera.cpp.o
Scanning dependencies of target rosgraph_msgs_generate_messages_cpp
Scanning dependencies of target roscpp_generate_messages_lisp
[ 0%] Building CXX object pylon-ros-camera/pylon_camera/CMakeFiles/IPConfigAuto.dir/src/pylon_camera/IPConfigAuto.cpp.o
[ 0%] Built target rosgraph_msgs_generate_messages_py
Scanning dependencies of target roscpp_generate_messages_py
Scanning dependencies of target roscpp_generate_messages_nodejs
[ 0%] Built target rosgraph_msgs_generate_messages_nodejs
[ 0%] Built target rosgraph_msgs_generate_messages_lisp
Scanning dependencies of target roscpp_generate_messages_eus
Scanning dependencies of target roscpp_generate_messages_cpp
[ 0%] Built target rosgraph_msgs_generate_messages_cpp
[ 0%] Built target rosgraph_msgs_generate_messages_eus
[ 0%] Built target roscpp_generate_messages_lisp
[ 0%] Built target roscpp_generate_messages_py
[ 0%] Built target roscpp_generate_messages_nodejs
[ 0%] Built target roscpp_generate_messages_eus
[ 0%] Built target roscpp_generate_messages_cpp
[ 0%] Built target _catkin_empty_exported_target
[ 0%] Built target actionlib_generate_messages_py
[ 0%] Built target actionlib_generate_messages_nodejs
[ 0%] Built target std_srvs_generate_messages_eus
[ 0%] Built target actionlib_generate_messages_lisp
[ 0%] Built target actionlib_generate_messages_cpp
[ 0%] Built target std_srvs_generate_messages_lisp
[ 0%] Built target diagnostic_msgs_generate_messages_eus
[ 0%] Built target diagnostic_msgs_generate_messages_cpp
[ 0%] Built target actionlib_generate_messages_eus
[ 0%] Built target diagnostic_msgs_generate_messages_lisp
Scanning dependencies of target _livox_ros_driver_generate_messages_check_deps_CustomPoint
Scanning dependencies of target _livox_ros_driver_generate_messages_check_deps_CustomMsg
Scanning dependencies of target livox_mapping
Scanning dependencies of target livox_odometry_generate_messages_py
Scanning dependencies of target livox_odometry_generate_messages_lisp
[ 0%] Built target std_srvs_generate_messages_nodejs
[ 0%] Built target diagnostic_msgs_generate_messages_nodejs
[ 0%] Built target std_srvs_generate_messages_cpp
Scanning dependencies of target livox_odometry_generate_messages_eus
[ 0%] Built target std_srvs_generate_messages_py
[ 0%] Built target livox_odometry_generate_messages_lisp
[ 0%] Built target livox_odometry_generate_messages_py
Scanning dependencies of target livox_odometry_generate_messages_cpp
Scanning dependencies of target livox_odometry_generate_messages_nodejs
[ 0%] Generating EusLisp manifest code for livox_odometry
Scanning dependencies of target PoseEstimation
Scanning dependencies of target ScanRegistration
Scanning dependencies of target ad_localization_msgs_generate_messages_nodejs
[ 0%] Built target livox_odometry_generate_messages_nodejs
[ 0%] Built target _livox_ros_driver_generate_messages_check_deps_CustomPoint
[ 0%] Built target livox_odometry_generate_messages_cpp
[ 0%] Built target _livox_ros_driver_generate_messages_check_deps_CustomMsg
[ 0%] Generating Javascript code from ad_localization_msgs/NavStateInfo.msg
[ 1%] Building CXX object xsens_ros_mti_driver/CMakeFiles/xsens_mti_node.dir/src/main.cpp.o
Scanning dependencies of target ad_localization_msgs_generate_messages_cpp
Scanning dependencies of target ad_localization_msgs_generate_messages_lisp
Scanning dependencies of target ad_localization_msgs_generate_messages_py
[ 1%] Building CXX object xsens_ros_mti_driver/CMakeFiles/xsens_mti_node.dir/src/xdainterface.cpp.o
[ 1%] Generating C++ code from ad_localization_msgs/NavStateInfo.msg
[ 1%] Generating Lisp code from ad_localization_msgs/NavStateInfo.msg
[ 2%] Generating Python from MSG ad_localization_msgs/NavStateInfo
[ 2%] Built target ad_localization_msgs_generate_messages_nodejs
[ 2%] Building CXX object xsens_ros_mti_driver/CMakeFiles/xsens_mti_node.dir/src/xdacallback.cpp.o
[ 2%] Built target ad_localization_msgs_generate_messages_lisp
Scanning dependencies of target ad_localization_msgs_generate_messages_eus
[ 2%] Building CXX object Livox-Mapping/SC-PGO/CMakeFiles/livox_mapping.dir/src/laserPosegraphOptimization.cpp.o
[ 2%] Generating EusLisp code from ad_localization_msgs/NavStateInfo.msg
[ 2%] Building CXX object Livox-Mapping/LIO-Livox/CMakeFiles/ScanRegistration.dir/src/lio/ScanRegistration.cpp.o
[ 2%] Building CXX object Livox-Mapping/LIO-Livox/CMakeFiles/PoseEstimation.dir/src/lio/PoseEstimation.cpp.o
[ 3%] Generating EusLisp manifest code for ad_localization_msgs
[ 3%] Built target ad_localization_msgs_generate_messages_cpp
[ 3%] Generating Python msg init.py for ad_localization_msgs
[ 4%] Building CXX object Livox-Mapping/LIO-Livox/CMakeFiles/ScanRegistration.dir/src/lio/LidarFeatureExtractor.cpp.o
[ 4%] Built target ad_localization_msgs_generate_messages_py
[ 7%] Built target dnb_msgs_generate_messages_nodejs
[ 7%] Linking CXX executable /home/glic/catkin_ws/devel/lib/pylon_camera/write_device_user_id_to_camera
[ 9%] Built target dnb_msgs_generate_messages_lisp
[ 9%] Building CXX object Livox-Mapping/LIO-Livox/CMakeFiles/ScanRegistration.dir/src/segment/segment.cpp.o
[ 9%] Built target write_device_user_id_to_camera
[ 9%] Building CXX object Livox-Mapping/LIO-Livox/CMakeFiles/ScanRegistration.dir/src/segment/pointsCorrect.cpp.o
[ 9%] Built target livox_odometry_generate_messages_eus
In file included from /home/glic/catkin_ws/src/Livox-Mapping/LIO-Livox/src/lio/ScanRegistration.cpp:1:0:
/home/glic/catkin_ws/src/Livox-Mapping/LIO-Livox/include/LidarFeatureExtractor/LidarFeatureExtractor.h:4:10: fatal error: livox_ros_driver/CustomMsg.h: Aucun fichier ou dossier de ce type
#include <livox_ros_driver/CustomMsg.h>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
[ 10%] Building CXX object Livox-Mapping/LIO-Livox/CMakeFiles/PoseEstimation.dir/src/lio/Estimator.cpp.o
Livox-Mapping/LIO-Livox/CMakeFiles/ScanRegistration.dir/build.make:62: recipe for target 'Livox-Mapping/LIO-Livox/CMakeFiles/ScanRegistration.dir/src/lio/ScanRegistration.cpp.o' failed
make[2]: *** [Livox-Mapping/LIO-Livox/CMakeFiles/ScanRegistration.dir/src/lio/ScanRegistration.cpp.o] Error 1
make[2]: *** Attente des tâches non terminées....
[ 11%] Building CXX object Livox-Mapping/SC-PGO/CMakeFiles/livox_mapping.dir/include/scancontext/Scancontext.cpp.o
In file included from /home/glic/catkin_ws/src/Livox-Mapping/LIO-Livox/src/lio/LidarFeatureExtractor.cpp:1:0:
/home/glic/catkin_ws/src/Livox-Mapping/LIO-Livox/include/LidarFeatureExtractor/LidarFeatureExtractor.h:4:10: fatal error: livox_ros_driver/CustomMsg.h: Aucun fichier ou dossier de ce type
#include <livox_ros_driver/CustomMsg.h>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
Livox-Mapping/LIO-Livox/CMakeFiles/ScanRegistration.dir/build.make:86: recipe for target 'Livox-Mapping/LIO-Livox/CMakeFiles/ScanRegistration.dir/src/lio/LidarFeatureExtractor.cpp.o' failed
make[2]: *** [Livox-Mapping/LIO-Livox/CMakeFiles/ScanRegistration.dir/src/lio/LidarFeatureExtractor.cpp.o] Error 1
[ 14%] Built target dnb_msgs_generate_messages_cpp
[ 14%] Building CXX object Livox-Mapping/LIO-Livox/CMakeFiles/PoseEstimation.dir/src/lio/IMUIntegrator.cpp.o
[ 14%] Built target ad_localization_msgs_generate_messages_eus
[ 17%] Built target dnb_msgs_generate_messages_eus
[ 20%] Built target dnb_msgs_generate_messages_py
[ 33%] Built target camera_control_msgs_generate_messages_cpp
[ 45%] Built target camera_control_msgs_generate_messages_nodejs
[ 58%] Built target camera_control_msgs_generate_messages_lisp
[ 70%] Built target camera_control_msgs_generate_messages_eus
[ 84%] Built target camera_control_msgs_generate_messages_py
Scanning dependencies of target livox_ros_driver_generate_messages_cpp
[ 85%] Generating C++ code from livox_ros_driver/CustomPoint.msg
[ 85%] Generating C++ code from livox_ros_driver/CustomMsg.msg
[ 85%] Built target livox_ros_driver_generate_messages_cpp
Scanning dependencies of target livox_ros_driver_generate_messages_eus
[ 85%] Generating EusLisp code from livox_ros_driver/CustomPoint.msg
[ 86%] Generating EusLisp code from livox_ros_driver/CustomMsg.msg
[ 86%] Generating EusLisp manifest code for livox_ros_driver
Scanning dependencies of target livox_ros_driver_generate_messages_nodejs
[ 86%] Generating Javascript code from livox_ros_driver/CustomPoint.msg
[ 86%] Generating Javascript code from livox_ros_driver/CustomMsg.msg
[ 86%] Built target livox_ros_driver_generate_messages_nodejs
[ 86%] Building CXX object Livox-Mapping/LIO-Livox/CMakeFiles/PoseEstimation.dir/src/lio/ceresfunc.cpp.o
[ 87%] Building CXX object Livox-Mapping/LIO-Livox/CMakeFiles/PoseEstimation.dir/src/lio/Map_Manager.cpp.o
[ 87%] Built target livox_ros_driver_generate_messages_eus
Scanning dependencies of target livox_ros_driver_generate_messages_lisp
[ 87%] Generating Lisp code from livox_ros_driver/CustomPoint.msg
[ 88%] Generating Lisp code from livox_ros_driver/CustomMsg.msg
[ 88%] Built target livox_ros_driver_generate_messages_lisp
Scanning dependencies of target livox_ros_driver_generate_messages_py
[ 89%] Generating Python from MSG livox_ros_driver/CustomPoint
[ 89%] Generating Python from MSG livox_ros_driver/CustomMsg
[ 89%] Generating Python msg init.py for livox_ros_driver
[ 89%] Built target livox_ros_driver_generate_messages_py
Scanning dependencies of target livox_odometry_generate_messages
[ 89%] Built target livox_odometry_generate_messages
Scanning dependencies of target ad_localization_msgs_generate_messages
[ 89%] Built target ad_localization_msgs_generate_messages
[ 89%] Built target dnb_msgs_generate_messages
[ 89%] Built target camera_control_msgs_generate_messages
[ 89%] Building CXX object pylon-ros-camera/pylon_camera/CMakeFiles/pylon_camera.dir/src/pylon_camera/binary_exposure_search.cpp.o
[ 90%] Linking CXX executable /home/glic/catkin_ws/devel/lib/xsens_mti_driver/xsens_mti_node
[ 90%] Built target xsens_mti_node
Scanning dependencies of target livox_ros_driver_node
[ 91%] Building CXX object livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/livox_ros_driver/lvx_file.cpp.o
[ 92%] Building CXX object pylon-ros-camera/pylon_camera/CMakeFiles/pylon_camera.dir/src/pylon_camera/encoding_conversions.cpp.o
[ 92%] Building CXX object livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/livox_ros_driver/ldq.cpp.o
[ 92%] Building CXX object livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/livox_ros_driver/lds.cpp.o
[ 92%] Building CXX object pylon-ros-camera/pylon_camera/CMakeFiles/pylon_camera.dir/src/pylon_camera/pylon_camera.cpp.o
[ 93%] Building CXX object livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/livox_ros_driver/lds_lvx.cpp.o
[ 93%] Building CXX object livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/livox_ros_driver/lds_lidar.cpp.o
[ 93%] Building CXX object livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/livox_ros_driver/lds_hub.cpp.o
/home/glic/catkin_ws/src/Livox-Mapping/LIO-Livox/src/lio/PoseEstimation.cpp: In function ‘bool TryMAPInitialization()’:
/home/glic/catkin_ws/src/Livox-Mapping/LIO-Livox/src/lio/PoseEstimation.cpp:250:33: warning: ‘LocalParameterization’ is deprecated: LocalParameterizations will be removed from the Ceres Solver API in version 2.2.0. Use Manifolds instead. [-Wdeprecated-declarations]
ceres::LocalParameterization quatParam = new ceres::QuaternionParameterization();
^~~~~~~~~
In file included from /usr/local/include/ceres/autodiff_local_parameterization.h:39:0,
from /usr/local/include/ceres/ceres.h:39,
from /home/glic/catkin_ws/src/Livox-Mapping/LIO-Livox/include/utils/ceresfunc.h:3,
from /home/glic/catkin_ws/src/Livox-Mapping/LIO-Livox/include/Estimator/Estimator.h:20,
from /home/glic/catkin_ws/src/Livox-Mapping/LIO-Livox/src/lio/PoseEstimation.cpp:1:
/usr/local/include/ceres/local_parameterization.h:121:18: note: declared here
CERES_EXPORT LocalParameterization {
^~~~~~~~~~~~~~~~~~~~~
/home/glic/catkin_ws/src/Livox-Mapping/LIO-Livox/src/lio/PoseEstimation.cpp:250:56: warning: ‘QuaternionParameterization’ is deprecated: Use QuaternionManifold instead. [-Wdeprecated-declarations]
ceres::LocalParameterization quatParam = new ceres::QuaternionParameterization();
^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/local/include/ceres/autodiff_local_parameterization.h:39:0,
from /usr/local/include/ceres/ceres.h:39,
from /home/glic/catkin_ws/src/Livox-Mapping/LIO-Livox/include/utils/ceresfunc.h:3,
from /home/glic/catkin_ws/src/Livox-Mapping/LIO-Livox/include/Estimator/Estimator.h:20,
from /home/glic/catkin_ws/src/Livox-Mapping/LIO-Livox/src/lio/PoseEstimation.cpp:1:
/usr/local/include/ceres/local_parameterization.h:211:18: note: declared here
CERES_EXPORT QuaternionParameterization : public LocalParameterization {
^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/glic/catkin_ws/src/Livox-Mapping/LIO-Livox/src/lio/PoseEstimation.cpp:253:57: warning: ‘void ceres::Problem::AddParameterBlock(double
, int, ceres::LocalParameterization
)’ is deprecated: LocalParameterizations are deprecated. Use the version with Manifolds instead. [-Wdeprecated-declarations]
problem_quat.AddParameterBlock(para_quat, 4, quatParam);
^
In file included from /usr/local/include/ceres/ceres.h:65:0,
from /home/glic/catkin_ws/src/Livox-Mapping/LIO-Livox/include/utils/ceresfunc.h:3,
from /home/glic/catkin_ws/src/Livox-Mapping/LIO-Livox/include/Estimator/Estimator.h:20,
from /home/glic/catkin_ws/src/Livox-Mapping/LIO-Livox/src/lio/PoseEstimation.cpp:1:
/usr/local/include/ceres/problem.h:302:8: note: declared here
void AddParameterBlock(double* values,
^~~~~~~~~~~~~~~~~
[ 94%] Building CXX object livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/livox_ros_driver/lddc.cpp.o
[ 94%] Building CXX object livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/livox_ros_driver/livox_ros_driver.cpp.o
[ 94%] Building CXX object livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/timesync/timesync.cpp.o
[ 95%] Building CXX object livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/timesync/user_uart/user_uart.cpp.o
[ 95%] Building CXX object livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/common/comm/comm_protocol.cpp.o
[ 95%] Building CXX object livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/common/comm/sdk_protocol.cpp.o
[ 96%] Building CXX object livox_ros_driver/CMakeFiles/livox_ros_driver_node.dir/common/comm/gps_protocol.cpp.o
/home/glic/catkin_ws/src/Livox-Mapping/SC-PGO/include/scancontext/Scancontext.cpp: In function ‘float xy2theta(const float&, const float&)’:
/home/glic/catkin_ws/src/Livox-Mapping/SC-PGO/include/scancontext/Scancontext.cpp:36:1: warning: control reaches end of non-void function [-Wreturn-type]
} // xy2theta
^
[ 96%] Building CXX object pylon-ros-camera/pylon_camera/CMakeFiles/pylon_camera.dir/src/pylon_camera/pylon_camera_node.cpp.o
[ 97%] Building CXX object pylon-ros-camera/pylon_camera/CMakeFiles/pylon_camera.dir/src/pylon_camera/pylon_camera_parameter.cpp.o
CMakeFiles/Makefile2:7839: recipe for target 'Livox-Mapping/LIO-Livox/CMakeFiles/ScanRegistration.dir/all' failed
make[1]: *** [Livox-Mapping/LIO-Livox/CMakeFiles/ScanRegistration.dir/all] Error 2
make[1]: *** Attente des tâches non terminées....
In file included from /home/glic/catkin_ws/src/livox_ros_driver/livox_ros_driver/lddc.h:32:0,
from /home/glic/catkin_ws/src/livox_ros_driver/livox_ros_driver/lddc.cpp:25:
/opt/ros/melodic/include/pcl_ros/point_cloud.h:303:27: warning: variable templates only available with -std=c++14 or -std=gnu++14
constexpr static bool pcl_uses_boost = true;
^~~~~~~~~~~~~~
In file included from /home/glic/catkin_ws/src/livox_ros_driver/livox_ros_driver/lddc.h:32:0,
from /home/glic/catkin_ws/src/livox_ros_driver/livox_ros_driver/livox_ros_driver.cpp:32:
/opt/ros/melodic/include/pcl_ros/point_cloud.h:303:27: warning: variable templates only available with -std=c++14 or -std=gnu++14
constexpr static bool pcl_uses_boost = true;
^~~~~~~~~~~~~~
[ 97%] Linking CXX executable /home/glic/catkin_ws/devel/lib/livox_ros_driver/livox_ros_driver_node
[ 97%] Built target livox_ros_driver_node
In file included from /usr/include/pcl-1.8/pcl/sample_consensus/sac_model.h:52:0,
from /usr/include/pcl-1.8/pcl/sample_consensus/sac.h:45,
from /usr/include/pcl-1.8/pcl/sample_consensus/ransac.h:44,
from /home/glic/catkin_ws/src/Livox-Mapping/LIO-Livox/include/utils/pcl_utils.hpp:4,
from /home/glic/catkin_ws/src/Livox-Mapping/LIO-Livox/include/Estimator/Estimator.h:21,
from /home/glic/catkin_ws/src/Livox-Mapping/LIO-Livox/src/lio/Estimator.cpp:1:
/usr/include/pcl-1.8/pcl/sample_consensus/model_types.h: In function ‘void __static_initialization_and_destruction_0(int, int)’:
/usr/include/pcl-1.8/pcl/sample_consensus/model_types.h:99:3: warning: ‘pcl::SAC_SAMPLE_SIZE’ is deprecated: This map is deprecated and is kept only to prevent breaking existing user code. Starting from PCL 1.8.0 model sample size is a protected member of the SampleConsensusModel class [-Wdeprecated-declarations]
SAC_SAMPLE_SIZE (sample_size_pairs, sample_size_pairs + sizeof (sample_size_pairs) / sizeof (SampleSizeModel));
^~~~~~~~~~~~~~~
/usr/include/pcl-1.8/pcl/sample_consensus/model_types.h:99:3: note: declared here
In file included from /usr/include/pcl-1.8/pcl/sample_consensus/sac_model.h:52:0,
from /usr/include/pcl-1.8/pcl/sample_consensus/sac.h:45,
from /usr/include/pcl-1.8/pcl/sample_consensus/ransac.h:44,
from /home/glic/catkin_ws/src/Livox-Mapping/LIO-Livox/include/utils/pcl_utils.hpp:4,
from /home/glic/catkin_ws/src/Livox-Mapping/LIO-Livox/include/Estimator/Estimator.h:21,
from /home/glic/catkin_ws/src/Livox-Mapping/LIO-Livox/src/lio/PoseEstimation.cpp:1:
/usr/include/pcl-1.8/pcl/sample_consensus/model_types.h: In function ‘void __static_initialization_and_destruction_0(int, int)’:
/usr/include/pcl-1.8/pcl/sample_consensus/model_types.h:99:3: warning: ‘pcl::SAC_SAMPLE_SIZE’ is deprecated: This map is deprecated and is kept only to prevent breaking existing user code. Starting from PCL 1.8.0 model sample size is a protected member of the SampleConsensusModel class [-Wdeprecated-declarations]
SAC_SAMPLE_SIZE (sample_size_pairs, sample_size_pairs + sizeof (sample_size_pairs) / sizeof (SampleSizeModel));
^~~~~~~~~~~~~~~
/usr/include/pcl-1.8/pcl/sample_consensus/model_types.h:99:3: note: declared here
[ 97%] Linking CXX shared library /home/glic/catkin_ws/devel/lib/libpylon_camera.so
[ 97%] Built target pylon_camera
In file included from /usr/include/pcl-1.8/pcl/sample_consensus/sac_model.h:52:0,
from /usr/include/pcl-1.8/pcl/sample_consensus/sac.h:45,
from /usr/include/pcl-1.8/pcl/sample_consensus/ransac.h:44,
from /usr/include/pcl-1.8/pcl/registration/icp.h:45,
from /home/glic/catkin_ws/src/Livox-Mapping/SC-PGO/src/laserPosegraphOptimization.cpp:19:
/usr/include/pcl-1.8/pcl/sample_consensus/model_types.h: In function ‘void __static_initialization_and_destruction_0(int, int)’:
/usr/include/pcl-1.8/pcl/sample_consensus/model_types.h:99:3: warning: ‘pcl::SAC_SAMPLE_SIZE’ is deprecated: This map is deprecated and is kept only to prevent breaking existing user code. Starting from PCL 1.8.0 model sample size is a protected member of the SampleConsensusModel class [-Wdeprecated-declarations]
SAC_SAMPLE_SIZE (sample_size_pairs, sample_size_pairs + sizeof (sample_size_pairs) / sizeof (SampleSizeModel));
^~~~~~~~~~~~~~~
/usr/include/pcl-1.8/pcl/sample_consensus/model_types.h:99:3: note: declared here
[ 97%] Linking CXX executable /home/glic/catkin_ws/devel/lib/pylon_camera/IPConfigAuto
[ 97%] Built target IPConfigAuto
[ 97%] Linking CXX executable /home/glic/catkin_ws/devel/lib/livox_mapping/livox_mapping
/usr/bin/ld : ne peut trouver -lBoost::timer
collect2: error: ld returned 1 exit status
Livox-Mapping/SC-PGO/CMakeFiles/livox_mapping.dir/build.make:479: recipe for target '/home/glic/catkin_ws/devel/lib/livox_mapping/livox_mapping' failed
make[2]: *** [/home/glic/catkin_ws/devel/lib/livox_mapping/livox_mapping] Error 1
CMakeFiles/Makefile2:7372: recipe for target 'Livox-Mapping/SC-PGO/CMakeFiles/livox_mapping.dir/all' failed
make[1]: *** [Livox-Mapping/SC-PGO/CMakeFiles/livox_mapping.dir/all] Error 2
[ 97%] Linking CXX executable /home/glic/catkin_ws/devel/lib/livox_odometry/PoseEstimation
[ 97%] Built target PoseEstimation
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j12 -l12" failed

runtime error

roslaunch livox_odometry livox_odometry.launch save_path:="/home/qx263/livox_mapping/src/odom_path.txt"
... logging to /home/qx263/.ros/log/7909962c-93a2-11ec-9067-e4a7a0481322/roslaunch-qx263-28740.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://qx263:33043/

SUMMARY

PARAMETERS

  • /PoseEstimation/Extrinsic_Tlb: [1.0, 0.0, 0.0, -...
  • /PoseEstimation/IMU_Mode: 2
  • /PoseEstimation/filter_parameter_corner: 0.2
  • /PoseEstimation/filter_parameter_surf: 0.4
  • /PoseEstimation/save_path: /home/qx263/livox...
  • /ScanRegistration/config_file: /home/qx263/livox...
  • /rosdistro: kinetic
  • /rosversion: 1.12.16

NODES
/
PoseEstimation (livox_odometry/PoseEstimation)
ScanRegistration (livox_odometry/ScanRegistration)

auto-starting new master
process[master]: started with pid [28750]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to 7909962c-93a2-11ec-9067-e4a7a0481322
process[rosout-1]: started with pid [28763]
started core service [/rosout]
process[ScanRegistration-2]: started with pid [28774]
process[PoseEstimation-3]: started with pid [28781]
finished
[ScanRegistration-2] process has died [pid 28774, exit code -11, cmd /home/qx263/livox_mapping/devel/lib/livox_odometry/ScanRegistration __name:=ScanRegistration __log:=/home/qx263/.ros/log/7909962c-93a2-11ec-9067-e4a7a0481322/ScanRegistration-2.log].
log file: /home/qx263/.ros/log/7909962c-93a2-11ec-9067-e4a7a0481322/ScanRegistration-2*.log
[PoseEstimation-3] process has died [pid 28781, exit code -11, cmd /home/qx263/livox_mapping/devel/lib/livox_odometry/PoseEstimation __name:=PoseEstimation __log:=/home/qx263/.ros/log/7909962c-93a2-11ec-9067-e4a7a0481322/PoseEstimation-3.log].
log file: /home/qx263/.ros/log/7909962c-93a2-11ec-9067-e4a7a0481322/PoseEstimation-3*.log

When I play the rosbag, I meet error, I didn't know the reason. I think maybe I used the wrong version of Eigen. Which version of Eigen do you use? And how about the version of Ceres and GTSAM?

Waiting for you reply, thank you!

IMU_LiDAR params

Hello again my friend ,
I understand what do you mean in #16 but as I'm new, how can I find these parameters ? I tried LiDAR-imu-init repository but the results are not good. I got something like that

Initialization result:
Rotation LiDAR to IMU (degree) = 80.540787 -36.750309 78.788532
Translation LiDAR to IMU (meter) = -0.141204 0.223906 0.390454
Time Lag IMU to LiDAR (second) = -18.262039
Bias of Gyroscope (rad/s) = 0.051176 -0.071062 -0.004010
Bias of Accelerometer (meters/s^2) = -0.005226 0.015899 -0.003477
Gravity in World Frame(meters/s^2) = -7.115069 -6.738784 -0.447985

Homogeneous Transformation Matrix from LiDAR to IMU:
0.155873 -0.276107 0.948403 -0.141204
0.785972 -0.546882 -0.288390 0.223906
0.598291 0.790370 0.131768 0.390454
0.000000 0.000000 0.000000 1.000000

Refinement result:
Rotation LiDAR to IMU (degree) = 82.048534 -36.625378 77.469056
Translation LiDAR to IMU (meter) = -0.274615 0.277822 0.348879
Time Lag IMU to LiDAR (second) = -18.262039
Bias of Gyroscope (rad/s) = 0.257372 -0.246300 -0.139832
Bias of Accelerometer (meters/s^2) = -0.005012 0.015841 -0.003373
Gravity in World Frame(meters/s^2) = -7.115129 -6.738791 -0.448222

Homogeneous Transformation Matrix from LiDAR to IMU:
0.174212 -0.263379 0.948832 -0.274615
0.783446 -0.546662 -0.295589 0.277822
0.596543 0.794853 0.111108 0.348879
0.000000 0.000000 0.000000 1.000000

How can I calib my imu(mti g 710 )with LiDAR (livox mid 40)?? There is any repo ?

EDIT

The values are too big because i did fast calib with lil-init just to show you the type of extracting data.

Thanks in advance .

maybe something wrong

Hi, @SiyuanHuang95

I change the param SLIDEWINDOWSIZE from 2 to 3 in Estimator.h, and test the bag casual_walk.bag which lio_sam privode.

After lidar-imu inited, the trajectory drift .Used topics: /points_raw and /imu_raw.
The extrinsics lidar -> IMU:
extrinsicTrans: [0.0, 0.0, 0.0]
extrinsicRot: [-1, 0, 0,
0, 1, 0,
0, 0, -1]

2022-03-24 11-31-40屏幕截图

If set the SLIDEWINDOWSIZE=2, the program is normal.

2022-03-24 11-34-17屏幕截图

The bag contains two imu topics(/imu_raw and /imu_correct).

If used /imu_corrcect as the imu input, The extrinsics lidar -> IMU:
extrinsicTrans: [0.0, 0.0, 0.0]
extrinsicRot: [1, 0, 0,
0, 1, 0,
0, 0, 1]

Whether the SLIDEWINDOWSIZE is 2 or 3, the program is normal.

It's strange, and maybe something wrong with the extrinsics params in the code.

Do you have a similar problem? Or any Suggestions?

Something wrong with spin lidar(ouster64)

Hi, thanks for your interest!

To support other types of lidar, some modification works are needed:
1. You need one external IMU to publish the information. Also, extrinsic information is also needed.
2. If the point cloud pattern is different from Livox, the feature extraction block needs to de updated accordingly.
3.  The backend for LIOs with different types of lidar is similar.



Bests,

_Originally posted by @SiyuanHuang95 in https://github.com/PJLab-ADG/Livox-Mapping/issues/2#issuecomment-1047702546_

Hi, everybody

As mentioned above, I modify the "ScanRegistration.cpp and LidarFeatureExtractor.cpp" for my spin lidar--ouster,and the code is implemented based on lio_sam.
Now, the feature extract module is normal. And the result is good with the IMU_Mode is 0 and 1.
But there's something wrong when IMU_Mode is 2(Tightly Coupled IMU).
2022-03-10 17-33-21屏幕截图

As the picture above, when process "Frame:4654", the trajectory starts to shift.
The points and imu data record by ouster laser(OS1-64), so the transformation matrix of the laser and imu is the unit matrix. Other parameters are default.
The printing parameters are as follows:

微信截图_20220310174838
微信截图_20220310174913

What causes this? Do you have a similar situation?
Thanks again.

缺失头文件NavStateInfo.h

fatal error: ad_localization_msgs/NavStateInfo.h: 没有那个文件或目录
#include <ad_localization_msgs/NavStateInfo.h>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
请问这个头文件是不是您不小心误删啦,麻烦重新上传一下呗,谢谢啦

Can not build follow your steps

  1. Can not pass the step 3-Build .

When I execute the sentence :git clone https://github.com/PJLab-ADG/LIO_Livox_SLAM.git,
system responds me :remote: Repository not found.
Is the website still be right?

  1. Besides, step 2.3-Docker :docker run --gpus all -it -p 3316:22 --device=/dev/dri --group-add video --volume=/tmp/.X11-unix:/tmp/.X11-unix --env="DISPLAY=$DISPLAY" siyuanhuang95/livox_slam:release /bin/bash, I can not run, either , what does it mean? Is it necessary to execute?
    system responds me:docker: Error response from daemon: error gathering device information while adding custom device "/dev/dri": no such file or directory.

the number of the pcd and odom files generated by Interactive_slam packages is not enough

Hello! When I sue ctrl+c to shut down the odometry and mapping thread after the "around_park_2021-09-24-11-30-54.bag" plays over, only one odom file is generated. There are only 5.9MB of the odom and pcd files generated by the odometry_saver package even though I usde ctrl+c before the bag play over. With the help of zxd,one fomer collegue of your lab, we finally haven't solved the problem after trying many times. And I make the sc files using them, launch the livox_localization, it couldn't match the index. But I use the https://github.com/SMRT-AIST/interactive_slam/wiki/Example2, the number of the pcd and odom files is enough.
Looking forwards to your reply.Thanks.
the generated pcd and odom files is as the image
odom_saver_generated_files

How to implement the ground constraint by using GTSAM

Hi. Thank you for your great work.
I saw that in the source you also use the ground constraint to align Point Cloud with gravity.
I want to implement it in LIO-SAM by using GTSAM.
Do you have idea or convert it to the GTSAM instead of Ceres?
Thanks

Ground constraint

嘿!谢谢您出色的工作!想询问个问题,如果在上下坡这种斜面 地面约束会增大误差吗?hdl_graph_slam的地面约束是在平面上建立的。谢谢!

About Fitting the local ground plane

Thank you for your excellent work!
I have two questions for you.

  1. Is the lidarframelist holding the poses in the lidar coordinate system?
  2. What is the logic in Cost_NavState_PR_Ground? Is the P and Q (translation and rotation) in lidarframelist converted to the world coordinate system? And how is the local ground plane calculated?

I am new in this field, and the transformation makes me confused. I'm sorry for all the questions and look forward to your reply!

Normal information of the point cloud

Hi!
How do you obtain the normal vector information of the point cloud?
I know that the point cloud normal vector information is assigned in LidarFeatureExtractor.cpp, but I don't understand the rationale behind this.
Can such a normal vector assignment method be put into other LiDAR point clouds?
Looking forward to your reply!

livox_mapping node error

Hello, Thanks for great work!
Command:
$ roslaunch livox_mapping livox_mapping.launch save_path:="/home/seven/Leraning/Livox-Mapping_note_ws/src/result"
$ roslaunch livox_odometry livox_odometry.launch save_path:="/home/seven/Leraning/Livox-Mapping_note_ws/src/result/pose.txt"
$ rosbag play my.bag

Problem:
livox_odometry works normally and livox_mapping has the following error. What are the possible reasons?
Screenshot from 2022-02-27 13-52-21

Request for Dockerfile to Accommodate Custom Dependencies

Hello my friend!

I am currently working on developing lidar odometry algorithms and came across your project which I find extremely insightful and relevant to my work.

I noticed that the repository currently offers a link to download a Docker image. While this is incredibly helpful, I am not using ROS and need to modify the environment to include specific dependencies critical to my project.

Could you please provide the Dockerfile used to create the Docker image? Having access to the Dockerfile would allow me to make the necessary modifications and fully utilize your algorithms with my setup.

Thank you for considering my request. I appreciate the work you've put into this project and am looking forward to potentially contributing to it as well.

Best regards,
Lytkin Sergey.

计算odom_to_enu_pose时为何要这样处理?

请问在代码的这一块计算odom到enu的位姿变换时,选择了将roll和pitch置为0,为何要这样处理?

if (useRTK && !rtkOffsetInitialized) {
odom_to_enu = Pose6DtoTransform(currRTK) * Pose6DtoTransform(pose_curr).inverse();
Pose6D odom_to_enu_pose = TransformtoPose6D(odom_to_enu);
odom_to_enu_pose.roll = 0;
odom_to_enu_pose.pitch = 0;
odom_to_enu = Pose6DtoTransform(odom_to_enu_pose);
std::cout << "enu pose is " << currRTK.x << " " << currRTK.y << " " << currRTK.z << " "
<< currRTK.roll << " " << currRTK.pitch << " " << currRTK.yaw << " "
<< std::endl;
rtkOffsetInitialized = true;
}

scancontext的反向回环检测问题

尊敬的博主你好,请问你知道怎么去解决小FOV的lidar的反向scancontext的回环检测问题?我看了博主的代码,怎么没有找到相关的操作呢?可以指导一下吗?我是一名菜鸟研究生

Livox FOV Issue for ScanContext : livox 的FOV小,使用SCANCONTEXT 这类全局描述子时,应该怎么处理呢?

Hi,thanks for your great work! I've got a question about whether this global description can work for livox-like lidar.As far as I concerned,scan Context describe the height information of 360. But solid lidar like livox-mid 70 has too small fov of 70,and its pattern is non-repeative .Can scanContext work to computer the similarity of two frame of livox-like lidar? Thank you sincerely!

mid360 support

LIO-Livox now supports Mid360 sensors. Do you plan to reintegrate with the updated version of LIO-Livox.
I am trying to do it myself https://github.com/dbaldzhiev/Livox-Mapping but with no success.
My fork compiles fine but then :
[pcl::SampleConsensusModel::getSamples] Can not select 0 unique points out of 0! [pcl::RandomSampleConsensus::computeModel] No samples could be selected! [PoseEstimation-3] process has died [pid 16720, exit code -11, cmd /root/ws_livox_mapping/devel/lib/livox_odometry/PoseEstimation __name:=PoseEstimation __log:=/root/.ros/log/e1984e1e-e8be-11ed-84b0-0242ac110002/PoseEstimation-3.log]. log file: /root/.ros/log/e1984e1e-e8be-11ed-84b0-0242ac110002/PoseEstimation-3*.log

Parameters between Lidar and Imu/GNSS

Hello,

i have a livox mid 40 and an INS/GNSS system (xsens mti g 710) . I would like to ask you whats these parameters mean

<rosparam param="Extrinsic_T_livox2gnss"> [0.997573, -0.024254, 0.065274, 0.322019,
                                           0.023477, 0.999644, 0.012663, 0.043158,
                                           -0.066402, -0.011080, 0.997733, 0.456606,
                                           0.0, 0.0, 0.0, 1.0]</rosparam>

I understand that some of them are the distances between lidar and imu but could you explain every number on this table what represents?

Thanks in advance.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.