ROS系列——launch文件简单介绍

该文介绍了ROS中的launch文件基本使用,包括arg参数定义、node类型与命名、group管理、topic重映射以及param和rosparam进行参数配置的方法。通过实例展示了如何启动nodes并调整话题和参数。

说明

本文章主要介绍了launch文件的简单使用,部分内容来源于网络,仅供学习使用。

一个实例launch文件

<launch>
<arg name="model" default="model_name" doc="this is a model name"/>
<arg name="param_path" default="$(find package_name)/data/" doc="this is a param path" />
<group ns="group_name">
	<node pkg="package_name1" name="node_name1" type="node_type1" output="screen" >
		<param name="model" value="$(arg model)"/>
		<param name="param_path" value="$(arg param_path)/xx.xml" />
		<remap from="old_topic" to="new_topic"/>
	</node> 
</group>

<node pkg="package_name2" name="node_name2" type="node_type2" output="screen" >
	<param name="string" type="str" value="ABC" />
	<param name="int" type="int" value="6" />
	<rosparam param="min_in">[1, 1, 1]</rosparam>
	<rosparam param="paras">
		"a": 1
		"b": 2
	</rosparam>
</node>

<node pkg="rviz" name="rviz" type="rviz"  args="-d $(find package_name)/rviz/package_name.rviz">
</node>
</launch>

简单讲解

type和name

<node pkg="package_name2" name="node_name2" type="node_type2" output="screen" >

注: type为可执行文件的名字, name就是node的名字。

group组名

<group ns="group_name">
......
</group>

注: 如果程序代码中设置的输出topic为/rslidar_points,则即使加了group组名,最终的topic仍为/rslidar_points。 如果为rslidar_points,则带组名。

topic重映射

<remap from="old_topic" to="new_topic"/>

注:将名称为old_topic的话题转换为名称为new_topic的话题。

设置参数

使用param

<param name="string_name" type="str" value="ABC" />
<param name="int_name" type="int" value="6" />
<param name="param_path" value="$(arg param_path)/xx.xml" />

注:支持 string、 int 、double和file(xml, csv等)

在代码中使用如下:
ros::NodeHandle priv_nh(“~”);
std::string string_name;
priv_nh.paramstd::string(“string_name”, string_name, “string_defalut”);
priv_nh.param(“int_name”, int, “0”);

使用rosparam

<rosparam param="range">[1, 1, 1]</rosparam>
<rosparam param="paras">
 "a": 1
 "b": 2
</rosparam>

注:使用rosparam向node传输参数

在代码中使用如下:
std::vector v_range(3, 0);
priv_nh.getParam(“range”, v_range);
std::map<std::string, double> m_paras;
priv_nh.getParam(“paras”, m_paras);

调用launch

<include file="$(find rs_fusion)/../../launch/lidar_driver_four.launch" />

注: 可以使用…表示上一层。

### ROS Turtle Sim Launch 文件示例 在ROS环境中,`turtle_sim`是一个常用于教学目的的小海龟模拟器。通过编写launch文件可以简化启动过程并配置多个组件。 #### 创建Launch文件 为了创建一个针对`turtle_sim`的launch文件,在Python中定义了一个名为`generate_launch_description()`的函数[^3]: ```python from launch import LaunchDescription from launch_ros.actions import Node import os from ament_index_python.packages import get_package_share_directory def generate_launch_description(): pkg_dir = get_package_share_directory('turtlesim') # 启动Turtlesim节点 turtlesim_node = Node( package='turtlesim', executable='turtlesim_node', name='sim' ) # 定义画图动作的节点 draw_square_node = Node( package='turtlesim', executable='draw_square', name='draw_square' ) return LaunchDescription([ turtlesim_node, draw_square_node ]) ``` 这段代码展示了如何利用`Node`类实例化两个节点——一个是`turtlesim_node`负责显示窗口,另一个是`draw_square`用来让小乌龟按照正方形轨迹移动。这两个对象被包裹在一个`LaunchDescription`列表里返回出去。 对于更复杂的场景,比如加载特定配置文件时,则可以通过组合`PathJoinSubstitution`和`FindPackageShare`来构建路径[^1]: ```python config_file_path = PathJoinSubstitution([ FindPackageShare('my_custom_turtlesim'), 'config', 'custom_params.yaml' ]) ``` 此段代码片段说明了怎样动态获取自定义设置文件的位置以便于后续作为参数传入到某个节点当中去。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值