LIDAR object recognition

hi all,

I want to recognise basic geometric shapes (triangle, rectangle, pentagon) and their orientation with one lidar. Anyone already done that or any ideas on how to approach this?

I guess optical solutions are out, since one lidar just sees one side of the object.
Getting the closest point the the lidar, computing the vectors to the adjacent points until you find an edge? how about rotation?

cheers, A

Shape recognizer from VL ?

works on 39beta, crashes instantly on 50beta38.1.
already works with custom shapes after training 3 samples. impressive!

If you’re into VL and using a SICK LIDAR, you can try the SICK LIDAR plugin. To install :

nuget install VL.Devices.SICK -pre

and check the help patch

Combined with some DBSCAN, you can find clusters of points and perform some analysis from there :

nuget install VL.DBSCAN

1 Like

great! did not know that existed. much appreciated!

did a quick try with an rotating L shape and looks like it should also be able to detect different rotated states… will try to train with better data and see how accurate this gets.

thank you guys!

not sure if applicable but also check the “Detect Shapes” howto coming with VL.OpenCV

I know the lidar won’t produce that kind of convex shape, but it works suprisingly well.
Trained 128 rotations, each with ~32 pos per SVG sample.


works pretty sweet in theory, but when I when using DBSCAN to analyze clusters, the points come in a not-to-perfect sequence, and $Q has a trouble recognising my shapes. Will try to build some forms out of fiducal tracker outlines and test if that helps.


Any ideas on how to reorder my DBSCAN cluster points?

do you mean you want to order the point based on their angle ?

you could use an OrderBy region with the angle comming out of a Polar node :


OrderByAngle.vl (26.2 KB)

1 Like

ha! cool, but did not do the trick…
It’s my outlines that confuse $Q
Will try with some convex shapes.

Thank You!

my previous answer might not work irl, that was just a lead on how to restore order in a spread of 2d vectors :)

also check out the Former Index version of the region

I’m guessing you have to cluster points before applying polar, and then do polar against bounds to get the result

And second also dollarQ shouldn’t care about the order of points…

ah, got wrong cluster centers because of “minimum points per cluster” setting.
now working as expected