Code Monkey home page Code Monkey logo

lins---lidar-inertial-slam's People

Contributors

chaoqinrobotics avatar charleslovescpp 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lins---lidar-inertial-slam's Issues

the dataset is too little

The dataset that you have upload cannot show the ability of your algorithm. Can you upload more dataset?

the discrete-time propagation model

hi,Doctor Qin:
”To predict xbk+1 , the discrete-time propagation model for
the robocentric state is required.“ the discrete-time propagation model is same to the linearized continuous-time model ?equation(6)-(11) is continuous-time model ,but it's used in code.

How to get IMU noise parameter?

I want to run LINS in my own platform. But I don't konw how to get IMU noise parameter. And I am still confused with the parameter units.

filter's state

Hi doctor qin, filter's state in code KalmanFilter.hpp seems is $X^{bk}{b{k+1}}$. But in the lins paper, the filter's state is $\delta X$, which is the error state vector of $X^{b_k}{b{k+1}}$, why?
In joan sola's paper, the filter's state is the error state and the R related matrix of equ 237 is $R_t$, which is the rotation in G frame, does not agree with R related matrix of equ 9-11 in lins paper, which is $R^{b_k}t$ rotation from time t to $b{k}$, why?
Thanks very much!

dateset problem

Dear @ChaoqinRobotics ,
I encountered some difficulties in trying to run Lins with the Kitti dataset,the topic of laser_odom_to_init and the topic of aft_mapped_to_init deviate too far in rviz,What's wrong with me?
2021-02-19 21-22-58屏幕截图

How to test on kitti

Hi, @ChaoqinRobotics , I like LINS especially its clear idea. But I'm confused how to test LINS on kitti dataset to compare with other algorithms. I have tried for it , but not have a success . Can you help with providing an example about testing on kitti dataset when you are free? That's very important, Thanks a lot!

Why not use the covariance from imu pre-integration

It seems that the code don't use the covariance and jacobian calculated by imu pre-integration,and I find the imu only used to get a estimate of pose between two consecutive pointclouds, so why not use the covariance from imu pre-integration as the P in kalman filter? Thank you!

State update

Hi, I'm interested in your robocentric way to realize the state update. According to your paper and code, v_new = r * v_old, g_new = r * g_old. In the meanwhile, the covariance of v and g do not change. Is it a better way if I update the covariance by : cov_v_new = r * cov_v_old * rt, cov_g_new = r * cov_g_old * rt, which seems to be more appropriate? Thank you!

lins_fusion_node died

Hello, thanks for your work. I met this problem when the system run for a while. For another dateset, it is fine and not met this problem. Before I go deep into your code, could you give some advice why lins_fusion_node could die? Thank you very much. I suppose it may be a small bug.

process[rosout-1]: started with pid [25255]
started core service [/rosout]
process[rviz-2]: started with pid [25261]
process[camera_init_to_map-3]: started with pid [25263]
process[base_link_to_camera-4]: started with pid [25264]
process[image_projection_node-5]: started with pid [25269]
process[transform_fusion_node-6]: started with pid [25275]
process[lins_fusion_node-7]: started with pid [25277]
[ INFO] [1603181800.736097884]: ----> Transform Fusion Started.
process[lidar_mapping_node-8]: started with pid [25282]
[ INFO] [1603181800.767810508]: ----> LINS Fusion Started.
[ INFO] [1603181800.781282885]: Subscribe to ----> /imu/data
[ INFO] [1603181800.781311707]: Subscribe to ----> /velodyne_points
[ INFO] [1603181800.792679422]: ----> Map Optimization Started.
[ INFO] [1603181800.814990098]: ----> Feature Extraction Module Started.
[ INFO] [1603181805.713068953, 1601430297.022372394]: System Converges after 1 iterations
[lins_fusion_node-7] process has died [pid 25277, exit code -11, cmd

Interface Xsens Lidar

Hello guys,

do you have any diagram in which you are explain how did you connect everything?What converters did you use etc.

Thanks in advance.

I get this error when play bag,how can I fix it? thanks

[pcl::VoxelGrid::applyFilter] Leaf size is too small for the input dataset. Integer indices would overflow.[pcl::VoxelGrid::applyFilter] Leaf size is too small for the input dataset. Integer indices would overflow.[pcl::VoxelGrid::applyFilter] Leaf size is too small for the input dataset. Integer indices would overflow.[pcl::VoxelGrid::applyFilter] Leaf size is too small for the input dataset. Integer indices would overflow.[pcl::VoxelGrid::applyFilter] Leaf size is too small for the input dataset. Integer indices would overflow

imu bias noise unit

Hi doctor qin,
In lins paper, imu bias's derivates n_ba, n_bg unit are m/(s^2)/s and rad/s/s repectively?
In cofig file exp_port.yaml:

  • acc_w is n_ba. acc_w's unit is ug/s = 1e-6 * 9.81 m/(s^2)/s.
  • gyr_w is n_bg. gyr_w's unit is degree/sqrt(h) = pi/180.0/sqrt(3600) rad/sqrt(s), which is not consistent with the paper?

I'm confused with the imu bias noise unit. I want to figure out the 4 noise terms unit and then figure out how to set them value according to a imu datasheet. Please have a look when you are free, thanks a lot !

cannot setup mapping node and codding mistake found

Hi, thanks for your amazing works,
I have some troubles with it

  1. It seems I cannot setup mapping node.when I run roslaunch lins run_port_exp.launch,the console outputs like this:
    process[rviz-1]: started with pid [15477]
    process[camera_init_to_map-2]: started with pid [15478]
    process[base_link_to_camera-3]: started with pid [15479]
    process[image_projection_node-4]: started with pid [15487]
    process[transform_fusion_node-5]: started with pid [15498]
    process[lins_fusion_node-6]: started with pid [15516]
    process[lidar_mapping_node-7]: started with pid [15517]
    [ INFO] [1597906389.094266467]: ----> Transform Fusion Started.
    [ INFO] [1597906389.094988679]: ----> LINS Fusion Started.
    [ INFO] [1597906389.107957349]: ----> Feature Extraction Module Started.
    [ INFO] [1597906389.123889626]: Subscribe to ----> /imu/data
    [ INFO] [1597906389.123910824]: Subscribe to ----> /velodyne_points
    [lidar_mapping_node-7] process has died [pid 15517, exit code -11, cmd /home/cidi/catkin_ws/devel/lib/lins/lidar_mapping_node __name:=lidar_mapping_node __log:=/home/cidi/.ros/log/f6719146-e2aa-11ea-9549-e4b97aecce09/lidar_mapping_node-7.log].
    log file: /home/cidi/.ros/log/f6719146-e2aa-11ea-9549-e4b97aecce09/lidar_mapping_node-7*.log

  2. and it seems a mistake in "StateEstimator.hpp" of line 859 and 983.
    the "surfPointsFlatNum" and "cornerPointsSharpNum" should represent the lastScan's feature number but nor the newScan. and it may influence the algorithm's performance.

qusetion of F matrix

KalmanFilter.hpp:157
Ft.block<3, 3>(GlobalState::vel_, GlobalState::gra_) = M3D::Identity();

the value of vel w.r.t gra in in pape is 0, why here is Identity?
the value of att w.r.t gra in in pape is -M3D::Identity(), why here is 0?

Issue about loop detection

I have a trouble about loop detection in mapping and Map is not flat. Can i give advice for this condition?

Dataset for testing

Thanks for sharing the code.

I'm interested in trying your method, could you provide a dataset for testing? I see now the link to the dataset is empty.

Regards.

Hk jacobian matrix

Hi doctor qin,
in StateEstimator.hpp,
"Hk_.block<1, 3>(i, GlobalState::att_) = coff_xyz.transpose() * (-linState_.qbn_.toRotationMatrix() * skew(P2xyz)) * Rinvleft(-axis);",
J_r(a)=J_l(-a).

How to deal with time synchronization between LIDAR and IMU?

I want to use a ouster and an IMU to imitate your handware setup. But I don't konw how to deal with time synchronization between LIDAR and IMU. Could you please tell me whether I need to handle time synchronization when you have time? And if so, how do you consider it?

jacobian meaning in integrationBase.h

Hi doctor qin, thanks for sharing the code!
when preintegrating imu measurements, Which variable wrt which variable of jacobian meaning, is there some reference paper to read first to understand, thanks very much!
BTW, i see the functions like estimateInitialState1(), estimateInitialState2(), estimateInitialState3() and solveGyroscopeBias() in StateEstimator.hpp are not called by someone.

doubt about StateEstimator.cpp line 549

Hi,
I found the code file StateEstimator.cpp line 549
updateVec_ = -Kk_ * (residual_ + Hk_ * difVecLinInv_) + difVecLinInv_;
a little different from the equation(16) (17) in your paper, I think it seems like this
updateVec_ = -Kk_ * (residual_ - Hk_ * difVecLinInv_) + difVecLinInv_;
I may have misunderstood, so can you give a explanation. Thank you!

Ft matrix

In your code in KalmanFilter.hpp line 159:
Ft.block<3, 3>(GlobalState::att_, GlobalState::att_) =
skew(gyr - state_tmp.bw_);
But according to your paper and code in LIO-Mapping, this block is "-skew(gyr - state_tmp.bw_)", Is this a bug?

imu extrinsics are not used

I searched for two variables init_rbl and init_tbl in the code but found that they were not used actually. Is this a bug?

std::bad_alloc of lins_fusion node

Hi author,
Sometime the lins_fusion_node will crash with our bag data(over 15G, not uploaded for now). OS is ubuntu16.04 + gcc7.4.0(g++ 7.4.0) + cmake3.17.2 + PCL1.7.2 The detailed result is :

[ INFO] [1594192703.778903566]: ----> Transform Fusion Started.
[ INFO] [1594192703.792973732]: ----> LINS Fusion Started.
[ INFO] [1594192703.807135074]: ----> Feature Extraction Module Started.
[ INFO] [1594192703.812935854]: Subscribe to ----> /imu/data
[ INFO] [1594192703.812958958]: Subscribe to ----> /velodyne_points
[ INFO] [1594192703.826903704]: ----> Map Optimization Started.
[ INFO] [1594192706.594825669, 1574426489.592443649]: System Converges after 1 iterations
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
[lins_fusion_node-6] process has died [pid 21709, exit code -6, cmd /home/jxl/Lins_ws_raw/devel/lib/lins/lins_fusion_node __name:=lins_fusion_node __log:=/home/jxl/.ros/log/1a50bbdc-c0eb-11ea-b3c5-8cec4bc262f3/lins_fusion_node-6.log].
log file: /home/jxl/.ros/log/1a50bbdc-c0eb-11ea-b3c5-8cec4bc262f3/lins_fusion_node-6*.log

Thanks for your help!

Loop dêtction

I have a trouble about loop detection in mapping and Map is not flat. Can i give advice for this condition?

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.