Deterministic Fleet Management for Autonomous Mobile Robots using Rust

By Andy Brinkmeyer

Talk - Wednesday, 29 May

The Rust programming language has gained traction in industrial applications due to its blend of performance, safety, and expressive type system. In this presentation, we explore our experience using Rust to develop a fleet management system responsible for orchestrating over 100 Autonomous Mobile Robots. Our fleet management system tackles the intricate challenges of order coordination, route planning, and traffic management. In this talk we focus on how Rust, along with its ecosystem, empowered us to implement re-simulation of the fleet manager using recorded logs. We delve into how Rust’s primitives for parallel and concurrent programming facilitated the creation of a robust and easily mockable system design. We combined synchronous deterministic components with an async I/O runtime, which allows us to re-simulate the fleet manager execution while mocking out parts of the I/O communication. Furthermore, we highlight the pivotal role of procedural macros in deriving state representations of our types, enhancing code maintainability and readability. Additionally, we show how serde helped us to implement efficient state serialization to disk. Attendees of this session will gain practical insights into leveraging Rust in mission-critical industrial systems. We share our experiences, challenges faced, and lessons learned in implementing one of our core components for error-analysis.

Speaker

speaker.name

Andy Brinkmeyer

Andy Brinkmeyer is a software engineer at arculus with a background in aeronautical engineering and computer science. He brings experience in developing robust mission systems, having worked on semi-autonomous UAVs in the past and currently focusing on autonomous mobile robots. While initially rooted in C++ and Ada, Andy has found enthusiasm for Rust, and his efforts have been pivotal in integrating Rust into arculus fleet management system.