后期写的文件写多了在一个个的手动启动就比较麻烦,ros有一个launch的启动方案可以一下把哪些文件全部启动了,通过我们编写一个后缀名为launch的文件写法类似于html,记起来也十分简单,使用双标签 <launch> </launch> 包裹着要启动的文件,编写node单标签,标签属性有name(结点名字)、pkg(包名)、type(结点类型)output(打印至命令行)等,编写完之后使用source 重新编译一下然后使用roslaunch 保命 launch文件去启动多个ros文件如
<launch>
<!-- name是节点名字 pkg是ros包名(自己创建的) type 是启动的文件 output用于输出/打印 至命令行-->
<node name="pub_message" pkg="one_project" type="pub_message.py" />
<node name="sub_message" pkg="one_project" type="sub_message.py" output="screen"/>
</launch>
目录结构
消息发送和接受消息的代码
发消息
#! /usr/bin/env python
# coding=utf8
import rospy
from std_msgs.msg import String
if __name__ == "__main__":
rospy.init_node("pub_message")
pub = rospy.Publisher("ros_message",String,queue_size=10)
message = String()
rate = rospy.Rate(1)
count = 0
while not rospy.is_shutdown():
message.data = "pub message to sub " +str(count)
pub.publish(message)
rospy.loginfo("pub message it is : %s",message.data)
count+=1
rate.sleep()
接受消息
#! /usr/bin/env python
# coding=utf8
import rospy
from std_msgs.msg import String
def Do_message(msg):
# print(msg.data,type(msg.data))
rospy.loginfo("sub message it is :%s",msg.data)
if __name__ == "__main__":
rospy.init_node("sub_message")
sub = rospy.Subscriber("ros_message",String,Do_message,queue_size=10)
rospy.spin()
roslaunch 启动 launch文件
命令 roslaunch one_project start_money_node.launch
效果