Comments (12)
Hi @Yeshasvitvs and @traversaro
Take what I say with a grain of salt as you can see the date of this issue is quite old.
In particular, I thought we already moved to iDynTree::inverse-kinematics
, but this is clearly not the case.
As @traversaro said, iDynTree::inverse-kinematics
(at least in its late-2017 version) optimises for the whole
If you try to make a single (is this what @traversaro meant with "global"?) optimisation problem, you have two drawbacks:
- it might be more computational intensive given the high number of variables,
- you need to specify as costs (as the constrains might, and will, be violated) all the link poses that you need to match. Then you are also introducing weights (that can be all 1 of course) to the problem.
So, let's go back to have multiple IKs.
Before thinking about the multithreading issues, let's solve the problem first.
I am cutting a bit on the math, but if needed I can go in more details.
Consider two links,
We want to "match" our internal model to the data, i.e. we want
Similar to the "global, single" problem, we can frame this as a classic IK problem, on all
We can remove the noise on the other
Given that the system is still free-floating you are left with the "problem" of the base as before, but the optimisation problem is now smaller.
For the base, I think that you can add a constraint to the problem: given that you have (from Xsens)
Or set that to the identity, and use relative transforms (w.r.t. the base) for the links, i.e.
Regarding the multithreading, having a copy of an iDynTree::Model
and IK
should be fine for the iDynTree
part. Still, you need a linear solver that does not have global static un-protected variables. At the time, MUMPS had problems, the other linear solvers not.
PS:
@traversaro a plugin for Safari ? 😘
from human-dynamics-estimation.
For the time being I was thinking of simply creating N ik solvers configured with a reduced model (one for each pair).
from human-dynamics-estimation.
Switching to a global IK problem will still prevent us to use a thread pool.
@traversaro can you please explain the problem in detail. I am not able to follow this comment.
If we used a single big Inverse Kinematics problems with all the relative link position as tasks, that would be resuilting in a single Ipopt problem instance, that cannot be solved using multiple threads (at least with the linear solvers that we use).
from human-dynamics-estimation.
Also, please explain the limitation of
constraint on the base pose to be identity
Warning: comment that is better rendered using a Github latex extension, such as https://github.com/orsharir/github-mathjax or https://github.com/traversaro/github-mathjax-firefox
Assume that you have an absolute frame
where
If you want to actually optimize the relative transform
$$
s^d = \underset{s}{\operatorname{argmax}} \operatorname{dist}({}^B H_L^d, {}^B H_L(s))
$$
you can simply add a constraint
from human-dynamics-estimation.
In the current implementation the human-state-provider
is performing a joint-level inverse kinematics for each pair of bodies, right?
One possible way of handle this is to add a new type of tasks (a "relative" pose) to the iDynTree::InverseKinematics
. Switching to a global IK problem will still prevent us to use a thread pool.
from human-dynamics-estimation.
Ahhh, with the constraint on the base pose to be identity? I see.
from human-dynamics-estimation.
Yep.. for the time being it seemed to me the easiest way to migrate to idyntree
from human-dynamics-estimation.
Switching to a global IK problem will still prevent us to use a thread pool.
@traversaro can you please explain the problem in detail. I am not able to follow this comment.
For the time being I was thinking of simply creating N ik solvers configured with a reduced model (one for each pair).
@francesco-romano how did you manage with the dummy links that are used to build three 1 DoF revolute joints.
from human-dynamics-estimation.
Switching to a global IK problem will still prevent us to use a thread pool.
@traversaro can you please explain the problem in detail. I am not able to follow this comment.
If we used a single big Inverse Kinematics problems with all the relative link position as tasks, that would be resuilting in a single Ipopt problem instance, that cannot be solved using multiple threads (at least with the linear solvers that we use).
So, the alternative is to use the idea of creating N ik solvers configured with a reduced model (one for each pair) as it was implemented before. Also, please explain the limitation of
constraint on the base pose to be identity
from human-dynamics-estimation.
This task in done and HumanStateProvider
device works with multiple link pair ik using idyntree-inverseKinematics. Check this issue for further details.
from human-dynamics-estimation.
@traversaro a plugin for Safari ? 😘
Not available sorry. : (
from human-dynamics-estimation.
It would be easier to port one of the existing plugins if Safari supported the WebExtensions standard draft: https://browserext.github.io/browserext/ .
from human-dynamics-estimation.
Related Issues (20)
- [HumanLogger] Logger silently failing to save file when attach device not found HOT 15
- Remove teleoperation models for icub2.5 and icub3 HOT 2
- Remove implementation of both IWrapper and IMultipleWrapper from devices HOT 2
- Add joint information to HumanLogger HOT 2
- Migrate MacOS CI from homebrew to conda HOT 2
- Human Logger not terminating when directory not created HOT 3
- [HumanLogger] logger not starting because interface is not ready HOT 2
- Replace usage of `analogServer` HOT 17
- Change Wrapper/Remapper naming convention to `nws`/`nwc` HOT 2
- Add status information to `IHumanState`, `IHumanDynamics` and `IHumanWrench`
- Implement HumanWrenchWrapper and HumanWrenchRemapper devices HOT 1
- HumanControlBoard fails to attach to iHumanState HOT 2
- HumanStateVisualizer is stuck waiting data from HumanStateWrench HOT 2
- CI failing on Windows HOT 3
- Release human-dynamics-estimation v3.0.0 HOT 2
- Add video recording in HumanLogger HOT 1
- cannot set `useDirectBaseMeasurement` to true HOT 1
- Compilation failure with ``yarp`` 3.10
- RViz crashes when launched by yarpmanager
- Re-enable macos and Windows CI April 2024 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from human-dynamics-estimation.