-
Notifications
You must be signed in to change notification settings - Fork 14
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 streaming command in position-direct mode w/ fast solvers #119
Comments
For TEO we implement For the simulator, we could map PS: Put an issue on the https://github.com/roboticslab-uc3m/openrave-yarp-plugins repo if you want this implementation! |
One drawback of the implementation I had in mind is that it would require high frequency computation of the inverse kinematics, which is most probably out of the question in KdlSolver (reminder: this solver currently works with numeric solutions). As a workaround, I'd consider exploring screw theory and available KDL solver interfaces (might end up creating our own implementation). |
Obviously screw theory is beautiful. :-)
|
|
- Implements IPositionDirect in sim for roboticslab-uc3m/kinematics-dynamics#119
Implemented on |
https://vanadiumlabs.github.io/pypose/nuke-intro.html [thanks @JavierIH !!] |
In https://github.com/robotology/codyco-superbuild they use https://github.com/ocra-recipes/eigen_lgsm |
@jgvictores proposes that we use |
See also #155 (comment) (ikfast). |
Thoughts on implementing a screw theory-based solver in KDL (mutually exclusive options):
The last two options require that users know how to define a screw theory-based problem, leading to data duplication: in the same .ini (or even in separate files), both DH params and ST information would be hosted. Any change that affects the geometry should be reflected (and manually computed/recalculated) for two different problem definitions. I'd choose the hard way, see first option. |
I am happy to announce that the Screw Theory algorithm is close to being complete. First results have been obtained for the ABB IRB 120 robot (following @DrPardosGotor's lecture notes). Considering an initial home pose (same as the initial guess) and |
Good for you Bartek!
Dr.Eng. Jose M. PARDOS-GOTOR, PhD.
Associate Professor
Systems Engineering & Automation
UC3M
M. +34 625 606 337
… On 4 Dec 2018, at 23:05, Bartek Łukawski ***@***.***> wrote:
I am happy to announce that the Screw Theory algorithm is close to being complete. First results have been obtained for the ABB IRB 120 robot (following @DrPardosGotor's lecture notes). Considering an initial home pose (same as the initial guess) and q_i = pi/2 as the desired pose, the ST inverse kinematics solver performs 5-6 times faster than a numeric Newton-Raphson algorithm (as implemented in KDL) and produces all 8 available solutions. Execution times vary between 0.04-0.12 milliseconds.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.
|
Many Thanks Bartek,
I would propose to make a presentation to understand in detail wha you have done. I suppose this mount is going to be complicated, but as soon as you can I believe It will be very interesting for all involved.
I wait for an appointment to the group (perhaps some Thursday at 19:00h).
Dr.Eng. Jose Manuel PARDOS-GOTOR, PhD.
Associate Professor
SYSTEMS ENGINEERING AND AUTOMATION
… On 2018Dec4, at 23:05, Bartek Łukawski ***@***.***> wrote:
I am happy to announce that the Screw Theory algorithm is close to being complete. First results have been obtained for the ABB IRB 120 robot (following @DrPardosGotor's lecture notes). Considering an initial home pose (same as the initial guess) and q_i = pi/2 as the desired pose, the ST inverse kinematics solver performs 5-6 times faster than a numeric Newton-Raphson algorithm (as implemented in KDL) and produces all 8 available solutions. Execution times vary between 0.04-0.12 milliseconds.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.
|
I guess we'll be closing this issue soon thanks to #169, so whatever commented here will probably be buried in time... however, may be worthy to mention. Regarding #169 (comment): |
Regarding MATLAB code and as stated in the reference I cited therein, a numeric solver (Robotics Toolbox) is about 1000x slower than the proposed Screw Theory implementation (0.1~1ms). Looks like KDL/C++ performs far better, although Screw Theory/C++ is still much faster. |
Done:
To do:
|
Added example app at e777bc8. |
@jgvictores I might have some useful diagrams generated in a couple of weeks. For now, though, I don't think #119 (comment) could be of any use. I did some work on describing the class internals either with Doxygen (preferable) or through inline comments only seen in source code, so that said diagram (severely WIP back then) has been already expressed in text/formula form. It would be much easier if you could state what exactly is missing as of the current state of the documentation in ScrewTheoryLib. That performance notice could fit inside KdlSolver (ST-KDL wrapper). |
|
Mostly inline comments scattered all over here plus that iterative formula you linked to in 1. Please mind that I never considered that implementation to be stable yet, several details would benefit from a 👽2👽 discussion and, in that vein, most of those comments could/should be rewritten.
👍 |
Docs improved at 9c580a5. |
Done at 19b37b8. This is heavily based on the
|
Thanks a lot, I think it's great right now. Ok to close issue! |
Done at b9ca4d6, closing. |
The last command scheduled at #105 and present in old asibot-main code (ref) was temporarily excluded due to current limitations. As pointed out in the title, it's meant to perform non-linear movements in position mode, that is, it's the streaming counterpart of
movj
.The proposed signature is (no name yet):
Due to the high-frequency nature of streaming commands, I'd propose switching to the
yarp::dev::IPositionDirect
to bypass trajectory generation at the iPOS level, hence the interval parameter intended for sampling point coordinates of the desired path (similarly toICartesianControl::pose
). However, this won't work on our simulator code (yet) unless we update the control boards to handle this interface.The text was updated successfully, but these errors were encountered: