Skip to content
New issue

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

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

Already on GitHub? # to your account

[StabilizerTask] Fix frames of forces and velocities in foot force difference control #290

Merged
merged 1 commit into from
Sep 9, 2022

Conversation

mmurooka
Copy link
Member

@mmurooka mmurooka commented Sep 9, 2022

This should fix #289

I've confirmed that the JVRC1 robot can walk in lipm_walking_controller in Choreonoid with this patch.

However, there is no explicit confirmation that this fixes the bug #289 effectively. (It is also not clear how to identify bugs from the robot's behavior and logs in the first place.)

@gergondet gergondet merged commit 92c0f4e into jrl-umi3218:master Sep 9, 2022
@@ -1142,15 +1142,19 @@ void StabilizerTask::updateFootForceDifferenceControl()
return;
}

sva::PTransformd T_0_L(leftFootTask->surfacePose().rotation());
sva::PTransformd T_0_R(rightFootTask->surfacePose().rotation());
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I start to consider these lines should be

sva::PTransformd T_0_L = leftFootTask->surfacePose();
sva::PTransformd T_0_R = rightFootTask->surfacePose();

for wrench transformation although we used only the rotation in the similar case https://github.com/arntanguy/lipm_walking_controller/pull/2/files#diff-86694886f91b285c323e710f1b64ec1c0f5ab403d0ee748e112030f766fcae11R139

I'm not confident, so could anyone give some idea?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I reconsidered and came to the conclusion that it would be OK to leave it as it is ("as is" in the merged PR).
For wrench, only force is used (moment is not used), so the position of the transformation is not important.
For velocity, the angular velocity is set to zero as shown below, which implicitly assumes a frame whose position is identical to the surface and whose orientation is identical to the inertial frame. In such cases, it is correct to apply rotation-only transformations.
https://github.com/jrl-umi3218/mc_rtc/pull/290/files/72f45b20f3766351b296e37b734b65113184baeb#diff-be940a972e16470195608839479a680e1f8aba715c2e5f4c62cdaa4666be420eR1169-R1170

@mmurooka mmurooka deleted the stabilizer-force-diff-frame branch September 9, 2022 05:12
gergondet added a commit that referenced this pull request Oct 16, 2022
Changes
---

- [general] mc_rtc now uses C++17 (#297)

Added
---

- [mc_control] Publish joint sensors in ROS (#293)
- [mc_rbdyn] Add a non throwing version of ZMP computations (#292)
- [mc_rbdyn] Add const accessor for grippers (#298)
- [mc_rtc] Add gui::Polyhedron element (#296)
- [mc_tasks] DCM derivative gains are now 2D (#295)

Fixes
---

- [mc_control] Fix gripper initialization issue (#291)
- [mc_control] Fix assumption around robot.hasJoint
- [mc_tasks] Set roll and pitch target of torso to 0 in StabilizerTask (#175)
- [mc_tasks] Fix foot force difference control issue in StabilizerTask (#290)
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[StabilizerTask] Missing transformation in foot force difference control
2 participants