ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

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/tree/fix_subscription_busy_wait-melodic His solutions 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.

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 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. WallTimer.

There is brilliant solution on GitHub made by Christopher Wecht: https://github.com/cwecht/ros_comm/tree/fix_subscription_busy_wait-melodic His solutions 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.

After some attempts to reveal the source of problem I found a solution. There are no correct realizations of SteadyTimer 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/tree/fix_subscription_busy_wait-melodic His solutions 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.

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/tree/fix_subscription_busy_wait-melodic His solutions 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.