ROS (二) ---- roscpp

本文深入探讨ROS中的roscpp,包括初始化函数、Handler的Timer功能、CallbackQueue的使用、多线程Spinner及AsyncSpinner、Logging设置、命名空间管理、参数服务器的Param操作。详细讲解了定时器创建、回调队列配置、日志等级设定及命名空间的remapping,是理解ROS底层机制的重要参考资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

roscpp

初始化函数

ros::init() 是节点中第一个调用的函数,参考。一般是将 argcargv 还有这个节点的名字传入。

Handler

ros::Handler 类。关于消息,服务在第一篇中已经说过。

Timer

创建定时器,每隔一段时间会自动调用函数。感觉像是 ROS 里面自带的多线程。

比如写传感器节点时,希望传感器每隔一段时间发布传感器信息,就可以用定时器。

补充:ROS Time

ROS 中有两种时间,ROS TimeWall TimeROS Time 指 ROS 网格中的时间。在非仿真环境下和 Wall Time 相同,就是当前时间。但是在仿真环境,或者数据包回放时,这个时间可以被修改(加速,减速),但是 Wall Time 不行。

两种时间类型。Time 指时刻,Duration 指时间间隔。

ros::Time cur = ros::Time::now(); // get current time

注意时间!!在 Rosbag 中有两个时间戳,外层的是记录这个数据包时候的时间,数据里面 header 才是真正数据发布的时间,不要弄混了。

定时器创建

传入的函数有三种类型,见此处。创建的完整示例见此处

CallbackQueue

回调队列,用于管理和响应 ROS 回调函数。

补充 ros spinning

ROS 将线程模型隐藏,通过 spin 机制调用。单线程 spin:

// one way
ros::init(argc, argv, "my_node");
ros::NodeHandle nh;
ros::Subscriber
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值