-
Notifications
You must be signed in to change notification settings - Fork 8
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
目標姿勢の精度が厳しくなった? #45
Comments
これ,どのタイミングで動かなくなったでしょうか?
前はkinetic で動いていたけど,melodicにしたら動かなくなった?
あるいは前はmelodicで動いていたけど,最近動かなくなった?
moveit/moveit@bed7cc2
みたいな変更があったんじゃないか,と思うんですが,この辺は変更がなされ続けるものかとも思うので,
https://github.com/ros-planning/moveit/blob/melodic-devel/moveit_commander/src/moveit_commander/move_group.py#L362
みたいな関数をつかってゴールを緩めに設定して動くのであれば,それが良いともいます
プラス,この設定方法をチュートリアル内に書けば,結構重要な情報を伝えられるのではないかともいます.
元の設定で実行ー>エラーが出るー>エラーの見方ー>IKの制約をゆるくするー>動いた.
…--
◉ Kei Okada
2020年5月31日(日) 23:25 Yosuke Yamamoto <[email protected]>:
nextage_moveit_tutorial_poses.py にて姿勢を指定する下記リンクの行の姿勢で
https://github.com/tork-a/tork_moveit_tutorial/blob/3fff70bbe0fee59a384ef765a39bc2250cd66295/script/nextage_moveit_tutorial_poses.py#L19
MoveIt Commander Python 利用側メッセージ
ABORTED: No motion plan found. No execution attempted.
MoveIt 側エラー
[ERROR] [1590934584.100473872, 37.869000000]: RRTConnect: Unable to sample any valid states for goal tree
となり解が得られないようになりました.
以前は問題なく動いていたように記憶しています.
アボートされる姿勢の記述のうち 0.707 の精度不足が問題のようで
pose_target_1.orientation.x = 0.0
pose_target_1.orientation.y = -0.707
pose_target_1.orientation.z = 0.0
pose_target_1.orientation.w = 0.707
の部分を
pose_target_1.orientation.x = 0.0
pose_target_1.orientation.y = -math.sqrt(2.0) / 2.0
pose_target_1.orientation.z = 0.0
pose_target_1.orientation.w = math.sqrt(2.0) / 2.0
に変更したら解が得られて意図したとおりに解が得られて動作しました.
単純に精度だけの問題でちゃんと計算すれば良いのでしたら該当するソースコードを修正してPRします.
もしくはそのような修正の他にもっと一般性の高い修正方法があればご教示いただけたらありがたいです.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#45>, or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AADYNXG76MIGDWE7JEUZOQDRUJSENANCNFSM4NPFZXRA>
.
|
本件,チュートリアルのとおり ROS Kinetic で行っています. 2019年2月ぐらいにチュートリアルの Kinetic 化の作業をした時には従来のコードで動作を確認しているはずですが,その後は確認していないかもしれません.
Abort される,動作するの境目を桁数を変えて試してみました.
Goal Tolerance とクォータニオンからIKの可計算性は同じものを意味しているのでしょうか? |
あ,そうか.IKはhttps://github.com/tork-a/rtmros_nextage/blob/indigo-devel/nextage_ik_plugin/CHANGELOG.rst でikfast を使っているので,解ける解けない,ということはないかと思います. ちなみに,rtmros_nextage をソースからワークスペースに入れて実行するとどうなります? |
ワークスペースに rtmros_nextage を入れてパスも確認して実行しても同じ挙動です.
|
OK-NG 境界が1つずれました. debian package rtmros_nextage
↓ build rtmros_nextage in workspace
Goal Tolerance を 0.1 に緩くするのが効かないのは同じです. |
あmelodicで,,という意味でした. |
melodic でやってみます.少し時間がかかると思いますが. |
ROS Melodic にて下記パッケージの組み合わせで,
ROS Kinetic でのみの問題ということでしょうか? |
同じような話題の Issue |
ROS Kinetic です.
|
なるほど.たしかにそうですね. 何れも
|
ROS Melodic で set_goal_orientation_tolerance() が効いているか確かめました.
ROS Melodic では既存のコードのままで動いている状態なので値をセットせずにget_goal_orientation_tolerance() で値を取得してみると 0.001 でした. 0.001 から数字を小さくしてセットすると 1e-10 までは意図したとおりに動作し, コード全体
|
ROS Melodic の方は set_goal_orientation_tolerance() は効いているが, |
反面 ROS Kinetic の方はなぜ精度良く正規化されていないクオータニオンが弾かれるのか,また過去には問題は出なかったのかが謎のままですが,対処法はわかりました. |
今のところ ROS の Kinetic と Melodic は調べて Kinetic は Orientatoin の正規化が明示的に必要で,Melodic は Pose を渡した先で都合をつけてくれているようで明示的には正規化は必要ないという結論でした. 全てのバージョンで明示的に正規化の手順を入れてしまえば済む話なのですが,せっかく Melodic では正規化は意識せずとも Orientation を指定できるのでもったいないような気がして Kinetic のみ正規化の手順を入れるようにするために https://answers.ros.org/question/335529/get-the-ros-version-installed-using-python-code/ などを参考に次の2つの関数を考えました.
これらを使って Kinetic の場合のみ次のように明示的に正規化して,Kinetic でも問題なく動作生成がなされ実行することができました.
このようにしてみて次のような少し引っかかる点がありました.
スマートな方法があればお教えいただけたらと思います. |
でしょうか. |
ありがとうございます.
|
@y-yosuke お忙しいところすいません.この変更をしたpull request って出ていますでしょうか? |
ローカルPC上にあるままでブランチもプッシュしていないかもしれません.確認します. @k-okada |
すみません,まだスクリプトは Nextage の botharms しか正規化対応していませんが,ROS のバージョンチェックと正規化の関数は src/tork_moveit_tutorial/moveit_tutorial_tools.py に |
中途半端なブランチから mod-kinetic-normalizing-orientation ブランチを作ってしまいました. |
nextage_moveit_tutorial_poses.py にて姿勢を指定する下記リンクの行の姿勢で
tork_moveit_tutorial/script/nextage_moveit_tutorial_poses.py
Lines 19 to 22 in 3fff70b
MoveIt Commander Python 利用側メッセージ
MoveIt 側エラー
となり解が得られないようになりました.
以前は問題なく動いていたように記憶しています.
アボートされる姿勢の記述のうち
0.707
の精度不足が問題のようでに変更したら解が得られて意図したとおりに動作しました.
単純に精度だけの問題でちゃんと計算すれば良いのでしたら該当するソースコードを修正してPRします.
もしくはそのような修正の他にもっと一般性の高い修正方法があればご教示いただけたらありがたいです.
The text was updated successfully, but these errors were encountered: