First of all, thanks for this very complete SDK!
I am using a YDLidar G2 device. I cannot get a correct intensity value.
Here is what I found in the source code:
In CYdLidar class, there is a member m_IntensityBit that can be set using setlidaropt and defaults to 10.
Depending on the device type, there can be no intensity value, or intensity value on 8 or 10 bits.
However, in YDlidarDriver class, there is also a member m_intensityBit, but it does not seem to be linked to the same member in CYdLidar.
In YDlidarDriver::getIntensityFlag(), called from YDlidarDriver::startScan(), m_intensityBit can be set to 0 or 8, but never to 10.
So in YDlidarDriver::parseNodeFromeBuffer(), the 2 upper intensity bit coming from the distance register are never used.
With a YDLidar G2 which has 10-bit intensity value, if the intensity becomes greater than 255, it returns to 0 whereas it should continue to increase until 1024.
Is my understanding correct or did I missing something to get the correct intensity value?
Hello,
First of all, thanks for this very complete SDK! I am using a YDLidar G2 device. I cannot get a correct intensity value. Here is what I found in the source code:
In
CYdLidar
class, there is a memberm_IntensityBit
that can be set usingsetlidaropt
and defaults to10
. Depending on the device type, there can be no intensity value, or intensity value on 8 or 10 bits.However, in
YDlidarDriver
class, there is also a memberm_intensityBit
, but it does not seem to be linked to the same member inCYdLidar
.In
YDlidarDriver::getIntensityFlag()
, called fromYDlidarDriver::startScan()
,m_intensityBit
can be set to 0 or 8, but never to 10.So in
YDlidarDriver::parseNodeFromeBuffer()
, the 2 upper intensity bit coming from the distance register are never used.With a YDLidar G2 which has 10-bit intensity value, if the intensity becomes greater than 255, it returns to 0 whereas it should continue to increase until 1024.
Is my understanding correct or did I missing something to get the correct intensity value?