00:00 / 01:41
连播
清屏
智能
倍速
点赞114
00:00 / 05:36
连播
清屏
智能
倍速
点赞4397
C++节点使用自定义消息类型-编译订阅者节点 这是实验14完成的 atr_pkg,打开订阅者节点 ma_node.cpp 。同样,先把新消息类型的头文件引入进来,include qq_msgs 的 Carry.h 。主函数里的订阅话题操作没有指定消息类型,所以不用修改。来到接收消息包的回调函数,将参数里的消息类型修改成 qq_msgs 的 Carry。然后按照消息包的结构,对消息包内容进行逐个显示。先是 grade 段位信息,然后是 star 星星数,star是整型,需要转换成字符串显示。最后是发言内容,也是 data,这个不用变。好,节点代码部分就修改完成了, Ctrl + S 保存。下面开始修改编译规则,打开 CMakeLists 文件,找到 find_package,添加 qq_msgs 。然后来到文件末尾,在订阅者者节点 ma_node 的编译规则里,添加一句 add_dependencies ,为节点的编译添加依赖项,节点名为 ma_node ,依赖项是 qq_msgs_generate_messages_cpp。Ctrl + S 保存。 最后再打开 package.xml ,将 qq_msgs 添加到 build_depend 和 exec_depend 中去。 Ctrl + S 保存。订阅者的修改工作也完成了,还需要重新编译,让修改内容生效。 打开终端,进入catkin 工作空间,执行 caktin_make 编译。没有报错,订阅者节点编译完成。下面我们来运行这两个修改后的节点,看看效果。#ROS #机器人编程 #节点 #机器人教育 #机器人工匠阿杰
00:00 / 01:12
连播
清屏
智能
倍速
点赞13
00:00 / 00:38
连播
清屏
智能
倍速
点赞NaN
00:00 / 02:21
连播
清屏
智能
倍速
点赞330
ROS实现订阅者节点-subscribe()函数 subscribe()函数第二个参数是接收消息的缓存长度。这个缓存长度该怎么理解?上一期咱们说过,话题的发布者是通过roscpp将消息包发送到话题当中的。而话题的订阅者,也通过roscpp从话题中获取消息的。正常情况下,消息从发布者传送到话题,roscpp就会立刻将其获取下来,交给订阅者。但是有的时候会出现这样的情况,订阅者对数据的处理周期比较长,roscpp将新的消息包获取下来后,订阅者还没有处理完老的消息包,没法马上接收这个新消息包。但是发布者的消息包并不会停下,新的消息包还在源源不断的发送。这些消息包就会按照到达的先后顺序排队等候。当这个队伍排满的时候,最早获取到的消息包就会被抛弃,让新获取到的消息包能够进入缓存排队。subscribe()函数的第二个参数就是这个可以排队的坑位个数。给多大的数值就表示缓存里可以容纳多少个消息包排队。这个值某些情况下需要根据订阅者的处理的周期以及发布者的消息发送频率来进行计算,而一般情况,比如我们现在这种情况,只是简单处理一个字符串,处理周期非常短,基本不会出现队伍排满的情况。就设置一个比0大的值就行,这里我们设置为10。#ROS #robot #机器人系统 #机器人编程 #机器人工匠阿杰
00:00 / 00:59
连播
清屏
智能
倍速
点赞3
00:00 / 08:03
连播
清屏
智能
倍速
点赞1148
00:00 / 03:25
连播
清屏
智能
倍速
点赞1318