[panda_eus] Make :gripper method work & enable to get gripper status while moving #4
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
#3 の副作用として、
(send *panda* :rarm :gripper :joint-list)
の返り値に指ジョイントが含まれないようになり、グリッパの指の現在位置を知る(send *ri* :gripper :rarm :position)
が常に0を返すようになってしまいました。(send *ri* :stop-grasp :rarm :width 0.1)
とかでは、現在位置から目標位置までの距離と目標所要時間から指の速度を計算して指令しているので、この速度が非常に小さくなり、ゆっくり動くようになってしまっていました。この問題を解消するため、
end-coords
の親リンクとして*_hand_tcp
を使うのをやめ、*_hand
を使うようにしました。yamlにURDF由来の数字が出てきてしまって二重管理になるのですが、URDF上の値をそのままコピーするだけで足し算とかは必要ないなので、まだセーフだと考えています。
end-coords
の位置が以前と変化していないこと、(send *ri* :gripper :rarm/:larm :position)
が機能することは確認しました。また、
(send *ri* :get-start-grasp-result :rarm :wait nil)
などとすると、現在のグリッパの動きを待つことなく前回の動作の結果を返すようにしました。ただし、
:wait nil
の場合は、:start-grasp
を一回でも呼んだ後でないと、#1 (comment) と同じ読みにくいエラーが出てしまいます。これは解決が難しく、エラーメッセージを読みやすくするのはあくまでオプショナルだと考えてスキップしました。
さらに、
(send *ri* :get-start-grasp-status :rarm)
などとすると、最後に指令した:start-grasp
の動作の現在の状態を返すようにしました。actionlib_msgs::GoalStatus
のstatus
の値が返ってくるので、現在も動作を実行中かどうか、動作が正常終了したのかどうかなどを判定できます。