- Roadside intersections pose significant safety risks for vulnerable road users - pedestrians and cyclists lack V2X devices, making them invisible to connected vehicles
- Designed and currently developing an end-to-end V2X safety system that:
Roadside LIDAR Perception and V2X Communication for Enhanced Collision Prediction and Roadside Safety
Presenter: Yongha Cho | Mentor: Rusheng Zhang
University of Michigan Transportation Research Institute
Vehicle-side System Design
- No standard V2X method currently exists for roadside-to-vehicle collision warnings - we designed a communication approach based on existing SAE J2735 protocols
- Encoding pipeline converts structured detection data into J2735-compliant hex bitstrings using pycrate's ASN.1 UPER bit-packing - incorporated into the open- source pyv2xlib repository
- Decoding pipeline parses transmitted hex bitstreams back into human-readable Python dictionaries, validating all fields against J2735 schema constraints
- Message types designed for each road user scenario:
- Detects vehicles and pedestrians using dual roadside LiDAR sensors at 10 Hz
- Encodes detections into SAE J2735-compliant V2X messages (ICA, RSA, PSM, TIM)
- Broadcasts encoded messages from RSU to nearby vehicles at the intersection
- Decodes broadcast messages to display real-time alerts to the driver through an on-board UI
- System is built on MSight - an edge-cloud roadside intelligence framework developed by UMTRI and currently performing field tests at Mcity facility
- Mcity 4-lane test facility uses two LiDAR sensors with overlapping fields of view to eliminate blind spots - each sensor captures ~35,000 points/frame, producing ~73,5000 points/frame after merging
- Developed a LiDAR merging node that synchronizes frames from both sensors (+150ms timestamp tolerance in default) and applies a precomputed 4x4 transformation matrix to align both coordinate frames into a single unified point cloud
+ =
- PSM (Personal Safety Message) – conveys the presence and location of vulnerable road users such as pedestrian or cyclists to nearby vehicles
- ICA (Intersection Collision Avoidance) - conveys intersection geometry/movement data to support collision-risk detection at intersections
- RSA (Road-Side Alert) - broadcasts hazard/advisory information (ex. obstacles, weather events) to nearby vehicle
- TIM (Traveler Information Message) – broadcasts advisory information such as road conditions, construction zones, or weather events to vehicles, supporting multiple event announcements
- Detection node uses PointPillar (3D LiDAR object detection model) that processes merged point cloud data and detects vehicles and pedestrians using a .pth model file trained on annotated point cloud frames via NVIDIA TAO
- Visualization node overlays 3D bounding boxes on merged point cloud, rendered in Open3D in either grayscaled or colored mode
LiDAR Detection Visualization
• red – vehicle
• green – pedestrian
- Developed a real-time web-based driver UI built with Flask and SocketIO - displays a live satellite map of the intersection with detected objects
- Vehicles rendered as oriented bounding boxes (blue) and vulnerable road users (VRUs) as circles (green) - objects involved in a conflict turn red with a “CONFLICT WARNING” banner and optional voice alarm
- Integrate developed LiDAR fusion and detection node into the existing MSight repository
- Develop a collision prediction algorithm to integrate with the vehicle-side UI for more accurate conflict warning messages
- Conduct a field test at the Mcity facility using the newly developed point cloud detection node to collect additional training data
IFM (Infrastructure-to-Field Module)
Vehicle-side System Design
- Receives and merges dual LiDAR point cloud data into a single unified point cloud
- Detects vehicles and pedestrians using PointPillar deep learning model
- Encodes detections into J2735 V2X messages and forwards to RSU
- Fixed V2X radio hardware mounted at intersections
- Broadcasts encoded messages to all V2X-equipped vehicles within range
- Vehicle-mounted wireless message receiver
- Receives broadcast messages and forwards raw bytes to vehicle backend
- UDP server receives raw V2X bytes and passes to decoder
- Decoder extracts warning type, location, and event severity from J2735 hex string
- Flask + SocketIO backend pushes decoded warnings to driver UI via WebSocket in real time
- UI displays alert warning to driver