Overview
UISEE is a leading autonomous driving company. With its U-Drive intelligent driving platform, UISEE possesses cutting-edge autonomous driving algorithms, a powerful cloud-based Autonomous Driving Platform, and a full-featured automotive-grade intelligent driving controller. The platform can meet high-level autonomous driving requirements across various scenarios, empowering a new ecosystem for travel and logistics.
Through the data connection, movement, and processing capabilities provided by EMQX, UISEE has achieved massive vehicle-to-vehicle data access, including unmanned vehicles and AGVs. This has provided reliable data support for constructing an autonomous driving platform that is truly unmanned for all scenarios.
Challenges
- High-throughput and reliability requirements for massive device data: Individual unmanned vehicles upload large data packets at a high frequency, with certain reliability requirements for specific data.
- Complex data processing and integration: Processing, distributing, and storing vehicle data in the cloud entails significant resource expenses, and developing dedicated services for this purpose incurs high maintenance costs.
- Account security and management: The platform needs authentication involving account passwords and certificates, with fine-grained permission requirements when interfacing with third-party systems.
- Data communication under weak network conditions: Vehicles often operate in areas with weak network connectivity, posing challenges to data accuracy and real-time transmission.
- Edge data autonomy and integration with the cloud: The edge has multiple data producers and consumers, including devices and systems, necessitating data interaction within a local network. The edge must be capable of aggregating data and interacting with the cloud.
Choosing EMQX over RabbitMQ
The project initially utilized RabbitMQ. However, in a one-to-many scenario, RabbitMQ incurred significant resource overhead and experienced downtime issues, leading to increased operational costs. After testing with EMQX, UISEE found a noticeable reduction in resource consumption compared to RabbitMQ.
Furthermore, in the context of unmanned driving, there are stringent requirements for the accuracy of device online/offline times. RabbitMQ lacks support for SYS notification information, relying solely on the timestamp of the last report and the time difference with the current time, resulting in poor accuracy and real-time performance. EMQX, on the other hand, allows subscription to SYS system topics, making it convenient to accurately obtain this information. Therefore, UISEE ultimately adopted EMQX.
Building Autonomous Driving Platform with EMQX
Achieving High Availability Architecture with Shared Subscription
Initially, cloud services used a traditional broadcast mode for subscribing to on-vehicle data. In cases with multiple nodes, different nodes would redundantly subscribe to the same data. Therefore, the initial high-availability solution employed a master-slave setup. However, this approach couldn't facilitate concurrent operation of multiple nodes, leading to significant resource wastage.
The shared subscription approach based on EMQX enables shared high availability. Each unmanned vehicle has its unique and standardized client_id, and EMQX shards data based on the Hash value of the client_id. This ensures that data from a vehicle is sent to the same node in the cloud. When the number of cloud service nodes changes, automatic load balancing occurs, guaranteeing the consumption of all pushed data. This high-availability setup maximizes the utilization of cloud resources and exhibits excellent dynamic scalability.
High-Throughput Data Access and Storage
In autonomous driving scenarios, some real-time status information reported by vehicles involves large volumes of data, high frequency, and the system places a high demand on the integrity of message transmission and storage. Leveraging EMQX's rule engine and built-in data integration capabilities, it is convenient to store data in InfluxDB. Moreover, in high-throughput scenarios, this ensures the reliability and integrity of data storage.
Forcing Client Offline Based on Business Needs
Simulated vehicles can interfere with real vehicles when they're tested together, so client disconnection must be enforced on the vehicle side through cloud-based means.
The final solution involves using a custom handshake protocol and invoking the EMQX client offline interface. The offline interface immediately terminates the connection, but the client promptly reconnects. The vehicle side implements a handshake protocol, effective when establishing a connection, and the cloud validates whether the vehicle information in the client_id is added to the cloud for the handshake to proceed. If the handshake fails, the connection with EMQX is maintained, but no actual data is reported.
Ensuring Data Security with Multiple Authentication Methods
EMQX uses account passwords and certificates to secure data connections with unmanned vehicles. It also facilitates fine-grained permission management for third-party vehicle control platforms. EMQX has an import-export functionality for easy deployment of new environments.
Improving Weak Network Data Transmission with MQTT over QUIC
EMQX's MQTT over QUIC connection solution enhances the data transmission experience in weak network scenarios for unmanned vehicles. It ensures reliable data transmission, reduces latency, and addresses Head-of-Line blocking. It's the only MQTT broker globally that supports MQTT over QUIC and has been experimentally applied in UISEE's autonomous driving project.
Data Communication at Edge and Cloud-Edge Data Bridging
Using the ultra-lightweight edge MQTT broker, NanoMQ, the AGV dispatch system achieves local edge messaging with AGV devices. Additionally, NanoMQ can bridge edge messages to the EMQX on the cloud, facilitating seamless communication between the cloud and the edge.
Achievements
- The service’s overall availability reaches 99.995%.
- The rule engine eliminates the need for developing certain services, resulting in a 5% increase in development efficiency.
- 20% improvement in data accuracy in weak network environments.