首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何订阅"/scan“主题,修改消息并将其再次发布到"/scan”主题?

如何订阅"/scan“主题,修改消息并将其再次发布到"/scan”主题?
EN

Stack Overflow用户
提问于 2021-09-06 19:42:22
回答 1查看 601关注 0票数 0

我想通过在传感器上应用一些算法来改进turtlebot3 LDS-01传感器.因此,我的策略是通过订阅“Laserscan.ranges”主题,将该算法应用于Laserscan.ranges,并将其再次发布到“/scan”主题,从而改进和修改Laserscan.ranges的值(即传感器到障碍物之间的距离)。我怎么能做到呢?我脑子里有个想法:

  1. 创建新主题,将传感器值发布到新主题,订阅新主题并应用算法,最后将其发布到“/scan”主题。但是第一个想法,我找不到发布到“/scan”主题的cpp或python文件。我在哪能找到那份文件?这样我就可以更改代码,将Laserscan.ranges发布到新主题.

  1. 通过将该算法应用于float32范围来修改传感器_msgs/LaserScan。但第二个想法,我不知道它的信息是否可以修改?如果可以,如何修改传感器_msgs/LaserScan应用算法?

最后,如果有任何建议,教程或在线课程,我可以采取与这个问题,我将非常高兴听到。

这张图片是想法1的摘要。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-07 12:59:34

在修改消息之后,您不应该在传感器主题上发布。如果这样做,其他订阅者只会看到修改消息和未修改消息的混合。相反,将其发布到一个单独的主题上,如下所示:

代码语言:javascript
复制
scan_msg_pub = rospy.Publisher('/scan/edited', LaserScan, queue_size=10)
def scan_msg_cb(msg):
    #Edit message here
    msg.header.frame_id = "new_frame_id" #You can change msg fields like this
    scan_msg_pub.publish(msg)

def main():
    rospy.Subscriber('/scan', LaserScan, scan_msg_cb)

    rospy.spin()

if __name__ == '__main__':
    rospy.init_node('scan_edit')
    main()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69079603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档