Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

move_baseを2つ起動すると動作がおかしくなる。 #2

Closed
dashimaki360 opened this issue Jul 22, 2019 · 1 comment
Closed

Comments

@dashimaki360
Copy link
Collaborator

OneNightROBOCON/onigiri_war#56
の未解決issue の件

解決方法を探した。
あまりちゃんと調べられてないので、間違いなどつっこんでください。

結論

actionlib形式の通信の場合簡単には無理。。。
actionlibサーバー名が固定のため
topicで通信していれば適切に設定すればおそらく可能(未確認)

参考サイト

ソースコード https://github.com/ros-planning/navigation
roswiki http://wiki.ros.org/move_base
actionlib roswiki http://wiki.ros.org/ja/actionlib
ブログ http://ros-robot.blogspot.com/2009/12/actionlib.html
ブログ http://ros-robot.blogspot.com/2009/12/actionlibclient.html

何が起きているのか??

move_baseノードに、 waypointを指定などするノードから通信する際に
2つ立ち上がっているmove_baseノードのどちらと通信するか明確に選択できないのが問題のもよう

move_baseノードと通信するAPIには、topicを使う方法とactionlibがある。
actionlibを使用する方法が主に使われている。

actionlibという機能で通信する場合

serviceより実行に時間のかかるやり取り(目的地への移動など)向けに作られているサーバークライアン方式の通信パッケージ(actionlibについてくわしくは参考サイト参照)
move_baseノードは起動時にActionlibServerを起動する。
通信するノードはActionlibCliantをサーバー名で指定して通信する。
しかしmove_baseのgithub公開の実装をみてみると、
move_baseノードは起動時のActionlibServerの名前を"move_base"でハードコーディングされており、
別の名前で起動することができない。。。。。。

topicで通信する場合

move_baseが 入出力するトピックは(move_base/goal (move_base_msgs/MoveBaseActionGoal) など)
通常のトピック同様にremapやnamespaceで区別できるので、
適切なtopic名を指定すれば、複数起動したmove_baseを区別して通信することができそうである。
ためしてはいない。
https://github.com/gergia/multiple_turtlebots_stage_amcl
このソースでもおそらく通信はtopicでやっている。

@dashimaki360
Copy link
Collaborator Author

turtlebot3 のチュートリアルを参考に burger_navigation を作成
bbea70b

これで問題ないか様子見

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant