-
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 the skeleton of the OptimalControlElement class and SE3Task #167
Conversation
On macOS is failing because of
|
See:
In short, the combination of homebrew and GitHub Actions is extremely unstable, and incidents like that are quite frequent. Once strategy may be probably to migrate to conda-forge provided dependencies at least for macOS. |
|
CC @diegoferigo |
@GiulioRomualdi I will take a look at this PR soon. But anyhow, for starters, a naming clarification. Theoretically, there are differences between the two due to the different definitions of exponential maps and logarithm maps. Also in the implementation, at a higher level you set the pose, but at the lower level you instead split it into a rotation and a position object to perform the control. (This is misleading). So in that case, do you think we should rename the class? |
class OptimalControlElement | ||
{ | ||
protected: | ||
Eigen::MatrixXd m_A; /**< Element Matrix */ | ||
Eigen::VectorXd m_b; /**< Element Vector */ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would suggest to name this in a way that is more specific to TSID, like TaskElement
, hiding how that TSID problem is solved (either via optimal control, pseudoinverse, or other methods). OptimalControl
is, in my opinion, generic and a bit misleading, considering that you are considering only linear elements.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
here: f7cd662 I renamed the class as Task
d15f1cc
to
0b72bae
Compare
Yes exactly
I tried to follow what was done in Do you have other names in mind? |
A wordy choice would be in the direction of Or suppress the suffix, so that different choices are handled dynamically within the class (in the future), as done in |
I think that even if not mathematically super-precise, |
…t::subA() methods
… manif objects in TSID
- Make Task class compliant with robotology/idyntree@64cbaf7
- Avoid to copy the jacobian matrix in SE3Task
1037d3e
to
7a776b2
Compare
In 7a776b2 I added a check to make sure that the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
minor comment.
src/TSID/src/SE3Task.cpp
Outdated
return false; | ||
} | ||
|
||
if (m_robotAccelerationVariable.size != m_kinDyn->getNrOfDegreesOfFreedom() + 6) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe declare a const int for this magic 6? So it can be used here and elsewhere?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done bfa5eaa
Yes. I think it's ok. |
Co-authored-by: Prashanth Ramadoss <prashanthramadoss@gmail.com>
72041a7 let me know if it's fine with you. |
Great, thanks!! |
This PR implements the first skeleton for the TSID library. It is the first PR that will allow achieving #166. In detail, I defined an
OptimalControlElement
that is an abstract class that described a generic task that can be achieved by TSID. I also developedSE3Task
whose purpose is to implementJ dν/dt + dJ/dt ν = dv/dt*
.lie-group-controllers
is now added as a dependency ofblf
. Once this PR has been mergedlie-group-controllers
should be added to the superbuild (cc @traversaro )Since I would like to keep the PR small, I will implement the other tasks into other PR.