-
Notifications
You must be signed in to change notification settings - Fork 249
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
[WIP] Add Python bindings to manif #179
Conversation
@joansola FYI |
Cooooool!!! :-D |
66cd454
to
b0546dc
Compare
Codecov Report
@@ Coverage Diff @@
## devel #179 +/- ##
=======================================
Coverage 98.37% 98.37%
=======================================
Files 49 49
Lines 1475 1475
=======================================
Hits 1451 1451
Misses 24 24 |
Damn I was actually making my own version of this, and was going to finish it and add it over the christmas break. I guess you beat me to it. One idea I was playing around with is to add a cmake flag to enable building the library with |
Hi @Edwinem, There is still much to do with the binding. So far only the API common to all groups is exposed, not even completely - there are a few road-blockers I couldn't figure out yet... Remain group-specific API, more testing, proper Python packaging, a couple examples, documentation etc... So, feel free to contribute if you feel like it ;) |
@joansola The python bindings has reached a usable state. The complete group/tangent base API is accessible through Python and the common test suite is ported and passing. There are still a few things that I'd like to discuss,
|
yes:
I know of
What's the
Yeah this sounds great as a generic naming convention for Jacobians. I do always like this and insist a lot that people do too. |
What about the linear block?
Ok then
Sorry I should have detailed the Python function signature, it roughly is: def compose(other, J_mc_ma, J_mc_mb):
... So here state_out = state.compose(state_other, J_sout_s, J_sout_so) or by name, state_out = state.compose(other = state_other, J_mc_ma = J_sout_s, J_mc_mb = J_sout_so) which let you change their position if you wish state_out = state.compose(J_mc_mb = J_sout_so, J_mc_ma = J_sout_s, other = state_other) That's why I'm paying attention to the naming here. |
uhm, yes, maybe then
cool!!
+1 |
For Maybe @prashanthr05 has a suggestion? |
I also agree with this naming. It is quite clear as to what the underlying motion vector means. |
Added Python packaging (see updated description). @Edwinem FYI. Do you plan on adding some example or should I port them myself? |
@joansola, I added the localization examples in Python (2D/3D). See e.g. |
This PR is mostly ready at this point. I'll finish up the documentation generation and open a ticket to complete the Python API doc. |
New documentation website live at https://artivis.github.io/manif/ |
Website colors are rather unfortunate. Math formulas are not visible due to the dark gray background. |
Right I'll see that fixed 👍 |
Replaced by #201 |
manifpy
Add Python bindings to manif.
Install,
Test,
Use,
Note
rjacinv/ljacinv
The functions
rjacinv/ljacinv
are not exposed at the moment. They are too complicated to wrap for little benefit.This will be fixed in the future after the internal API redesign (see e.g. #150).
Eigen/Geometry
-related APIThe C++ API related to
Eigen/Geometry
is not exposed. The rational is that this API only exists as a convenience to interface with existing classes inEigen
(Quaternion
/Transform
etc).The
Eigen
counterpart in Python isnumpy
which does not have such classes. We could wrap theEigen
objects to expose them to Python but that does not have much interest since they wont play nice withnumpy
unless we put some extra effort.At the moment this seems to be too much effort for little outcome, especially since the different examples (
_localization
/_sam
) were ported to Python without these classes and related API.For this reason this will be left to future work or contribution.
Todo list
Bindings:
rjacinv/ljacinv
Eigen/Geometry
-relatedMisc:
Blocked by #190
Closes #187