0
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?

この記事誰得? 私しか得しないニッチな技術で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

ロボットがエレベータに乗れない!Open-RMFでロボットとエレベータの連携をシミュレーションできる環境を構築したのに。。。 ~調査結果と解決策~

Posted at

1. はじめに

 いままで「WSL2環境下で構築したOpen-RMFで複数ロボットとエレベータの連携をシミュレーションできる環境で遊んでみる 〇〇編」とか「Open-RMFで複数ロボットとエレベータの連携をシミュレーションできる環境で、オフィスビルにおける簡単な館内配送シミュレーションをしてみた その〇」など、いくつかのOpen-RMF関連の記事を書いてきました。
 これらの環境はrmf demosで公開されているOffice WorldやClinic Worldの設定をコピーして構築したものです。その時は特段ロボットとエレベータの連携についてのエラーは出ませんでした。しかし、今回新たな環境を構築しシミュレーションを行おうとしたところ、ロボットがエレベータに乗れないという問題が発生しました。
 なぜこのようなことが起こったのか、どう解決したのかを調査・検証したのがこの記事の内容になります。

2. 実行環境

CPU: CORE i7 7th Gen
メモリ: 32GB
GPU: GeForce RTX 2070
OS: Ubuntu22.04(WSL2ではなくPCに直接インストール)
ROS2: Humble

3. 起きたトラブル

今回構築した環境はWSL2の環境下において、Traffic-Editorを使って複数ロボットとエレベータの連携をシミュレーションできる環境を構築してみたで構築した環境とほぼ一緒です。ただ、エレベータの名前を以下の図のように「EV1」としました。(これが良くなかったということが後々わかりました。。)

Screenshot from 2024-07-14 10-49-55.png

そして、シミュレーション環境を起動し、ロボットにエレベータを使って上の階に行くよう指示を出しました。ところが、エレベータに乗ろうとしたところ、ロボットがエレベータのドアの手前で止まり、それ以上動かなくなりました(下図参照)

Screenshot from 2024-07-14 10-48-36.png

ロボットがエレベータの前に来ると、エレベータのドアは開き、rvizにもステータスが"Open"と表示されます(下図参照)。しかし、ロボットはそれ以上進みません。

Screenshot from 2024-07-14 10-52-12.png

4. 似たようなトラブルの調査結果

 似たようなトラブルが報告されていないか調べてみましたところ、以下の記事に行き当たりました。

 この記事でもロボットはエレベータのドアの前で止まってしまうという事象が報告されていました。それに加えrviz上でエレベータが表示されない事象についての報告もありました。

 これらの解決策として、「シミュレーションを起動する際に、initial_map:=<マップ名>という引数を追加すること」と「エレベータの名前をLift〇とすること」が提示されていました。
私の環境ではinitial_mapの設定はデフォルトのL1にしていたので、あまり関係はないと思い、エレベータの名前を変えることが対策になると考えました。

5. エレベータの名前修正によるトラブル解決

4章で述べた「エレベータの名前をLift〇とすること」について、traffic-editorを使い、以下のようにエレベータの名前を「Lift1」に修正しました。

Screenshot from 2024-07-14 10-58-23.png

そうしたところロボットは止まることなく、以下の図のようにエレベータに乗り上の階への垂直移動に成功しました。

Screenshot from 2024-07-14 11-03-22.png

またエレベータの名前を以下のように「lift_1」としても、ロボットとエレベータは問題なく連携し、ロボットは上の階への垂直移動に成功しました。

Screenshot from 2024-07-14 10-58-55.png

6. rvizでエレベータの状態が表示できないことについての検証

https://github.com/open-rmf/rmf/discussions/463 の記事でrviz上でエレベータが表示されない事象についても報告されており、その原因としてinitial_mapの設定がデフォルトのL1とは異なることが挙げられていました。そこで私の環境でも、以下の図の赤枠で囲んだ部分のようにinitial_mapの設定を「L3」としました。

Screenshot red.png

またエレベータの設定も以下のようにフロア名の変更を反映しました。
Screenshot from 2024-07-14 11-06-25.png

そしてinitial_map:=<マップ名>という引数を追加せずにシミュレーション環境を以下のコマンドで実行したところ、

terminal
ros2 launch rmf_demos_gz_classic evtest.launch.xml

rvizの表示は以下のようになりました。本来であれば、図の赤枠で囲んだ部分に薄青色の箱でエレベータの状態が表示されるはずですが、何も表示されませんでした。

Screenshot from 2024-07-14 11-07-31 - コピー.png

ただ、この状態でもエレベータの名前をLift〇もしくはlift〇としておけば、ロボットとエレベータの連携には問題はなく、ロボットは垂直移動できました。

次に、initial_map:=<マップ名>という引数を追加してシミュレーション環境を以下のコマンドで実行したところ、

terminal
ros2 launch rmf_demos_gz_classic evtest.launch.xml initial_map:=L3

rvizの表示は以下のようになりました。先ほど何も表示されていなかったところに、薄青色の箱でエレベータの状態が表示されています。またロボットとエレベータの連携にも問題はありませんでした。

Screenshot from 2024-07-14 11-10-38.png

これらのことから、https://github.com/open-rmf/rmf/discussions/463 の記事で述べられていた「rviz上でエレベータが表示されない事象」を私の環境でも再現でき、その解決法についても検証することができたと考えられます。

6. まとめ

Open-RMFで構築したロボットとエレベータの連携をシミュレーションできる環境では以下の設定が必要であることが分かりました。

  • エレベータの名前: エレベータの名前は「Lift〇」または「lift〇」とする
  • rviz上でエレベータの状態を表示する設定: rviz上でエレベータの状態を表示するためには、initial_mapの設定を「L1」とするか、initial_map:=<マップ名>という引数を追加してシミュレーション環境を起動する

これらの設定については、Open-RMFやtraffic-editorのドキュメントに記載されているかもしれませんが、私は見つけられなかったため、ここに記載しました。この情報が皆さんの役に立てば幸いです。

0
1
0

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
0
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?