办公问答网

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 185|回复: 0

ROS 学习之路-海龟如何获取到程序给他的运动参数的?

[复制链接]

2

主题

5

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2022-9-22 10:45:46 | 显示全部楼层 |阅读模式
只要开始了,就不算晚!
最近开始通过古月居的直播课来学习ROS,目前在实操《发布者publisher的编程实现》课中发现其通过程序发布了一个话题名称为/turtle1/cmd_ve,消息类型为geometry_msgs::Twist。
        ros::Publisher turtle_vel_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 10);
然后在循环体内对该话题赋值,并向外发布,接着在运行turtlesim_node的时候,那个小海龟就按照这一程序发布的话题的参数进行运行。
那么这里我就有个疑问,按照我的理解,你可以创建话题,但是海龟怎么就订阅了?你这个程序只是你创建并发布了话题,但是海龟怎么就自动订阅了这个话题了?
通过网上搜索,我的理解是这样的:


turtlesim这个节点本身设计中,他就是会去想办法订阅一个名为cmd_vel的话题的,无论是谁在对外放这个话题,只要名称是cmd_vel,并且符合这个命令的格式,那么turtlesim就会去接收,并且接收之后就会按照这个参数来动作。
通过~$ rostopic type /turtle1/cmd_vel | rosmsg show
可以查看这个话题的数据格式:
geometry_msgs/Vector3 linear
float64 x
float64 y
float64 z
geometry_msgs/Vector3 angular
float64 x
float64 y
float64 z
而古月的这个程序就是发布这样一个话题消息。也就是说发布话题的人可以是多个,接收话题的人也可以是多个,只要大家发布接收的话题名称保持一致就行了。
通过查询得知,也可以通过命令行方式向海龟发布消息。
盗用一下网上其他人的总结:
要理解ROS topics、ROS nodes、ROS Messages之间的关系。目前个人的理解是:ROS topics是ROS nodes之间进行通信的枢纽,ROS messages是ROS nodes订阅和发布数据的载体。两个ROS nodes欲实现通信,则其中一个节点向ROS topic发布ROS messages,另一节点则通过订阅此topic来接收messages,两者的message类型一定要相同,而message的类型由主题确定,通过rostopic type命令可以查看topic的数据类型。然后就是辅助查看ROS中节点关系和数据的工具:rqt_graph和rqt_plot,两者都是针对ROS类型的,其中rqt_graph工具会自动搜寻系统中正在运行的节点和主题,并动态绘制出关系图,rqt_plot则是绘制发布到topic上的数据的图形,因此两者使用的前提是有ROS的进程在运行。
运行节点:roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
查看节点关系图:rosrun rqt_graph rqt_graph
显示topic1上所发布的数据:rostopic echo topic1
列出当前处于激活状态的topic列表:rostopic list -v
显示topic1的数据类型:rostopic type topic1
显示类型更加详细的信息:rosmsg show type1
直接向主题topic1发布数据:rostopic pub [topic1] [msg_type] [args]
显示主题topic1上数据的发布速率:rostopic hz [topic1]
————————————————
版权声明:本文为CSDN博主「土豆西瓜大芝麻」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:ROS基础内容2--通信方式之Topic以及node、topic和message的关系_jinking01的专栏-CSDN博客
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|办公问答网

GMT+8, 2025-3-16 13:33 , Processed in 0.103324 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc. Templated By 【未来科技 www.veikei.com】设计

快速回复 返回顶部 返回列表