5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ROS2Advent Calendar 2022

Day 7

Software Development Environment for ROS2

Last updated at Posted at 2022-12-06

アドカレ7日目です!
久しぶりのQiitaへの記事投稿になるので,お手柔らかに

はじめに

この記事は,私が所属している記号創発システム研究室で用いている開発環境を紹介します.

ROSを用いたシステムの開発のときには,次のような環境を準備することが多いと思います.

  • ホストマシンに直接ROSをインストールする
  • ROSに対応したDockerイメージを利用する

ホストマシンに直接ROSをインストールする場合,自分で全てのパッケージなどを管理するため,個人での開発する分には問題ないでしょう.また,ROSを中心に学ぶだけで良いため,システムの構築・運用の学習コストは引く傾向にあります.ROSに対応したDockerイメージを利用する場合,構築するシステムのモジュールを事前にイメージとして準備すします.そのため,再現性の高い環境を構築することが可能です.

問題点

上記のような環境で,大規模なシステムを開発する場合は以下の問題が出てきます.
ホストマシンに直接ROSをインストールする場合

  • 複数のマシンに再現性の高い環境を構築することが困難
  • マシンごとの相性によるパッケージのインストールが困難

ROSに対応したDockerイメージを利用する場合

  • Docker環境やネットワーク関連の設定が大変なことが多い
  • 全体のサービスを動作させるために,1つ1つコンテナを立ち上げて実行する

実例

例えば,次の動画の中では2つのデモンストレーションを見ることができます.

  • Manipulationは,UR5eとWHILLの台車が連携して,ディストックタスクを解くシステムを見ることができます.
  • Interactionは,TOYOTAのHSRを用いた人との物体把持や人とのインタラクションを解くシステムを見ることができます.

実例を参考に考えてみましょう.
ホストマシンに直接ROSをインストールする場合,UR5eと台車を動かすためのパッケージが多数存在するため,管理がとても困難と予想できます.また,複数人で開発することを考えると,パッケージが依存しているモジュールがマシンによって,入れることが困難な場合が多々存在します.

このような問題を解決できるのが Software Development Environment(以下SDE)です.

Software Development Environment とは

創発システム研究室は,現在は以下の画像の通りのROSベースの開発環境を用いています.

Screenshot 2022-12-04 at 16.56.48.png

ディレクトリ構成

├── BUILD-DOCKER-IMAGE.bash    
├── catkin_ws    
│   ├── CMakeLists.txt  
│   └── src
├── CONTRIBUTING.md
├── docker
│   ├── docker-compose.yml
│   └── fetch-devel
│       ├── Dockerfile
│       └── scripts
│           ├── CompressedImage2Video
│           │   ├── CompressedImage2Video_Stereo.py
│           │   └── README.md
│           ├── fix-git-paths.bash
│           ├── fix-permission-issues.bash
│           ├── initialize-bash-shell.bash
│           ├── initialize-catkin-workspace.bash
│           ├── initialize-docker-container.bash
│           ├── kill-ros-nodes.bash
│           ├── print-interface-ip.py
│           ├── reset-catkin-workspace.bash
│           └── run-roslaunch-repeatedly.bash
├── gitlab-ci
│   └── PUSH-DOCKER-IMAGE.bash
├── INCL-SUDO-ENV.bash
├── INCL-USER-ENV.bash
├── LICENSE
├── README.md
├── RUN-DOCKER-CONTAINER.bash
├── RUN-TERMINATOR-TERMINAL.bash
├── SETUP-DEVEL-MACHINE.bash
└── terminator
    └── config
  • SETUP-DEVEL-MACHINE.bash
    Dockerの入っていない環境から環境を整えることが可能

  • BUILD-DOCKER-IMAGE.bash
    変更したDockerfileをビルド

  • RUN-DOCKER-CONTAINER.bash
    Dockerのコンテナを起動

  • RUN-TERMINATOR-TERMINAL.bash
    Terminator torminalを用いて,複数のDockerコンテナを起動

launch システム

Terminator terminalから,起動したいlaunchファイルを事前に登録が可能

  • rと入力
    ロボットへ接続するための設定を同時に実行

  • lと入力
    シミュレーションへ接続するための設定を同時に実行

  • cと入力
    シェルの起動

Screenshot 2022-12-04 at 16.57.43.png

コマンドライン

  • remote_modeコマンド
    ロボットへ接続するための設定を読み込む

  • local_modeコマンド
    シミュレーションへ接続するための設定を同時に実行

Screenshot 2022-12-04 at 16.58.09.png

ファイルシステム

SDEのトップディレクトリ以下を全てDockerでマウントするため,ホストマシンで変更した内容はDocker側でも変更を確認することができます.

まとめ

ここまで色々書きましたが,

  • 大規模なシステムを構築する際には,Software Development Environmentが使いやすいよ!
  • Software Development EnvironmentをROS2で動作するようにしたよ!
  • 大規模なシステムの開発時には使いやすいので,使ってね!

ということが言いたかったです!

今回のこのシステムはGitHubに公開されているので,ぜひ使ってください!

ついでに宣伝

僕もソースコード作成(3,7章)を手伝った『ROS2とPythonで作って学ぶAIロボット入門』ぜひ買って,勉強してください!

Citations

Summaries of the development history, requirements, vision, and goals of the SDE have been published in the following papers:

  • L. El Hafi, G. A. Garcia Ricardez, F. von Drigalski, Y. Inoue, M. Yamamoto, and T. Yamamoto, "Software Development Environment for Collaborative Research Workflow in Robotic System Integration", in RSJ Advanced Robotics (AR), Special Issue on Software Framework for Robot System Integration, vol. 36, no. 11, pp. 533-547, Jun. 3, 2022. DOI: https://doi.org/10.1080/01691864.2022.2068353

  • L. El Hafi and T. Yamamoto, "Toward the Public Release of a Software Development Environment for Human Support Robots", in Proceedings of 2020 Annual Conference of the Robotics Society of Japan (RSJ 2020), ref. RSJ2020AC3E1-01, pp. 1-2, (Virtual), Oct. 9, 2020.

  • L. El Hafi, S. Matsuzaki, S. Itadera, and T. Yamamoto, "Deployment of a Containerized Software Development Environment for Human Support Robots", in Proceedings of 2019 Annual Conference of the Robotics Society of Japan (RSJ 2019), ref. RSJ2019AC3K1-03, pp. 1-2, Tokyo, Japan, Sep. 3, 2019.

  • L. El Hafi, Y. Hagiwara, and T. Taniguchi, "Abstraction-Rich Workflow for Agile Collaborative Development and Deployment of Robotic Solutions", in Proceedings of 2018 Annual Conference of the Robotics Society of Japan (RSJ 2018), ref. RSJ2018AC3D3-02, pp. 1-3, Kasugai, Japan, Sep. 5, 2018.

Note:
Cite these papers if you are using the SDE to implement your research!
It is crucially important to desseminate the SDE accros the robotics research community.

5
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?