恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
解决mavros2 ros2版本cpu占用高的问题
首页
资讯中心
/
解决mavros2 ros2版本cpu占用高的问题
解决mavros2 ros2版本cpu占用高的问题
发布时间:2026/10/11 5:37:07
树莓派5上mavros2原先占用20%单核改后只占5%cpu高来源两个方面DDS对于单个节点资源消耗高mavros2的plugins每个都是一个node同时ros2的multi threaded executor线程多时占用cpu也高。三招1. 设置plugin_allowlist为只允许必要的因为mavros2里每个node都是一个节点占用DDS资源较多[ sys_status, command, imu, local_position, setpoint_raw, sys_time, vision_pose, global_position, gps_status ]改善明显2. 设置MAVROS_UAS_EXECUTOR_THREADS环境变量为2。mavros2默认用的multi thread executor是用的全部核心没必要最低设置为2保证并发。改善会有一些较为明显。该参数只适用于Jazzy 及更高版本CPU usage 4x higher in ROS 2 than ROS 1 · Issue #2031 · mavlink/mavros · GitHub3. 改rmw的dds从fastdds改到cyclonedds因为dds开销层面cyclonedds小一点对所有节点都适用尤其对mavros这种多plugin多node的架构有效。实测能从50%降低到40%有一定效果。export RMW_IMPLEMENTATIONrmw_cyclonedds_cpp未来可能可行ubuntu26 ros2 lyrical版本及以上最近jazzy版本也支持了执行器multi threaded executor可以改为事件驱动的CBGEventsExecutor改善会有一些但是cm executor是实验性功能对service等的支持还不完善Lyrical: try new executor by vooon · Pull Request #2249 · mavlink/mavros · GitHub