Calterah UWB CPD:软件升级实现儿童检测——AutoSens 2026产业分析 概览 在AutoSens Europe 2026(巴塞罗那)上,Calterah(加特兰)展示了其Dubhe CAL1106AQ SoC ——全球首个在FiRa 4.0认证的2T4R UWB芯片上实现IEEE 802.15.4ab感知功能的产品。关键突破是:通过软件升级现有无钥匙进入UWB硬件即可实现CPD功能 ,可能使专用的60GHz mmWave车内雷达变得不必要。
技术方案 CAL1106AQ 核心参数
参数
数值
芯片型号
Dubhe CAL1106AQ
UWB标准
IEEE 802.15.4ab
FiRa认证
FiRa 4.0
天线配置
2T4R(2发4收,官方称业界首个2T4R UWB SoC)
测距能力
支持远距离测距(官方页面未公布具体数值)
感知能力
支持 IEEE 802.15.4ab 感知与单站(monostatic)雷达
CPD能力
官方 CPD 开发套件称支持儿童存在检测、乘员分类与生命体征监测
处理器
240 MHz RISC-V,22nm CMOS,6mm×6mm QFN
技术架构
graph TB
subgraph "CAL1106AQ 单芯片方案"
A[UWB 2T4R 天线阵列] --> B[泄漏抑制与信号处理]
B --> C[微动检测<br/>呼吸信号提取]
C --> D[CPD判定<br/>活体/非活体]
E[BLE辅助测距] --> F[远距离测距]
F --> G[数字钥匙<br/>现有功能]
H[IEEE 802.15.4ab<br/>感知层] --> I[FiRa 4.0<br/>测距层]
end
D --> J[CPD结果输出<br/>CAN/Ethernet]
G --> K[无钥匙进入<br/>现有功能]
style B fill:#f9f,stroke:#333,stroke-width:2px
style C fill:#bbf,stroke:#333
泄漏抑制与车内感知设计 UWB 雷达要实现 CPD,首先要解决收发直耦泄漏问题(官方产品页确认 CAL1106AQ 支持单站雷达与 802.15.4ab 感知;具体泄漏抑制实现细节官方未单独公布):
挑战
说明
天线泄漏
收发天线直耦信号会淹灭微弱的人体反射
车内多径
多径干扰易产生虚假检测
静止人体
呼吸等微动信号极弱,需要高灵敏度处理
婴儿覆盖
毯子下呼吸信号衰减大,对穿透与灵敏度要求更高
UWB vs 60GHz mmWave vs 摄像头
维度
Calterah UWB
TI IWR6843 60GHz
摄像头
穿透遮挡
✅ 可穿透毯子/衣物
✅ 可穿透薄遮挡
❌ 被遮挡即失效
隐私
✅ 无图像
✅ 无图像
⚠️ 需要图像
呼吸检测
✅ 可检测
✅ 可检测
❌ 无法检测
成本
💰 利用现有钥匙硬件
💰💰💰 专用雷达
💰💰 已有摄像头
额外硬件
❌ 软件升级即可
✅ 需新增雷达
❌ 利用现有摄像头
测距精度
厘米级
厘米级
N/A
更新方式
OTA软件更新
需硬件集成
软件更新
认证
FiRa 4.0
AEC-Q100
AEC-Q100
硬件部署方案对比 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 cpd_solutions = { "Calterah UWB (软件升级)" : { "额外硬件" : "无(复用无钥匙进入UWB)" , "新增BOM" : "$0(仅软件开发)" , "额外重量" : "0g" , "线束改动" : "无" , "OTA更新" : "支持" , "部署周期" : "3-6个月" , "限制" : "测距精度~10cm,呼吸检测灵敏度待验证" }, "TI IWR6843 (60GHz专用雷达)" : { "额外硬件" : "1×IWR6843AOP + 天线 + 外壳" , "新增BOM" : "$15-25" , "额外重量" : "~50g" , "线束改动" : "需CAN总线连接" , "OTA更新" : "支持" , "部署周期" : "12-18个月(新硬件集成)" , "限制" : "需在车顶/顶灯位置安装" }, "摄像头+rider融合" : { "额外硬件" : "利用现有OMS摄像头" , "新增BOM" : "$0-5(算法授权)" , "额外重量" : "0g" , "线束改动" : "无" , "OTA更新" : "支持" , "部署周期" : "6-12个月" , "限制" : "遮挡场景失效,需雷达backup" }, "UWB+60GHz融合" : { "额外硬件" : "UWB + 60GHz雷达" , "新增BOM" : "$15-25" , "额外重量" : "~50g" , "线束改动" : "需新增雷达线束" , "OTA更新" : "支持" , "部署周期" : "12-18个月" , "限制" : "成本最高,但覆盖最全面" } } for solution, details in cpd_solutions.items(): print (f"\n{'=' *50 } " ) print (f"方案: {solution} " ) for key, value in details.items(): print (f" {key} : {value} " )
AutoSens 2026 其他CPD方案 Infineon 60GHz雷达 Infineon展示了XENSIV 60GHz雷达评估模块,提供全座舱监控和实时雷达点云叠加在视频流上。
特性
Infineon方案
频率
60GHz
功能
全座舱监控 + CPD
展示
实时点云叠加
定位
专用雷达方案
Aptiv 摄像头分类 Aptiv 是同期 InCabin Europe(与 AutoSens Europe 同址举办)的演讲/参展厂商,展示了单内舱摄像头的乘员分类方案:
特性
Aptiv方案
传感器
单内舱摄像头
分类
成人/婴儿/儿童/物体(原文未提供具体精度数字)
OmniVision 红外传感器
特性
OX05C1S方案
分辨率
5MP(2592×1944,BSI 全局快门 HDR)
技术
Nyxel近红外(940nm QE 领先)
封装
较上代 OX05B1S 缩小30%(6.61mm×5.34mm)
安装
车内集成
功能
DMS/OMS
Calterah技术验证代码 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 """ Calterah UWB CPD 呼吸检测模拟验证 UWB雷达检测呼吸的原理: 1. 发射UWB脉冲,接收反射信号 2. 提取胸腔微动(呼吸引起的0.1-0.5mm位移) 3. 通过Range-FFT和相位提取获取微动信号 4. 带通滤波(0.1-0.5Hz)提取呼吸频率 注意:此为原理验证代码,实际部署需Calterah SDK """ import numpy as npfrom scipy import signalfrom typing import Tuple class UWBCPDSimulator : """ UWB CPD呼吸检测模拟器 模拟Calterah CAL1106AQ的CPD检测流程: 1. UWB脉冲发射与接收 2. Range-FFT提取目标距离bin 3. 相位提取获取微动信号 4. 带通滤波提取呼吸频率 5. 活体判定 """ def __init__ (self, sampling_rate=1000 , range_resolution=0.1 ): """ Args: sampling_rate: 采样率 (Hz) range_resolution: 距离分辨率 (m) """ self .fs = sampling_rate self .range_res = range_resolution self .target_distance = 0.8 self .breath_freq_adult = 0.25 self .breath_freq_infant = 0.45 self .heartbeat_freq = 1.2 def simulate_uwb_signal (self, duration: float = 10.0 , is_occupied: bool = True , is_infant: bool = True ) -> dict : """ 模拟UWB雷达接收信号 Args: duration: 采集时长(秒) is_occupied: 座椅是否有人 is_infant: 是否为婴儿 Returns: 信号数据字典 """ t = np.arange(0 , duration, 1 /self .fs) n_samples = len (t) target_bin = int (self .target_distance / self .range_res) if is_occupied: breath_freq = self .breath_freq_infant if is_infant else self .breath_freq_adult breath_displacement = 0.3e-3 breath_signal = breath_displacement * np.sin(2 * np.pi * breath_freq * t) heartbeat_signal = 0.05e-3 * np.sin(2 * np.pi * self .heartbeat_freq * t) micro_motion = breath_signal + heartbeat_signal noise = np.random.normal(0 , 0.02e-3 , n_samples) signal_phase = 4 * np.pi * micro_motion / 3e8 * 7.5e9 received = np.exp(1j * signal_phase) + noise else : received = np.ones(n_samples, dtype=complex ) * 0.1 received += np.random.normal(0 , 0.02 , n_samples) micro_motion = np.zeros(n_samples) return { 'time' : t, 'received' : received, 'target_bin' : target_bin, 'micro_motion' : micro_motion, 'is_occupied' : is_occupied, 'is_infant' : is_infant } def extract_breathing (self, received_signal: np.ndarray ) -> Tuple [np.ndarray, float ]: """ 从UWB接收信号中提取呼吸频率 Args: received_signal: 接收信号 (complex) Returns: filtered_signal: 滤波后的呼吸信号 breath_freq: 估计的呼吸频率 (Hz) """ phase = np.angle(received_signal) phase_unwrapped = np.unwrap(phase) nyq = self .fs / 2 low = 0.1 / nyq high = 1.0 / nyq b, a = signal.butter(4 , [low, high], btype='band' ) filtered = signal.filtfilt(b, a, phase_unwrapped) freqs = np.fft.rfftfreq(len (filtered), 1 /self .fs) fft_mag = np.abs (np.fft.rfft(filtered)) breath_mask = (freqs >= 0.1 ) & (freqs <= 0.6 ) if np.any (breath_mask) and np.max (fft_mag[breath_mask]) > 0.01 : peak_idx = np.argmax(fft_mag[breath_mask]) breath_freq = freqs[breath_mask][peak_idx] else : breath_freq = 0.0 return filtered, breath_freq def detect_presence (self, received_signal: np.ndarray, threshold: float = 0.001 ) -> dict : """ 活体检测判定 Args: received_signal: 接收信号 threshold: 活体判定阈值 Returns: 判定结果 """ filtered, breath_freq = self .extract_breathing(received_signal) energy = np.var(filtered) is_alive = energy > threshold and breath_freq > 0.05 return { 'is_present' : is_alive, 'breath_frequency' : breath_freq, 'breath_rate_per_min' : breath_freq * 60 if breath_freq > 0 else 0 , 'signal_energy' : energy, 'confidence' : min (energy / threshold / 2 , 1.0 ) } if __name__ == "__main__" : print ("=" * 60 ) print ("Calterah UWB CPD 呼吸检测模拟验证" ) print ("=" * 60 ) simulator = UWBCPDSimulator() print ("\n场景1: 婴儿在后排座椅" ) data = simulator.simulate_uwb_signal(duration=10.0 , is_occupied=True , is_infant=True ) result = simulator.detect_presence(data['received' ]) print (f" 信号能量: {result['signal_energy' ]:.6 f} " ) print (f" 呼吸频率: {result['breath_frequency' ]:.3 f} Hz ({result['breath_rate_per_min' ]:.1 f} 次/分)" ) print (f" 活体检测: {'✅ 检测到活体' if result['is_present' ] else '❌ 未检测到' } " ) print (f" 置信度: {result['confidence' ]:.1 %} " ) print (f" 真实呼吸: {simulator.breath_freq_infant:.3 f} Hz ({simulator.breath_freq_infant*60 :.1 f} 次/分)" ) print ("\n场景2: 空座椅" ) data = simulator.simulate_uwb_signal(duration=10.0 , is_occupied=False ) result = simulator.detect_presence(data['received' ]) print (f" 信号能量: {result['signal_energy' ]:.6 f} " ) print (f" 呼吸频率: {result['breath_frequency' ]:.3 f} Hz" ) print (f" 活体检测: {'✅ 检测到活体' if result['is_present' ] else '❌ 未检测到(正确)' } " ) print (f" 置信度: {result['confidence' ]:.1 %} " ) print ("\n场景3: 成人在后排座椅" ) data = simulator.simulate_uwb_signal(duration=10.0 , is_occupied=True , is_infant=False ) result = simulator.detect_presence(data['received' ]) print (f" 信号能量: {result['signal_energy' ]:.6 f} " ) print (f" 呼吸频率: {result['breath_frequency' ]:.3 f} Hz ({result['breath_rate_per_min' ]:.1 f} 次/分)" ) print (f" 活体检测: {'✅ 检测到活体' if result['is_present' ] else '❌ 未检测到' } " ) print (f" 置信度: {result['confidence' ]:.1 %} " ) print (f" 真实呼吸: {simulator.breath_freq_adult:.3 f} Hz ({simulator.breath_freq_adult*60 :.1 f} 次/分)" )
市场分析 CPD市场规模 Strat View Research、Market Research Future 等多家机构均发布了 CPD 市场预测报告(MRFR 报告期为 2035 年),普遍认为法规驱动下该市场将快速增长;但各家口径与数值差异极大,具体数字建议以机构报告原文为准(本文不列出未经核实的具体数值)。Calterah 通过 2026 年发布的 UWB CPD 雷达开发套件加快 OEM/Tier1 落地。
供应商格局
供应商
方案
量产状态
优势
Calterah
UWB CAL1106AQ
2026 FiRa认证
软件升级,零额外硬件
TI
IWR6843AOP 60GHz
已量产
高精度,呼吸检测成熟
Infineon
XENSIV 60GHz
评估阶段
全座舱监控
NXP
NCJ29D6 UWB
BMW定点
数字钥匙+CPD双用
NOVELIC
ACAM 60GHz
车规定点推进中
车载量产经验
关键趋势
timeline
title CPD技术路线演进
2024 : 摄像头为主, 60GHz雷达辅助
2025 : 60GHz雷达量产, UWB开始集成
2026 : UWB CPD软件升级方案出现
2027 : Euro NCAP持续强化CPD要求, 多方案竞争
2028+: UWB+60GHz融合方案成为主流
IMS开发启示 1. 供应商选型建议
优先级
方案
推荐场景
🔴 高
UWB软件升级(如Calterah)
已有UWB无钥匙进入的车型
🔴 高
60GHz专用雷达(如TI)
需要高精度CPD+生命体征
🟡 中
摄像头+雷达融合
需要同时满足OMS和CPD
🟢 低
纯摄像头CPD
成本敏感,遮挡场景可接受
2. 开发路线建议
阶段
时间
任务
依赖
Phase 1
0-3月
UWB SDK评估,呼吸检测验证
Calterah/TI SDK
Phase 2
3-6月
集成到CPD算法pipeline
CAN/Ethernet接口
Phase 3
6-12月
实车测试+法规对标
Euro NCAP CPD场景
Phase 4
12-18月
量产部署
SOP
3. Euro NCAP CPD对齐
Euro NCAP要求
UWB方案
60GHz方案
检测后排儿童
✅
✅
毯子下检测
✅ 穿透性好
✅ 穿透性好
脚窝检测
⚠️ 距离bin限制
✅ 多bin覆盖
生命体征
✅ 呼吸
✅ 呼吸+心跳
双系统冗余
⚠️ 需配合摄像头
⚠️ 需配合摄像头
总结 Calterah的UWB CPD方案代表了”软件定义汽车”在座舱安全领域的突破:利用已有的无钥匙进入UWB硬件,通过软件升级实现CPD功能 ,显著降低BOM成本和集成复杂度。
但对于需要高精度CPD和生命体征监测的场景,60GHz mmWave雷达仍是更成熟的选择。最优方案是UWB+60GHz融合 :UWB提供低成本基础覆盖,60GHz提供高精度增强。
IMS落地建议: 优先评估现有车型的UWB硬件兼容性,如果已有Calterah/NXP UWB无钥匙进入系统,可通过软件升级快速实现CPD功能。同时保留60GHz雷达作为高精度增强选项。