-
Notifications
You must be signed in to change notification settings - Fork 82
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
May you check your messages on bilibili? Need some help for running Mid360 with LIORF #33
Comments
Hello, LiuYMUNI Did you find the livox mid 360 sensor setting parameter value? |
Hi KimHyung,
I did not make it to run liorf slam with mid 360.
…________________________________
Von: KimHyung ***@***.***>
Gesendet: Mittwoch, 21. Februar 2024 07:38 Uhr
An: YJZLuckyBoy/liorf ***@***.***>
Cc: LiuYMUNI ***@***.***>; Author ***@***.***>
Betreff: Re: [YJZLuckyBoy/liorf] May you check your messages on bilibili? Need some help for running Mid360 with LIORF (Issue #33)
Hello, LiuYMUNI
I am also planning to use liorf slam with livox mid 360.
Did you find the livox mid 360 sensor setting parameter value?
—
Reply to this email directly, view it on GitHub<#33 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AXPGLB6MPO5GMGQZN4XJ2YLYUWI6LAVCNFSM6AAAAABBSHPXNCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNJVHE4DQNRVG4>.
You are receiving this because you authored the thread.Message ID: ***@***.***>
|
Hi LiuYMUNI I figured out how to slam liorf with mid 360. setp 1. (imageProjection.cpp)
and add var
step 2. change cachePointCloud and ringFiled condition (imageProjection.cpp)
step 3 change yaml param.(lio_sam_default.yaml)
I found out that the N_SCAN parameter of mid-360 is 4. Right now I'm looking for Horizon SCAN values. When running with the Horizon SCAN = 4000, the drift became worse when rotating more than 70 degrees at a time. I am trying to find the optimal value through parameter tuning. |
Hi KimHyung,
thanks a lot for the detailed reply. Amazing result! I really appreciate this email with detail instructions about the modification. Right now I do not have enough time to try this out, but later if I got enough time, I will definitely try it with the help of your email. I wish you success and good luck!
Best regards
…________________________________
Von: KimHyung ***@***.***>
Gesendet: Samstag, 24. Februar 2024 10:57 Uhr
An: YJZLuckyBoy/liorf ***@***.***>
Cc: LiuYMUNI ***@***.***>; Author ***@***.***>
Betreff: Re: [YJZLuckyBoy/liorf] May you check your messages on bilibili? Need some help for running Mid360 with LIORF (Issue #33)
Hi LiuYMUNI
i made it!!!!!!
you have to define LivoxPointXYZIRT and ring filed for livox mid 360.
setp 1. (imageProjection.cpp)
add LivoxPointXTZIRT struct under struct VelodynePointXYZIRT
`struct VelodynePointXYZIRT
{
PCL_ADD_POINT4D
PCL_ADD_INTENSITY;
uint16_t ring;
float time;
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
} EIGEN_ALIGN16;
POINT_CLOUD_REGISTER_POINT_STRUCT (VelodynePointXYZIRT,
(float, x, x) (float, y, y) (float, z, z) (float, intensity, intensity)
(uint16_t, ring, ring) (float, time, time)
)
struct LivoxPointXYZIRT
{
PCL_ADD_POINT4D
float intensity;
uint8_t tag;
uint8_t line;
float time;
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
} EIGEN_ALIGN16;
POINT_CLOUD_REGISTER_POINT_STRUCT(LivoxPointXYZIRT,
(float, x, x)(float, y, y)(float, z, z)(float, intensity, intensity)
(uint8_t, tag, tag)(uint8_t, line, line)(float, time, time)
)
and add varpcl::PointCloud::Ptr laserCloudIn;
pcl::PointCloud::Ptr tmpLivoxCloudIn;,void allocateMemory()
{
laserCloudIn.reset(new pcl::PointCloud());
tmpLivoxCloudIn.reset(new pcl::PointCloud());
tmpOusterCloudIn.reset(new pcl::PointCloud());
tmpMulranCloudIn.reset(new pcl::PointCloud());
fullCloud.reset(new pcl::PointCloud());
resetParameters();
}`
step 2. change cachePointCloud and ringFiled condition (imageProjection.cpp)
if (sensor == SensorType::VELODYNE) { pcl::moveFromROSMsg(currentCloudMsg, *laserCloudIn); } else if (sensor == SensorType::LIVOX) { pcl::moveFromROSMsg(currentCloudMsg, *tmpLivoxCloudIn); laserCloudIn->points.resize(tmpLivoxCloudIn->size()); laserCloudIn->is_dense = tmpLivoxCloudIn->is_dense; for (size_t i = 0; i < tmpLivoxCloudIn->size(); i++) { auto &src = tmpLivoxCloudIn->points[i]; auto &dst = laserCloudIn->points[i]; dst.x = src.x; dst.y = src.y; dst.z = src.z; dst.intensity = src.intensity; dst.ring = src.line; dst.time = src.time; } }
,
ringFlag = -1; for (int i = 0; i < (int)currentCloudMsg.fields.size(); ++i) { //added for livox if (currentCloudMsg.fields[i].name == "ring" || currentCloudMsg.fields[i].name == "line") { ringFlag = 1; break; } }
step 3 change yaml param.(lio_sam_default.yaml)
sensor: livox # lidar sensor type, 'velodyne' or 'ouster' or 'livox' or 'robosense' N_SCAN: 4 # number of lidar channel (i.e., Velodyne/Ouster: 16, 32, 64, 128, Livox Horizon: 6) Horizon_SCAN: 8000 # lidar horizontal resolution (Velodyne:1800, Ouster:512,1024,2048, Livox Horizon: 4000) downsampleRate: 1 # default: 1. Downsample your data if too many points(line). i.e., 16 = 64 / 4, 16 = 16 / 1 point_filter_num: 1 # default: 3. Downsample your data if too many points(point). e.g., 16: 1, 32: 5, 64: 8 lidarMinRange: 3.0 # default: 1.0, minimum lidar range to be used lidarMaxRange: 80.0 # default: 1000.0, maximum lidar range to be used
I found out that the N_SCAN parameter of mid-360 is 4. Right now I'm looking for Horizon SCAN values.
When running with the Horizon SCAN = 4000, the drift became worse when rotating more than 70 degrees at a time. I am trying to find the optimal value through parameter tuning.
good.png (view on web)<https://github.com/YJZLuckyBoy/liorf/assets/18005412/3e2f8064-3e52-492a-b80c-1e280fe1f173>
bad.png (view on web)<https://github.com/YJZLuckyBoy/liorf/assets/18005412/3b4f77e7-5250-406c-8c46-e5f16aece3f0>
—
Reply to this email directly, view it on GitHub<#33 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AXPGLB4OCOXWGOCDEQIJLTTYVG2Q3AVCNFSM6AAAAABBSHPXNCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNRSGMYTKNBVG4>.
You are receiving this because you authored the thread.Message ID: ***@***.***>
|
Thanks for these instructions for the Mid-360! I have implemented them but it doesn't seem to work... Did you have to modify anything related to the frame_id to make things appear in rviz? I am getting the same error as this: #16 |
I have not modified anything related to frame_id in the provided lio_sam_livox.yaml file.
|
Thanks for that! I actually found some other changes that I made were the reason it was not working! The changes you shared for the Mid-360 seem to work fine! Thanks! :-D So far I have found the performance of liorf with the Mid-360 to be a bit strange - the start of mapping is very shaky and the loop closure feature seems to keep pulling the odometry backwards even though the lidar is stationary... After ~20seconds it becomes more stable but is still not great. (Not better than Fast-LIO2 for example) This is only my testing from 2 recordings so nothing conclusive! Maybe I am don't initialise the system properly or something... Is your experience similar? |
I follow @KimHyung 's instruction and make it to do liorf relocalization. Thanks a lot for that. |
livox line is not the same meaning of the mechanical lidar, actually is a block ,how can it work ? |
@ALazyLearner @zhangxu0089 Actually, liorf does not need to know the ring of each point in the point cloud data. 'ring' is only used to sparsify the point cloud. If you do not know how to set the 'N_SCAN' and 'Horizon_SCAN', you only need to ensure that N_SCAN * Horizon_SCAN > N_Points, which refers to the number of point clouds in per frame. |
With mid-360, maybe you can try the following parameters:
|
Do you guys use the imu in livox360? If you use the imu from livox360, its frequency is 200HZ, and imuType need set to 0, am I understanding correctly? @YJZLuckyBoy @KimHyung |
Dear YJZLuckzBoy, I send you a message on bilibili, can you please reply me and help. Thanks a lot.
The text was updated successfully, but these errors were encountered: