我有一个python脚本,运行如下:
rosrun camera_calibrator cameracalibrator.py --size 12x8 --square 0.05 image:=/topic_name
我有启动文件如下:
<launch>
<node name="image_pub_sub_node" pkg="image_pub" type="image_pub_sub" output="screen"/>
<node name="cameracalibrator_node" pkg="camera_calibration" type="cameracalibrator.py" output="screen"/>
</launch>
Bash脚本如下:
#!/bin/sh
foldername=camera_calibration_$(date +"%m-%d-%Y")
roslaunch image_pub cam_calibrator.launch $foldername
我想将bash中的这个文件夹名传递给roslaunch文件(cam_calibrator.launch),然后获取文件夹名作为参数,并将其发送到我的python脚本"cameracalibrator.py“,就像--size,--square和image:=/ image_pub_sub _ c++参数一样。
另外,如何将这些大小和平方参数发送到启动文件中的python脚本?
现在有人能让我吗?
发布于 2022-11-02 16:18:04
roslaunch
命令行接受参数,所以可以这样做。
在启动文件中,必须声明如下参数:
<launch>
<arg name="foldername" default="whatever_you_want" />
</launch>
然后,要检查正在使用的节点所支持的参数列表。通常,我看到您正在使用节点cameracalibrator.py
。如果这个节点写得很好,它会向ROS定义它使用的参数,比如image
(我假设它是一个ROS主题名)。一旦知道了节点需要的参数,就可以将其提供给启动文件中的ROS,如下所示:
(在本例中,我使用的是image
参数,因为它是您问题中唯一的一个,我确信它是一个正常的ROS参数)
<launch>
<!-- list of arguments that can be given as inputs of the launch file -->
<arg name="foldername" default="whatever_you_want" />
<arg name="image_name" default="whatever_you_want" />
<node name="cameracalibrator_node" pkg="camera_calibration" type="cameracalibrator.py" output="screen">
<!-- list of all parameters to pass to the node -->
<param name="image" type="string" value="$(arg image_name)" />
</node>
</launch>
一旦您有了这样一个ros启动文件,就可以使用以下命令调用它:
#!/usr/bin/env bash
roslaunch image_pub cam_calibrator.launch foldername :=foldername image_name:=$YOUR_IMAGE_NAME
PS:建议使用#!/usr/bin/env bash
(或sh)而不是#!/bin/sh
https://stackoverflow.com/questions/74292282
复制相似问题