You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何禁用MoveIt OMPL规划管线的[INFO]日志输出?

问题

使用Ubuntu 20.04 arm64系统与ROS Noetic最新版本,希望禁用MoveIt OMPL规划管线的[INFO]日志输出——这些日志刷屏导致无法看到需要的警告。近期未修改代码,但日志突然大量出现。

相关文件内容

move_group.launch文件

<launch>

  <!-- GDB Debug Option -->
  <arg name="debug" default="false" />
  <arg unless="$(arg debug)" name="launch_prefix" value="" />
  <arg     if="$(arg debug)" name="launch_prefix"
           value="gdb -x $(find ur5e-rg2_moveit_config)/launch/gdb_settings.gdb --ex run --args" />

  <!-- Verbose Mode Option -->
  <arg name="info" default="$(arg debug)" />
  <arg unless="$(arg info)" name="command_args" value="" />
  <arg     if="$(arg info)" name="command_args" value="--debug" />

  <!-- move_group settings -->
  <arg name="pipeline" default="ompl" />
  <arg name="allow_trajectory_execution" default="true"/>
  <arg name="fake_execution" default="false"/>
  <arg name="execution_type" default="interpolate"/> <!-- set to 'last point' to skip intermediate trajectory in fake execution -->
  <arg name="max_safe_path_cost" default="1"/>
  <arg name="jiggle_fraction" default="0.05" />
  <arg name="publish_monitored_planning_scene" default="true"/>

  <arg name="capabilities" default=""/>
  <arg name="disable_capabilities" default=""/>
  <!-- load these non-default MoveGroup capabilities (space seperated) -->
  <!--
  <arg name="capabilities" value="
                a_package/AwsomeMotionPlanningCapability
                another_package/GraspPlanningPipeline
                " />
  -->

  <!-- inhibit these default MoveGroup capabilities (space seperated) -->
  <!--
  <arg name="disable_capabilities" value="
                move_group/MoveGroupKinematicsService
                move_group/ClearOctomapService
                " />
  -->

  <arg name="load_robot_description" default="true" />
  <!-- load URDF, SRDF and joint_limits configuration -->
  <include file="$(find ur5e-rg2_moveit_config)/launch/planning_context.launch">
    <arg name="load_robot_description" value="$(arg load_robot_description)" />
  </include>

  <!-- Planning Pipelines -->
  <group ns="move_group/planning_pipelines">

    <!-- OMPL -->
    <include ns="ompl" file="$(find ur5e-rg2_moveit_config)/launch/planning_pipeline.launch.xml">
      <arg name="pipeline" value="ompl" />
    </include>

    <!-- CHOMP -->
    <include ns="chomp" file="$(find ur5e-rg2_moveit_config)/launch/planning_pipeline.launch.xml">
      <arg name="pipeline" value="chomp" />
    </include>

    <!-- Pilz Industrial Motion-->
    <include ns="pilz_industrial_motion_planner" file="$(find moveit_resources_prbt_moveit_config)/launch/planning_pipeline.launch.xml">
      <arg name="pipeline" value="pilz_industrial_motion_planner" />
    </include>

    <!-- Support custom planning pipeline -->
    <include if="$(eval arg('pipeline') not in ['ompl', 'chomp', 'pilz_industrial_motion_planner'])"
         file="$(find ur5e-rg2_moveit_config)/launch/planning_pipeline.launch.xml">
      <arg name="pipeline" value="$(arg pipeline)" />
    </include>
  </group>

  <!-- Trajectory Execution Functionality -->
  <include ns="move_group" file="$(find ur5e-rg2_moveit_config)/launch/trajectory_execution.launch.xml" if="$(arg allow_trajectory_execution)">
    <arg name="moveit_manage_controllers" value="true" />
    <arg name="moveit_controller_manager" value="ur5e-rg2" unless="$(arg fake_execution)"/>
    <arg name="moveit_controller_manager" value="fake" if="$(arg fake_execution)"/>
    <arg name="execution_type" value="$(arg execution_type)" />
  </include>

  <!-- Sensors Functionality -->
  <include ns="move_group" file="$(find ur5e-rg2_moveit_config)/launch/sensor_manager.launch.xml" if="$(arg allow_trajectory_execution)">
    <arg name="moveit_sensor_manager" value="ur5e-rg2" />
  </include>

  <!-- Start the actual move_group node/action server -->
  <node name="move_group" launch-prefix="$(arg launch_prefix)" pkg="moveit_ros_move_group" type="move_group" respawn="false" output="screen" args="$(arg command_args)">
    <!-- Set the display variable, in case OpenGL code is used internally -->
    <env name="DISPLAY" value="$(optenv DISPLAY :0)" />

    <param name="allow_trajectory_execution" value="$(arg allow_trajectory_execution)"/>
    <param name="max_safe_path_cost" value="$(arg max_safe_path_cost)"/>
    <param name="jiggle_fraction" value="$(arg jiggle_fraction)" />
    <param name="default_planning_pipeline" value="$(arg pipeline)" />
    <param name="capabilities" value="$(arg capabilities)" />
    <param name="disable_capabilities" value="$(arg disable_capabilities)" />

    <!-- Publish the planning scene of the physical robot so that rviz plugin can know actual robot -->
    <param name="planning_scene_monitor/publish_planning_scene" value="$(arg publish_monitored_planning_scene)" />
    <param name="planning_scene_monitor/publish_geometry_updates" value="$(arg publish_monitored_planning_scene)" />
    <param name="planning_scene_monitor/publish_state_updates" value="$(arg publish_monitored_planning_scene)" />
    <param name="planning_scene_monitor/publish_transforms_updates" value="$(arg publish_monitored_planning_scene)" />
  </node>

</launch>

调用move_group.launch的代码

<include file="$(find ur5e-rg2_moveit_config)/launch/move_group.launch" if="$(arg sim)">
    <arg name="allow_trajectory_execution" value="true"/>
    <arg name="fake_execution" value="true"/>
    <arg name="execution_type" value="$(arg execution_type)"/>
    <arg name="info" value="false"/>
    <arg name="debug" value="false"/>
    <arg name="pipeline" value="$(arg pipeline)"/>
    <arg name="load_robot_description" value="true"/>
  </include>

终端输出的INFO日志

[ INFO] [1672325791.029486426]: Stereo is NOT SUPPORTED
[ INFO] [1672325791.029630843]: OpenGL device: virgl (Apple M1 Pro (Compat))
[ INFO] [1672325791.029683884]: OpenGl version: 3.1 (GLSL 1.4).
[ INFO] [1672325794.416828292]: Loading robot model 'ur5e-rg2'...
[ INFO] [1672325794.600401765]: Starting planning scene monitor
[ INFO] [1672325794.601532390]: Listening to '/move_group/monitored_planning_scene'
[ INFO] [1672325794.864384678]: Constructing new MoveGroup connection for group 'manipulator' in namespace ''
[ INFO] [1672325796.045110033]: Ready to take commands for planning group manipulator.

疑问:遗漏了什么设置?


解决方案

当前设置的info参数仅控制是否传入--debug参数,无法直接屏蔽[INFO]级别的日志。要禁用OMPL及move_group节点的INFO日志,可通过以下方法实现:

方法1:直接修改节点日志级别

在move_group.launch的move_group节点配置中,添加日志级别参数,将输出级别设为warn及以上,仅显示警告及更高级别的日志:

<node name="move_group" launch-prefix="$(arg launch_prefix)" pkg="moveit_ros_move_group" type="move_group" respawn="false" output="screen" args="$(arg command_args)">
  <!-- 保留原有参数,新增以下两行 -->
  <param name="rosconsole/logger_level" value="warn" />
  <param name="rosconsole/logger_level/moveit_ompl_planner" value="warn" />
  <!-- 其他原有内容... -->
</node>

方法2:使用自定义ROS控制台配置文件

  1. 在你的功能包中创建config/rosconsole.config文件,内容如下:
log4j.logger.ros.moveit_ompl_planner=WARN
log4j.logger.ros.moveit_ros_move_group=WARN
  1. 在move_group.launch的move_group节点中添加环境变量,引用该配置文件:
<node name="move_group" launch-prefix="$(arg launch_prefix)" pkg="moveit_ros_move_group" type="move_group" respawn="false" output="screen" args="$(arg command_args)">
  <!-- 新增环境变量 -->
  <env name="ROSCONSOLE_CONFIG_FILE" value="$(find ur5e-rg2_moveit_config)/config/rosconsole.config" />
  <!-- 其他原有内容... -->
</node>

方法3:终端临时设置日志级别

启动launch文件时,通过环境变量临时指定日志配置:

ROSCONSOLE_CONFIG_FILE=$(find ur5e-rg2_moveit_config)/config/rosconsole.config roslaunch your_package your_launch_file.launch

也可以全局设置日志级别(会影响所有ROS节点):

export ROSCONSOLE_CONFIG_FILE=/path/to/your/rosconsole.config

关键说明

你看到的INFO日志不全来自OMPL管线:OpenGL相关日志来自RViz或MoveIt的可视化模块,机器人模型加载、规划场景监控的日志来自move_group节点本身。以上方法可统一屏蔽这些INFO级输出,让你专注于警告信息。

内容的提问来源于stack exchange,提问作者M. Funk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 21:10:20