Search Results

Documents authored by Sojka, Michal


Document
A First Look at ROS 2 Applications Written in Asynchronous Rust

Authors: Martin Škoudlil, Michal Sojka, and Zdeněk Hanzálek

Published in: LIPIcs, Volume 335, 37th Euromicro Conference on Real-Time Systems (ECRTS 2025)


Abstract
The increasing popularity of the Rust programming language in building robotic applications using the Robot Operating System (ROS 2) raises questions about its real-time execution capabilities, particularly when employing asynchronous programming. Existing real-time scheduling and response-time analysis techniques for ROS 2 focus on applications written in C++ and do not address the unique execution models and challenges presented by Rust’s asynchronous programming paradigm. In this paper, we analyze the execution model of R2R - an asynchronous Rust ROS 2 bindings and various asynchronous Rust runtimes, comparing them with the execution model of C++ ROS 2 applications. We propose a structured approach for R2R applications aimed at deterministic real-time operation involving thread prioritization and callback-to-thread mapping schemes. Our experimental evaluation based on measuring end-to-end latencies of a synthetic application shows that the proposed approach is effective and outperforms other evaluated configurations. A more complex autonomous driving case study demonstrates its practical applicability. Overall, the experimental results indicate that our proposed structure achieves bounded response times for time-critical tasks. This paves the way for future work to adapt existing or develop new response-time analysis techniques for R2R applications using our structure.

Cite as

Martin Škoudlil, Michal Sojka, and Zdeněk Hanzálek. A First Look at ROS 2 Applications Written in Asynchronous Rust. In 37th Euromicro Conference on Real-Time Systems (ECRTS 2025). Leibniz International Proceedings in Informatics (LIPIcs), Volume 335, pp. 1:1-1:21, Schloss Dagstuhl – Leibniz-Zentrum für Informatik (2025)


Copy BibTex To Clipboard

@InProceedings{skoudlil_et_al:LIPIcs.ECRTS.2025.1,
  author =	{\v{S}koudlil, Martin and Sojka, Michal and Hanz\'{a}lek, Zden\v{e}k},
  title =	{{A First Look at ROS 2 Applications Written in Asynchronous Rust}},
  booktitle =	{37th Euromicro Conference on Real-Time Systems (ECRTS 2025)},
  pages =	{1:1--1:21},
  series =	{Leibniz International Proceedings in Informatics (LIPIcs)},
  ISBN =	{978-3-95977-377-5},
  ISSN =	{1868-8969},
  year =	{2025},
  volume =	{335},
  editor =	{Mancuso, Renato},
  publisher =	{Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik},
  address =	{Dagstuhl, Germany},
  URL =		{https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECRTS.2025.1},
  URN =		{urn:nbn:de:0030-drops-235794},
  doi =		{10.4230/LIPIcs.ECRTS.2025.1},
  annote =	{Keywords: ROS, Rust, Real-time, Response time}
}
Document
Artifact
A First Look at ROS 2 Applications Written in Asynchronous Rust (Artifact)

Authors: Martin Škoudlil and Michal Sojka

Published in: DARTS, Volume 11, Issue 1, Special Issue of the 37th Euromicro Conference on Real-Time Systems (ECRTS 2025)


Abstract
Deterministic real-time performance is critical for robotic applications, many of which are developed in C++ using the ROS 2 framework. Recently, Rust has emerged as a compelling alternative to C++ in various domains, including robotics. This study explores whether ROS 2 applications written in Rust can achieve real-time performance comparable to their C++ counterparts. We focus on the R2R library, which provides Rust bindings for ROS 2 with a modern asynchronous programming interface. This artifact includes source code for several ROS 2 nodes and supporting Python scripts. The nodes implement simple publishers or subscribers and vary in programming language (Rust, C++), Rust asynchronous runtime (futures, Tokio), and callback-to-OS-thread mapping with different thread priorities. The nodes are run with tracing enabled and by post-processing the traces we obtain statistics about end-to-end latencies. Our results demonstrate that specific configurations enable Rust R2R applications to match the real-time performance of C++ applications. Running the artifact as is does not require any ROS 2 or Rust knowledge. Following our README and running mentioned shell commands should be sufficient. However to verify that the commands do what is promised, some familiarity with ROS 2 workspace structure and Rust’s build tool cargo would be beneficial.

Cite as

Martin Škoudlil and Michal Sojka. A First Look at ROS 2 Applications Written in Asynchronous Rust (Artifact). In Special Issue of the 37th Euromicro Conference on Real-Time Systems (ECRTS 2025). Dagstuhl Artifacts Series (DARTS), Volume 11, Issue 1, pp. 2:1-2:2, Schloss Dagstuhl – Leibniz-Zentrum für Informatik (2025)


Copy BibTex To Clipboard

@Article{skoudlil_et_al:DARTS.11.1.2,
  author =	{\v{S}koudlil, Martin and Sojka, Michal},
  title =	{{A First Look at ROS 2 Applications Written in Asynchronous Rust (Artifact)}},
  pages =	{2:1--2:2},
  journal =	{Dagstuhl Artifacts Series},
  ISSN =	{2509-8195},
  year =	{2025},
  volume =	{11},
  number =	{1},
  editor =	{\v{S}koudlil, Martin and Sojka, Michal},
  publisher =	{Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik},
  address =	{Dagstuhl, Germany},
  URL =		{https://drops.dagstuhl.de/entities/document/10.4230/DARTS.11.1.2},
  URN =		{urn:nbn:de:0030-drops-236038},
  doi =		{10.4230/DARTS.11.1.2},
  annote =	{Keywords: ROS, Rust, Real-time, Response time}
}
Any Issues?
X

Feedback on the Current Page

CAPTCHA

Thanks for your feedback!

Feedback submitted to Dagstuhl Publishing

Could not send message

Please try again later or send an E-mail