ROSとLRFを用いてできることについて

1,079 views
Skip to first unread message

如月花火

unread,
Sep 29, 2016, 8:58:33 PM9/29/16
to ROS JAPAN Users Group
現在、自分は
電動車いすにLRFを取り付け、
そのLRFをPCにて操作するといったことを行ております。

その際、周囲の環境情報の取得と、それを元に環境地図を生成する
ということまではできました。

その後の発展として
ルンバ型のロボットを使い、自己位置推定および、目的地までの自立して移動を行う
といった記事はよく見かけるのですが

それらの機能はLRF以外のセンサ情報をもとに得ているのでしょうか?

また、LRF単体では他にどのようなことができるのかのヒントを得られればと思い
今回、質問させていただきました。

大変無知な質問ではございますが、よろしくおねがいいたします。

開発環境
LRF_UTM-30LX-EW
PC _Ubuntu14.04
電動車いす(ジョイスティックの物を、シリアル通信を用いて制御可能)

高橋将

unread,
Oct 10, 2016, 2:22:28 AM10/10/16
to ROS JAPAN Users Group
>その際、周囲の環境情報の取得と、それを元に環境地図を生成する
ということまではできました。

ということは、自己位置推定までできている可能性が高いですね。
(自己位置がわからないと地図は作れない)

>それらの機能はLRF以外のセンサ情報をもとに得ているのでしょうか?
・自己位置推定
ルンバなどでは車輪のエンコーダ(回転角度)情報などである程度自己位置を
算出したりしますね

・自律移動
マップと自己位置が分かっている状態なら、ROSのmoveitパッケージ等で
実現していると思います

投稿された文書を読む限り、ROSのパッケージをしっかり組み合わせてやれば
車いすの自律移動もできるのではないでしょうか。

2016年9月30日金曜日 9時58分33秒 UTC+9 如月花火:

如月花火

unread,
Oct 11, 2016, 1:17:28 AM10/11/16
to ROS JAPAN Users Group
高橋様
 
 わたくしの知恵足らずな質問に回答していただきありがとうございます。

 現在の段階としては
 SLAMを用いた環境地図生成
 これに関しては自分も自己位置推定は行えてると考えております。
 しかし、作成したマップを[map_server]を用いてRVIZに読み込みを行い、
 その環境地図上に、自己位置の投影を行う、、、
 といったことをしたいと考えているのですが、いまいち理解ができておりません
 [map_server]を用いてRVIZに作成したyamlファイルを読み込ませる、といったことはできております
 しかし、(おそらく)TFを用いて、自己位置の表示を行う段階にて詰まっております。。。

 次に、この段階で自分は、LRF以外のセンサを利用しておりません。
 車いすに取り付けたLRFのみの情報をもとに、環境地図の生成を行っております。
 これに関しては、すでにほかの方が作成されたパッケージを利用させていただいております。
 この中から、自己位置推定に関する部分を活用し、[map_server]との組み合わせを検討しております。
 その際、TFを利用するのではないか、、、といったところまでは来たのですが、その先は行き詰っております。

 最後に、車いすのロータリーエンコーダの情報をシリアル通信を用いて読込を行い
 自己位置推定の精度向上等も考えたのですが
 どうやら、当研究環境ではシリアル通信を行えないようです。。。
 ゆえに、LRFのみの情報でどこまでの機能を利用できるのかを考えた次第です。

 説明が長く、また理解しずらいものになってしまい申し訳ございません。
 ROSに関してはまだ触り始めたばかりで、過去にROSを利用した研究生もいないため、完全に新規で触っております。
 
 知恵足らずで申し訳ございませんが、よろしくお願いいたします。

2016年10月10日月曜日 15時22分28秒 UTC+9 高橋将:

高橋将

unread,
Oct 11, 2016, 10:45:37 PM10/11/16
to ROS JAPAN Users Group
>しかし、(おそらく)TFを用いて、自己位置の表示を行う段階にて詰まっております。。。
はい、その方向で合っているかと。

この先のアドバイスを行うには情報がほしいので、
研究に差し支えなければrqt_graphの内容を教えてください。
どういったノードやトピックが存在しているか可視化されます。

環境地図作成を行っている状態で別ターミナルから
$ rqt_graph
開いた画面の左上にあるトピック種別選択で「Nodes/Topic(all)」として
ください。

rqt_graphの一例のスクリーンショットを投稿しておきます。




2016年10月11日火曜日 14時17分28秒 UTC+9 如月花火:

如月花火

unread,
Oct 26, 2016, 9:54:42 PM10/26/16
to ROS JAPAN Users Group
高橋様

返答が遅くなってしまいまことに申し訳ございません。

落ち着きましたので返信させていただきます。
よろしくお願いいたします。

現在、環境マップの作成には、こちらのlaunchファイルを利用させていただいております。
「hector-slam-example」

また、次に$ rqt_graphの実行結果を張らせていただきます。
自分が無知なためにお時間を取らせて申し訳ありませんが、よろしくお願いいたします。


2016年10月12日水曜日 11時45分37秒 UTC+9 高橋将:
Screenshot from 2016-10-27 10_46_58.png

高橋将

unread,
Nov 2, 2016, 1:09:36 AM11/2/16
to ROS JAPAN Users Group
>その環境地図上に、自己位置の投影を行う、、、

作成したマップをmap_serverでロードするだけでは、
自己位置を算出するノードがいないのでダメだと思います。

そのまま、hector_exampleを用いて、地図を作成しつつ
hector_trajectory_serverがパブしている、trajectoryトピックを
rvizとかに出して見るのはどうでしょうか?
(これはpathメッセージなので軌跡が見える)

または、同様に地図を作成しつつ
hector_mappingがパブしている、slam_out_poseトピックを
rvizに出せばいいと思います。 
(これはposeメッセージなので位置姿勢が矢印で見える)


>ゆえに、LRFのみの情報でどこまでの機能を利用できるのかを考えた次第です。

hector_slamは、高性能LRFであればオドメトリはなくても、使えるらしいので
今の構成でいいのではないでしょうか。お使いのセンサも十分な性能があるようですし。



ここからは、私が↑の事を考えだすのに着目した点です。
初心者の方の参考になれば幸いです。

とにかく入力と出力に注目しました。
ROSパッケージ(というかノード)にはほぼほぼwikiがあるので、その中で
Subscribed TopicsとPublished Topicsに注目します。(serviceの場合もあるけど)

ROSを使うからにはなにか達成したい(得たいデータとか)事があるはずです、
なので出力に相当するPublished Topicsが欲しいものか真っ先に見ます。

そして、それが欲しいものであればSubscribed Topicsに注目して
なにを入力してやればいいのかを見るといった形です。

少し蛇足ですが、
仮に入力を直接用意出来なくても(例:pointcloudは取得出来るけど、scanは取れないとか)、
ROSはパッケージが豊富なので探してみると
「別のノードの出力が、今欲しい入力である」ケースがあります。
こうやって、入力と出力を連鎖させていけば、最終的には自分の達成したい
ことが出来るといった具合です。


2016年10月27日木曜日 10時54分42秒 UTC+9 如月花火:

如月花火

unread,
Nov 2, 2016, 1:46:57 AM11/2/16
to ROS JAPAN Users Group
高橋様

たびたびの丁寧な返答を感謝いたします。
高橋様に教えていただいたことをもとに、いろいろいじってみようと思います。

ただ、ひとつ気になったことがあります。
高橋様に提案していただいた2つの方法では
環境地図を投影しながら、、、
といったことが前提になっていると見受けられます。

この場合、先に作成しておいた環境地図上に自己位置を描写する
といったことは難しいのいのでしょうか?

よろしければお聞かせいただけると嬉しです。

たびたびの質問で申し訳ございません。
お力を貸していただければと思います。
よろしくお願いいたします。

2016年11月2日水曜日 14時09分36秒 UTC+9 高橋将:

高橋将

unread,
Nov 2, 2016, 11:18:04 PM11/2/16
to ROS JAPAN Users Group
>この場合、先に作成しておいた環境地図上に自己位置を描写するといったことは難しいのいのでしょうか?
hector_mappingにそういった機能はないようです。
Subscribed Topicsにmapがないからですね。
(ここでのmapは先に作成した環境地図を想定)

map_serverで先に作成したmapを読み込んでも、hector_mappingの
Published Topicsである、mapやslam_out_poseとは
多分(?)整合性が取れないと思います。


「先に作成しておいた地図で、自己位置推定の結果を可視化したい」
のであれば、amclパッケージを使うのがいいのではないでしょうか。
アプローチとしては、turtlebot_gazeboにamclのデモがあるので、
そちらで挙動を把握して、自分のロボットへの適用を目指すと言った感じ。


2016年11月2日水曜日 14時46分57秒 UTC+9 如月花火:

如月花火

unread,
Nov 10, 2016, 7:55:04 PM11/10/16
to ROS JAPAN Users Group
高橋様

丁寧な回答を感謝いたします。
やはりamclを利用しての実現になるのですね。。。
ありがとうございます。

自身としても、amclに関して調べてはいるのですがいまいち理解ができておらず。。。
turtlebot_gazeboにamclのデモがあるということで
こちらのほうを実行し、自身の環境に組み込めるよう
実験を行ってみたいと思います。

たびたびの回答を本当に感謝しております。
まだまだROSに触り始めたばかりでわからないことが多く
今後も質問をすることがあると思います。
その際はまた力を貸していただけると嬉しく思います。


2016年11月3日木曜日 12時18分04秒 UTC+9 高橋将:
Reply all
Reply to author
Forward
0 new messages