2016-07-03 18 views
3

ROS(ロボットオペレーティングシステム)でパッケージの実行可能ファイル名をすべて検索する方法を尋ねますか?たとえば、gazebo_rosパッケージにspawn_modelが見つかりました。私のシステムでパッケージを調べると、.xml.cmakeというファイルが、実行ファイルなしで表示されます。しかし、私はそれを実行することができます:rosrun gazebo_ros spawn_modelROSパッケージのすべての実行可能ファイルを見つける方法?

ありがとうございました!

答えて

1

"rosrun name_of_package"と入力してTabキーを2回押すと、すべての実行可能ファイルが表示されます。

+0

返信いただきありがとうございます。すべての実行可能ファイルを表示することができます。しかし、 'spawn_model'の正確なパスを取得するには? – zzj

+0

@ZhenjieZhao直接行くことなくパスを知りたい場合は、 'roscd pkg_name'(ソース:[rosbash](http://wiki.ros.org/rosbash)) – alextoind

+0

@ZhenjieZhaoや' rospack find pkg_name'を使うことができますそこ。 – luator

1

rosrunためのbash自動補完スクリプトで見た後、それはコマンドcatkin_findのように見えますが、パッケージの実行ファイルの場所を見つけるために使用され、そして実行可能ファイルはfindコマンドでフィルタリングされています。 rospack-list-executablesというファイルに

保存次のスクリプト:

あなたはあなたの実行ファイルのリストを与えるために、スクリプトを作成したい場合は、以下の手順に従ってください

#!/bin/bash 

if [[ $# -lt 1 ]]; then 
    echo "usage: $(basename $0) <pkg_name>" 
    echo "" 
    echo "  To get a list of all package names use the command" 
    echo "   'rospack list-names'" 
    exit 
fi 

pkgname=${1} 

pkgdir="$(catkin_find --first-only --without-underlays --libexec ${pkgname})" 


if [[ -n "${pkgdir}" ]]; then 
    find -L "${pkgdir}" -executable -type f ! -regex ".*/[.].*" ! -regex ".*${pkgdir}\/build\/.*" -print0 | tr '\000' '\n' | sed -e "s/.*\/\(.*\)/\1/g" | sort 
else 
    echo "Cannot find executables for package '${pkgname}'." >&2 
    exit 1 
fi 

を次にrospack-list-executablesスクリプトを作ります実行可能ファイル(chmod +x rospack-list-executables)を開き、環境変数$PATHにあるディレクトリに置きます。

$ rosrun gazebo_ros 
debug   gazebo  gdbrun  gzclient  gzserver  libcommon.sh perf   spawn_model 

あなたはすべてのための実行可能ファイルを確認することができます。

スクリプトを実行します:あなたはrosrun <pkgname>コマンドを入力してタブを押したときに

$ rospack-list-executables gazebo_ros 
debug 
gazebo 
gdbrun 
gzclient 
gzserver 
libcommon.sh 
perf 
spawn_model 

あなたはあなたが得る同じ結果を得る必要があります以下のbashコードを持つパッケージ:

rospack list-names | while read pkgname; do 
    echo "Executables for package '${pkgname}':"; 
    rospack-list-executables $pkgname; echo ""; 
done 

次のように入力し、新しく作成されたコマンドのパッケージ自動補完を有効にするには:

complete -F _roscomplete rospack-list-executables 

あなたはcompleteコマンドを使用すると、ログインするたびに入力する必要がしたくない場合は、あなたがあなたの.bashrcファイルに追加することができます。

echo "complete -F _roscomplete rospack-list-executables" >> ~/.bashrc 

今、あなたはコマンドrospack-list-executablesを入力してタブキーを押したときに、あなたの中から選択するすべての利用可能なパッケージの一覧を取得する必要があります。

関連する問題