chaoqinrobotics / lins---lidar-inertial-slam Goto Github PK
View Code? Open in Web Editor NEWA Lidar-Inertial State Estimator for Robust and Efficient Navigation based on iterated error-state Kalman filter
A Lidar-Inertial State Estimator for Robust and Efficient Navigation based on iterated error-state Kalman filter
The dataset that you have upload cannot show the ability of your algorithm. Can you upload more dataset?
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.
Hi doctor qin, when we calculating the distance of point P0 to line(P1 - P2) wrt P0 jacobian, the jacobian why is this form?
Let we
How you get the formal like above,thanks very very much !
Hi @ChaoqinRobotics,
Thanks for providing such great project.
I'm wondering is the 3D point cloud map generated by the LINS
can be saved? If can, which command should I launch?
Besides, I'm curious does the LINS
able to do the re-localization?
Cheers!
Best Regards,
William
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.
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
In joan sola's paper, the filter's state is the error state and the R related matrix of equ 237 is
Thanks very much!
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?
Hi doctor qin, when we calculating residual(point to line and point to plane) wrt translation jacobian in
translation jacobian in calculateTransformation() and translation jacobian in performIESKF(), it seems that there miss a variable s
?
double s = (1.f / SCAN_PERIOD) * (keypoint.intensity - int(keypoint.intensity));
Is it right? Thanks very much !
When I executing "roslaunch lins run_port_exp.launch", an error ouccrs:
Error transforming odometry 'Odometry' from frame '/camera_init' to frame 'map'
How can I fix this?
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!
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!
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!
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
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.
[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
When executing "catkin_make -j1", an error occurs:
error: ‘string’ in namespace ‘std::__cxx11’ does not name a type
134 | void readV3D(cv::FileStorage file, const std::__cxx11::string& name,*
How can I fix it?
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:
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 !
Hi, thanks for your amazing works,
I have some troubles with it
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
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.
Dear @ChaoqinRobotics ,
When I test LINS on UrbanNav dataset, I'm confused the imu parameter in LINS's config file. In the UrbanNav dataset, the unit of acc_noise and acc_walk is m/(s^2), and gyro_noise is rad/s. Should I do any special treatment in LINS's config file?
Here is imu parameters in UrbanNavdataset https://github.com/weisongwen/UrbanNavDataset/blob/master/UrbanNav-HK-Data20190428/xsens_imu_param.yaml. Can you help me with that ? Thanks a lot!
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?
I have a trouble about loop detection in mapping and Map is not flat. Can i give advice for this condition?
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.
Hi @ChaoqinRobotics :
Thank you for sharing your work!
I have doubt on equation (18) in your paper:
how did you get that? According to the equation (54) in the reference [29], I think it should be:
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).
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?
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.
Is there any function of preintegration? i just see the use of it once in state estimator, and push back only once
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!
Thank you for your great work. I have a quetion whether the code you release is the same as that in the vedio. The performance of your algorithm in the vedio is really excellent.
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?
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?
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!
I have a trouble about loop detection in mapping and Map is not flat. Can i give advice for this condition?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.