Measuring velocity of LiDAR itself

Hello everyone,

For our robot application, we would like to measure the velocity of the robot itself using a LiDAR.
I would like to learn if this is technically possible and if yes, if there are certain libraries available (e.g. for ROS) to achieve this?
I have found some examples here, but I am not convinced if these are usable or if there are better alternatives:

and
http://wiki.ros.org/rf2o_laser_odometry

Unless I am wrong, there does not seem to be a use case about this on the forum.

Thanks in advance for your input.

Regards,
Tibo

@tibosept Welcome to the RobotShop Community.

I would like to learn if this is technically possible

Don’t see why not, though there’s a maximum speed the object can be traveling at of course. Do you mean a 2D scanning lidar or 1D?

Unless I am wrong, there does not seem to be a use case about this on the forum.

Correct. As you suspect, it’s all about the code, speed of execution and trigonometry. To confirm, would the Lidar be on the robot, or on a fixed object which the robot moves past?

@cbenson The robot will be driving at maximum 10 km/h and we are probably going to use a 3D lidar (LsLeidar C16).
Would you rather go for a 2D lidar? The lidar will be installed on the robot itself, to also measure its own velocity.

That will involve some interesting calculations. Ideally everything around it would be fixed (or it would need to assume so) and it would need to take a few points as reference and calculate their displacement over a set time. The smaller the time, the less the point moves and the more it can assume that point is the same as the original.

Here’s the issue: If the robot is travelling down a hallway with no doors, parallel to the wall, what points of reference will it have to calculate its speed since it will just look like two lines? If the robot is turning, that makes the calculations even more complex. From a programming standpoint, which points to choose (multiple would be best, and how to ensure you’re recording the displacement of the same points?

It’s all theoretically possible, but my programming skills are not at that level, and with a 2D point cloud, you’ll likely have some interesting issues to overcome. Hopefully your robot will also have encoders to get a better idea of the speed.