![真人棋牌游戏](/templets/mobantude/wenzhang/wz5.gif)
![博天堂](/templets/mobantude/wenzhang/wz6.gif)
棋牌游戏平台搭建只要开始了,就不算晚!
最近开始通过古月居的直播课来学习ROS,目前在实操《发布者publisher的编程实现》课中发现其通过程序发布了一个话题名称为/turtle1/cmd_ve,消息类型为geometry_msgs::Twist。
ros::Publisher turtle_vel_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 10);
然后在循环体内对该话题赋值,并向外发布,接着在运行turtlesim_node的时候,那个小海龟就按照这一程序发布的话题的参数进行运行。
那么这里我就有个疑问,按照我的理解,你可以创建话题,但是海龟怎么就订阅了?你这个程序只是你创建并发布了话题,但是海龟怎么就自动订阅了这个话题了?
通过网上搜索,我的理解是这样的:
![ROS学习之路海龟如何获取到程序给他的运动参数](/uploads/allimg/240723/1I4104I0-0.jpg)
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博客环球博讯?
原文标题:ROS学习之路海龟如何获取到程序给他的运动参数
![xpj](/templets/mobantude/wenzhang/wz7.gif) |