This Rust library provides a standalone implementation of the ROS (Robot Operating System) core, allowing you to build ROS nodes entirely in Rust without needing other ROS dependencies. Start the ROS core, run any ROS stack, and use the provided examples to create publishers and subscribers. Contributions are welcome!
MIT License
8
stars
2
forks
source link
Several fixes to make it work as a drop in replacement for roscore #5
I found a few issues / behavior differences from the original roscore implementation and fixed them, so that ros-core-rs can be used as a drop-in replacement.
Things i changed:
correct handling of parameter tree queries / editing, especially nested structures
add a /run_id parameter on startup, using a similar implementation as upstream roscore
correct implementation of the SearchParam API call (this was implemented as an alias for GetParam, but it's actually something else and robot_state_publisher needs this)
configure dxr-client to use rustls instead of openssl, to support easy cross-compilation from x86_64 to aarch64. I'm not sure whether ros-core-rs even uses the TLS stuff.
While the test coverage is not extensive, we have tested this in our existing robot and so far have not found any more bugs. CPU usage is reduced significantly compared to the upstream roscore implementation in scenarios that put load on roscore, such as repeated querying for parameters. Incidentally, ros-core-rs's logs (with RUST_LOG=ros_core_rs=debug) turned out to be more useful than the log file of the original implementation in locating such bottlenecks and fix the underlying issue (repeated querying of parameters).
Hi,
thank you for the RiiR :)
I found a few issues / behavior differences from the original roscore implementation and fixed them, so that ros-core-rs can be used as a drop-in replacement.
Things i changed:
While the test coverage is not extensive, we have tested this in our existing robot and so far have not found any more bugs. CPU usage is reduced significantly compared to the upstream roscore implementation in scenarios that put load on roscore, such as repeated querying for parameters. Incidentally, ros-core-rs's logs (with
RUST_LOG=ros_core_rs=debug
) turned out to be more useful than the log file of the original implementation in locating such bottlenecks and fix the underlying issue (repeated querying of parameters).