bebop_autonomy on Raspberry Pi 3 (Raspian-stretch), parrot_arsdk won't compile

asked 2019-10-19 08:34:03 -0600

Pablo García Auñón gravatar image

Hello there!

I'm trying to run bebop_autonomy on a Raspberry Pi 3 with Raspbian Stretch (it has to be Raspbian, not Ubuntu) and ROS Kinetic. The problem is that the catkin version of the Parrot SDK provided by the autonomy lab won't compile:

In file included from /usr/include/endian.h:60:0,
                 from /usr/include/arm-linux-gnueabihf/sys/types.h:216,
                 from packages/libARSAL/Sources/ARSAL_Ftw.c:39:
/usr/include/arm-linux-gnueabihf/bits/byteswap.h: In function '__bswap_32':
/usr/include/arm-linux-gnueabihf/bits/byteswap.h:45:1: sorry, unimplemented: Thumb-1 hard-float VFP ABI
 {
 ^
packages/libARSAL/Sources/ARSAL_MD5.c: In function 'ARSAL_MD5_Manager_Init':
packages/libARSAL/Sources/ARSAL_MD5.c:50:1: sorry, unimplemented: Thumb-1 hard-float VFP ABI
 {
 ^
make[3]: *** [/home/pi/catkin_ws/build/parrot_arsdk/arsdk/src/ARSDKBuildUtils/out/arsdk-native/build/libARSAL/obj/Sources/ARSAL_MD5.c.o] Error 1
make[3]: *** Waiting for unfinished jobs....
make[3]: *** [/home/pi/catkin_ws/build/parrot_arsdk/arsdk/src/ARSDKBuildUtils/out/arsdk-native/build/libARSAL/obj/Sources/ARSAL_Ftw.c.o] Error 1
ar: `u' modifier ignored since `D' is the default (see `U')
ar: `u' modifier ignored since `D' is the default (see `U')
ar: `u' modifier ignored since `D' is the default (see `U')
ar: `u' modifier ignored since `D' is the default (see `U')
ar: `u' modifier ignored since `D' is the default (see `U')
ar: `u' modifier ignored since `D' is the default (see `U')
[E] Task 'build-sdk' failed (Command failed (returncode=2))
make[2]: *** [arsdk/src/ARSDKBuildUtils-stamp/ARSDKBuildUtils-build] Error 1
make[1]: *** [CMakeFiles/ARSDKBuildUtils.dir/all] Error 2
make: *** [all] Error 2

After some research, the only solution I came across with was this: building the Parrot ARSDK libraries from source, adding tag TARGET_DEFAULT_ARM_MODE := arm in file SDK_folder/products/arsdk/native/config/product.mk, and building with:

 ./build.sh -p arsdk-native -t build-sdk -j

The SDK now compiles well but bebop_autonomy does not find the library path, nor the parrot_arsdk package.

The file product.mk is in 10 .tgz files in the parrot_arsdk package (arsdk_3__stripped.tgz). Modifying those files (adding the tag TARGET_DEFAULT_ARM_MODE := arm) does not resolve the problem.

Does someone know how to modify the bebop_automony's CMakeList to set the from-source-compiled parrot_arsdk library path? Or how to modify the parrot_arsdk ROS package to compile in the RPi3?

Thanks

edit retag flag offensive close merge delete