简介:这是一份关于大疆司空2无人机任务管理云平台的系统介绍文档,面向应急救援、能源巡检、公共安全等领域从事无人机协同作业与远程管理的技术人员、团队管理者。内容围绕搜救与巡检两大核心场景,拆解组织与项目双重管理架构、人员设备集中管控、协同任务创建、实时直播、云端建图、地图标注共享、三维精细化航线规划、精准复拍及远程维护等关键能力,并结合搜索救援与油田巡检给出完整业务流程。资料以PDF格式提供,共1个文件,压缩包大小约3.36MB,内容结构完整、图文配合,便于通读与对照实践。已有101人学习浏览,适合具备一定无人机操作与信息化系统使用经验的读者。通过该文档可快速建立对云平台任务管理模式的整体认知,为选型部署及实际作业中的多端信息同步、自动化巡检、三维航线规划提供直接参考。
1. 搜救与巡检场景下的无人机协同:云平台不是可选项而是必需品
搜救现场最怕的不是图传断链,而是三路无人机各飞各的,指挥员盯三块屏幕却拼不出完整态势;巡检项目最怕的不是航线设计慢,而是飞机飞完了,云端却没有一份可回溯的全程记录。这套基于云平台的协同作业系统设计,围绕大疆司空2展开,把实时直播、多端协同、三维航线、任务管理串成一条完整链路——指挥中心能实时看到每架飞机的画面和位置,飞手端能收到平台下发的任务指令,管理层事后能回看每一次作业的全过程。适合正在做行业无人机方案选型、想把单机飞手模式升级成机队协同模式的从业者,也适合刚接触云平台开发、想搞懂「资源怎么拆、链路怎么搭」的技术人员。
2. 先立架构:云平台协同系统里司空2的职责边界与数据链路
2.1 云平台还是本地终端:协同半径由算力位置决定
我拆过的多个无人机项目中,最先争论的往往是同一个问题:数据回传和任务管理到底放在本地,还是上云。本地建图终端的好处是延迟低、不受网络影响,但它的协同半径仅限于一台终端、几台遥控器,所有飞机必须飞到同一个地面站覆盖范围内——这跟搜救和巡检的分散作业模式是冲突的。搜救场景里,三个方向的山沟可能相距几十公里,每个点位配一名飞手和一台遥控器,指挥员在临时搭建的指挥帐篷里,他需要看到的是「所有点位」的实时画面和飞机位置,而不是某个点位的局部画面。这时候云平台的价值就出来了:飞行器通过遥控器或4G/5G模块把视频流和遥测数据推上云,指挥端在任意一台能上网的设备上拉取直播流和态势数据,任何一个飞手都能收到指挥端下发的任务调整指令。算力位置决定了协同半径,云平台把「一人一机一屏」变成了「一网多机多端」,这是这套系统设计的第一块基石。
2.2 职责边界:哪些交给平台,哪些必须自己写
司空2在链路里承担的是「调度中枢 + 数据中枢」,但它不是万能的。我一般会把职责拆成三块:平台负责的、平台提供接口但需要自己接的、完全需要自己搭的。平台直接负责的有设备管理、直播转码与分发、云端录制、任务记录、基础的权限管理,这些功能开箱即用,不需要重复开发。平台提供接口但需要自己接的是业务编排——比如从第三方GIS系统拿个坐标点,转成一条航线,再通过OpenAPI推给司空2执行;又比如飞手在遥控器端点击「到达现场」后,平台推送事件给指挥系统,指挥系统据此更新大屏上的任务进度状态。这两类属于「半成品」,资源里的核心工作基本集中在这一层。完全需要自己搭的则是业务数据库、人员档案与设备台账的对应关系、以及和客户现有的工单系统做对接。搞清楚这个边界,你才不会掉进「什么功能都要平台做」的坑,也不会重复去开发一个劣化版的云平台。
2.3 数据链路全图:从遥控器到指挥中心经过哪些协议
在动手写任何对接代码之前,先把链路画清楚。司空2体系下,数据回传和指令下发是两条独立但互相关联的通道。飞行器与遥控器之间是飞手端私有图传协议,这段链路不需要你操心,但它的质量直接决定最终画面质量,后面避坑部分会细说。遥控器端到云平台这一段,用的是上云API与标准直播推流协议——视频流通过RTMP或私有推流通道上行,遥测与任务状态通过上云API的MQTT或HTTPS通道上报。云平台到指挥端这一段,司空2把视频流转成HLS或低延迟模式供Web端拉流,同时OpenAPI提供设备状态、任务状态、告警事件的查询与回调。指挥端到飞手端这一段,指令通过平台的OpenAPI写入,再由平台推送到遥控器端App,飞手确认后执行。整体链路的典型延迟是:直播2到4秒,遥测1到2秒,控制指令3到5秒。链路各环节的协议与职责分配如下表:
| 链路环节 | 传输内容 | 协议/接口 | 典型延迟 | 备注 |
|---|---|---|---|---|
| 飞行器 → 遥控器 | 图传画面、遥测 | 私有图传协议 | 低 | 飞手端本机显示,链路质量受遮挡影响 |
| 遥控器 → 云平台 | 视频流、遥测、任务状态 | RTMP推流 + MQTT/HTTPS | 1到4秒 | 视频流与遥测分离上报 |
| 云平台 → 指挥端 | 转码后直播流、态势数据 | HLS / 低延迟直播 | 2到4秒 | Web端多路拉流 |
| 指挥端 → 云平台 | 任务指令、航线下发 | OpenAPI(HTTPS) | 1到3秒 | 需要签名鉴权 |
| 云平台 → 遥控器端 | 任务指令、航线推送 | MQTT通道下发 | 3到5秒 | 飞手端需确认执行 |
注意一个容易被忽略的细节:遥控器端指令下行延迟明显高于状态上行延迟。这不是平台能力问题,而是下行链路要经过「指挥端业务系统 → 平台OpenAPI → 平台消息队列 → 遥控器端App」四跳,每一跳都在做权限校验和状态同步。所以这套系统里「指令要有确认机制」,不能做成指挥端点了发送就默认飞手已经收到,后面任务管理的设计里我把确认回执做成了必选项。
3. 任务管理与三维航线:从建图参数到云端下发的落地细节
3.1 建图航拍的参数组合:重叠率、云台角与飞行速度
搜救和巡检场景里,三维航线不是凭空画出来的,它建立在建图航拍生成的模型之上。建图这一步做得好不好,直接决定后续三维航线的安全边界。司空2的建图航拍任务里,有三个参数是我每次都要反复确认的:航向重叠率、旁向重叠率、云台俯仰角。常见做法是搜救场景用航向重叠率70%、旁向重叠率65%,因为搜救区域往往是山区,地形起伏大,高程变化剧烈,重叠率不够会让模型出现空洞,空洞区域的航线会很危险。巡检场景如果只是看建筑物外立面或电力线路走廊,可以把云台俯仰角从默认的-90度调整到-70至-60度,让相机能看到建筑物侧面的结构,但注意云台角度抬起来之后,地面覆盖率会下降,航线间距要相应缩小。飞行速度方面,司空2默认的建图航拍速度一般是8到12米每秒,但对于地形复杂的搜救区域,我一般会压到6米每秒。速度与重叠率的关系是隐性耦合的:速度快了,每张照片的曝光时间变短,运动模糊出现的概率上升,实际有效重叠率会低于名义值。所以速度降下来,比单纯把重叠率调高更能保证模型质量。
3.2 三维航线规划与仿地高度:模型精度是第一约束
建图任务完成后,司空2会生成一个云端三维模型,航线规划在这个模型上进行。针对起伏较大的搜救区域,司空2提供了仿地飞行功能,让飞行器根据地形的起伏自动调整海拔,保持相对地面高度一致。这个功能看着省事,实际使用中有一个很容易忽略的设定:仿地飞行依赖的是「模型的DEM精度」,不是实时雷达测距。也就是说,模型里如果某个山脊因为建图空洞被拉平了,规划出来的航线和实际地形就会不一致,飞行器会照着一个「错误的平滑地形」飞。规避方法是我在规划航线后,会手动抽查三维模型上最陡的几个坡面,看航线是否贴合真实地形轮廓。另外,仿地飞行的高度设定要从安全角度做冗余,比如目标相对高度设为80米,那模型误差至少要控制在15米以内,否则阵风引起的漂移加上模型误差叠加,就很容易触发避障刹停甚至误入障碍物。三维航线规划里的安全边界不能只靠平台默认值,要按场景自己压一遍。
3.3 任务下发与进度回传的API对接示例
任务管理的落点是把航线变成一次可执行、可追溯的任务。司空2的OpenAPI采用HTTPS + 签名鉴权的方式,请求头里需要带应用标识、时间戳和签名串。我按通用模式给一个创建航线任务的示例,核心是先把航线包上传或指定已存储的航线ID,再创建任务并启动执行:
import hashlib import hmac import time import requests app_key = "your_app_key" app_secret = "your_app_secret" base_url = "https://your-platform.example.com/openapi" def gen_sign(method, path, timestamp, body): # 签名串拼接顺序:method + path + timestamp + body raw = f"{method.upper()}{path}{timestamp}{body}" return hmac.new( app_secret.encode("utf-8"), raw.encode("utf-8"), hashlib.sha256 ).hexdigest() timestamp = str(int(time.time())) body = { "name": "搜救任务-东侧山沟", "fly_type": "wayline", # 航线任务类型 "route_id": "route_202406xx_001", # 提前建好的三维航线ID "execute_times": 1, "priority": "high" } path = "/openapi/v1/tasks" body_str = "".join([f"{k}{v}" for k, v in sorted(body.items())]) signature = gen_sign("POST", path, timestamp, body_str) resp = requests.post( base_url + path, json=body, headers={ "X-App-Key": app_key, "X-Timestamp": timestamp, "X-Signature": signature } ) print(resp.status_code, resp.json())这段代码有三个要点。签名串的拼接顺序必须是method、path、timestamp、body四段,顺序错了服务端会返回签名校验失败;body字典在签名前要按key做字典序排序,拼接成不含分隔符的字符串,避免因为JSON字段顺序不同导致签名对不上;时间戳的窗口一般在5分钟内有效,任务创建前最好先做一次时间同步。任务创建成功后会返回一个task_id,后续查任务状态、取消任务、获取任务执行记录都用这个ID。创建任务只是第一步,指挥端真正关心的是执行进度,所以还要监听任务状态回调,司空2支持通过事件订阅把任务开始、暂停、完成、失败等状态推送到你的后端,通常用Webhook接收。回调里带上task_id和state字段,业务系统据此更新大屏展示状态,这个流程比定时轮询任务列表高效得多,而且不会漏掉瞬态状态。
4. 实时态势感知与多端协同:直播流、控制权与告警闭环
4.1 直播流参数取舍:码率、分辨率与延迟的平衡
实时态势感知的核心是让指挥端看到「当下这一刻」发生了什么。司空2的直播流经过云平台转码,指挥端看到的是转码后的画面,而非遥控器端的原始图传画面。这里有一个常见的认知误区:遥控器端看起来清晰,不代表指挥端清晰;遥控器端延迟低,也不代表指挥端延迟低。转码环节引入了参数取舍的余地。司空2直播流通常支持多种清晰度选项,常见做法是配置三档:高清档(1920x1080,码率4Mbps)、均衡档(1280x720,码率2Mbps)、流畅档(640x360,码率1Mbps)。搜救场景里,指挥端需要看到现场细节(比如被困人员的位置、周边地形),我一般会选均衡档,在清晰度和延迟之间取平衡。实时直播链路里,分辨率决定画面的信息量,码率决定画面的还原度,延迟则受网络链路和转码集群负载影响。如果现场4G/5G网络信号不稳,码率压到1Mbps能有效减少花屏和缓冲,但画面的细节会明显下降,这时候要靠飞行器端的变焦或云台角度来补偿信息量。此外,如果指挥端有投屏到大屏的需求,建议在直播播放器里禁用自动码率切换,固定用均衡档,因为自动切换会导致画面清晰度频繁跳变,大屏上观看的指挥员会非常不适。
4.2 多端控制的权限矩阵与任务冲突规避
多端协同最容易出问题的不是技术,是「谁说了算」。司空2的权限模型里,设备、任务、媒体库都有独立的权限域,但实际部署时,我见过太多团队只给所有成员开「管理员」角色,结果就是任何一个人都能下发航线、取消他人任务。无人机一旦在空中被错误指令干扰,后果比地面上严重得多。我一般会建一个三层的权限矩阵:指挥员角色拥有任务创建、任务取消、媒体库下载、直播观看的权限;飞手角色只拥有设备操控、直播推流、任务确认的权限;观察员角色只拥有直播观看和态势查看的权限。关键约束在于「任务取消权限」和「任务确认权限」必须分离:指挥员能取消任务,但不能替飞手确认;飞手能确认任务,但不能取消已经在执行的任务。这样设计的目的是强制形成管理闭环——任何一个操作都有两个角色的动作协同,避免单人误操作直接作用到飞行器。如果你的客户有更严格的审计要求,还可以把任务操作记录全部拉到自己的日志系统里留存,平台自带的操作记录只做临时查询用。
4.3 告警事件转发:用Webhook把平台信令接入业务系统
实时态势感知不只是看画面,更关键的是让系统在异常发生时第一时间通知到人。司空2的告警事件包括低电量返航、遥控器信号断开、飞行器进入限飞区、云台异常等,这些事件在平台内有站内提示,但指挥员不可能一直盯着大屏。常见做法是用平台的事件订阅功能,把所有告警转发到自己的业务系统,再通过短信或企业微信机器人推给对应负责人。事件订阅的核心参数是回调地址与事件类型过滤:
{ "callback_url": "https://your-backend.example.com/webhook/drone-alarm", "events": [ "flight_low_battery", "remote_controller_disconnect", "flight_zone_alert", "task_abnormal_termination" ], "secret": "your_callback_secret", "enable_retry": true, "max_retry_count": 3 }这个配置里,callback_url是你自己的后端接口,必须公网可访问;secret用于验签,回调消息里会带上签名,后端要校验;enable_retry为true时,平台在回调失败后会按最大3次的策略重试,重试间隔通常按指数退避。后端收到告警后的处理逻辑我一般建议做一个「告警等级映射」:低电量、遥控器断开这种事件直接推给对应飞手;限飞区告警推给指挥员并弹窗确认;任务异常终止则推给指挥员的同时自动冻结该航线的再次下发,强制人工介入。这样把平台的告警能力接进自己的业务闭环里,才算真正用好了实时态势感知。
5. 司空2落地避坑指南:搜救现场最容易翻车的五个环节
5.1 直播花屏断流:先查码率还是先查链路质量
现象:指挥端直播画面频繁卡顿、花屏,有时候直接黑屏几秒再恢复。我一度以为是平台转码问题,反复调码率、调分辨率都没用。
原因:云平台转码质量其实是稳定的,真正的问题出在上行链路。遥控器端通过4G/5G模块推流,在搜救山区经常遇到信号弱或基站拥塞,上行带宽不够,视频帧被丢包后,转码端拿到的就是残缺的流,输出自然花屏。码率调低只是让问题从「花屏」变成「画面模糊」,没有解决丢包本身。
解决:先做链路诊断——在遥控器端查看实时上行信号强度和数据速率,如果速率低于码率阈值,优先调整遥控器位置、使用外接天线,或者换用双SIM卡聚合方案。参数上把直播码率从4Mbps降到2Mbps,同时开启平台的弱网自适应选项。从那以后,我每次到现场第一件事是先确认链路余量,再定直播参数,而不是让平台参数来适配链路的玄学。
5.2 三维航线钻进模型空洞:仿地飞行不是万能的
现象:三维航线规划时看着正常,飞行器飞到某个山脊附近时突然急拉高度,甚至触发避障刹停,航线执行不下去。
原因:模型空洞。建图航拍覆盖的山脊背阴面,因为光照差和重叠率不足,三维重建后出现凹陷或拉平,仿地飞行读取的是这份有缺陷的DEM,于是飞行器以为地形是平的,实际地形是凸起的,航线上的一小段就「穿」进了山坡。
解决:在航线规划前,对模型做一次表面检查。司空2的模型查看器里可以逐块旋转,重点检查陡坡、山脊、建筑物交界处有没有明显的纹理扭曲或空洞。发现空洞区域,补拍一次局部建图航拍,旁向重叠率提高到75%以上。另外,仿地飞行高度不要压得太低,搜救场景我至少设置80米相对高度,给模型误差留足冗余。
5.3 多端同时下发任务:没有锁就会「打架」
现象:指挥员A在Web端下发了一个巡检航线,指挥员B同时从另一个窗口下发了一个搜救航线,飞行器在空中执行到一半突然切换航线,两路任务记录互相覆盖。
原因:任务管理缺少冲突检测。司空2的OpenAPI允许创建任务,但不保证任务之间的互斥性,尤其在多端同时操作时,后创建的任务会直接覆盖飞行器的当前执行队列。平台没有为「同一设备同时只允许一个生效任务」提供默认约束。
解决:在业务系统里加一把「任务锁」。创建任务前,先查询该设备是否有进行中的任务,如果有,返回冲突提示并要求确认。确认逻辑做成强制二次确认弹窗,显示当前执行中任务的名称、起始时间和已执行进度。锁的粒度按设备维度做,释放时机是任务状态变为「完成」或「已取消」。
5.4 云端录制缺段:直播流转存的分段陷阱
现象:搜救任务持续了一个半小时,回放时发现云端录制文件被拆成了好多段,某些段之间还缺了十几秒,关键画面正好在缺段里。
原因:云平台录制是基于直播流的连续性做的。搜救过程中遥控器端经历过信号中断和重连,每次重连都会生成一个新的录制分段;两个分段之间的间隔取决于重新推流的速度,中断时间长了就会形成录制空缺源。云端录制本身没有丢数据,缺的是「没有流可录」的那段时间。
解决:在任务执行策略上做保护——搜救任务需要连续画面时,优先使用双链路回传,即同时开启4G模块和Wi-Fi图传,这样一路断掉另一路可以补位。如果链路资源有限,至少要在遥控器端开启断流自动重连,并设置快速恢复选项。任务结束后,用平台媒体查询接口拉取录制分段列表,做完整性校验,发现缺段第一时间标记并安排补录,而不是等复盘时才发现。
5.5 遥控器端失联:授权过期与心跳保障
现象:飞行器在空中,指挥端却收到「遥控器离线」告警,所有指令都无法下发,飞手在遥控器端看到的却是正常的。重新登录后才恢复,但期间错失了最佳干预窗口。
原因:移动端App的长连接令牌过期了。司空2的上云API和遥控器端App之间维持一条长连接,令牌有一定有效期,超过有效期后如果业务系统没有触发续期,长连接会静默断开,不会主动通知指挥端。飞行器和遥控器之间的私有链路是好的,所以飞手端一切正常,但云端已经「失联」了。
解决:在业务系统部署一个心跳巡检任务,定时调用设备在线状态查询接口,连续两次返回离线就打标记并告警推送给指挥员。移动端侧,确保遥控器端App保持前台运行和屏幕常亮,锁屏和切后台会加速长连接断开。另外,给飞手增加一个周期性重登的操作习惯,避免同一会话长时间挂机。这条坑属于典型的「看着是平台问题,其实是运维习惯问题」。
6. 进阶:全链路验证与告警联动,交付前多花两小时
系统交付前,我会强制做三遍链路自测,每遍侧重点都不同。第一遍叫「正常流程走一遍」,从建图航拍、三维航线生成、任务下发、直播拉流到告警推送,把每个环节的操作和页面状态截图存档,确认和设计文档里的流程一致。第二遍叫「故障注入走一遍」,刻意断开一路4G链路、把一个任务在飞行中取消、用两个账号同时操作同一台设备,观察系统是否按照预设的逻辑给出提示或降级处理。第三遍叫「数据一致性走一遍」,把任务记录、录制分段、告警记录从平台拉出来,和自己业务系统里的记录做一次比对,确保两边对得上。这三遍跑下来,大部分隐性坑都会被提前暴露。
告警联动这块,我的习惯是把告警推送到企业微信或短信之后,再增加一道「确认回执」逻辑。告警不只是发出去就结束,还要记录收到人的确认时间,超过5分钟未确认自动升级给上一级。这个机制看上去简单,但在搜救和巡检场景里价值极高——告警发出去没人看到,等于没有告警。我还会把告警联动和信号灯系统打通:重点区域部署的无人机机场,在低电量告警触发时自动切换充电优先模式,指挥端大屏同步显示充电进度和预计恢复时间,让值班人员时刻心里有数。这些都需要在司空2的事件回调基础上做一层自己的编排,不做的话平台的告警只是「消息」,做了才叫「闭环」。
交付时我习惯把三遍自测的记录整理成一份带时间戳的清单,连同系统说明、参数配置表一起交给客户。搜救和巡检都是不能靠临场发挥的领域,所有动作依赖的就是这套「事前规划、事中留痕、事后可查」的协作机制。从那以后,我每次做这类协同式无人机系统交付,都强制先把遥控器端到云平台、再到指挥端、再到业务系统这条链路从头到尾跑满三遍,第一遍只看正常流程,第二遍刻意拔网线看恢复,第三遍把所有权限操作和告警配置截图存档。这套动作花不了多少时间,但救回来的项目交付口碑远超省下的那两小时——希望帮到你。
本文还有配套的精品资源,点击获取