Hesai Entity List: A Guide to Lidar Point Cloud Data

If you're working with Hesai Pandar series lidars, you've probably encountered the raw point cloud. Millions of tiny dots representing the world. But the real magic, the part that turns that cloud into actionable intelligence, often starts with something called the entity list. It's not a mystical document. Think of it as the sensor's first, best guess at organizing the chaos. It's the structured data output that categorizes those raw points into things—vehicles, pedestrians, lane markings. This guide cuts through the jargon to show you what the Hesai entity list actually contains, why it matters for your project, and how to use it without getting lost in the data.

What is the Hesai Entity List Really?

Let's be precise. The term "Hesai entity list" isn't an official product name from Hesai's website. You won't find a manual titled that. It's a community and developer shorthand for the processed, semantically labeled output you can derive from Hesai lidar data streams. Primarily, this refers to the data coming from their Pandar series sensors (like the Pandar64, PandarXT) when used with Hesai's own perception software stack or compatible third-party middleware.

The raw output is a point cloud: X, Y, Z coordinates, intensity, maybe a timestamp and laser ID. The entity list is the next layer. It's the result of running clustering and classification algorithms on that raw cloud. The sensor or its accompanying processing unit groups points into clusters and assigns each cluster a label: vehicle, pedestrian, cyclist, unknown.

A Quick Reality Check

Don't expect perfection out of the box. The entity list from the sensor's onboard processing is a great starting point, but it's not ground truth. I've seen tall, thin poles classified as pedestrians, and low, wide debris mislabeled as curbs. Your downstream system needs to be robust enough to handle these ambiguities. This initial list is a massive head start, saving you from doing basic clustering from scratch, but it's not the final word.

Why This Data Structure is a Big Deal

You could process the raw point cloud yourself. So why care about a pre-generated entity list? Efficiency and focus.

For an autonomous vehicle compute stack, running raw point cloud segmentation in real-time is computationally expensive. If the lidar sensor itself (or a closely coupled processing unit) can offload that initial step, it frees up the main CPU/GPU for higher-level tasks like trajectory prediction, planning, and sensor fusion. The entity list provides a structured abstraction. Instead of "here are 300,000 points," it says "here are 12 cars, 3 people, and 20 lane boundary points." That's a language your planning and control modules understand much faster.

For mapping and survey work, the entity list helps in automatic filtering. Want to create a clean digital twin of a city block without cars? The entity list lets you quickly identify and remove points belonging to the vehicle class. It's a powerful pre-filter.

The Most Common Entities You'll Encounter

The specific classes can vary based on the firmware and perception software version. However, most implementations converge on a core set. Here’s a breakdown of what you're likely to see, based on common industry practice and data from Hesai's technical demonstrations.

Entity Type Typical Description Key Attributes (Often Included)
Vehicle Cars, trucks, buses, motorcycles. The most common dynamic object. 3D bounding box (center, dimensions, yaw), velocity, classification confidence.
Pedestrian Human walkers. A critical class for urban driving. Height, position, velocity, sometimes pose estimation points.
Cyclist People on bicycles or scooters. Often grouped separately due to distinct motion patterns. Similar to pedestrian but may include bike size/orientation.
Animal Large animals like deer or dogs. Less common, highly important for rural/ suburban safety. Size, position. Confidence is often lower due to varied shapes.
Vegetation Trees, bushes. Static but non-drivable. Point cluster boundary. Often used for free space detection.
Building / Structure Walls, barriers, poles, traffic signs. Static, high-intensity points. Crucial for localization.
Lane Marker / Road Surface Ground plane and lane lines. Often derived from low-height points. Planar segmentation, paint type (based on reflectivity).
Unknown / Unclassified Clusters that don't fit a clear model. Never ignore this class. Raw cluster points. This is where novel obstacles often appear first.

But here's the thing: is the default list always enough? I once worked on a port automation project where shipping containers were the primary object. The default "vehicle" class didn't cut it. We had to work with the data pipeline to define a custom "container" entity, with attributes like ISO code and stacking state. The takeaway: understand the default ontology, but know you can often extend it.

How to Use This Data in Real Projects

For Autonomous Driving & Robotics

The entity list is feed for your object tracker. Instead of tracking raw points, you track entities. Their bounding boxes and velocities from frame to frame create trajectories. This is simpler and more stable. You also use it for scene understanding. A high density of pedestrian entities near a crosswalk triggers a more cautious driving policy. A cluster of unknown entities on the road ahead warrants immediate attention, possibly an emergency stop.

For High-Definition Mapping

You drive the lidar-equipped vehicle around. The raw data is huge. Using the entity list, you can automatically strip out all vehicle, pedestrian, and cyclist points, leaving mostly static environment points. This drastically reduces manual clean-up time. You can also extract specific features—like all pole or traffic sign entities—to build a landmark map for vehicle localization.

For Security and Perimeter Monitoring

Stationary lidar for site security. The system can be configured to only alert when an entity of type pedestrian or vehicle enters a virtual geo-fence, ignoring vegetation moving in the wind or small animals. This reduces false alarms by orders of magnitude.

Getting the Data: Parsing and Visualization

You typically access this data via Hesai's SDK or ROS drivers. It doesn't come as a simple CSV file called "entity_list.txt." It's embedded in the data packets.

Common output formats: Protobuf messages, custom binary structs over UDP, or as structured fields within ROS message types (like custom extensions to sensor_msgs/PointCloud2 or separate perception_msgs). The Hesai documentation for your specific sensor model is the first stop. Look for sections on "object output," "perception output," or "target list."

For visualization, tools like RViz (ROS) can display bounding boxes if the messages are formatted correctly. More advanced tools like Foxglove Studio or CARLA can also ingest and visualize these entities in context. The key is to ensure your data parser correctly interprets the byte structure defined in the SDK's header files.

A personal struggle I see often: developers try to parse the data without checking the endianness or the coordinate frame. Hesai data is often in a sensor-centric coordinate system (front is +X, left is +Y). Your world frame might be different. That mismatch causes entities to appear in the wrong place. Always, always verify the coordinate transform.

Answers to Specific, Pesky Data Questions

How accurate is the classification in the Hesai entity list for distant objects?

It degrades, and not just in confidence. The main issue is point sparsity. A car at 150 meters might only have 50 lidar points on it. The clustering algorithm might still group them, but the classification neural network has very little shape data to work with. It's common for distant vehicles and pedestrians to be confused, or for objects to fall back into the "unknown" bucket. Don't trust the class label beyond 80-100 meters for critical decisions unless you've specifically validated your sensor and software stack at that range.

How do I handle partial or occluded objects in the Hesai entity list?

This is where the entity list shows its limits. A pedestrian hidden behind a car might be split into two clusters: a visible leg cluster and the rest occluded. The sensor's perception might output two small "unknown" entities or miss them entirely. Your system's multi-object tracker needs to be aware of this. It should use the entity list as evidence, not gospel. A good tracker can hypothesize an object's existence based on partial data and occlusion reasoning, something the lidar's onboard processor usually doesn't do.

Can I retrain or customize the classification model that creates the entity list?

Usually not on the sensor itself. The processing often happens on a fixed-function chip or a sealed compute module. However, if you're using a more open system like Hesai's Pandora (their perception reference system), you might have access to the model and training pipeline. The more common approach is to take the raw point cloud and the initial entity list as input to your own, more powerful, server-class perception model. You use Hesai's list as a high-quality proposal, then run your custom classifier to re-label or add new classes (like "construction_cone", "debris").

The entity list and the point cloud timestamps are slightly off. How do I sync them?

Time synchronization is a classic robotics headache. The entity list is the result of processing a point cloud frame, which takes compute time. Therefore, the entity list for frame N will have a timestamp slightly later than the point cloud for frame N. You must align them by timestamp in your playback or live system. Don't assume they are in lockstep. Use the timestamps provided in the message headers and interpolate if necessary. A tool like ROS2's message_filters or writing a simple sync node based on approximate time is essential for proper sensor fusion.

Where can I find sample Hesai data with entity annotations to test my algorithms?

Public datasets with raw Hesai data and high-quality entity (object) labels are rare. Hesai Technology sometimes releases sample data packs through their official website or at industry conferences. A better bet is to look for autonomous driving datasets that used Hesai sensors. The nuScenes dataset by Motional uses a Pandar64 lidar among others, and provides detailed 3D bounding box annotations (their version of an entity list). While not the "Hesai list" per se, it's real-world data from that sensor that you can use to benchmark your own parsing and perception stack.

Related stories