Livox Horizon
Hello.
Glim is my first contact with SLAM, I'm very excited,
I've a Livox Horizon.
I managed to compile Ros2 driver, which supports Horizon, Avia etc.. I believe the Ros2 driver has a design flaw that caps the IMU rate to 50hz max, as is tight to the point pakets receiving rate. It seems that to fix this source needs to o be modified so that IMU data runs on a separate thread... That seems reported in 2021 and has not been fixed since... Mor info here: https://github.com/Livox-SDK/livox_ros2_driver/issues/54
So, The Horizong Ros2 bags, as of now hav e a limited rate of 50hz in the IMU. Not sure if this is an issue or not, probably yes... I'll try to fix this separte issue.
So, in regards to GLIM I was trying to make the bags run as the sample data.
At first I had no luck. Then I noticed the multisensors sample.
I did launch with custom params pointing to the livox Avia setup ros2 run glim_ros glim_rosbag /data/MyHorizonBags/ROS2/TestBag_03 --ros-args -p config_path:=/data/MyHorizonBags/ROS2/config/livox -p use_sim_time:=true
no luck.
Later what I did was to modify the ros json that comes with the docker
I did set the isu imu in the 2 config .json to false I set odometry to points only without imu -->config_odometry_ct.json recompiled with colcon, relaunch the docker and boom!
Slam started to work, my heart jumped tbh.
Sadly within the small test of the capture the slam kind of breaks, I did several attemps but allways happens. I assume this is because of the lack of IMU.
So. I was wondering if anyone has succeeded using Livox Horizon & GLIM and could share some tips.
I'll keep testing. I will now enable the IMU, rebuild GLIM and see what happens..
My 12v battery arrives soon so I'll be able to go outdoor to capture so may be it was because it was a semistatic bag because I had to capture from the window as it is attache dto the deskto :D
I plan to use the Steamdeck for outdoor, on the Steamdeck so far I had installed Ros1 drivers (prior to discovering GLIM) But I believe I'll be able to compile Ros2 and for the network with a USB dongle, time will tell.
I've started to rewrite the Livox Ros2 driver in order to decouple the publishing of the imu from the lidar data. I crated a new thread but it seems that still may be hearing to the lddc wait calls so it is still working on 10-50hz rates.
I recorded the bag and when playing with glim, a silent error ocurred that is that since I've multiple containers runnign sometimes the mount of the disk changes the path with a +1, not sure if this happens in the suspends recovery of the OS or what, the thing is that the scanne data feed was running live on glim and I was able to capture an amazin scan from my window, with all the data aligned. Without imu timestamp warnings etc, I was able to look downwards without breakign the SLAM. I did notice tho, that in a second run, areas that are mapped they progresively dissapear, as if there was a decay time for tehese while other areas do persist. But as you can see clean shwdows andn perfect alignment.
I'e not yet able to run the bag so I can´t confirm if the clean log without time stamp issues comes from the rewrite of the driver or from running it live. Cheers!
[EDIT] This issue is fixed, what was going on was some weird thing with the docker acces to the host mounted volume. Deleting a problemating folder that was holding a TestBag_06 with broken data inside within the container, not sure where this came from... but deleting this, closing the container and reopening it, fixed the issue, now the bag raw perfectly as in the pictures above. The dadta is perfectly aligned! not sure if this was a lucky strike or the modified driver is publishing the imu better, since even the log is perfectly clean without any imu time errs. More testing is needed.
At least I learned how to launch GLIM with live sensor readings.
I've the battery already so I'm a few days away from having the rig portable. I need a few cables and install ros2 on the SteamDeck, and prepare some scripts to launch them with double tap etc...can´t wait to make a bigger map!
something strage going on ..
- GLIM-Docker) root@e6ebfca4e7ba:~/ros2_ws/src/glim$ ros2 run glim_ros glim_rosbag /data/MyHorizonBags/ROS2/TestBag_06 --ros-args --remap use_sim_time:=true
- [2025-11-22 20:47:08.174] [glim] [info] config_path: /root/ros2_ws/install/glim/share/glim/config
- [2025-11-22 20:47:08.174] [glim] [info] load libodometry_estimation_gpu.so
- [2025-11-22 20:47:08.412] [glim] [info] load libsub_mapping.so
- [2025-11-22 20:47:08.412] [glim] [info] load libglobal_mapping.so
- [2025-11-22 20:47:08.413] [glim] [info] load libmemory_monitor.so
- [2025-11-22 20:47:08.413] [glim] [info] load libstandard_viewer.so
- [2025-11-22 20:47:08.654] [glim] [info] load librviz_viewer.so
- [2025-11-22 20:47:08.660] [glim] [info] topics:
- [2025-11-22 20:47:08.660] [glim] [info] - /livox/imu
- [2025-11-22 20:47:08.660] [glim] [info] - /livox/lidar
- [2025-11-22 20:47:08.660] [glim] [info] - /image
- [2025-11-22 20:47:08.660] [glim] [info] bag_filenames:
- [2025-11-22 20:47:08.660] [glim] [info] - /data/MyHorizonBags/ROS2/TestBag_06
- [2025-11-22 20:47:08.660] [glim] [warning] param glim_ros/playback_speed not found
- [2025-11-22 20:47:08.660] [glim] [warning] use default_value=100
- [2025-11-22 20:47:08.660] [glim] [info] opening /data/MyHorizonBags/ROS2/TestBag_06
- [INFO] [1763844428.661997538] [rosbag2_storage]: Opened database '/data/MyHorizonBags/ROS2/TestBag_06/TestBag_06_0.db3' for READ_ONLY.
- [WARN] [1763844428.662034408] [rosbag2_cpp]: No topics were listed in metadata.
Al seems ok but nothing goes on in the viewer, even if II launch it like this, the live sensor feed takes over. I disconected the lidar and still nothing happens :\
May be it is a config param. can´t recall I touched anything ...
I fixed Ros2 Driver by decoupling IMU and Lidar data stream, solution on first link. I also seem to have fixed GLIM config for Horizon. Will soon share once I test more. I've to build the mobile rig to fully test. I will also do car mounted scans but I'm waiting for the color camera to arrive.