ros Launch文化 代码
时间: 2025-03-25 08:21:03 浏览: 28
ROS (Robot Operating System) 中的 `launch` 文件是一种用于启动多个节点、配置参数以及设置 ROS 环境的强大工具。它允许用户通过编写 `.launch` 配置文件,一次性运行复杂的机器人系统。
### **什么是 ROS Launch?**
ROS 的 launch 文件提供了一种机制,可以同时启动多个节点,并对它们进行必要的初始化和参数化操作。这使得开发人员能够轻松地管理复杂的应用场景,例如需要启动传感器驱动程序、数据处理模块以及其他依赖组件的情况。
#### 基本语法结构
```xml
<launch>
<!-- 启动一个节点 -->
<node pkg="package_name" type="executable_type" name="node_name" output="screen">
<param name="parameter_name" value="value"/>
</node>
<!-- 包含另一个 launch 文件 -->
<include file="$(find package_name)/path/to/file.launch"/>
<!-- 设置全局参数 -->
<param name="global_param" value="value"/>
</launch>
```
---
### 示例代码
假设我们有一个简单的发布者-订阅者模型,其中包含两个节点:一个是发布消息的节点 (`talker`),另一个是接收消息并打印到终端的节点 (`listener`)。
**目录结构:**
```
my_package/
├── launch/
│ └── talk_listener.launch
└── nodes/
├── talker.py
└── listener.py
```
#### 1. 创建 `talker.py` 和 `listener.py`
这两个 Python 脚本分别是发送方和接收方的实现。
**talker.py**
```python
#!/usr/bin/env python
import rospy
from std_msgs.msg import String
def talker():
pub = rospy.Publisher('chatter', String, queue_size=10)
rospy.init_node('talker', anonymous=True)
rate = rospy.Rate(1) # 每秒一次
while not rospy.is_shutdown():
hello_str = "Hello World %s" % rospy.get_time()
rospy.loginfo(hello_str)
pub.publish(String(data=hello_str))
rate.sleep()
if __name__ == '__main__':
try:
talker()
except rospy.ROSInterruptException:
pass
```
**listener.py**
```python
#!/usr/bin/env python
import rospy
from std_msgs.msg import String
def callback(msg):
rospy.loginfo("I heard: [%s]" % msg.data)
def listener():
rospy.init_node('listener', anonymous=True)
rospy.Subscriber('chatter', String, callback)
rospy.spin()
if __name__ == '__main__':
listener()
```
确保这两段脚本有执行权限:
```bash
chmod +x nodes/*.py
```
#### 2. 编写 `talk_listener.launch`
创建一个名为 `talk_listener.launch` 的 XML 文件:
```xml
<launch>
<!-- 加载参数 -->
<param name="example_parameter" value="This is an example parameter!" />
<!-- 启动 talker 节点 -->
<node pkg="my_package" type="talker.py" name="talker_node" output="screen"/>
<!-- 启动 listener 节点 -->
<node pkg="my_package" type="listener.py" name="listener_node" output="screen"/>
</launch>
```
---
### 使用步骤
1. 构建工作空间:
```bash
catkin_make
source devel/setup.bash
```
2. 运行 launch 文件:
```bash
roslaunch my_package talk_listener.launch
```
此时会自动启动 `talker.py` 和 `listener.py` 节点,并可以看到控制台输出交互信息。
---
### 总结
通过使用 `roslaunch` 工具,您可以高效地管理和组织复杂的 ROS 应用程序,减少手动输入命令的工作量,提升工作效率!
阅读全文
相关推荐









