-
Notifications
You must be signed in to change notification settings - Fork 723
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
Build maplab on ARMv7-A (32bit) #7
Comments
Hi, thanks a lot for your question. To be honest, the amount of work is difficult to predict, but I think it's worth a try. It's also hard to say what will be the impact on performance as you're lacking SSE optimization that Eigen broadly uses (and Eigen matrices are present all over the project).
Another issue you may encounter are Eigen alignment issues (we might be missing proper alignment in some places), which show up much more often on 32-bit machines. On the other hand, they are resulting from x86 SSE optimizations, not sure if Eigen has some ARM-specific code (NEON?) that might cause them. |
Ok, so I managed to build and start a bag. I'm giving you the diff of my workspace, to let anyone do the same. But those are really dirty modifications, sometimes even useless or just dumb (like in https://gist.github.com/Alabate/c1017c4f0a6c3b9e5e6db75ddbcddf0b |
As you can see, most of modifications are removing the
What do you think ? |
@Alabate Thanks a lot for your efforts to port maplab to ARM based devices and for sharing your diff. Regarding your remarks: I agree, |
Actually a think this script might do the job. |
Guys, thanks for the amazing project. As @Alabate I was trying to make it work on the Nvidia TX1. doxygen_catkin -> ok the rest still trying out, especially aslam pkg (-mssse3) and brisk. Brisk released a v2, and it should implement NEON. Still need to try it. Keep you update and thanks for the work! |
Could this be a simple fix - JakobEngel/dso#59 ? |
@bidbest Have you managed to build brisk on the TX1? When I remove the |
@hoangthien94 Diden't try it yet. I'm currently working on x86 processors, will try again on arm in the future. If I remember correctly emmintrin.h file is considered only when flagh sse3 is present. You can try to test Brisk v2, that should support NEON., and hope it will not conflict with the rest of maplab. |
@hoangthien94 We are working on porting maplab to ARM. Regarding ethz-asl/brisk repo, you can alreay checkout the feature/port-to-arm branch there which should do the job. |
Hi @fabianbl, I have tried the feature/port-to-arm branch ,but it still failed when building brisk with following errors: c++: error: unrecognized command line option ‘-mfpu=neon’ My device is Nvidia Jetson TX2 which's architecture is aarch64. $ uname -a
Linux CAR01-CU03 4.4.38 #1 SMP PREEMPT Tue Oct 10 15:24:32 CST 2017 aarch64 aarch64 aarch64 GNU/Linux |
Hi @megamindhe . Thank you a lot for your report. Unfortunately, we weren't able yet to test this on an |
We released an experimental pre-release branch which adds build compatibility for You can test it by checking out the branch git pull
git checkout pre-release-january
git submodule init
git submodule update --recursive After this, clean the catkin workspace and rebuild it: catkin clean
catkin build maplab We are happy to hear if this works for you. |
I tried building on a Jetson tx2, ubuntu 16.04, ROS kinetic, with the experimental pre-release branch.
On the second try, it succeeded with rovio but failed while building vi_map (46/91), with this error:
|
@dan9thsense Thank you for your report. I think what you can do is: cd ~/maplab_ws/src/maplab_dependencies
git submodule init
git submodule update This will initialize and checkout benchmark_catkin which was not there in the master branch. Forgot to mention this, I now added it to the description above. |
@fabianbl I added your instructions to the PR description as well, thx. |
Good news! With that change the entire package builds successfully. |
First of all, thank you for this awesome project.
I'd like to use the online part of maplab on an embedded 32bit ARM cpu. I didn't find any way to build only the online part, so I tried to build the whole project and it fails on those errors:
maplab_common
assert 64bit systems:rovio
use x86-specific option:How much work would be required to make it compatible with this architecture ?
The text was updated successfully, but these errors were encountered: