【问题标题】:How to pass arguments to ros launch file from bash script and how to create ros launch file running python script with those parser arguments如何从 bash 脚本向 ros 启动文件传递参数,以及如何使用这些解析器参数创建运行 python 脚本的 ros 启动文件
【发布时间】:2022-11-03 00:18:04
【问题描述】:

我有一个运行如下的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 :=/topic_name 参数以及 image_pub_sub c++ 脚本。

另外如何将这些大小和平方参数发送到启动文件中的 python 脚本?

谁能让我现在请?

【问题讨论】:

  • 这与 C++ 无关。请不要添加不相关的标签。

标签: python c++ bash parsing ros


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 2016-09-16
    • 2022-11-27
    • 2015-09-24
    • 1970-01-01
    • 1970-01-01
    • 2018-03-03
    相关资源
    最近更新 更多