After some attempts to reveal the source of problem I found a solution. There are no correct realizations of SteadyTimer
system entity on some VLIW and SPARC-like platforms. This leads any function using SteadyTimer
to return immediately after calling. In threaded implementation such funсtions consume all CPU time just for continuous function calls. This issue can be solved with replacement of all SteadyTimer-related calls to equivalents which use WallTimer
.
There is brilliant solution on GitHub made by Christopher Wecht: https://github.com/cwecht/ros_comm/tr... His solution makes ROS core true platform-independent on the described case.
To integrate Christopher's solution into the existing ROS sources it is only needed to replace src/ros_comm/roscpp
directory with variant from here. After that compiled ROS works properly on VLIW platforms.
I've seen that happen when you abuse the parameter server, its meant for static parameters at bringup not to set throughout use (if you do that)
Probably won't solve your problem, but you can reduce the work done by rosout node in a few ways: disable topics in log lines, disable file logging.
NB: ROSOUT_DISABLE_FILE_LOGGING is not yet in official melodic release, but there are other ways of disabling rosout file logging.
I also meet this problem, rosout loads one full cpu kernel