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

マルチスレッドorプロセスでの利用方法・注意事項 #31

Open
d-nakamichi opened this issue Apr 9, 2019 · 3 comments
Open

Comments

@d-nakamichi
Copy link

MoveIt!を使用したアプリケーションを組む際、マルチスレッドでの実装が考えられますが、実装方法やその際のMoveIt!における注意点のリファレンスが少なく困っています。

ROSでドキュメントがある情報はspinくらいでしょうか。
http://wiki.ros.org/roscpp/Overview/Callbacks%20and%20Spinning

こうした情報を載せたチュートリアルがあると良いかと思うのですがいかがでしょうか?

@k-okada
Copy link
Member

k-okada commented Apr 12, 2019

あくまでも個人的な意見なので,違う話もあるとおもいますが,ROSではマルチスレッドは使わず,マルチプロセスで処理する,というのが素直じゃないか,と思っています.

難しい話をすると,
http://wiki.ros.org/smach/Tutorials/Concurrent%20States
みたいに使ってみる,というのも一つですが,

actionlibを使って,

send_goalA_no_wait()
send_goalB_no_wait()

wait_goalA() and wait_goalB()

みたいにはならないでしょうか?

@d-nakamichi
Copy link
Author

個人的にも確かにマルチプロセスが素直かと思います。

先に手段の話をしてしまって申し訳ありませんでしたが、
背景として双腕ロボットのように制御対象が複数存在する場合、それぞれを協調or独立して制御するための、実装に関するドキュメントがあると役に立つのではないかという思いがあります。

MoveIt!を使用した場合、実現方法としては現状以下2つが考えられ、それぞれ不明点がある状況です。

  1. 複数アームを1グループとしてまとめて制御
    • 複数アームの同時動作は可能
    • 1アーム目が動作中に2アーム目を新たな目標点に移動するといった、複数アームに対して独立して動作指示する方法が分からない(方法は現状ない?)。
      • MoveIt!のAPIでは恐らくmove_groupが1つにつき1つのTrajectoryしか処理できない?
  2. MoveIt!のAPIを使用するのではなく、FollowJointTrajectoryのActionをそのまま利用する
    • 複数アームの同時動作&独立動作が可能
    • アームごとにスレッドorプロセスを立てられれば制御フロー・ソースコードが分かりやすくなる場合が多い
      • 本Issueで挙げたように、マルチスレッドorプロセスのROS/MoveIt!上の注意点が不明確
      • 1アーム目の動作状態に応じて2アーム目を動作させるとなった場合、それぞれのアームが別のアームの状態を取得する必要がある。このため、アーム間の情報共有が必要となるが、マルチスレッドorプロセスでの情報共有方法で、ROSやMoveIt!として利用できる仕組みがあるのであれば利用したい。

現状のMoveIt!でできること/できないことがドキュメント等でクリアになっていると、利用者としては利用しやすいものとなると思います。

@d-nakamichi d-nakamichi changed the title マルチスレッドでの利用方法・注意事項 マルチスレッドorプロセスでの利用方法・注意事項 Apr 16, 2019
@k-okada
Copy link
Member

k-okada commented Apr 17, 2019 via email

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

2 participants