[英]How to read specific parameter from YAML in ROS2 .py Launch file?
我有 ROS2 package,它有 YAML 文件和启动节点的 .py 启动文件。 我正在阅读 Launch 文件中 YAML 文件中的所有参数。 我将读取的值分配给param
变量。 我想从 YAML 文件中的这个变量中获取extrinsic
参数,并将它们作为static_transform_publisher
的参数分配给arguments
参数。 我该怎么做?
这里是 YAML 文件:
/**:
ros__parameters:
num_for_pub: 5
intrinsic: [0.1 , 0.2 , 0.3 , 0.4 , 0.5, 0.6, 0.7, 0.8, 0.9]
distortion: [1, 2, 3, 4, 5]
extrinsic: [6, 7, 8, 9, 10, 11]
这里 .py 启动文件:
def generate_launch_description():
ld = LaunchDescription()
param = os.path.join(
get_package_share_directory('cloud_projector'),
'config',
'cloud_projector.param.yaml'
)
cloud_projector_node = Node(
package='cloud_projector',
namespace='cloud_projector',
executable='cloud_projector_exec',
name='cloud_projector',
parameters = [param]
)
cam_to_lidar_transformer = Node(
package ='tf2_ros',
executable='static_transform_publisher',
arguments=['0','0','1','0','0','0','lidar_frame','camera_frame']
)
ld.add_action(cam_to_lidar_transformer)
ld.add_action(cloud_projector_node)
return ld
预期结果
static 转换发布者节点中的结果参数应如下所示:
cam_to_lidar_transformer = Node(
package ='tf2_ros',
executable='static_transform_publisher',
arguments=[x_value,y_value,z_value,roll_value,pitch_value,yaw_value,'lidar_frame','camera_frame']
)
由于这是一个常规的 python 脚本,您可以自己加载 YAML 文件,即给定 YAML 文件:
cloud_projector:
ros__parameters:
extrinsic: [6, 7, 8, 9, 10, 11]
您可以使用以下方式加载它:
import yaml
...
def generate_launch_description():
ld = LaunchDescription()
...
with open(param, 'r') as f:
configuration = yaml.safe_load(f)
print(f'Loaded configuration: {configuration}')
print(f'Extrinsics: {configuration["cloud_projector"]["ros__parameters"]["extrinsic"]}')
...
return ld
其中param
是 YAML 的路径,如您的示例所示。 然后,您可以从configuration["foo"]["ros__parameters"]["extrinsic"]}
中提取值并将其传递给static_transform_publisher
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.