我有一個運行如下的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 腳本?
誰能讓我現在請?
uj5u.com熱心網友回復:
roslaunch命令列接受引數,所以是的,可以這樣做。
在您的啟動檔案中,您必須像這樣宣告引數:
<launch>
<arg name="foldername" default="whatever_you_want" />
</launch>
然后,您要檢查您正在使用的節點支持的引數串列。通常,我看到您正在使用 node 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://www.uj5u.com/ruanti/525764.html
標籤:Python重击解析罗斯
