kin
1
プロジェクトファイルで以下のようなWorldLogFileItemを設定している場合、
-
id: 500
name: "WorldLogFile"
plugin: Body
class: WorldLogFileItem
data:
filename: LOGFILE.log
timeStampSuffix: true
recordingFrameRate: 100
プロジェクトファイルを読み込むと、
ログファイルの保存先は「<プロジェクトファイルのあるディレクトリ>/LOGFILE.log」になりますが、
これを「<Choreonoid を実行したディレクトリ>/LOGFILE.log」にさせることは可能でしょうか?
# プロジェクトファイル内で使われる ${SHARE} の変数定義のように、
# カレントディレクトリを指すようなものがあるとよさそうにも考えたのですが、、、
よろしくお願いします。
nakaoka
2
現状ではそのような(カレントディレクトリに対応する)変数のようなものはありません。
差し支えなければ、なぜそれが必要か理由を教えていただけるとうれしいです。そのような変数を用意するとしても、納得できる理由が無いとやりづらいところがありますので・・・。ご検討のほどよろしくお願いいたします。
kin
3
ご確認いただきありがとうございます。
そのような変数はない旨、承知しました。別の方法を検討します。
(一応、以下本件の経緯です)
複数のプロジェクトファイルを切り替えてChoreonoidを実行するのに、ランチャのようなものを使用しています。
プロジェクトファイルやモデルファイルなどはgitなどで管理して、そっくり差し替えたり更新することがあり、同じ領域にログファイルが置かれていると誤って消してしまうことがあります。
それを避けるため、ログファイルを別の場所(ランチャ内で切り替えたChoreonoidを実行する領域=カレントディレクトリ)に保存できないものかと考えました。
ただ、ログファイルだけあっても意味がなく、ログファイルでシミュレーションを再現するにはログ取得時点のプロジェクトファイルやモデルファイルも必要なため、「ログの保存」という意味では、ログファイルのあるディレクトリ(…/project/)の数階層上(…/project/…/…/)などから一式を保存しておく必要がありますね。
そういう点では、今のプロジェクトファイルと同じパスにログファイルが保存されているのは適当なように思いました。
nakaoka
4
そのような用途でしたら、ユーザーが独自に定義する「パス変数」が使えるかもしれません。
詳細は以下で説明しています。
https://choreonoid.org/ja/manuals/latest/basics/config.html#basics-project-pathset
ログファイルはプロジェクトファイルとは別のディレクトリで管理するとして、そのディレクトリをパス変数として設定しておけば、その後ログファイルの場所をパス変数を起点とする相対的な場所で保存できます。
1 Like
kin
5
はい。こちらのドキュメントも参考にさせていただいていました。
ランチャ内で切り替えるChoreonoidを実行する領域(=カレントディレクトリ)はプロジェクトファイルごとに分けているため、プロジェクトファイルの数だけパス変数も設定する必要がありそうですね。