Our product uses a fleet of real (not virtual) robots to perform different tasks in a fulfillment warehouse. Simulation is an essential tool in this kind of product: it allows to perform regression tests and test new features without the need for real and expensive hardware, to compare the impact of different implementations and optimizations, to inject failures, and more.
Tasks performed by physical robots take time (movement over the warehouse, box lifting, etc.), but in simulation, where virtual robots are used, there is no need to wait all that time. I will describe our implementation of the Discrete-Event Simulation approach which allows us to simulate hours of real-life in minutes.
Shortening simulation time improves the development process by providing faster feedback to developers and quicker CI and testing cycles. Another powerful advantage is a more deterministic simulation - using this approach, each component in the system gets equal opportunity (CPU time) in each time tick, which is not affected by the underlying machine or operating system that the simulation is running on. Also, it is possible to simulate any date and hour easily, and by that we wouldn't panic before the "Y2K bug".
I will elaborate on some challenges we encountered: time leak of event-driven components, differences between dev and production environments and running a distributed simulation due to the transition to microservices.
Affiliation: CommonSense Robotics
I've finished my M.Sc in Computer Science in the field of Computational Geometry. My first experience with simulations was already back then - part of my thesis involved building a GNSS-Signals simulator. Deploying some novel optimizations, we improved performance dramatically. Since then, I've worked as a software engineer in different roles with vast experience in Python. My last one, arrived at early stage to a fast-growing startup named CommonSense Robtics and involved in the system architecture and development, which a simulation is a crucial part of it.