只要开始了,就不算晚!
最近开始通过古月居的直播课来学习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博客
对于使诈麻将高手都是非常擅长的博彩游戏,比如说玩家想要全风胡,那么一个劲的吃全风胡需要的牌点就是很容易被发现的,那么河池麻将游戏在吃牌的时候就可以故意的吃一个其它胡牌牌型的牌点博彩游戏,这样对手玩家就会感觉到有些迷惑,进而进行试探,如果说恰到好处的话自己就可以直接的吃牌胡牌,如果说时机未到,那么自己就可以表现出来不想吃的情绪,如此让对手摸不清楚自己到底是哪一种胡牌牌型。