I am very interested in using Rust for ROS2, but it has been some time since I last explored it, and I am unable to find any recent updates on its current state.
There are numerous client libraries available, indicating significant interest in Rust for ROS2. However, how many of these libraries are mature enough to be considered serious alternatives to rclpy or rclcpp? Which should I choose? What is the difference between them?
What progress has been made in discussions about creating an official Rust client? I have heard that Zenoh is to become an officially supported RMW, which would require the ROS2 CI pipeline / build farm to support compiling Rust projects. Could this lead to a Rust client library being shipped by default alongside rclpy and rclcpp? Also, how does code generation work in these libraries? If they are installed, will every .msg and .srv file also generate some rust code, i.e, all of the std_msgs and any other third party package in my workspace?
I believe that including it by default would encourage more people to adopt Rust in robotics, potentially making future robotics development safer and faster. I work in robotics but want to code in rust, so it’s something I personally would love to see!
Here are the Rust client libraries that I could find. Am I missing any?
- GitHub - jhelovuo/ros2-client: ROS2 client library based on RustDDS
- GitHub - marshalshi/rus2: Rust client library for ROS2 (seems to be abandoned)
- GitHub - ros2-rust/ros2_rust: Rust bindings for ROS 2
- GitHub - rclrust/rclrust: Yet another ROS2 Rust client
- GitHub - adnanademovic/rosrust: Pure Rust implementation of a ROS client library
- GitHub - sequenceplanner/r2r: Minimal ROS 2 Rust bindings