LITEON + AEye Apollo:LiDAR-Camera 融合的座舱感知新方案

InCabin Europe 2026 演示车深度解读

合作信息

核心方案:Advanced Overhead Console

LITEON 平台化架构

关键组件

组件 功能 在座舱中的角色
AEye Apollo LiDAR 3D 点云感知 乘员位置/姿态/距离
Camera 视觉感知 DMS/疲劳/分心/情绪
Radar mmWave 感知 CPD/生命体征
智能照明 可编程灯光 氛围灯+警告灯
HMI 人机交互 语音/手势/显示

AEye Apollo LiDAR 技术特点

参数 说明
类型 软件定义 LiDAR
核心特性 可编程扫描模式
点云 与摄像头图像融合
优势 可聚焦关注区域,提高分辨率
在座舱中 首次将 LiDAR 用于座舱内部感知

LiDAR 在座舱中的独特价值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
"""
LiDAR vs Camera vs Radar 在座舱感知中的能力对比

LiDAR 在座舱中的独特价值:
1. 精确深度信息(不受光照影响)
2. 3D 点云可重建乘员姿态
3. 不受隐私争议(无图像记录)
4. 可穿透透明遮挡(玻璃等)
"""

from dataclasses import dataclass
from typing import Dict, List
import numpy as np

@dataclass
class SensorCapability:
"""传感器能力评估"""
depth_accuracy: float = 0.0 # 深度精度 (cm), 0=不可用
angular_resolution: float = 0.0 # 角分辨率 (度)
dark_performance: float = 0.0 # 黑暗环境性能 (0-1)
privacy_level: float = 0.0 # 隐私保护 (0-1)
occlusion_handling: float = 0.0 # 遮挡处理 (0-1)
frame_rate: float = 0.0 # 帧率 (fps)
power_consumption: float = 0.0 # 功耗 (W)


# 传感器对比
sensors = {
'Camera (RGB-IR)': SensorCapability(
depth_accuracy=5.0, # 立体视觉约5cm
angular_resolution=0.5,
dark_performance=0.7, # IR补光
privacy_level=0.3, # 有图像
occlusion_handling=0.3,
frame_rate=30,
power_consumption=2.0
),
'60GHz Radar': SensorCapability(
depth_accuracy=2.0, # 距离分辨率
angular_resolution=5.7,
dark_performance=1.0,
privacy_level=1.0,
occlusion_handling=0.8, # 穿透遮挡
frame_rate=20,
power_consumption=1.0
),
'LiDAR (Apollo)': SensorCapability(
depth_accuracy=0.5, # 高精度深度
angular_resolution=0.1,
dark_performance=1.0,
privacy_level=0.9, # 点云不泄露身份
occlusion_handling=0.5, # 不穿透
frame_rate=20,
power_consumption=8.0
)
}

print("=== 传感器能力对比 ===")
print(f"{'传感器':<20} {'深度cm':<8} {'角度°':<8} "
f"{'暗光':<6} {'隐私':<6} {'遮挡':<6} "
f"{'fps':<6} {'功耗W':<6}")
print("-" * 70)
for name, cap in sensors.items():
print(f"{name:<20} {cap.depth_accuracy:<8.1f} "
f"{cap.angular_resolution:<8.1f} "
f"{cap.dark_performance:<6.1f} "
f"{cap.privacy_level:<6.1f} "
f"{cap.occlusion_handling:<6.1f} "
f"{cap.frame_rate:<6.0f} "
f"{cap.power_consumption:<6.1f}")

运行结果

1
2
3
4
5
=== 传感器能力对比 ===
传感器 深度cm 角度° 暗光 隐私 遮挡 fps 功耗W
Camera (RGB-IR) 5.0 0.5 0.7 0.3 0.3 30 2.0
60GHz Radar 2.0 5.7 1.0 1.0 0.8 20 1.0
LiDAR (Apollo) 0.5 0.1 1.0 0.9 0.5 20 8.0

三传感器融合方案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
"""
Camera + LiDAR + Radar 三传感器融合
LITEON Advanced Overhead Console 方案

融合策略:
1. Camera 主导:面部特征、表情、视线、疲劳
2. LiDAR 主导:3D 姿态、深度距离、空间关系
3. Radar 主导:CPD、生命体征、穿透遮挡
4. 三者交叉验证:乘员分类、占用确认
"""

from typing import Optional, Tuple
import numpy as np

class Point3D:
"""3D 点"""
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z

def distance_to(self, other):
return np.sqrt(
(self.x - other.x)**2 +
(self.y - other.y)**2 +
(self.z - other.z)**2
)

class OccupantPose3D:
"""乘员 3D 姿态估计"""
def __init__(self):
# 关键 3D 关节点
self.keypoints_3d = {}

def estimate_from_lidar(self, point_cloud):
"""
从 LiDAR 点云估计乘员姿态

Args:
point_cloud: np.ndarray, shape=(N, 3) XYZ

Returns:
pose_estimate: 头部位置、躯干角度等
"""
# 聚类提取人体点云
# 简化的聚类算法
if len(point_cloud) < 50:
return None

# 找最高点(可能是头部)
head_idx = np.argmin(point_cloud[:, 1]) # Y最小
head_pos = point_cloud[head_idx]

# 找中心点(可能是躯干中心)
center = np.mean(point_cloud, axis=0)

# 计算躯干角度
torso_vector = head_pos - center
torso_angle = np.degrees(
np.arctan2(torso_vector[2],
np.sqrt(torso_vector[0]**2 + torso_vector[1]**2))
)

return {
'head_position': Point3D(*head_pos),
'torso_center': Point3D(*center),
'torso_angle_deg': torso_angle,
'point_count': len(point_cloud),
'confidence': min(len(point_cloud) / 200, 1.0)
}


class TriModalFusion:
"""三模态传感器融合"""

def __init__(self):
self.pose_estimator = OccupantPose3D()

def estimate_occupant_state(self,
camera_data: dict,
lidar_data: np.ndarray,
radar_data: dict) -> dict:
"""
融合三种传感器估计乘员状态

Args:
camera_data: 摄像头输出
- face_detected: bool
- gaze_direction: (pitch, yaw)
- fatigue_level: float
- emotion: str
lidar_data: LiDAR 点云, shape=(N, 3)
radar_data: 雷达输出
- presence: bool
- breathing_rate: float
- heart_rate: float
- position: (x, y, z)

Returns:
fused_state: 融合后的乘员状态
"""
result = {
'occupant_present': False,
'position_3d': None,
'posture': 'unknown',
'fatigue_level': 0.0,
'gaze': (0, 0),
'breathing_rate': 0,
'heart_rate': 0,
'emotion': 'neutral',
'confidence': 0.0,
'source': 'none'
}

# LiDAR 姿态估计
lidar_pose = self.pose_estimator.estimate_from_lidar(
lidar_data
)

# 融合决策
cam_face = camera_data.get('face_detected', False)
radar_presence = radar_data.get('presence', False)
lidar_present = lidar_pose is not None

# 三重确认
if cam_face and radar_presence and lidar_present:
result['occupant_present'] = True
result['position_3d'] = (
radar_data.get('position', (0, 0, 0))
)
result['posture'] = self._classify_posture(
lidar_pose['torso_angle_deg']
)
result['fatigue_level'] = camera_data.get(
'fatigue_level', 0
)
result['gaze'] = camera_data.get(
'gaze_direction', (0, 0)
)
result['breathing_rate'] = radar_data.get(
'breathing_rate', 0
)
result['heart_rate'] = radar_data.get(
'heart_rate', 0
)
result['emotion'] = camera_data.get('emotion', 'neutral')
result['confidence'] = 0.95
result['source'] = 'all_three'

elif cam_face and radar_presence:
# Camera + Radar(无 LiDAR)
result['occupant_present'] = True
result['fatigue_level'] = camera_data.get(
'fatigue_level', 0
)
result['breathing_rate'] = radar_data.get(
'breathing_rate', 0
)
result['confidence'] = 0.85
result['source'] = 'camera+radar'

elif lidar_present and radar_presence:
# LiDAR + Radar(Camera 看不到脸,可能是后座)
result['occupant_present'] = True
result['posture'] = self._classify_posture(
lidar_pose['torso_angle_deg']
)
result['breathing_rate'] = radar_data.get(
'breathing_rate', 0
)
result['confidence'] = 0.80
result['source'] = 'lidar+radar'

elif radar_presence:
# 仅 Radar(严重遮挡)
result['occupant_present'] = True
result['breathing_rate'] = radar_data.get(
'breathing_rate', 0
)
result['confidence'] = 0.70
result['source'] = 'radar_only'

return result

def _classify_posture(self, torso_angle):
"""根据躯干角度分类姿态"""
if torso_angle < 10:
return 'upright'
elif torso_angle < 25:
return 'slight_recline'
elif torso_angle < 40:
return 'reclined'
else:
return 'lying_down'


# 测试
if __name__ == "__main__":
fusion = TriModalFusion()

# 场景1:驾驶员正常驾驶(三种传感器都可见)
cam1 = {
'face_detected': True,
'gaze_direction': (5, -2),
'fatigue_level': 0.15,
'emotion': 'neutral'
}
lidar1 = np.random.randn(300, 3) * 0.5 + np.array([0, -0.3, 1.5])
radar1 = {
'presence': True,
'breathing_rate': 16,
'heart_rate': 72,
'position': (0.0, -0.3, 1.5)
}

result1 = fusion.estimate_occupant_state(cam1, lidar1, radar1)
print(f"场景1 - 驾驶员正常:")
print(f" 存在: {result1['occupant_present']}, "
f"姿态: {result1['posture']}, "
f"置信度: {result1['confidence']:.2f}")
print(f" 来源: {result1['source']}")

# 场景2:后座乘客(Camera 看不到)
cam2 = {'face_detected': False}
lidar2 = np.random.randn(200, 3) * 0.5 + np.array([0.8, -0.2, 1.0])
radar2 = {
'presence': True,
'breathing_rate': 20,
'heart_rate': 90,
'position': (0.8, -0.2, 1.0)
}

result2 = fusion.estimate_occupant_state(cam2, lidar2, radar2)
print(f"\n场景2 - 后座乘客:")
print(f" 存在: {result2['occupant_present']}, "
f"姿态: {result2['posture']}, "
f"置信度: {result2['confidence']:.2f}")
print(f" 来源: {result2['source']}")

对 IMS 开发的启示

1. 顶控台平台化趋势

LITEON 的 Advanced Overhead Console 代表了座舱传感器平台化集成的趋势:

集成方式 传统 LITEON 平台
传感器分布 各自独立安装 集中在顶控台
线束 每个传感器独立线束 统一线束
处理器 多个独立 SoC 统一融合处理器
HMI 独立 集成照明+显示+语音

2. LiDAR 在座舱中的定位

应用 LiDAR 价值 优先级
OOP 异常姿态 ✅ 3D 姿态精确 🔴 高
乘员分类 ✅ 体型轮廓 🟡 中
距离测量 ✅ 精确深度 🟡 中
CPD ⚠️ 不穿透遮挡 🟢 低
DMS 疲劳 ❌ 无面部特征 ❌ 不适用

3. 成本-性能权衡

方案 成本 性能 量产时间
Camera only 低 中 立即
Camera + Radar 中 高 2026-2027
Camera + Radar + LiDAR 高 最高 2028+

结论

LITEON + AEye 的合作展示了顶控台平台化和 LiDAR-Camera-Radar 三传感器融合的方向。LiDAR 在座舱中的核心价值是精确 3D 姿态估计(OOP 检测),但成本和功耗使其更适合高端车型。对 IMS 开发而言,先实现 Camera+Radar 双传感器方案,预留 LiDAR 接口,是平衡成本和性能的务实路线。


参考链接: