前言
书本在这一节前还有一个用面向对象编程的方法改写发布和订阅者,那个太无聊了而且没什么好说的,直接略过我们
Launch文件可以一次启动多个节点,ROS2分为XML、YAML、Python三种语言可以用来编写。
XML
新建topic_pkg/launch/pub_sub.launch.xml
<launch>
<node pkg = "topic_pkg" exec = "publisher_node" name = "publisher_node" />
<node pkg = "topic_pkg" exec = "subscriber_node" name = "subscriber_node" />
</launch>
改写CMakeLists.txt新增
install(
DIRECTORY
launch
DESTINATION
share/${PROJECT_NAME}
)
完成之后就可以查看效果了
colcon build
source install/setup.bash
ros2 launch topic_pkg pub_sub.launch.xml
YAML
新建topic_pkg/launch/pub_sub.launch.yaml
launch:
- node:
pkg: "topic_pkg"
exec: "publisher_node"
name: "publisher_node"
- node:
pkg: "topic_pkg"
exec: "subscriber_node"
name: "subscriber_node"
Cmake需要修改的地方和XML一致,所以不需要继续修改,也可以用同样的流程查看效果
Python
from launch_ros.actions import Node
from launch import LaunchDescription
def generate_launch_description():
publisher_cmd = Node(
package='topic_pkg',
executable='publisher_node',
name='publisher_node'
)
subscriber_cmd = Node(
package='topic_pkg',
executable='subscriber_node',
name='subscriber_node'
)
ld = LaunchDescription()
ld.add_action(publisher_cmd)
ld.add_action(subscriber_cmd)
return ld