-
Notifications
You must be signed in to change notification settings - Fork 88
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
関節角リミットがtableで定義されている関節ではvelocity limit overになることがある #1220
Comments
HRP2の手首のmin-max-tableは以下になります。 そこで、choreonoidでのシミュレーションにEuslispからこの指令を送ってみたのですが、問題は再現しませんでした。(目標角度列を実現しようとする途中でcollisionして引っかかったまま止まるがサーボは落ちない) 解決策として、choreonoidのRobotHadwareにcheckJointCommands関数を実装し、リミットを超えているか判断するということを考えています。 |
ありがとう.シミュレーション上でデバックできたらと思いましたが,RobotHardwareが違うんですね.
これは,CollisionDetectorで干渉判定されて止まるということかな.実機ではRARM_JOINT5,RARM_JOINT6のリンクは干渉チェックしていないですね. |
choreonoidのRobotHardwareRTCは
は必要なくて,既にcheckJointCommandsも呼ばれている気がするけれど,どうだろう. |
遅くなりました。 |
実際にはchoreonoidのRobotHardwareはhrpsysのRobotHardwareのonExecuteを呼んでいたので、checkJointCommands等も呼ばれており、hcfからサーボをオフすることも可能でした。 そこでst, abc, icの有無を切り替えながら、min-maxテーブルの縁から縁へ移動するような関節角度指令を送ってみて問題が再現しないか試しましたが、再現しませんでした。(checkEmergencyによってサーボが落ちることはあった) |
SoftErrorLimitterの
https://github.com/fkanehiro/hrpsys-base/blob/master/rtc/SoftErrorLimiter/SoftErrorLimiter.cpp#L271-L332
で
・ 関節速度がリミットを超えないように修正 (271行目から)
・ 関節角度がリミットを超えないように修正 (302行目から)
がされていますが,
関節可動域が,最小・最大角度のスカラ値ではなく,
隣接二関節が依存するテーブルとして与えられている場合( https://github.com/fkanehiro/hrpsys-base/blob/master/rtc/SoftErrorLimiter/SoftErrorLimiter.cpp#L306 のif文に該当する場合 ),関節速度の修正が正しく行われない場合があります.
その結果,実機実験中に
robot::checkJointCommands関数
https://github.com/fkanehiro/hrpsys-base/blob/master/rtc/RobotHardware/robot.cpp#L546-L556
の速度チェックでリミットを超えていると判定され,
RobotHardwareプラグインの中の
https://github.com/fkanehiro/hrpsys-base/blob/master/rtc/RobotHardware/RobotHardware.cpp#L251
で,サーボOFFされてしまう問題に遭遇しています.
リミットがテーブルで速度が正しく修正されない理由は,
JSK内部Issueですが以下で https://github.com/start-jsk/rtmros_hrp2/issues/317 で議論されていて,
例としては以下の青い矢印の遷移の場合に
凹の形の可動域に収まるように関節角度指令値を上書くときに速度が早くなってしまうのだと思います.
現状のSoftErrorLimitterでは,
速度リミット -> 角度リミット
の順に確認していますが,逆にして
角度リミット -> 速度リミット
にすれば解決するかもしれないと思っておりますが,
どうすれば良さそうかアイディアありましたら教えて頂けますと幸いです.
The text was updated successfully, but these errors were encountered: