ROS调试

1.输出调试信息

ROS自带了大量的能够输出调试信息的函数和宏,包括错误,警告等.它提供了如信息级别,条件触发消息和STL的流接口等方式.
直接上例子,新建catkin工程,工程名为rosdebugtest

#include <ros/ros.h>
#include <ros/console.h>

int main( int argc, char **argv )
{
  ros::init( argc, argv, "rosdebug" );
  ros::NodeHandle n;
  ros::Rate rate( 1 );

  while( ros::ok() ) {
    ROS_INFO_STREAM_ONCE("loop start");
    ROS_DEBUG_STREAM( "DEBUG message." );
    ROS_INFO_STREAM ( "INFO message."  );
    ROS_WARN_STREAM ( "WARN message."  );
    ROS_ERROR_STREAM( "ERROR message." );
    ROS_FATAL_STREAM( "FATAL message." );
    ROS_INFO_STREAM_NAMED( "named_msg", "INFO named message." );
    ROS_INFO_STREAM_THROTTLE( 2, "INFO throttle message." );
    ros::spinOnce();
    rate.sleep();
  }
  return 1;
}

(1)调试级别c和c++用法
其中 ROS_INFO(“INFO message %d”,k),相当于c中的printf;
ROS_INFO_STREAM ( "INFO message." <<k);相当于c++中的cout;
而调试的显示级别有5种
DEBUG
INFO
WARN
ERROR
FATAL
(2)为调试信息命名
ROS_INFO_STREAM_NAMED( "named_msg", "INFO named message." );
表示为这段信息命名,为了更容易知道这段信息来自那段代码.

(3)设置显示频率

ROS_INFO_STREAM_THROTTLE( 2, "INFO throttle message." );

THROTTLE表示节流的意思,以上代码运行两次输出一次INFO throttle message.
(4)单次显示
ros中可以在循环中让信息只输出一次
使用ROS_[_STREAM]_ONCE[_NAMED]

ROS_INFO_STREAM_ONCE("loop start")

2.使用rosconsole和设置显示级别

ROS的调试信息可以用rosconsole查看和设置,用法如下
(1)查看节点
rosnode list
(2)查看节点的log(节点名rosdebugtest)
rosconsole list rosdebugtest
输出如下
ros
ros.roscpp
ros.roscpp.roscpp_internal
ros.roscpp.superdebug
ros.rosdebugtest
ros.rosdebugtest.named_msg
(3)查看log显示级别
Usage: rosconsole get <node> <logger>
rosconsole get rosdebugtest ros.rosdebugtest.named_msg

(4)动态设置log的显示级别

Usage:rosconsole set <node> <logger> <level>

rosconsole set rosdebugtest ros.rosdebugtest debug

或者用图形化界面设置
启动rqt_logger_level

rosrun rqt_logger_level rqt_logger_level

(5)在编译时设置源代码的调试级别
由于编译时默认显示的是INFO级别,因此调试时为了看到Debug信息,需要在编译是设置调试级别。
在 ros::init( argc, argv, “rosdebugtest” );后加入这一句就行了

ros::console::set_logger_level(ROSCONSOLE_DEFAULT_NAME,ros::console::levels::Debug);

(6)设置ros默认输出级别
更改文件
$ROS_ROOT/config/rosconsole.config
文件内容如下

# Set the default ros output to warning and higher
log4j.logger.ros=WARN
# Override my package to output everything
log4j.logger.ros.my_package_name=DEBUG

http://wiki.ros.org/rosconsole

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值