The best way to estimate tree canopy biomass is to use full waveform lidar, which records the strength of the return from each laser pulse. This provides insight into how much of the pulse penetrated the canopy.
I've never seen full waveform lidar data being used though, it was always seen as having great potential but never actualised.
One way to simulate that functionality is to count the number of "vegetation" returns vs "ground" returns in a grid to determine how many laser pulses were able to penetrate the canopy (twice, down and back).
The best way to do that analysis is with LasTools, which is still available but the charismatic author sadly died a couple of years ago.
I reckon you could use PDAL, but I don't know how exactly.