白皮书
车联网设计与实现:搭建可靠、高效、符合行业需求的车联网平台 →

概述

驭势科技(UISEE)是中国领先的自动驾驶公司,致力于为全行业、全场景提供 AI 驾驶服务,做赋能出行和物流新生态的 AI 驾驶员。公司成立于 2016 年 2 月,坚持立足本土研发,根植中国市场。总部和研发中心设立在北京,在上海嘉定和浙江嘉善分别设有研发中心、研发试制和应用创新中心。此外,在深圳、广西、成都、武汉等地均设有业务分支机构。

驭势科技自主研发的 U-Drive 智能驾驶平台,拥有业界领先的自动驾驶算法、功能强大的云端智能驾驶大脑和全功能车规级智能驾驶控制器,可以满足多场景、高级别的自动驾驶需求。公司目前在业务上已经形成可规模化部署的 L3-L4 级智能驾驶系统,并于 2019 年率先在机场和厂区实现了“去安全员”无人驾驶常态化运营的重大突破,落地“全场景、真无人、全天候”的自动驾驶技术,并由此迈向大规模商用。

挑战

  1. 设备连接数量大,吞吐量要求高,单台无人车会以较高频率上传相对较大的数据包,并且对某些数据的可靠性有一定要求;
  2. 云端服务单位时间内要处理的数量非常大,且对数据到达的顺序有较强的要求。而传统的广播模式对于实现高可用、充分利用资源难度较大;
  3. 车端数据上报到云端需要做处理、分发和落盘,专门开服务去处理资源开销大,维护成本高;
  4. 账号密码加证书的鉴权,与第三方对接时对权限粒度要求较细;
  5. 弱网络下,对数据准达率、数据实时性要求高;
  6. 云边端协同带来的挑战,边缘端需要接入局域网内的设备。

解决方案

关于设备海量连接,项目最早使用的是 RabbitMQ,在一对多场景下,资源开销较大。在实际使用中出现过宕机问题,导致运维成本提高。使用 EMQX 实测后,资源开销相比 RabbitMQ 明显降低。此外,无人驾驶场景对于设备的上下线时间的准确性有较高要求。而 RabbitMQ 不支持 SYS 通知信息,只能依赖最后一次上报的时间戳和当前时间的差值来判断,准确性、实时性较差。通过 EMQX 则可以订阅 SYS 系统主题,可以很方便准确地获取到这些信息。因此最终采用了 EMQX。

云端服务在订阅车端数据时,最初使用的是传统的广播模式。在做服务高可用时,如果服务为多个节点,则不同的节点会重复订阅相同的数据。因此最初的高可用方案,采用的是主备方案。但是该方案不能实现多个节点同时工作,资源浪费较为严重。后改用基于 EMQX 的共享订阅方式来解决,实现了分片高可用。每台无人车有自己唯一且标准的 client_id,EMQX 根据 client_id 的 Hash 值进行分片,保证一台车的数据只会发送到云端的同一节点上。当云端服务节点数量发生变化时,会自动进行负载均衡,保证所有的推送都会被消费。通过该方式实现的高可用,可以充分利用云端资源,并且拥有良好的动态扩展性。

车辆上报的一些实时的状态信息数据量较大,频率较高,利用 EMQX 规则引擎可以很方便地将数据存储到 InfluxDB 中。

某些场景下会将一些仿真车和实车放到同一环境下进行测试。仿真车上报的位置信息经过协同服务会导致实车无法正常运行,因此需要云端强制车端下线。最终解决方案采用自定义握手协议加调用 EMQX 客户端下线接口实现。下线接口能让连接立马断开,但是客户端还会立马重连,车端实现握手协议,在客户端建立连接时生效。云端通过校验 client_id 中车辆信息是否在云端添加来决定是否通过握手。不通过握手会保持跟 EMQX 的连接,但不会有实际数据上报。

无人车和 EMQX 的连接采用证书加账号密码的方式,以提高数据安全性。账号密码有专门的服务维护,可以动态更新。在跟第三方控车平台对接时,通过 EMQX 实现细粒度的权限管理,客户只能看到部分车辆信息,只能跟部分 Topic 做交互。EMQX 本身具备配置的导入导出功能,使得运维人员在部署时能够很方便地搭建新环境,而不用过于关注复杂的配置文件。

无人车采用的是 4G 网络和云端通信,弱网络场景时有发生。对于 QoS1 的消息,想要在重新上线后,重新收到离线期间错过的消息,可通过在 CONNECT 报文里设置 CleanSession 字段为 false 的方式解决。此时 Broker 会为终端存储设备所有的订阅和没有被确认的消息。对于车端上报的 QoS0 的消息,车端判断持续弱网络情况下,数据上报切换为 CoAP 协议上报,云端使用 EMQX 的 CoAP 插件。在弱网络环境下, UDP 表现相比 TCP 好一些。

前端获取实时数据,直接通过 MQTT 标准库直接订阅 EMQX 服务器即可,相比原始 WebSocket 更简单方便。

AGV 通过 EMQ 提供的超轻量边缘 MQTT 消息服务器 NanoMQ 实现调度系统和设备通信,直接将 NanoMQ 桥接至驭势云端的 EMQX,即可实现双方数据互通。

驭势云脑宏观架构

驭势云脑宏观架构

驭势无人车和 AGV 云边端协同的整体架构

驭势无人车和 AGV 云边端协同的整体架构

成果

  1. 云脑服务整体可用性达 99.995%;
  2. 基于共享订阅实现的分片高可用,相比自己实现基于 Hash 环的分片,开发难度降低,开发效率提升 25%。数据准达率有了极大提升。项目部署更近灵活简单,能适应多场景;
  3. 规则引擎的引入,避免部分服务的开发,开发效率提升 5%;
  4. 弱网络环境下数据准达率提升 20%。
EMQ 车联网行业白皮书正式上线
全面解读车联网平台搭建
免费下载 →