PDAL now has the capacity to calculate heights from your point cloud data. With pre-classified LiDAR data, this means you can do this pretty easily:
pdal translate 55001640PAN.las 55001640PAN_height.bpf height --writers.bpf.output_dims="X,Y,Z,Height;"
A problem you might have is you may not have all the wonderful PDAL goodness built and installed. So you might get something like this:
PDAL: Couldn't create filter stage of type 'filters.height'
An easy way around this is to let docker do all the work. Once the docker version of pdal is in place, we need to change our command a little to suit our new configuration:
docker run -v /home/gisuser/test:/data pdal/master pdal translate //data/54001640PAN.las //data/54001640PAN_height.bpf height --writers.bpf.output_dims="X,Y,Z,Height"