slam_gmappingについて

623 views
Skip to first unread message

aonisai

unread,
Sep 11, 2017, 2:39:31 AM9/11/17
to ROS JAPAN Users Group
はじめまして
当方、turtlebot2とgmappingを用いて環境地図生成を勉強しているものです.
turtlebot2が環境地図を生成する際に物体認識を同時に行い、
出力として環境地図内に物体認識結果である
物体の位置情報を付加したいと思っております。

そこで皆様にお聞きしたいことがございます。
現在turtlebot2でSLAMを行うパッケージである。
roslaunch turtlebot_navigation gmapping_demo.launch

SLAMで生成した環境地図を画像として保存するための
rosrun map_server map_server

の中身を書き換えて物体認識に関するノードを加えたいと考えております。
ですが、ROSを学び始めたばかりの私には
どのような手順で進めていけばよいのか検討がついておりません。
そもそもROSをインストール時に提供されているパッケージを編集し
機能を追加することは可能であるかなどを含めまして
ご教示いただけると幸いでございます。

ご回答、よろしくお願いいたします。

最後に当方のPCの環境を記載いたします。
Ubuntu14.04、ROS indigo 

Ryosuke Tajima

unread,
Sep 12, 2017, 10:29:12 AM9/12/17
to ROS JAPAN Users Group
こんばんわ

一般的に言って、物体認識の機能を追加したい場合、既存のパッケージ (turtlebot_navigationやmap_serverなど)を書き換える必要はありませんし、書き換えるべきでもありません。物体認識用の新たなパッケージを探して使用するか、自分で作成して、SLAM等のパッケージと同時に動かせば良いです。

物体認識は、センサの種類や個別の製品(カメラなのか、3次元距離センサなのか、LIDARなのか、等)によってどのパッケージを使うべきかは異なります。
画像認識だとObject Recognition Kitchen (ORK)などがあります。


2017年9月11日(月) 15:39 aonisai <rock.fa...@gmail.com>:
--
このメールは Google グループのグループ「ROS JAPAN Users Group」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには ros-japan-use...@googlegroups.com にメールを送信してください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。

aonisai

unread,
Sep 13, 2017, 12:38:35 AM9/13/17
to ROS JAPAN Users Group
longjie0723さん

ご回答ありがとうございます。

>>一般的に言って、物体認識の機能を追加したい場合、既存のパッケージ (turtlebot_navigationやmap_serverなど)を書き換える必要はありませんし、書き換えるべきでもありません。物体認識用の新たなパッケージを探して使用するか、自分で作成して、SLAM等のパッケージと同時に動かせば良いです。

物体認識には、既存のシステム(https://github.com/leggedrobotics/darknet_ros)を利用する予定です。
また物体認識とSLAMを組み合わせることにより、生成した環境地図のイメージは添付図(赤や青のプロットは物体のある位置)のようになりますが、
既存のパッケージ (turtlebot_navigationやmap_serverなど)を書き換えることなく、出力することは可能でしょうか。
素人の私としては、SLAMを生成する際に、物体の存在する位置にturtlebotと物体との距離情報を用いることや、物体のクラス名などを付与し、
画像として環境地図を生成する際にも、物体のある位置に特別に(白や黒以外の)色を用いてプロットしなくてはならないため、既存のパッケージを書き換えざる得ないのではないかと考えてしまいます。
また、既存のパッケージを書き換えることなく、物体認識のノードを同時に動かすことは可能であると思いますが、
SLAMによる地図生成の結果に物体認識の結果を反映させることは可能でしょうか。

>>物体認識は、センサの種類や個別の製品(カメラなのか、3次元距離センサなのか、LIDARなのか、等)によってどのパッケージを使うべきかは異なります。画像認識だとObject Recognition Kitchen (ORK)などがあります。

物体認識に用いるセンサは、turtlebotの一部であるKinectを用いる予定でございます。

長文になりましたが、longjie0723さんや皆様の見解をいただけましたら幸いでございます。

2017年9月11日月曜日 15時39分31秒 UTC+9 aonisai:
slam_ojectrecognition.bmp

Ryosuke Tajima

unread,
Sep 14, 2017, 8:57:22 AM9/14/17
to ros-jap...@googlegroups.com

2017年9月13日(水) 13:38 aonisai <rock.fa...@gmail.com>:

>>一般的に言って、物体認識の機能を追加したい場合、既存のパッケージ (turtlebot_navigationやmap_serverなど)を書き換える必要はありませんし、書き換えるべきでもありません。物体認識用の新たなパッケージを探して使用するか、自分で作成して、SLAM等のパッケージと同時に動かせば良いです。
また物体認識とSLAMを組み合わせることにより、生成した環境地図のイメージは添付図(赤や青のプロットは物体のある位置)のようになりますが、
既存のパッケージ (turtlebot_navigationやmap_serverなど)を書き換えることなく、出力することは可能でしょうか。

gmappingその他のSLAMのパッケージは占有格子地図を作るものですが、ほとんどの場合これはグレースケールの画像ファイルです。
なので、もし、赤とか青とかを書こうとするとそれだけで大幅にパッケージの仕様を変更する必要があり現実的ではないしそこまでする必要性がありません。
そもそも、認識した物体の位置を登録するために、格子地図はあまり適していません。違う形式の地図、いわゆるフィーチャベースの地図を自分で作成した方がいいです。

素人の私としては、SLAMを生成する際に、物体の存在する位置にturtlebotと物体との距離情報を用いることや、物体のクラス名などを付与し、
画像として環境地図を生成する際にも、物体のある位置に特別に(白や黒以外の)色を用いてプロットしなくてはならないため、既存のパッケージを書き換えざる得ないのではないかと考えてしまいます。

たとえば、SLAMがすでに動いているのなら、物体認識した位置を座標として保存するので十分なはずです。
プロットは単なる可視化の話なので、rvizで表示するか、地図のファイルを画像として加工するなどすればよいのでは。
 
また、既存のパッケージを書き換えることなく、物体認識のノードを同時に動かすことは可能であると思いますが、
SLAMによる地図生成の結果に物体認識の結果を反映させることは可能でしょうか。

というわけで可能です。rvizで見るなら適当なマーカを発行すれば可視化は簡単です。
 
悪いことは言わないから、その目的で既存パッケージの書き換えはやめておいた方がいいですよ。

但馬
 
2017年9月11日月曜日 15時39分31秒 UTC+9 aonisai:
はじめまして
当方、turtlebot2とgmappingを用いて環境地図生成を勉強しているものです.
turtlebot2が環境地図を生成する際に物体認識を同時に行い、
出力として環境地図内に物体認識結果である
物体の位置情報を付加したいと思っております。

そこで皆様にお聞きしたいことがございます。
現在turtlebot2でSLAMを行うパッケージである。
roslaunch turtlebot_navigation gmapping_demo.launch

SLAMで生成した環境地図を画像として保存するための
rosrun map_server map_server

の中身を書き換えて物体認識に関するノードを加えたいと考えております。
ですが、ROSを学び始めたばかりの私には
どのような手順で進めていけばよいのか検討がついておりません。
そもそもROSをインストール時に提供されているパッケージを編集し
機能を追加することは可能であるかなどを含めまして
ご教示いただけると幸いでございます。

ご回答、よろしくお願いいたします。

最後に当方のPCの環境を記載いたします。
Ubuntu14.04、ROS indigo 

--
Message has been deleted

aonisai

unread,
Sep 15, 2017, 2:46:43 AM9/15/17
to ROS JAPAN Users Group
但馬様

ご返信ありがとうございます。

私としても既存のパッケージの書き換えはハードルが高いため、避けたいと思っておりました。

また現時点では、turtlebot_navigationを用いて有占格子地図の生成と、既存の物体認識手法の動作確認ができております。

>>たとえば、SLAMがすでに動いているのなら、物体認識した位置を座標として保存するので十分なはずです。
とご返信いただきましたが、私の理解が追いついていないため、お聞きしたことがございます。
ここでは、SLAMが動作している状態であり、かつ物体認識を同時におこなうことで物体認識した位置を座標という情報としてどこかに保存されるということでしょうか。
もしくは物体認識した位置を座標として保存することが可能であるなら、要求は満たせるのではないかという意図でご指摘いただいたのでしょうか。

私は、物体認識した位置を座標として保存するためには、
SLAMで地図を生成する過程で、実空間の物体がある位置を環境地図に対応した座標として出力しなくてはならないと感じてしまいます。

但馬様のおっしゃるようにSLAMと物体認識を統合させることなく、両者を同時に動かしている状態で、
SLAMで生成する地図に対応させた物体の位置を座標として保存することができますでしょうか。

>>プロットは単なる可視化の話なので、rvizで表示するか、地図のファイルを画像として加工するなどすればよいのでは。
おっしゃるとおりでございます。
物体認識した位置を座標として保存できたならば、生成した地図の画像を加工することでプロットが可能になると思います。

何度も質問を繰り返してしまい、申し訳ございません。
また但馬様や皆様の意見をいただけましたら、幸いでございます。

2017年9月14日木曜日 21時57分22秒 UTC+9 longjie0723:

Ryosuke Tajima

unread,
Sep 15, 2017, 9:24:14 PM9/15/17
to ros-jap...@googlegroups.com
2017年9月15日(金) 15:46 aonisai <rock.fa...@gmail.com>:

>>たとえば、SLAMがすでに動いているのなら、物体認識した位置を座標として保存するので十分なはずです。
とご返信いただきましたが、私の理解が追いついていないため、お聞きしたことがございます。
ここでは、SLAMが動作している状態であり、かつ物体認識を同時におこなうことで物体認識した位置を座標という情報としてどこかに保存されるということでしょうか。
もしくは物体認識した位置を座標として保存することが可能であるなら、要求は満たせるのではないかという意図でご指摘いただいたのでしょうか。

後者です. 
 
私は、物体認識した位置を座標として保存するためには、
SLAMで地図を生成する過程で、実空間の物体がある位置を環境地図に対応した座標として出力しなくてはならないと感じてしまいます。
但馬様のおっしゃるようにSLAMと物体認識を統合させることなく、両者を同時に動かしている状態で、
SLAMで生成する地図に対応させた物体の位置を座標として保存することができますでしょうか。

認識物体の位置をtfのフレームとして発行できれば,mapフレーム上でのその位置はtfにより自動的に計算されます.
最も単純には,物体認識のたびにそれを保存するようなノードを作成すればいいのではないかと思います.
SLAMの途中じゃなくて,すでにある地図上で認識物体を登録するのであれば,それで済むと思います.

SLAMの場合だと,その時点でのmapフレーム上の自己位置は正しいとは限らず,全体最適化の処理で後ほど変化することはありえます.
でも最初のステップとしてそこまでやってみてから考えるのがいいのではないかと思います.

但馬

aonisai

unread,
Sep 18, 2017, 12:41:13 AM9/18/17
to ROS JAPAN Users Group
但馬様

ご返信ありがとうございます。

まずは、但馬様にアドバイスいただいた方針で進めてみようと思います。

アドバイスをいただきまして、心より感謝申し上げます。
またなにかご教授いただけましたら、幸いでございます。

2017年9月16日土曜日 10時24分14秒 UTC+9 longjie0723:
Reply all
Reply to author
Forward
0 new messages