There is strong packages to get odometry from stereo and monocular cameras.
viso2_ros - ROS Wiki
It somehow causes compilation error with arm processor such as jetson TX series.
github.com
Brief overview
- -msse3 compiler option is not supported for arm processor.
You should comment out that.
Get SSE-to-NEON file
save this hpp file in your include library
cd /usr/include git clone https://github.com/otim/SSE-to-NEON.git
Then you can include using #include "SSE-to-NEON/sse_to_neon.hpp".
change some part of SSE-to-NEON.hpp
in line 14 and line 46 like below
//#if defined(__MM_MALLOC_H) // copied from mm_malloc.h { ~~~ // } copied from mm_malloc.h //#endif
Change CmakeList and package.xml
comment out -msse3 description in every CMAKELIST file.
in viso2/viso2_ros ,viso2/viso2, viso2/libviso2
change package.xml in viso2/libviso2
change from
<cpp lflags="-L${prefix}/lib -Wl,-rpath,${prefix}/lib -lviso2" cflags="-msse3 -I${prefix}/libviso2/src/"/>
to
<cpp lflags="-L${prefix}/lib -Wl,-rpath,${prefix}/lib -lviso2" cflags="-I${prefix}/libviso2/src/"/>
Change source cord
You should change filter.h and matcher.h in libviso2/src.
comment out some emmintrin.h and pmmintrin.h and replace with SSE-to-NEON.hpp like below
//#include <emmintrin.h> //#include <pmmintrin.h> #include "SSE-to-NEON/sse_to_neon.hpp"
memo
This error is around _mm_malloc function.
Why do they use this package?