Good day, colleagues.
I would like to present a standalone version of C++17 ROS1 client, which does not need boost, catkin or any complicated external library to build. Just CMake and c++17 compiler is enough.
The goal of this project is to provide relatievely small embeddable ROS1 client to be used in a projects, which already have their own constraints on build systems or libraries and catkin/boost/python is already too much.
Miniros is a monolithic version of roscpp, where everything boost:: was replaced either by an std:: variant or a local adaptation.
It also uses special gencxx message generator, which produce pure std:: code. Headers for all standard message and service types is included directly into miniros. It should be enough to read almost all standard datasets for SLAM. Unfortunately, you still need some catkin workspace to generate code for new types of messages or services.
Additionally, recent v0.5 version has its own C++ reimplementation of roscore (master+rosparam+rosout).
Problems for now:
- Theoretically it should work on windows, but I do not have any windows/MSVC machine to test and fix problems.
- Code is based on ros1 melodic (project started in 2020) and a lot of bugfixes from noetic should be backported.
- minirosbag supports only “play”, “record”, and “encrypt” commands. No “minibag info” for now.
- Setting log levels is not in a healthy shape right now.
- Only a small subset of tests from ros_comm is adapted.
Future plans:
- Add some multimaster functionality to local implementation of roscore.
- Replace ancient xmlrpc with more tightly-integrated version.
- Consider adding rosbridge functionality directly to transports.
I hope that even in the current state the project can be helpful. Any help with testing will be also very welcome.