海事驾驶台 AI 监控:Orca AI 与 ShipIn 桥楼安全方案对比分析及 IMS 跨域启示

发布时间: 2026-09-05
分类: 海事座舱 / 跨域分析 / AI安全
标签: Orca AI, ShipIn, BNWAS, maritime, bridge monitoring, SeaPod, FleetVision


1. 行业背景

1.1 海事安全痛点

海运承载全球 80%+ 贸易量,但安全形势严峻:

事故类型 主因 年均发生
碰撞 人力疲劳、瞭望缺失 ~3,000+
搁浅 注意力分散、操作失误 ~1,500+
人员落水 疲劳、判断失误 ~数百

根本原因:人为错误占海事事故 75-96%,核心因素包括:

  • 疲劳值班(under-manning)
  • 夜间/恶劣天气能见度差
  • 过度依赖 AIS(忽略非发射船只)
  • 警报过载(alarm fatigue)
  • 高交通密度区域态势感知不足

1.2 法规框架

法规 要求 状态
SOLAS 国际海上人命安全公约 已实施
STCW 值班标准(休息时间要求) 已实施
BNWAS 桥楼值班警报系统 2011起强制
IMO MSC.1/Circ.1212 疲劳管理指南 建议性

关键缺口:BNWAS 只是”你还在吗?”的定时器,不能检测值班质量。


2. 两大方案对比

2.1 Orca AI SeaPod + Co-Captain

2.2 ShipIn FleetVision Bridge Module

2.3 详细对比

维度 Orca AI SeaPod ShipIn FleetVision
核心定位 AI 自动值班员(外部瞭望) 值班行为审计(内部管理)
技术路线 视觉+雷达+AIS融合 桥楼视频+行为分析
部署方式 桥楼多传感器安装 桥楼摄像头+AI分析
检测目标 非AIS船只/碰撞风险/天气 值班缺失/分心/程序违规
实时告警 ✅ 实时向船员告警 ❌ 事后分析+管理干预
船间协作 ✅ Co-Captain 实时数据共享 ❌ 单船独立
岸基管理 ✅ FleetView ✅ 统一仪表盘
2025业绩 33% 近遇减少、40% 交叉事件减少 未公开具体数据
适用场景 开阔水域/高交通密度 日常值班/程序执行
误报处理 AI过滤+优先级排序 事后审计+人工判断

3. Orca AI 技术深度分析

3.1 SeaPod 技术架构

组件 技术 功能
光学传感器 多摄像头系统(RGB+IR+热成像) 全天候视觉瞭望
雷达接口 ARPA雷达数据融合 目标距离/速度/航向
AIS接口 A类/B类AIS接收 合作目标识别
AI视觉 目标检测+跟踪+分类 非AIS目标发现
环境感知 天气/海况传感器 自适应灵敏度
通信 卫星+5G混合 船-岸实时数据

3.2 关键能力

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
import numpy as np
from typing import List, Tuple
from dataclasses import dataclass

@dataclass
class MaritimeTarget:
"""海上目标数据结构"""
target_id: str
distance: float # 距离 (海里)
bearing: float # 方位角 (度)
speed: float # 速度 (节)
course: float # 航向 (度)
is_ais: bool # 是否AIS目标
target_type: str # 船舶/浮标/碍航物
risk_level: int # 风险等级 0-3


class OrcaAIBridgeMonitor:
"""
Orca AI SeaPod 桥楼监控核心逻辑复现

关键功能:
1. 多传感器融合目标检测
2. 碰撞风险评估(DCPA/TCPA)
3. 非AIS目标识别与告警
4. 值班员状态推断
"""

def __init__(self, config: dict = None):
config = config or {}
self.dcpa_threshold = config.get('dcpa_threshold', 0.5) # 最近会遇距离 (海里)
self.tcpa_threshold = config.get('tcpa_threshold', 15) # 到最近会遇点时间 (分钟)
self.alert_history = []

def assess_collision_risk(
self,
own_ship: Tuple[float, float, float, float], # (lat, lon, speed, course)
targets: List[MaritimeTarget]
) -> List[dict]:
"""
碰撞风险评估

基于 DCPA (Distance at Closest Point of Approach) 和
TCPA (Time to Closest Point of Approach) 计算

Args:
own_ship: 本船 (纬度, 经度, 速度, 航向)
targets: 周围目标列表

Returns:
risk_assessments: 每个目标的风险评估
"""
assessments = []

for target in targets:
# 计算 DCPA 和 TCPA
dcpa, tcpa = self._calculate_cpa(own_ship, target)

# 风险等级判定
if dcpa < self.dcpa_threshold and tcpa < self.tcpa_threshold:
risk_level = 3 # 高危
elif dcpa < self.dcpa_threshold * 2 and tcpa < self.tcpa_threshold * 2:
risk_level = 2 # 中危
elif dcpa < self.dcpa_threshold * 3:
risk_level = 1 # 低危
else:
risk_level = 0 # 安全

# 非AIS目标加权
risk_score = risk_level
if not target.is_ais and risk_level > 0:
risk_score += 1 # 非AIS目标更危险
risk_score = min(risk_score, 3)

assessments.append({
'target_id': target.target_id,
'dcpa': dcpa,
'tcpa': tcpa,
'risk_level': risk_score,
'is_ais': target.is_ais,
'alert': risk_score >= 2
})

return assessments

def _calculate_cpa(
self,
own_ship: Tuple[float, float, float, float],
target: MaritimeTarget
) -> Tuple[float, float]:
"""
计算 CPA (Closest Point of Approach)

简化版相对运动计算
"""
# 本船速度分量
own_speed = own_ship[2]
own_course = np.radians(own_ship[3])
own_vx = own_speed * np.sin(own_course)
own_vy = own_speed * np.cos(own_course)

# 目标船速度分量
tgt_course = np.radians(target.course)
tgt_vx = target.speed * np.sin(tgt_course)
tgt_vy = target.speed * np.cos(tgt_course)

# 相对速度
rel_vx = tgt_vx - own_vx
rel_vy = tgt_vy - own_vy
rel_speed = np.sqrt(rel_vx**2 + rel_vy**2)

if rel_speed < 0.01:
return target.distance, float('inf')

# DCPA = 目标距离 * sin(目标方位-相对运动方向)
rel_bearing = np.radians(target.bearing)
rel_course = np.arctan2(rel_vx, rel_vy)

dcpa = abs(target.distance * np.sin(rel_bearing - rel_course))
tcpa = target.distance * np.cos(rel_bearing - rel_course) / rel_speed

# 转换为分钟
tcpa = tcpa * 60 / rel_speed if rel_speed > 0 else float('inf')

return dcpa, tcpa

def detect_watchkeeping_failure(
self,
bridge_activity: List[dict],
window_sec: int = 300
) -> dict:
"""
值班缺失检测

ShipIn FleetVision 的核心能力之一:
检测桥楼是否无人值班

Args:
bridge_activity: 桥楼活动记录序列
window_sec: 检测窗口(秒)

Returns:
result: 值班状态
"""
recent = bridge_activity[-window_sec:]

# 统计人员检测帧
person_detected = sum(1 for a in recent if a.get('person_present', False))
presence_ratio = person_detected / len(recent) if recent else 0

if presence_ratio < 0.3:
return {
'status': 'UNATTENDED',
'confidence': 1 - presence_ratio,
'duration': len(recent),
'alert_level': 3
}
elif presence_ratio < 0.6:
return {
'status': 'INTERMITTENT',
'confidence': 0.7,
'duration': len(recent),
'alert_level': 2
}
else:
return {
'status': 'ATTENDED',
'confidence': presence_ratio,
'duration': len(recent),
'alert_level': 0
}


if __name__ == "__main__":
monitor = OrcaAIBridgeMonitor()

# 模拟本船:北纬35°, 东经122°, 速度12节, 航向045°
own_ship = (35.0, 122.0, 12.0, 45.0)

# 模拟目标
targets = [
MaritimeTarget("T1", 3.0, 30, 10, 60, True, "vessel", 1),
MaritimeTarget("T2", 1.5, 15, 8, 200, False, "vessel", 2), # 非AIS!
MaritimeTarget("T3", 8.0, 90, 15, 270, True, "vessel", 0),
]

# 风险评估
assessments = monitor.assess_collision_risk(own_ship, targets)
print("=== 碰撞风险评估 ===")
for a in assessments:
print(f"目标 {a['target_id']}: DCPA={a['dcpa']:.2f}nm, "
f"TCPA={a['tcpa']:.1f}min, "
f"风险={a['risk_level']}, AIS={a['is_ais']}, "
f"告警={'是' if a['alert'] else '否'}")

# 值班检测
activity = [{'person_present': True} if i % 3 != 0 else {'person_present': False}
for i in range(300)]
watch = monitor.detect_watchkeeping_failure(activity)
print(f"\n=== 值班状态 ===")
print(f"状态: {watch['status']}")
print(f"置信度: {watch['confidence']:.2f}")
print(f"告警等级: {watch['alert_level']}")

4. ShipIn FleetVision 深度分析

4.1 监控维度

监控项 检测内容 风险类型
桥楼出勤 人员是否在场 无人值班
瞭望行为 视线方向/注意力 分心/疲劳
设备使用 雷达/ECDIS操作 程序违规
程序执行 航行计划遵守 标准漂移
引航期间 引航员/船长在场 高风险操作
限制水域 值班配置 高交通密度

4.2 核心差异

ShipIn 与 Orca AI 的核心区别:

  • Orca AI = 向外看(外部碰撞风险)
  • ShipIn = 向内看(值班人员行为)

两者是互补关系而非竞争。


5. 海事 vs 汽车:跨域启示

5.1 汽车可借鉴的海事技术

海事技术 汽车适配方案 价值
DCPA/TCPA 前车碰撞时间预警 可复用算法
非AIS目标检测 非标准目标检测(行人/动物) 视觉+雷达融合
值班出勤检测 驾驶员在位检测 已有但可优化
警报优先级 DMS分级告警 减少警报过载
船间协作 V2V通信 标准化方向
岸基监控 车队远程管理 已有但可深化

5.2 海事可借鉴的汽车技术

汽车技术 海事适配方案 价值
PERCLOS 值班员疲劳量化 优于简单闭眼检测
认知分心检测 值班瞭望质量评估 从”在不在”到”专不专心”
面部AU分析 疲劳/情绪/压力 值班员状态全面评估
多模态融合 视觉+生理+环境 全方位疲劳监控
边缘AI部署 桥楼本地处理 减少卫星通信延迟

5.3 IMS 跨域融合方案


6. 对 IMS 团队的建议

6.1 近期可落地

建议 来源 优先级 周期
警报优先级排序算法 海事 alarm management 🔴 高 2周
DCPA/TCPA 前车碰撞预警 Orca AI 🟡 中 4周
值班/驾驶在位检测优化 ShipIn 🟡 中 2周

6.2 中期方向

方向 说明 优先级
跨域测试框架 同一算法在汽车/铁路/海事场景验证 🟡 中
瞭望质量评估 从”在不在”升级到”专不专心” 🔴 高
V2V协作基础 参考Co-Captain思路探索 🟢 低

6.3 长期愿景

构建统一座舱监控框架:

  • 汽车DMS → 铁路 → 海事 → 航空
  • 共享:疲劳检测引擎、分心评估、告警分级
  • 差异化:场景特定逻辑(道路/轨道/航道/空域)

7. 参考资源


跨域分析是 IMS 的核心能力。 海事桥楼监控与汽车 DMS 在技术底层高度相通,但场景差异决定了部署策略不同。构建统一座舱监控框架,让算法在多个交通领域复用,是 IMS 的长期竞争优势。