@happysamuel I believe that it is intentional to send all 64 channels in each packet even for lidar units that only use 32 or 16 channels - it means that you can use the same driver for all different lidar units.
In units that don't use all 64 channels, the ones that are not used will be set to zeroes. There are ways to filter out points set to zeros in PCL.
The disadvantage of this approach is that the data contains a lot of unnecessary zeroes and it wastes space and bandwidth, but I think the tradeoff of not having to change drivers is preferred.
What I did was that I modified the example driver code to ignore points set to zero and not add them to the point cloud. The tricky part is knowing which channels are ignored - this can be different per lidar unit and as far as I know there is no documentation on this readily available. It depends on the
prod_line of your unit, which determines the beam configuration of your lidar. You can ask Ouster support for documentation, or you can examine the data your lidar unit produces and try to infer which channels are always producing zeros.
That being said, it would be a nice feature to allow the lidar units to be configured to not send the data for the unused channels, but I guess so far it has not been implemented because it is not a high priority. Maybe it will be implemented in the future