yukimeat1999
@yukimeat1999

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

ROS2ではどの階層でビルドしたり```ros2 run```したらいいですか?

解決したいこと

どの階層でビルドしたりros2 runしたらいいですか?

色々なファイル階層でビルドしてしまっていて、間違ったソースをビルドしているのではないか?
間違ったビルドファイルを実行しているのではないかと思います。

発生している問題・エラー

自分でROS2のプログラムをC++で書いています。
その時、次のようにパッケージを指定してビルドしています。

$ colcon build --symlink-install --packages-select <package name>

この時、何度か間違えて別の階層でビルドをしました。そこで、いろいろな階層にbuild, install, log, のディレクトリがあります。
ビルドしてしまった階層は以下の通り。

~/
~/ros2_ws
~/ros2_ws/src
~/ros2_ws/src/oss

~/ros2_ws/src/ossの直下にROS2のパッケージをgitしていて、自作のものもは言っています。

人にビルドしても動かないことを相談すると~/ros2_wsでビルドしてないからだといわれました。なので、この階層でビルドとros2 runしています。

しかし、既に作成してしまったbuild, install, log, のディレクトリは削除した方がいいと思います。

そこで、これらを安全に削除する方法と、どの階層でビルドしたりros2 runするのがいいのか教えてください。

ROS2なので、ROSの様にデーモンやマスタがないので大丈夫かなと思ってましたが、やっぱりros2 runするときに別の階層のノードと繋ぐのは難しいのでしょうか?
 
 
 
ちなみに、ここまで階層が複雑になっているのは、過去に参考にした講習会資料(大学でもらった)がこの階層で作業してたからです。変えた方がいいかなとは思ってます。
 
 
 
質問内容に関して困っており、早期解決を図るため、Qiitaとteratailで質問してます。
Qiita: https://qiita.com/yukimeat1999/questions/59183b3a24aff65a5022
teratail: https://teratail.com/questions/1pb765mbf6k3dl

0

4Answer

raspberry piでかじった位ですが、4軸のドローンは明後日の方向に飛んでいきました。

さて、一般的にプロジェクトのカレントでコンパイル、実行するのがセオリーです。

開発フレームワークはプロジェクトを支援するものです。プロジェクトの階層を意識しましょう。明後日の方向に飛んでいった悔し気持ちで発言してます。すみません。

1Like

 ビルド時に生成されたどこのinstall/setup.bashを source で通したかによってエラーの有無が生じるでしょう。
 他の回答者が回答している通り、通常は~/ros_wsのようなワークスペース直下でcolcon buildするのが一般的です。それ以外でビルドしてしまった場合、ワークスペース以外の installbuildlogディレクトリを削除し、もう一度ワークスペース上でビルドしてからsource ~/ros_ws/install/setup.bashを行えば問題は解決するはずです。

0Like

一般的にcolcon buildはワークスペース以下 ~/ros2_ws
で実行するのと、ros2 runする場所はどこでもいいです。
ディレクトリの削除はいつもrm -rf build/ install/ log/でやってしまってます..

0Like

srcだけ消さなければ,build, install, logは好きに削除してしまえば良いと思います.

0Like

Your answer might help someone💌