ROSの挙動に影響を与えるたくさんの環境変数があります。もちろん、システムでよくつかわれ頻繁にドキュメントで述べているので、もっとも理解するのが大切なのは、ROS_MASTER_URI, ROS_ROOT, ROS_PACKAGE_PATHです。

環境変数はROSでさまざまな役割を担っています。

  • パッケージを見つける:まず、ROS_ROOT と ROS_PACKAGE_PATHはROSにファイルシステムの中に[[Packages|packages]] と [[Stacks|stacks]]に位置が特定できるようにします。またPYTHONPATH`は、PythonインタプリタがROSのライブラリのディレクトリを同定するためにセットすべきです。

  • ノードランタイムに影響する: また、ノードの実行のされ空に影響を与えるいくらかのROSの環境変数があります。ROS_MASTER_URIMasterがどこにいるかを示す重要な環境変数です。ROS_IPROS_HOSTNAMEはノードのネットワークアドレスに影響し、ROS_NAMESPACEでnamespaceを変更する事ができます。ROS_LOG_DIRは、どこにlogファイルが書かれるディレクトリを設定します。これらの多くは、同様に環境変数より優先度をもつRemapping Arguments によって上書きされます。

  • ビルドシステムを変更する: ROS_BINDEPS_PATH, ROS_BOOST_ROOT, ROS_PARALLEL_JOBSROS_LANG_DISABLEライブラリがどこに見つかるかとどれがビルドされるかに影響します。

これらの環境変数とそれ以外は、より詳細に以下に書いてあります。

Required ROS Environment Variables

ほとんどのシステムではROS_PACKAGE_PATHもまたセットされるが、ROS_ROOT, ROS_MASTER_URI, and PYTHONPATHがROSに必ず要求される環境変数です。デフォルトでは、それらは自動的に/opt/ros/fuerte/setup.bash.を実行することでセットされます。

ROS_ROOT

ROS_ROOTは、ROScoreのパッケージがインストールされているところをセットします。

export ROS_ROOT=/home/user/ros/ros
export PATH=$ROS_ROOT/bin:$PATH

ROS_MASTER_URI

ROS_MASTER_URIはノードに対してどこにマスターがいるかを知らせるのに必要とされる設定です。 それは、マスターのXML-RPC URIにセットされるべきです。

離れて立ち上げっているノードに予期しない行動を導きうるので、localhostを使うときは、よく考慮すべきです。

export ROS_MASTER_URI=http://mia:11311/

PYTHONPATH

ROSはPYTHONPATHたとえPythonでプログラミングしてなくても!更新されるべきで、たくさんのROSのインフラストラクチャーのツールはPythonにたよっており、ブートストラップのためにroslibパッケージにアクセスする必要があります。

export PYTHONPATH=$PYTHONPATH:$ROS_ROOT/core/roslib/src

追加されたパスの環境変数

ROS_PACKAGE_PATH

ROS_PACKAGE_PATHはオプションですが、あなたの環境にソースからROSのパッケージを加えるとてもよく使う環境変数です。ROS_PACKAGE_PATHはOSのデフォルトの区切り文字(つまり、Unixライクなシステムでは':')を用いて、ひとつかそれ以上のパスから構成されます。これらの並べられたパスは、ROSのシステムにROSのパッケージをどこから見つければいいかを伝えます。もし、同じ名前のパッケージが複数あったならば、ROSはROS_PACKAGE_PATHの中に初めに出てくるものを採用します。

export ROS_PACKAGE_PATH=/home/user/ros/ros-pkg:/another/path

それぞれのROS_PACKAGE_PATHのエントリは再帰的に検索することに注意してください。(そのパスの下のROSパッケージは見つかります。)

システムデータ環境変数

ROS_HOME

デフォルトでは、ROSは~/.rosにデータを書き込みます。この場所はROS_HOMEを設定することで変更する事ができます。あなたは、いくらかの書く師父ぉる他の位置を買えることを変えることができます。(例えば、ROS_TEST_RESULTS_DIR, ROS_LOG_DIR).

ROS_LOG_DIR

デフォルトでは、ROSは内部のログをROS_HOME/logに書き込みます。もし、この場所はROSにとって書き込めないのであれば、もしくは、他の場所に書いてもらいたいのなら、書き込みたい場所のパスをROS_LOG_DIRにセットしてください。

ROS_TEST_RESULTS_DIR

テストの結果が書き込まれるディレクトリです。

追加のバッシュ環境変数

ROS_LOCATIONS

ROS_LOCATIONSは便利な場所のキーネームを提供するオプション的な環境変数です。それは:で区切られたキーとロケーションの組み合わせのリストです。どのキーとロケーションのペアも=でつなげられてます。

例えば:

export ROS_LOCATIONS="rospkg=/path/to/rospkg:stairpkg=/path/to/stairpkg"

これらの鍵は、roscdなどにおいて使うことができます。

ROS_WORKSPACE

ROS_WORKSPACE は、rosinstallやroswsなどによって導入され、ワークスペースを作る際にこれらのツールによって生成されるsetup.shで設定される。ワークスペースのフォルダのパスを示し、roswsのコマンドによって、デフォルトのターゲットとして使われる。

fuerteのroscdのコマンドもまた、引数を与えない場合にこの変数を使うようになった。 以前までは、ROS_ROOTをさしていた.

ノードの環境変数

ROS_IP/ROS_HOSTNAME

ROS_IPROS_HOSTNAMEは、ROSNodeかツールのネットワークアドレを設定したオプションの環境変数である。オプションは互いに排他的で、もし両方とも設定されているならROS_HOSTNAMEが優先される。IPアドレスがわかっているならROS_IPを、 ホスト名がわかっているならROS_HOSTNAMEを使ってください。マスターかほかのコンポーネントに対して、ROSコンポーネントがURIを報告するとき、この値を使うでしょう。この設定は、複数のアドレスをコンピュータに対して持っていてかつROSを特定のものにしむけたいときのみに必要です。

'localhost'を除いて、ROSのコンポーネントは、利用できるすべてのネットワークインターフェースにバインドしますが、実際の境界アドレス?(bound address)には影響しません。

もし値が、'localhost'に設定されているときは、ROSのコンポーネントはloopbackインターフェースにのみバインドされます。これは、離れたコンポーネントがあなたのローカルのコンポーネントに働きかけるのを防ぎます。

ROS_NAMESPACE

ROS_NAMESPACEは、ノードをnamespaceにプッシュダウンします。すべてのノードの名前は、リマップされた名前を含めてこの値に関連して解決されます。

ROSCONSOLE_CONFIG_FILE

これは、roscpp特有の環境変数です。rosconsoleで ROSCONSOLE_CONFIG_FILEで定義され log4cxxで使われる設定ファイルを定義できます。この設定ファイルに定義されるすべてはデフォルトの設定ファイルを上書きします。

詳しくはhttp://ros.org/doc/api/rosconsole/html/index.html をご覧ください。

Console Output Formatting

New in CTurtle

rosconsoleでROSCONSOLE_FORMATを通して、コンソール出力の中にどのように出力したいかを決めることができます。デフォルトは次のようになっています。

export ROSCONSOLE_FORMAT='[${severity}] [${time}]: ${message}'

詳しくは http://ros.org/doc/api/rosconsole/html/index.html をご覧ください。

ROS_PYTHON_LOG_CONFIG_FILE

New in Diamondback これは、rospy, rosmaster, roslaunch, と rostestに特有のものです.これらのコマンドのために, $ROS_ROOT/config/python_logging.confに収められているデフォルトの設定ファイルの変わりに特有の使いたいPythonのログファイルを定義できます。

より詳しくは、Pythonのloggingドキュメントを参照してください:

http://docs.python.org/library/logging.html

ビルドシステム環境変数

これらの環境変数をよりよく理解するには、ROS Build Systemのなかのセクションをご覧ください。

ROS_BINDEPS_PATH

注意:CTurtleで除外されました。その代わりに基本的なCPATH, LIBRARY_PATHLD_LIBRARY_PATHを設定する必要があります。

ROS_BINDEPS_PATH is an optional environment variable for the case that you don't install 3rdparty dependencies (eg. log4cxx) into /opt/ros. Set this to the path where they are installed.

ROS_BOOST_ROOT

ROS_BOOST_ROOTは、ブースとのためにどこを探せばよいかを上書きするオプションの環境変数です。 もし、ROS_BOOST_ROOTがセットされていなければデフォルトではROS_BINDEPS_PATHを用います。

ROS_PARALLEL_JOBS

もし、この値がセットされたなら、パッケージのビルドの際にmakeに引き渡されます。これは、マルチプロセッサーマシンの利用を可能にします。たとえば、もし8コアを持っていてできるかぎりの並列処理を行いたい場合は、システム負荷が8を超えない限り、

export ROS_PARALLEL_JOBS=-j -l8

反対に、システム負荷かかわらず、-jフラグを引数として渡すと8個のjobの並列処理を使えます。

export ROS_PARALLEL_JOBS=-j8

我々は強く-lを使用して、並列r処理の際のシステムロードにかかわる制限をすることをお勧めします。過度の大きなビルドの並列処理はシステムのメモリを無駄に消費しえます。

どのようなシステム負荷が許されるかはいくつのコアをあなたがもっているかによります。 http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages

8が8つのコアを持つ機械にはふさわしい値です。

ROS_LANG_DISABLE

コロンで区切られた使われるべきでないパッケージのクライアントライブラリの名前の一覧。 リストのパッケージのためのメッセージ生成は起こらないでしょう。

たとえば:

export ROS_LANG_DISABLE=roslisp:rosjava

言葉を無効にする前に、使っているどのコードもその言語のバインドを要求してないことを確かめるように注意してください。

ROS_OS_OVERRIDE

New in Diamondback 書き方: "OS_NAME:OS_VERSION_STRING" これはUbuntu Lucidを見つけるようにさせる:

export ROS_OS_OVERRIDE=ubuntu:10.04

もし定義されるなら、これはOSの自動検索を上書きします。これは、ほかのプラットフォームでrosdepの依存関係をデバッグしているときや、プラットフォームが実際にとても似ていて、強制される必要があるときや、もちろん自動検索が失敗しているときなどで使えます。

Wiki: ja/ROS/EnvironmentVariables (last edited 2015-10-09 03:25:53 by haraduka)