-
Notifications
You must be signed in to change notification settings - Fork 38
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
Implement FixedBase inverse dynamics in TSID #230
Comments
The IK implementation can guide you in the software infrastructure |
I was proceeding with the implementation and I noticed that we have two different implementations of the Task class (one in IK https://github.com/dic-iit/bipedal-locomotion-framework/blob/master/src/IK/include/BipedalLocomotion/IK/LinearTask.h and one in TSID https://github.com/dic-iit/bipedal-locomotion-framework/blob/master/src/TSID/include/BipedalLocomotion/TSID/Task.h) with a different interface. Which one should I use? |
I guess TSID, taking inspiration (but not directly using) the Task stuff in IK. |
|
The future is now #240 |
As done for the IK I implemented an interface for the Task Space Inverse Dynamics and a specific implementation of the interface that considers the robot with a fixed base. The task space problem that we need to solve to find the solution is built as a qp problem. The solution is composed as a vector that contains the base acceleration, joint acceleration, joint torques and contact wrenches.
Here an example for using the QPFixedBaseTSID class: An application that uses this class can add a task in SE(3) on the end-effector and a task on the joint tracking to be used as regularization. The commits are:
I still need to complete the documentation. I open the PR as soon as it will be finished. |
Notice that the task level proportional block should be substituted with proportional derivative block. Also that one is implemented in lie-groups-controllers |
By looking at this scheme, I wonder if indeed one of the things I would be curious to test is to use instead of the joint measurements for the "asterisk trick" feedback, use a joint position used by integrating the dynamic model with the constraint of the existing contact as active. I wonder if this would change the performances. |
The tests fail on MacOS (see https://github.com/dic-iit/bipedal-locomotion-framework/pull/251/checks?check_run_id=2278741869). To understand what is going on I'm using https://github.com/fastai/fastmac/ which gives the possibility to have a MacOS shell. The problem is that the session expires after some hours. To avoid installing the superbuild from source everytime (it takes almost one hour), I tried to use conda as explained in https://github.com/robotology/robotology-superbuild/blob/master/doc/conda-forge.md by following instructions in https://github.com/robotology/robotology-superbuild/blob/master/doc/install-miniforge.md#macos to install But as soon as I try to create the variable Mac-1617866944462:fastmac runner$ conda create -n robotologyenv
Collecting package metadata (current_repodata.json): done
Solving environment: done
NotWritableError: The current user does not have write permissions to a required path.
path: /usr/local/miniconda/pkgs/cache/53d7ef51.json
uid: 501
gid: 20
If you feel that permissions on this path are set incorrectly, you can manually
change them by executing
$ sudo chown 501:20 /usr/local/miniconda/pkgs/cache/53d7ef51.json
In general, it's not advisable to use 'sudo conda'.
@traversaro do you know how to solve this problem? |
Probably conda is already installed in
Yes conda is already installed. I've just tried sudo conda create -n robotologyenv |
Yes, you are right. Thanks @GiulioRomualdi |
However
|
Yes, I just had the same problem. |
Try
|
Conda is already installed, but it is a conda distribution (
However, a possible strategy is just to delete the miniconda installed in GitHub Actions ( |
Here https://github.com/GiulioRomualdi/fastmac you have a working
before compiling blf. Blf is already cloned in the home
|
I noticed that on MacOS if I change the number of joins the solution is found even using Joints:
[0] link0joint (dofs: 1) : baseLink<-->link0
[1] link1joint (dofs: 1) : baseLink<-->link1
[2] link2joint (dofs: 1) : baseLink<-->link2
[3] link3joint (dofs: 0) : link0<-->link3
[4] link4joint (dofs: 1) : link0<-->link4
[5] link5joint (dofs: 1) : link0<-->link5
[6] link6joint (dofs: 0) : link4<-->link6
[7] link7joint (dofs: 1) : link3<-->link7
[8] link8joint (dofs: 1) : link4<-->link8
[9] link9joint (dofs: 1) : link1<-->link9
[10] link10joint (dofs: 1) : link4<-->link10
[11] link11joint (dofs: 0) : link4<-->link11
[12] link12joint (dofs: 1) : link5<-->link12
[13] link13joint (dofs: 0) : link7<-->link13
[14] link14joint (dofs: 0) : link7<-->link14
[15] link15joint (dofs: 0) : link7<-->link15
[16] link16joint (dofs: 1) : link5<-->link16
[17] link17joint (dofs: 0) : link14<-->link17
[18] link18joint (dofs: 1) : link13<-->link18
[19] link19joint (dofs: 0) : link3<-->link19 Instead, if I use If I use 15 and 30 joints for the models to test, the tests pass with |
And the state of the random number generator. You can change that via |
The
|
Interesting, this sounds like an instability. Perhaps dumping the velocity signals using matio-cpp or yarp-telemetry and plotting them could be interesting. |
PR #251 merged. Closing. |
In this issue, we can discuss the implementation of the FixedBase inverse dynamics in TSID component
@isorrentino
The text was updated successfully, but these errors were encountered: